@qualisoft/ai-skills 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +234 -0
- package/bin/cli.mjs +331 -0
- package/package.json +53 -0
- package/skills/erd-visual/SKILL.md +294 -0
- package/skills/erd-visual/build.mjs +404 -0
- package/skills/erd-visual/engine/dbml.mjs +133 -0
- package/skills/erd-visual/engine/ingest.mjs +273 -0
- package/skills/erd-visual/engine/layout.mjs +165 -0
- package/skills/erd-visual/engine/overview.mjs +314 -0
- package/skills/erd-visual/engine/render.mjs +144 -0
- package/skills/erd-visual/engine/router.mjs +401 -0
- package/skills/erd-visual/engine/verify.mjs +138 -0
- package/skills/erd-visual/engine/wire.mjs +115 -0
- package/skills/erd-visual/fixtures/crm-large.dbml +1337 -0
- package/skills/erd-visual/fixtures/edge-cases.dbml +43 -0
- package/skills/erd-visual/fixtures/map-dynamics.json +32 -0
- package/skills/erd-visual/fixtures/shop-basic.dbml +78 -0
- package/skills/erd-visual/fixtures/src-json/api.json +38 -0
- package/skills/erd-visual/fixtures/src-prisma/schema.prisma +44 -0
- package/skills/erd-visual/fixtures/src-sql/shop.sql +62 -0
- package/skills/erd-visual/readers/csv.mjs +81 -0
- package/skills/erd-visual/readers/index.mjs +55 -0
- package/skills/erd-visual/readers/jsonschema.mjs +86 -0
- package/skills/erd-visual/readers/prisma.mjs +102 -0
- package/skills/erd-visual/readers/sql.mjs +205 -0
- package/skills/erd-visual/readers/xlsx.mjs +220 -0
- package/skills/erd-visual/readers/xml.mjs +130 -0
- package/skills/erd-visual/readers/zip.mjs +74 -0
- package/skills/erd-visual/viewer/index.html +539 -0
- package/skills/project-build/SKILL.md +171 -0
- package/skills/project-build/templates/build-rules.md +88 -0
- package/skills/project-build/templates/change-log.md +29 -0
- package/skills/project-build/templates/coverage.md +49 -0
- package/skills/project-build/templates/parity.html +375 -0
- package/skills/project-build/templates/theme.css +45 -0
- package/skills/project-design/MEDIUMS.md +104 -0
- package/skills/project-design/QUESTIONS.md +126 -0
- package/skills/project-design/SKILL.md +365 -0
- package/skills/project-design/templates/audit.html +689 -0
- package/skills/project-design/templates/change-log.md +53 -0
- package/skills/project-design/templates/design-rules.md +118 -0
- package/skills/project-design/templates/mockup-app.html +96 -0
- package/skills/project-design/templates/mockup-slides.html +82 -0
- package/skills/project-design/templates/mockup-web.html +45 -0
- package/skills/project-design/templates/styleguide.html +436 -0
- package/skills/project-design/templates/tokens.css +69 -0
- package/skills/project-design/templates/tone-options.html +138 -0
- package/skills/project-init/GUIDE.md +370 -0
- package/skills/project-init/RUNBOOK.md +192 -0
- package/skills/project-init/SKILL.md +382 -0
- package/skills/project-init/build.mjs +2898 -0
- package/skills/project-init/evals/RUBRIC.md +81 -0
- package/skills/project-init/evals/cases/conflicting.expect.json +17 -0
- package/skills/project-init/evals/cases/conflicting.md +9 -0
- package/skills/project-init/evals/cases/vague-idea.expect.json +11 -0
- package/skills/project-init/evals/cases/vague-idea.md +7 -0
- package/skills/project-init/evals/cases/well-formed.expect.json +18 -0
- package/skills/project-init/evals/cases/well-formed.md +28 -0
- package/skills/project-init/markdown.mjs +0 -0
- package/skills/project-init/modules/a11y.json +46 -0
- package/skills/project-init/modules/ai.json +77 -0
- package/skills/project-init/modules/audience.json +48 -0
- package/skills/project-init/modules/backend.json +129 -0
- package/skills/project-init/modules/brand.json +78 -0
- package/skills/project-init/modules/core.json +132 -0
- package/skills/project-init/modules/design.json +72 -0
- package/skills/project-init/modules/engineering.json +86 -0
- package/skills/project-init/modules/mobile.json +22 -0
- package/skills/project-init/modules/ops.json +122 -0
- package/skills/project-init/modules/process.json +104 -0
- package/skills/project-init/modules/product.json +37 -0
- package/skills/project-init/modules/ux.json +52 -0
- package/skills/project-init/modules/web.json +129 -0
- package/skills/project-init/presets/ai-product.json +12 -0
- package/skills/project-init/presets/internal-system.json +15 -0
- package/skills/project-init/presets/mobile-app.json +20 -0
- package/skills/project-init/presets/web-corporate.json +116 -0
- package/skills/project-init/schema.json +80 -0
- package/skills/project-init/templates/log.md +54 -0
- package/skills/project-init/templates/readme.md +62 -0
- package/skills/project-init/templates/reference.md +34 -0
- package/skills/project-init/templates/register.md +63 -0
- package/skills/project-init/templates/spec.md +46 -0
- package/skills/project-interview/INTERVIEW.md +221 -0
- package/skills/project-interview/SKILL.md +156 -0
- package/skills/project-interview/fixtures/brief.md +49 -0
- package/skills/project-interview/fixtures/decisions.md +13 -0
- package/skills/project-interview/fixtures/open-questions.md +9 -0
- package/skills/project-interview/templates/brief.md +179 -0
- package/skills/project-interview/templates/decisions.md +55 -0
- package/skills/project-interview/templates/open-questions.md +40 -0
- package/skills/project-interview/validate.mjs +49 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-build
|
|
3
|
+
description: 2단계(project-init) 설계도와 3단계(project-design) 시안을 실제 코드로 구현한다. 스택은 기술 아키텍처 문서에서 읽고, 토큰은 tokens.css 하나를 그대로 물리며, 구현이 시안과 어긋나지 않는지 대조기로 판정한다. 구현 이력이 Docs/_build/ 에 쌓이고 2단계 HTML에서 함께 보인다. "구현 시작", "코드로 만들어줘", "개발 착수", "스캐폴딩", "시안대로 구현", "화면 만들어줘" 같은 요청에 해당한다.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# project-build
|
|
7
|
+
|
|
8
|
+
**4단계 — 구현.** 설계도와 시안을 돌아가는 코드로 바꾼다.
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
[1] project-interview 아이디어 → 기획안
|
|
12
|
+
[2] project-init 기획안 → 설계도
|
|
13
|
+
[3] project-design 설계도 → 디자인 규칙 + 시안
|
|
14
|
+
[4] project-build 설계도 + 시안 → 코드 ← 이 스킬
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 이 단계가 지켜야 하는 것
|
|
18
|
+
|
|
19
|
+
앞 세 단계에서 배운 것이 있다. **문장으로 적힌 금지는 무시된다.**
|
|
20
|
+
3단계에서 "이력 없이 스타일만 고치지 마"가 문서에 있었는데도 그대로 일어났고,
|
|
21
|
+
그때부터 같은 규칙을 검증기로 옮겼다. 여기서도 같다 —
|
|
22
|
+
**막아야 하는 것은 문장이 아니라 검사로 만든다.**
|
|
23
|
+
|
|
24
|
+
그리고 **시안은 13회 다듬은 결과다.** 그 값을 코드로 옮기면서 흐트러뜨리면
|
|
25
|
+
3단계를 통째로 버리는 것과 같다. 그래서 대조기가 있다.
|
|
26
|
+
|
|
27
|
+
## 선행 조건
|
|
28
|
+
|
|
29
|
+
| 문서 | 무엇을 가져오나 |
|
|
30
|
+
| --- | --- |
|
|
31
|
+
| 기술 아키텍처 (`*-tech-architecture`) | **스택·버전·폴더 구조·렌더링 전략.** 여기서 읽지 임의로 고르지 않는다 |
|
|
32
|
+
| PRD (`*-prd`) | `F-01` 형식의 요구사항과 **수용 기준** — 완료 판정의 단일 출처 |
|
|
33
|
+
| IA (`*-information-architecture`) | 사이트맵·URL 규칙·전역 내비 — Route Registry 의 원본 |
|
|
34
|
+
| 화면 정의서 (`*-screen-spec`) | 화면별 섹션 구성·폼 필드·빈 상태 |
|
|
35
|
+
| QA (`*-qa-test-plan`) | 릴리즈 체크리스트 — 배포 게이트 |
|
|
36
|
+
| 접근성 · 성능 · SEO | 비기능 게이트 |
|
|
37
|
+
| 3단계 `_design/` | `tokens.css`(정본) · `design-rules.md` · 시안 · `audit.html` |
|
|
38
|
+
|
|
39
|
+
**시안이 없는 화면은 만들 수 있다.** 3단계는 방향 확인을 위해 1~3개만 만든다.
|
|
40
|
+
나머지는 **`design-rules.md` 와 `tokens.css` 를 근거로** 4단계가 채운다.
|
|
41
|
+
다만 시안이 있는 화면은 **반드시 그것을 따른다** — 대조기가 판정한다.
|
|
42
|
+
|
|
43
|
+
**리스크 대장의 Blocker 를 먼저 확인한다.** 인증 방식·법적 표기처럼 미결인 채로 만들면
|
|
44
|
+
다시 만들게 되는 것이 있다. 미결이면 `TODO(주체)` 로 두고 리스크에 올린다.
|
|
45
|
+
|
|
46
|
+
## 산출물
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
src/ 구현 코드 (기술 아키텍처의 폴더 구조를 따른다)
|
|
50
|
+
scripts/ 라우트 생성 · 프리렌더 · 사이트맵 · 빌드 검증
|
|
51
|
+
Docs/_build/
|
|
52
|
+
├── build-rules.md 구현 규칙과 근거 (id: build-rules)
|
|
53
|
+
├── change-log.md 구현 이력 (id: build-change-log, BD-001 형식)
|
|
54
|
+
├── parity.html **시안 ↔ 구현 대조기**
|
|
55
|
+
└── coverage.md 화면 정의서 대비 구현 커버리지
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## 진행
|
|
59
|
+
|
|
60
|
+
### 0. 스택을 문서에서 읽는다
|
|
61
|
+
|
|
62
|
+
`docs.config.json` 의 `stack` 과 기술 아키텍처 문서가 정본이다.
|
|
63
|
+
**버전을 임의로 올리거나 내리지 않는다.** 문서에 없는 의존성을 추가하려면
|
|
64
|
+
그 이유를 `build-rules.md` 에 적고 사용자에게 알린다.
|
|
65
|
+
|
|
66
|
+
문서가 미결로 남긴 것(API 프레임워크·프리렌더 도구·인증 방식 등)은
|
|
67
|
+
**결정하지 말고 물어본다.** 답이 없으면 그 부분을 비워 두고 리스크에 올린다.
|
|
68
|
+
|
|
69
|
+
### 0.5 토큰을 잇는다 — 변환하지 않는다
|
|
70
|
+
|
|
71
|
+
`Docs/_design/tokens.css` 가 **정본이다.** 복사하지 않고 링크한다.
|
|
72
|
+
|
|
73
|
+
Tailwind 4 는 CSS-first 라 그대로 물린다:
|
|
74
|
+
|
|
75
|
+
```css
|
|
76
|
+
/* src/styles/theme.css */
|
|
77
|
+
@import "tailwindcss";
|
|
78
|
+
@import "../../Docs/_design/tokens.css"; /* 정본을 그대로 읽는다 */
|
|
79
|
+
|
|
80
|
+
@theme inline {
|
|
81
|
+
--color-ink: var(--ink);
|
|
82
|
+
--color-bg: var(--bg);
|
|
83
|
+
--radius-card: var(--radius-card);
|
|
84
|
+
/* … tokens.css 의 이름을 Tailwind 이름에 연결만 한다 */
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**값을 다시 적지 않는다.** 값을 옮겨 적는 순간 두 곳이 되고, 두 곳은 갈라진다.
|
|
89
|
+
3단계에서 실제로 그렇게 갈라진 적이 있다(`DS-007`).
|
|
90
|
+
|
|
91
|
+
### 1. 대조기를 먼저 놓는다
|
|
92
|
+
|
|
93
|
+
`templates/parity.html` 을 `Docs/_build/parity.html` 로 복사한다.
|
|
94
|
+
**시안을 코드로 옮기기 전에 놓는다.** 옮기고 나서 만들면 무엇이 흐트러졌는지
|
|
95
|
+
비교 대상이 이미 사라진 뒤다.
|
|
96
|
+
|
|
97
|
+
대조는 `data-parity="이름"` 표식으로 짝을 맞춘다.
|
|
98
|
+
시안과 구현 양쪽에 같은 이름을 달면 대조기가 크기·색·타이포·형태를 비교한다.
|
|
99
|
+
|
|
100
|
+
```html
|
|
101
|
+
<!-- 시안 --> <header class="site-header" data-parity="header">
|
|
102
|
+
<!-- 구현 (Tailwind) --> <header data-parity="header" className="fixed z-50 …">
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**클래스 이름이 달라도 된다.** 그게 재작성을 허용하면서도 값을 지키는 방법이다.
|
|
106
|
+
|
|
107
|
+
### 2. 뼈대를 만든다
|
|
108
|
+
|
|
109
|
+
기술 아키텍처의 폴더 구조를 그대로 쓴다. **한 번만 쓰는 추상화는 만들지 않는다.**
|
|
110
|
+
|
|
111
|
+
- Route Registry 한 곳이 라우터·프리렌더·사이트맵의 기준이 된다
|
|
112
|
+
- IA 의 사이트맵을 Route Registry 로 옮긴다 — 경로를 두 곳에 적지 않는다
|
|
113
|
+
- 공개 콘텐츠가 0건인 경로는 **목록을 숨기고 내비게이션에서도 함께 끈다** (IA 7항)
|
|
114
|
+
|
|
115
|
+
### 3. 화면을 구현한다
|
|
116
|
+
|
|
117
|
+
화면 정의서의 섹션 구성을 따른다. **정의서에 있는데 만들지 않은 섹션은 `coverage.md` 에 남긴다.**
|
|
118
|
+
빠뜨린 것과 의도적으로 숨긴 것(콘텐츠 0건)은 다르다 — 구분해서 적는다.
|
|
119
|
+
|
|
120
|
+
- 확정 카피는 그대로 쓴다. 없는 실적·고객사·수치를 만들지 않는다
|
|
121
|
+
- 폼 필수 항목은 화면 정의서를 따른다. 임의로 줄이지 않는다
|
|
122
|
+
- 상태(`idle`·`submitting`·`success`·`error`·빈 상태·404)를 전부 구현한다.
|
|
123
|
+
3단계 스타일 가이드에 그려둔 것이 있으면 그것을 따른다
|
|
124
|
+
|
|
125
|
+
### 4. 판정한다
|
|
126
|
+
|
|
127
|
+
| 도구 | 무엇을 보나 |
|
|
128
|
+
| --- | --- |
|
|
129
|
+
| `Docs/_build/parity.html` | **시안 ↔ 구현 어긋남** — 크기·색·타이포·형태 |
|
|
130
|
+
| `Docs/_design/audit.html` | 대비·터치 타깃·이탈·상태 전환. **대상 URL 만 dev 서버로 바꾼다** |
|
|
131
|
+
| `npm run build` + `validate-build` | 라우트·프리렌더·죽은 링크 |
|
|
132
|
+
| QA 릴리즈 체크리스트 | 배포 게이트 |
|
|
133
|
+
|
|
134
|
+
`audit.html` 은 3단계에서 이미 시안을 통과시킨 기준이다.
|
|
135
|
+
**같은 기준을 구현도 통과해야 한다.** 새로 만들지 않고 대상만 바꾼다.
|
|
136
|
+
|
|
137
|
+
### 5. 기록한다
|
|
138
|
+
|
|
139
|
+
`change-log.md` 에 `BD-001` 형식으로 남긴다. 형식은 3단계와 같되 항목이 다르다.
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
## BD-001. 제목
|
|
143
|
+
|
|
144
|
+
**일자**
|
|
145
|
+
**근거** 어떤 문서·시안·수용 기준(F-xx)을 따랐는가
|
|
146
|
+
**변경** 무엇을 만들었는가
|
|
147
|
+
**대조** parity.html 결과 — 어긋남 몇 건, 무엇
|
|
148
|
+
**검수** audit.html 필수 항목 결과 / 빌드 검증
|
|
149
|
+
**확인 못 함** 못 본 것과 그 이유. 없으면 "없음"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## 완료 판정은 PRD 가 한다
|
|
153
|
+
|
|
154
|
+
"다 됐다"는 느낌이 아니라 **수용 기준**으로 정한다.
|
|
155
|
+
`F-01` 부터 하나씩 대고, 통과하지 못한 것은 통과하지 못했다고 적는다.
|
|
156
|
+
QA 체크리스트의 마지막 줄은 **사용자 최종 승인**이다 — AI 가 대신 체크하지 않는다.
|
|
157
|
+
|
|
158
|
+
## 하지 말 것
|
|
159
|
+
|
|
160
|
+
- 문서에 없는 스택·의존성을 말없이 추가하기. **선택 의존성은 실제 요구가 생길 때만.**
|
|
161
|
+
- `tokens.css` 의 값을 코드에 복사해 넣기. 링크한다.
|
|
162
|
+
- 대조기 없이 시안을 재작성하기. 무엇이 흐트러졌는지 알 방법이 사라진다.
|
|
163
|
+
- 시안이 있는 화면을 시안과 다르게 만들고 넘어가기.
|
|
164
|
+
- 화면 정의서의 섹션을 조용히 빠뜨리기. `coverage.md` 에 적는다.
|
|
165
|
+
- 폼 필수 항목을 임의로 줄이기.
|
|
166
|
+
- 상태(빈 상태·오류·404)를 나중으로 미루기. 그 "나중"은 오지 않는다.
|
|
167
|
+
- 백엔드가 없는데 성공 UI 를 띄우기. **서버 성공 응답 뒤에만 성공이다.**
|
|
168
|
+
- 없는 실적·고객사·수치를 채워 넣기.
|
|
169
|
+
- 미결 사항을 대신 결정하기. 물어보고, 답이 없으면 리스크에 올린다.
|
|
170
|
+
- 검수하지 못한 것을 검수한 것처럼 보고하기.
|
|
171
|
+
- 사용자 승인 없이 production 배포하기.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: build-rules
|
|
3
|
+
title: 구현 규칙
|
|
4
|
+
summary: 4단계에서 정한 구현 규칙과 그 근거.
|
|
5
|
+
status: draft
|
|
6
|
+
date: {{YYYY-MM-DD}}
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 구현 규칙
|
|
10
|
+
|
|
11
|
+
> **4단계 기록이다.** 스택과 폴더 구조의 정본은 기술 아키텍처 문서다.
|
|
12
|
+
> 여기에는 **그 문서가 정하지 않은 것**과 **구현하며 새로 정한 것**만 적는다.
|
|
13
|
+
|
|
14
|
+
> **`status` 는 사람만 올린다.** `draft` → `review` → `approved`.
|
|
15
|
+
> 4단계 진행률이 이 값을 읽는다. AI 가 임의로 `approved` 로 바꾸지 않는다.
|
|
16
|
+
|
|
17
|
+
## 1. 스택 확인
|
|
18
|
+
|
|
19
|
+
기술 아키텍처 문서에서 읽은 값을 그대로 옮긴다. **여기서 정하지 않는다.**
|
|
20
|
+
|
|
21
|
+
| 영역 | 값 | 출처 |
|
|
22
|
+
| --- | --- | --- |
|
|
23
|
+
| | | `*-tech-architecture` N항 |
|
|
24
|
+
|
|
25
|
+
**문서에 없는데 추가한 의존성** — 없으면 "없음"이라고 적는다.
|
|
26
|
+
|
|
27
|
+
| 패키지 | 왜 필요했나 | 대안을 검토했나 |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
|
|
30
|
+
## 2. 토큰 연결
|
|
31
|
+
|
|
32
|
+
`Docs/_design/tokens.css` 가 정본이다. **값을 복사하지 않고 링크한다.**
|
|
33
|
+
|
|
34
|
+
```css
|
|
35
|
+
/* src/styles/theme.css */
|
|
36
|
+
@import "tailwindcss";
|
|
37
|
+
@import "../../Docs/_design/tokens.css";
|
|
38
|
+
|
|
39
|
+
@theme inline {
|
|
40
|
+
--color-ink: var(--ink);
|
|
41
|
+
/* … 이름만 잇는다 */
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
값을 옮겨 적으면 두 곳이 되고, 두 곳은 반드시 갈라진다.
|
|
46
|
+
`build.mjs check` 가 복사를 감지해 경고한다.
|
|
47
|
+
|
|
48
|
+
## 3. 시안 대조 표식
|
|
49
|
+
|
|
50
|
+
시안과 구현 양쪽에 `data-parity="이름"` 을 단다. 클래스 이름은 달라도 된다.
|
|
51
|
+
|
|
52
|
+
| 표식 | 시안 | 구현 |
|
|
53
|
+
| --- | --- | --- |
|
|
54
|
+
| `header` | `.site-header` | |
|
|
55
|
+
|
|
56
|
+
**시안에 없는 화면**은 표식 짝이 없다. 그건 정상이므로 여기에 "시안 없음"으로 적는다 —
|
|
57
|
+
적지 않으면 빠뜨린 것과 구분되지 않는다.
|
|
58
|
+
|
|
59
|
+
## 4. 문서가 미결로 남긴 것
|
|
60
|
+
|
|
61
|
+
**대신 결정하지 않는다.** 물어보고, 답이 없으면 비워 두고 리스크에 올린다.
|
|
62
|
+
|
|
63
|
+
| 항목 | 출처 | 상태 |
|
|
64
|
+
| --- | --- | --- |
|
|
65
|
+
|
|
66
|
+
## 5. 구현하며 새로 정한 것
|
|
67
|
+
|
|
68
|
+
기술 아키텍처가 다루지 않은 판단이다. 이유를 함께 적는다.
|
|
69
|
+
|
|
70
|
+
| 항목 | 결정 | 이유 |
|
|
71
|
+
| --- | --- | --- |
|
|
72
|
+
|
|
73
|
+
## 6. 기준 예외
|
|
74
|
+
|
|
75
|
+
시안·설계도를 의도적으로 벗어난 곳. **여기 없는 차이는 버그다.**
|
|
76
|
+
|
|
77
|
+
| 항목 | 원래 | 실제 | 범위 | 이유 | 보상 조치 |
|
|
78
|
+
| --- | --- | --- | --- | --- | --- |
|
|
79
|
+
|
|
80
|
+
## 7. 변경 이력
|
|
81
|
+
|
|
82
|
+
### {{YYYY-MM-DD}}
|
|
83
|
+
|
|
84
|
+
| 일자 | AI | 계정 |
|
|
85
|
+
| --- | --- | --- |
|
|
86
|
+
| {{YYYY-MM-DD}} | | |
|
|
87
|
+
|
|
88
|
+
- 최초 작성
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: build-change-log
|
|
3
|
+
title: 구현 이력
|
|
4
|
+
summary: 무엇을 어떤 근거로 만들었고 어떻게 판정했는지의 기록.
|
|
5
|
+
date: {{YYYY-MM-DD}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 구현 이력
|
|
9
|
+
|
|
10
|
+
> **4단계 기록이다.** 3단계의 `DS-` 와 구분되는 `BD-` 를 쓴다.
|
|
11
|
+
|
|
12
|
+
## 기록 규칙
|
|
13
|
+
|
|
14
|
+
- **화면·기능 단위로** 항목을 추가한다. 몰아서 쓰지 않는다.
|
|
15
|
+
- **근거에 수용 기준 ID(`F-01` 등)를 적는다.** 진행률이 이걸 세고,
|
|
16
|
+
한 번도 언급되지 않은 수용 기준은 `build.mjs check` 가 경고한다.
|
|
17
|
+
- **대조와 검수 결과를 반드시 적는다.** 비워 두면 "다 봤다"로 읽힌다.
|
|
18
|
+
- 통과하지 못한 것은 통과하지 못했다고 적는다.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## BD-001. 제목
|
|
23
|
+
|
|
24
|
+
**일자** {{YYYY-MM-DD}}
|
|
25
|
+
**근거** 어떤 문서·시안·수용 기준(`F-xx`)을 따랐는가
|
|
26
|
+
**변경** 무엇을 만들었는가
|
|
27
|
+
**대조** `parity.html` — 어긋남 몇 건, 무엇. 표식이 없으면 "표식 없음"
|
|
28
|
+
**검수** `audit.html` 필수 항목 / 빌드 검증 / 릴리즈 체크리스트
|
|
29
|
+
**확인 못 함** 못 본 것과 그 이유. 없으면 "없음"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: build-coverage
|
|
3
|
+
title: 구현 커버리지
|
|
4
|
+
summary: 화면 정의서·IA 대비 실제로 무엇을 만들었는지.
|
|
5
|
+
date: {{YYYY-MM-DD}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 구현 커버리지
|
|
9
|
+
|
|
10
|
+
> **빠뜨린 것과 의도적으로 뺀 것은 다르다.** 그 둘을 구분해 적는 곳이다.
|
|
11
|
+
> 3단계는 방향 확인을 위해 화면 1~3개만 만든다. 나머지를 채우는 것이 4단계이므로,
|
|
12
|
+
> 무엇이 남았는지 여기서만 보이면 된다.
|
|
13
|
+
|
|
14
|
+
## 상태 표기
|
|
15
|
+
|
|
16
|
+
| 표기 | 뜻 |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| ✅ | 구현됨 |
|
|
19
|
+
| 🟡 | 부분 — 무엇이 빠졌는지 적는다 |
|
|
20
|
+
| ⭕ | **의도적으로 뺌** — 근거를 적는다 (예: 콘텐츠 0건 숨김 규칙) |
|
|
21
|
+
| ❌ | 미구현 |
|
|
22
|
+
|
|
23
|
+
## 1. 경로 (IA 사이트맵 대비)
|
|
24
|
+
|
|
25
|
+
| 경로 | 상태 | 시안 | 비고 |
|
|
26
|
+
| --- | --- | --- | --- |
|
|
27
|
+
| `/` | | | |
|
|
28
|
+
|
|
29
|
+
## 2. 화면별 섹션 (화면 정의서 대비)
|
|
30
|
+
|
|
31
|
+
| 화면 | 섹션 | 상태 | 비고 |
|
|
32
|
+
| --- | --- | --- | --- |
|
|
33
|
+
|
|
34
|
+
## 3. 상태 화면
|
|
35
|
+
|
|
36
|
+
| 상태 | 상태 | 비고 |
|
|
37
|
+
| --- | --- | --- |
|
|
38
|
+
| 빈 상태 | | |
|
|
39
|
+
| 404 | | |
|
|
40
|
+
| 폼 `idle` / `submitting` / `success` / `error` | | |
|
|
41
|
+
|
|
42
|
+
## 4. 수용 기준
|
|
43
|
+
|
|
44
|
+
| ID | 요구사항 | 상태 | 판정 근거 |
|
|
45
|
+
| --- | --- | --- | --- |
|
|
46
|
+
|
|
47
|
+
## 5. 남은 것
|
|
48
|
+
|
|
49
|
+
여기가 비어야 4단계가 끝난다.
|