# task-1423.1 — DQ 규칙 단일 소스 모듈화

**팀**: dev4-team (비슈누)
**작업**: DQ 규칙 35곳 산재 → 단일 소스(`dq-rules.json`) 통일

---

## 문제

3/28 확정 폰트 규칙(84/64/40px)이 디자인팀 CLAUDE.md에만 써있고, DQ 10항목 평가(로키 QC)에는 반영 안 됨. 결과: 4/4에 만든 배너가 헤드라인 68px(84px 미달)인데 DQ 97점 PASS.

근본 원인: 규칙이 35곳 이상에 분산 정의. "아누 시스템 대원칙: 모든 코드는 모듈화" 위반.

## 해결

### 1. 단일 소스 생성
- **`memory/specs/dq-rules.json`** (v1.0.0) — 모든 DQ 규칙의 유일한 원본
  - font_sizes, font_weights, font_ratio, font_pairing, text_density
  - overlay_rules, layout, color
  - dq_scoring (DQ-01~10 정의 + auto_fail_rules)

### 2. Python import 모듈
- **`tools/dq_rules.py`** — dq-rules.json 로더
  - `from dq_rules import DQ_RULES, get_font_rule, check_font_size, ABSOLUTE_MIN_PX`
  - CLI: `python3 tools/dq_rules.py summary`

### 3. 기존 하드코딩 제거
- **`tools/validate-design-brief.py`** — 하드코딩 dict 삭제 → `from dq_rules import` 사용
- **`teams/design/CLAUDE.md`** — Section 5, 5.5, 9의 인라인 수치를 dq-rules.json 참조로 전환
- **`teams/marketing/CLAUDE.md`** — 인라인 수치 삭제, 단일 소스 참조
- **`teams/marketing/DESIGN-BRIEF-TEMPLATE.md`** — 폰트 가이드 섹션을 dq-rules.json 참조로 축소

### 4. DQ 평가 기준 통일
- dq-rules.json의 `dq_scoring.auto_fail_rules`에 명시:
  - 40px 미만 → 즉시 FAIL
  - 헤드라인 84px 미만 → DQ-08 최대 5점
  - 서브 64px 미만 → DQ-08 최대 6점
  - 폰트 1종만 사용 → DQ-08에서 -3점

## 남은 작업 (후속 태스크 필요)

아래는 이번에 직접 수정하지 않은 파일들로, 별도 태스크로 모듈화 필요:
1. `prompts/image_workflow.py` — QC 파이프라인 내 하드코딩
2. `memory/specs/knowhow-design.md` — CSS 템플릿 내 하드코딩 수치
3. `memory/specs/design-qc-knowhow.md` — 패턴 설명 내 수치
4. `tools/ai-image-gen/gen_*.py` (20개+) — 인라인 CSS 내 폰트 사이즈
5. `teams/design/DESIGN-QC-CHECKLIST.md` — 인라인 체크 항목

이들은 모두 `from dq_rules import` 또는 dq-rules.json 참조로 전환 필요.

## 산출물

- `memory/specs/dq-rules.json` (신규 — 단일 소스)
- `tools/dq_rules.py` (신규 — Python 모듈)
- `tools/validate-design-brief.py` (수정 — 하드코딩 → import)
- `teams/design/CLAUDE.md` (수정 — 인라인 수치 → 참조)
- `teams/marketing/CLAUDE.md` (수정 — 인라인 수치 → 참조)
- `teams/marketing/DESIGN-BRIEF-TEMPLATE.md` (수정 — 인라인 수치 → 참조)
