timsquad 3.5.0 → 3.6.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/README.ko.md +4 -0
- package/README.md +4 -0
- package/dist/commands/audit.d.ts +22 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +233 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +84 -3
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +48 -2
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/init.js +42 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/log.d.ts.map +1 -1
- package/dist/commands/log.js +32 -0
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/meta-index.d.ts.map +1 -1
- package/dist/commands/meta-index.js +30 -0
- package/dist/commands/meta-index.js.map +1 -1
- package/dist/commands/retro.d.ts.map +1 -1
- package/dist/commands/retro.js +63 -6
- package/dist/commands/retro.js.map +1 -1
- package/dist/commands/workflow.d.ts +2 -0
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +180 -6
- package/dist/commands/workflow.js.map +1 -1
- package/dist/daemon/context-writer.d.ts +14 -0
- package/dist/daemon/context-writer.d.ts.map +1 -1
- package/dist/daemon/context-writer.js +29 -0
- package/dist/daemon/context-writer.js.map +1 -1
- package/dist/daemon/event-queue.d.ts +4 -0
- package/dist/daemon/event-queue.d.ts.map +1 -1
- package/dist/daemon/event-queue.js +107 -6
- package/dist/daemon/event-queue.js.map +1 -1
- package/dist/daemon/file-watcher.d.ts +14 -8
- package/dist/daemon/file-watcher.d.ts.map +1 -1
- package/dist/daemon/file-watcher.js +78 -41
- package/dist/daemon/file-watcher.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +42 -36
- package/dist/daemon/index.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-generator.d.ts.map +1 -1
- package/dist/lib/agent-generator.js +11 -0
- package/dist/lib/agent-generator.js.map +1 -1
- package/dist/lib/compile-rules.d.ts +2 -0
- package/dist/lib/compile-rules.d.ts.map +1 -1
- package/dist/lib/compile-rules.js +2 -0
- package/dist/lib/compile-rules.js.map +1 -1
- package/dist/lib/compiler.d.ts +21 -1
- package/dist/lib/compiler.d.ts.map +1 -1
- package/dist/lib/compiler.js +113 -3
- package/dist/lib/compiler.js.map +1 -1
- package/dist/lib/config.d.ts +3 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +17 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/skill-generator.d.ts +1 -1
- package/dist/lib/skill-generator.d.ts.map +1 -1
- package/dist/lib/skill-generator.js +17 -2
- package/dist/lib/skill-generator.js.map +1 -1
- package/dist/lib/ssot-map.d.ts +31 -0
- package/dist/lib/ssot-map.d.ts.map +1 -0
- package/dist/lib/ssot-map.js +76 -0
- package/dist/lib/ssot-map.js.map +1 -0
- package/dist/lib/template.js +1 -0
- package/dist/lib/template.js.map +1 -1
- package/dist/lib/workflow-state.d.ts +1 -1
- package/dist/lib/workflow-state.d.ts.map +1 -1
- package/dist/lib/workflow-state.js +1 -1
- package/dist/lib/workflow-state.js.map +1 -1
- package/dist/types/config.d.ts +10 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +22 -17
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/meta-index.d.ts +8 -0
- package/dist/types/meta-index.d.ts.map +1 -1
- package/dist/types/project.d.ts +1 -1
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/project.js.map +1 -1
- package/dist/types/ssot-map.d.ts +28 -0
- package/dist/types/ssot-map.d.ts.map +1 -0
- package/dist/types/ssot-map.js +6 -0
- package/dist/types/ssot-map.js.map +1 -0
- package/package.json +1 -1
- package/templates/base/agents/base/tsq-librarian.md +45 -0
- package/templates/base/skills/_shared/naming-conventions.md +49 -0
- package/templates/base/skills/_template/SKILL.md +33 -17
- package/templates/base/skills/audit/SKILL.md +66 -0
- package/templates/base/skills/coding/SKILL.md +49 -29
- package/templates/base/skills/coding/rules/async-patterns.md +81 -0
- package/templates/base/skills/coding/rules/code-organization.md +80 -0
- package/templates/base/skills/coding/rules/error-handling.md +76 -0
- package/templates/base/skills/coding/rules/type-safety.md +85 -0
- package/templates/base/skills/controller/SKILL.md +50 -84
- package/templates/base/skills/controller/delegation/developer.md +25 -0
- package/templates/base/skills/controller/delegation/librarian.md +33 -0
- package/templates/base/skills/controller/delegation/reviewer.md +19 -0
- package/templates/base/skills/controller/memory/.gitkeep +0 -0
- package/templates/base/skills/controller/triggers/phase-complete.md +25 -0
- package/templates/base/skills/controller/triggers/sequence-complete.md +15 -0
- package/templates/base/skills/controller/triggers/ssot-changed.md +14 -0
- package/templates/base/skills/controller/triggers/task-complete.md +14 -0
- package/templates/base/skills/database/SKILL.md +8 -25
- package/templates/base/skills/database/rules/query-optimization.md +32 -0
- package/templates/base/skills/database/rules/supabase-patterns.md +94 -0
- package/templates/base/skills/librarian/SKILL.md +53 -0
- package/templates/base/skills/main-session-constraints/SKILL.md +62 -0
- package/templates/base/skills/methodology/tdd/SKILL.md +6 -0
- package/templates/base/skills/product-audit/SKILL.md +115 -0
- package/templates/base/skills/product-audit/checklists/01-security.md +86 -0
- package/templates/base/skills/product-audit/checklists/02-performance.md +67 -0
- package/templates/base/skills/product-audit/checklists/03-seo.md +46 -0
- package/templates/base/skills/product-audit/checklists/04-accessibility.md +66 -0
- package/templates/base/skills/product-audit/checklists/05-ui-ux.md +50 -0
- package/templates/base/skills/product-audit/checklists/06-architecture.md +53 -0
- package/templates/base/skills/product-audit/checklists/07-functional-requirements.md +55 -0
- package/templates/base/skills/product-audit/rules/audit-protocol.md +136 -0
- package/templates/base/skills/product-audit/rules/false-positive-guard.md +81 -0
- package/templates/base/skills/product-audit/rules/scoring-criteria.md +113 -0
- package/templates/base/skills/product-audit/templates/improvement-plan-template.md +60 -0
- package/templates/base/skills/product-audit/templates/report-template.md +88 -0
- package/templates/base/skills/prompt-engineering/SKILL.md +54 -73
- package/templates/base/skills/retrospective/SKILL.md +70 -95
- package/templates/base/skills/retrospective/references/improvement-template.md +26 -0
- package/templates/base/skills/review/SKILL.md +72 -0
- package/templates/base/skills/security/SKILL.md +50 -37
- package/templates/base/skills/security/rules/auth-patterns.md +62 -0
- package/templates/base/skills/security/rules/dependency-security.md +69 -0
- package/templates/base/skills/security/rules/input-validation.md +68 -0
- package/templates/base/skills/security/rules/secrets-management.md +65 -0
- package/templates/base/skills/spec/SKILL.md +60 -0
- package/templates/base/skills/testing/SKILL.md +33 -25
- package/templates/base/skills/testing/references/e2e-stability.md +33 -0
- package/templates/base/skills/tsq-cli/SKILL.md +73 -0
- package/templates/base/skills/tsq-cli/references/cli-reference.md +92 -0
- package/templates/base/skills/tsq-protocol/SKILL.md +41 -25
- package/templates/base/skills/typescript/SKILL.md +3 -9
- package/templates/base/timsquad/ssot/test-spec.template.md +11 -1
- package/templates/base/timsquad/ssot-map.template.yaml +41 -0
- package/templates/platforms/claude-code/rules/api-conventions.md +12 -0
- package/templates/platforms/claude-code/rules/librarian-constraints.md +11 -0
- package/templates/platforms/claude-code/rules/test-conventions.md +13 -0
- package/templates/platforms/claude-code/scripts/change-scope-guard.sh +113 -0
- package/templates/platforms/claude-code/scripts/completion-guard.sh +75 -13
- package/templates/platforms/claude-code/scripts/context-restore.sh +68 -0
- package/templates/platforms/claude-code/scripts/e2e-commit-gate.sh +70 -0
- package/templates/platforms/claude-code/scripts/e2e-marker.sh +51 -0
- package/templates/platforms/claude-code/scripts/phase-guard.sh +1 -1
- package/templates/platforms/claude-code/scripts/pre-compact.sh +70 -0
- package/templates/platforms/claude-code/scripts/skill-inject.sh +216 -0
- package/templates/platforms/claude-code/scripts/skill-rules.json +11 -1
- package/templates/platforms/claude-code/scripts/subagent-inject.sh +53 -0
- package/templates/platforms/claude-code/settings.json +27 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Accessibility Checklist
|
|
3
|
+
area: "04"
|
|
4
|
+
tags: accessibility, wcag, eaa, aria
|
|
5
|
+
standards: WCAG 2.2 AA, EAA 2025, WAI-ARIA APG
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 04. Accessibility Checklist
|
|
9
|
+
|
|
10
|
+
## A. Perceivable (인식 가능)
|
|
11
|
+
|
|
12
|
+
| # | 항목 | Severity | 근거 |
|
|
13
|
+
|---|------|:--------:|------|
|
|
14
|
+
| A-1 | 모든 이미지에 의미 있는 alt 텍스트 (장식용은 alt="") | CRITICAL | WCAG 1.1.1 |
|
|
15
|
+
| A-2 | 색상 대비: 일반 텍스트 >= 4.5:1, 대형 텍스트 >= 3:1 | CRITICAL | WCAG 1.4.3 |
|
|
16
|
+
| A-3 | 정보를 색상만으로 전달하지 않음 (패턴, 레이블 병행) | HIGH | WCAG 1.4.1 |
|
|
17
|
+
| A-4 | 미디어 대안 제공 — 자막, 오디오 설명 | MEDIUM | WCAG 1.2 |
|
|
18
|
+
| A-5 | `prefers-reduced-motion` 미디어 쿼리로 애니메이션 제어 | MEDIUM | WCAG 2.3.3 |
|
|
19
|
+
|
|
20
|
+
## B. Operable (조작 가능)
|
|
21
|
+
|
|
22
|
+
| # | 항목 | Severity | 근거 |
|
|
23
|
+
|---|------|:--------:|------|
|
|
24
|
+
| B-1 | 전체 키보드 탐색 — 모든 인터랙티브 요소 접근·조작 가능 | CRITICAL | WCAG 2.1.1 |
|
|
25
|
+
| B-2 | 포커스 표시기 — 모든 포커스 가능 요소에 시각적 표시 | CRITICAL | WCAG 2.4.7 |
|
|
26
|
+
| B-3 | Focus Not Obscured — 포커스 요소가 sticky 헤더·모달에 가려지지 않음 | CRITICAL | WCAG 2.4.11 (2.2 신규) |
|
|
27
|
+
| B-4 | Target Size >= 24×24 CSS px (Google 권장 48×48px) | HIGH | WCAG 2.5.8 (2.2 신규) |
|
|
28
|
+
| B-5 | 드래그 대안 — 모든 drag-and-drop에 클릭 기반 대안 제공 | HIGH | WCAG 2.5.7 (2.2 신규) |
|
|
29
|
+
| B-6 | Skip navigation 링크 | MEDIUM | WCAG 2.4.1 |
|
|
30
|
+
| B-7 | 적절한 헤딩 계층 (h1-h6), 페이지당 h1 하나 | HIGH | WCAG 1.3.1 |
|
|
31
|
+
|
|
32
|
+
## C. Understandable (이해 가능)
|
|
33
|
+
|
|
34
|
+
| # | 항목 | Severity | 근거 |
|
|
35
|
+
|---|------|:--------:|------|
|
|
36
|
+
| C-1 | Accessible Authentication — 비밀번호 붙여넣기 허용, 인지 기능 테스트 대안 | CRITICAL | WCAG 3.3.8 (2.2 신규) |
|
|
37
|
+
| C-2 | Consistent Help — 도움말 위치 페이지 간 일관 | HIGH | WCAG 3.2.6 (2.2 신규) |
|
|
38
|
+
| C-3 | Redundant Entry — 이전 입력 정보 재입력 요구 금지 | HIGH | WCAG 3.3.7 (2.2 신규) |
|
|
39
|
+
| C-4 | 폼 입력에 연결된 `<label>` — 오류 메시지 프로그래밍적 연결 | HIGH | WCAG 3.3.2 |
|
|
40
|
+
| C-5 | `lang` 속성 — `<html>`에 설정, 언어 변경 부분에 `lang` 마킹 | MEDIUM | WCAG 3.1.1 |
|
|
41
|
+
| C-6 | 오류 메시지: 평문, 해결책 포함 | MEDIUM | WCAG 3.3.3 |
|
|
42
|
+
|
|
43
|
+
## D. Robust (견고)
|
|
44
|
+
|
|
45
|
+
| # | 항목 | Severity | 근거 |
|
|
46
|
+
|---|------|:--------:|------|
|
|
47
|
+
| D-1 | ARIA "철칙": 네이티브 HTML 우선 (`<button>`, `<a>`, `<input>`), ARIA는 HTML 불가 시만 | HIGH | WAI-ARIA APG |
|
|
48
|
+
| D-2 | ARIA roles/states/properties — APG 패턴 준수, 잘못된 ARIA > 없는 ARIA | HIGH | WAI-ARIA 1.2 |
|
|
49
|
+
| D-3 | Live region (`aria-live`) — 동적 콘텐츠 업데이트 (토스트, 알림, 로딩) | MEDIUM | WAI-ARIA |
|
|
50
|
+
| D-4 | 의미 있는 링크 텍스트 — "더 보기" 단독 금지 | MEDIUM | WCAG 2.4.4 |
|
|
51
|
+
|
|
52
|
+
## E. Testing
|
|
53
|
+
|
|
54
|
+
| # | 항목 | Severity | 근거 |
|
|
55
|
+
|---|------|:--------:|------|
|
|
56
|
+
| E-1 | axe-core 자동 검사 통과 (WCAG 이슈 ~57% 탐지) | HIGH | 자동화 기준선 |
|
|
57
|
+
| E-2 | 스크린 리더 테스트 (NVDA+Firefox 또는 VoiceOver+Safari) | MEDIUM | 수동 검증 필수 |
|
|
58
|
+
| E-3 | CI에 axe-core 통합 | LOW | 회귀 방지 |
|
|
59
|
+
|
|
60
|
+
## 법적 참고
|
|
61
|
+
|
|
62
|
+
| 규정 | 기준 | 발효 |
|
|
63
|
+
|------|------|------|
|
|
64
|
+
| EAA (European Accessibility Act) | WCAG 2.1 AA + EN 301 549 | 2025.06.28 |
|
|
65
|
+
| ADA (US) | WCAG 2.2 AA (사실상 표준) | 지속 |
|
|
66
|
+
| Section 508 | WCAG 2.2 AA | 업데이트됨 |
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: UI/UX Checklist
|
|
3
|
+
area: "05"
|
|
4
|
+
tags: ui, ux, heuristics, responsive, design-system
|
|
5
|
+
standards: Nielsen 10 Heuristics, Responsive Design Best Practices
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 05. UI/UX Checklist
|
|
9
|
+
|
|
10
|
+
## A. Nielsen 10 Usability Heuristics
|
|
11
|
+
|
|
12
|
+
| # | 항목 | 점검 질문 | Severity |
|
|
13
|
+
|---|------|-----------|:--------:|
|
|
14
|
+
| A-1 | 시스템 상태 가시성 | 로딩·진행·확인 상태가 표시되는가? | HIGH |
|
|
15
|
+
| A-2 | 현실 세계 부합 | 내부 용어 대신 사용자 언어를 사용하는가? | HIGH |
|
|
16
|
+
| A-3 | 사용자 통제와 자유 | 실행취소·뒤로가기·취소가 명확한가? | HIGH |
|
|
17
|
+
| A-4 | 일관성과 표준 | 버튼·레이블·패턴이 전체적으로 일관된가? | HIGH |
|
|
18
|
+
| A-5 | 오류 예방 | 입력 검증, 비활성화, 파괴적 작업 확인이 있는가? | HIGH |
|
|
19
|
+
| A-6 | 인식 > 회상 | 필요한 정보가 보이는가, 기억을 요구하지 않는가? | MEDIUM |
|
|
20
|
+
| A-7 | 유연성과 효율 | 키보드 단축키, 파워 유저 기능이 있는가? | MEDIUM |
|
|
21
|
+
| A-8 | 미적·미니멀 디자인 | 불필요한 요소 없이 목적에 집중하는가? | MEDIUM |
|
|
22
|
+
| A-9 | 오류 인식·진단·복구 | 오류 메시지가 평문이고 해결책을 제시하는가? | HIGH |
|
|
23
|
+
| A-10 | 도움과 문서 | 검색 가능하고, 작업 지향적이며, 간결한가? | LOW |
|
|
24
|
+
|
|
25
|
+
평가: 3-5명 평가자 권장 (1인은 ~35% 이슈만 발견).
|
|
26
|
+
Severity: 1(외형) ~ 4(재앙) 스케일.
|
|
27
|
+
|
|
28
|
+
## B. Responsive Design
|
|
29
|
+
|
|
30
|
+
| # | 항목 | Severity | 근거 |
|
|
31
|
+
|---|------|:--------:|------|
|
|
32
|
+
| B-1 | Mobile-first 접근 — 모바일 트래픽 > 70% | CRITICAL | 웹 트래픽 통계 |
|
|
33
|
+
| B-2 | 터치 타겟 >= 44×44px, 적절한 간격, hover-only 인터랙션 없음 | CRITICAL | 모바일 UX |
|
|
34
|
+
| B-3 | 본문 텍스트 >= 16px — 줌 없이 읽기 가능 | CRITICAL | 가독성 |
|
|
35
|
+
| B-4 | 수평 스크롤 없음 — 모든 뷰포트에서 콘텐츠가 화면 안에 | HIGH | 레이아웃 |
|
|
36
|
+
| B-5 | 콘텐츠 기반 breakpoint — 임의 픽셀 값이 아닌 콘텐츠 기준 | HIGH | 반응형 설계 |
|
|
37
|
+
| B-6 | 유동 타이포그래피 — `clamp()` 활용 | MEDIUM | 가독성 |
|
|
38
|
+
| B-7 | 실제 기기 테스트 (iOS + Android) + DevTools 에뮬레이션 | HIGH | 디바이스 호환 |
|
|
39
|
+
| B-8 | 느린 네트워크 테스트 (3G 스로틀링) | MEDIUM | 저사양 환경 |
|
|
40
|
+
|
|
41
|
+
## C. Design System
|
|
42
|
+
|
|
43
|
+
| # | 항목 | Severity | 근거 |
|
|
44
|
+
|---|------|:--------:|------|
|
|
45
|
+
| C-1 | 컴포넌트가 디자인 토큰 준수 (색상, 간격, 타이포, 그림자) | HIGH | 일관성 |
|
|
46
|
+
| C-2 | 하드코딩된 색상/간격 없음 — 모두 토큰 참조 | HIGH | 유지보수 |
|
|
47
|
+
| C-3 | 일관된 타이포 스케일 적용 | HIGH | 시각적 위계 |
|
|
48
|
+
| C-4 | 일관된 간격 시스템 (4px/8px 기반 그리드) | MEDIUM | 레이아웃 |
|
|
49
|
+
| C-5 | 인터랙티브 상태 정의 — default, hover, focus, active, disabled, loading, error | MEDIUM | 상호작용 |
|
|
50
|
+
| C-6 | 아이콘 세트 통일 — 일관된 크기와 스타일 | MEDIUM | 시각적 통일 |
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Architecture & DB Checklist
|
|
3
|
+
area: "06"
|
|
4
|
+
tags: architecture, database, api, iso-25010
|
|
5
|
+
standards: ISO/IEC 25010:2023, OWASP API Security, Data Architecture Best Practices
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 06. Architecture & DB Checklist
|
|
9
|
+
|
|
10
|
+
## A. 코드 아키텍처 (ISO 25010:2023 기반)
|
|
11
|
+
|
|
12
|
+
| # | 항목 | Severity | 근거 |
|
|
13
|
+
|---|------|:--------:|------|
|
|
14
|
+
| A-1 | 관심사 분리 — 프레젠테이션·비즈니스·데이터 계층 분리 | HIGH | Maintainability |
|
|
15
|
+
| A-2 | 의존성 방향 — 상위 계층이 하위 계층에만 의존 (역방향 금지) | HIGH | Maintainability |
|
|
16
|
+
| A-3 | 순환 의존성 없음 — 모듈 간 순환 참조 금지 | HIGH | Maintainability |
|
|
17
|
+
| A-4 | 단일 책임 원칙 — 모듈/클래스당 하나의 변경 사유 | MEDIUM | Maintainability |
|
|
18
|
+
| A-5 | 인터페이스 분리 — 불필요한 의존성 강제 금지 | MEDIUM | Flexibility (신규) |
|
|
19
|
+
| A-6 | 설정 외부화 — 하드코딩된 설정값, 시크릿 금지 | HIGH | Security + Flexibility |
|
|
20
|
+
| A-7 | 에러 경계 — 장애 전파 차단, graceful degradation | HIGH | Reliability |
|
|
21
|
+
|
|
22
|
+
## B. API 설계
|
|
23
|
+
|
|
24
|
+
| # | 항목 | Severity | 근거 |
|
|
25
|
+
|---|------|:--------:|------|
|
|
26
|
+
| B-1 | API 버전 관리 — 명시적 버전, 이전 버전 폐기 계획 | HIGH | API9:2023 |
|
|
27
|
+
| B-2 | Rate limiting — 모든 API 엔드포인트에 리소스 소비 제어 | HIGH | API4:2023 |
|
|
28
|
+
| B-3 | 입력 검증 — content-type, 크기, 스키마 검증 | HIGH | API8:2023 |
|
|
29
|
+
| B-4 | 응답 최소화 — 필요한 필드만 반환 (과도한 데이터 노출 방지) | MEDIUM | API3:2023 |
|
|
30
|
+
| B-5 | API 인벤토리 — 모든 API, 서비스, 버전 목록 유지 | MEDIUM | API9:2023 |
|
|
31
|
+
| B-6 | SSRF 방지 — 서버 측 아웃바운드 URL allowlist | HIGH | API7:2023, CWE-918 |
|
|
32
|
+
|
|
33
|
+
## C. 데이터베이스
|
|
34
|
+
|
|
35
|
+
| # | 항목 | Severity | 근거 |
|
|
36
|
+
|---|------|:--------:|------|
|
|
37
|
+
| C-1 | 정규화 기준 충족 (3NF 기본, 비정규화 시 ADR 문서) | HIGH | 데이터 무결성 |
|
|
38
|
+
| C-2 | 인덱스 전략 — 쿼리 패턴 기반, 불필요 인덱스 없음 | HIGH | Performance |
|
|
39
|
+
| C-3 | N+1 쿼리 방지 — Eager loading 또는 JOIN 사용 | HIGH | Performance |
|
|
40
|
+
| C-4 | 마이그레이션 롤백 스크립트 존재 | HIGH | Reliability |
|
|
41
|
+
| C-5 | 민감 데이터 암호화 — at rest (AES-256), in transit (TLS) | CRITICAL | Security |
|
|
42
|
+
| C-6 | Least-privilege 접근 — 역할 기반 DB 권한 | HIGH | Security |
|
|
43
|
+
| C-7 | 감사 로깅 — 변조 방지 저장소 | MEDIUM | Compliance |
|
|
44
|
+
| C-8 | 커넥션 풀 관리 — 누수 없음, 적절한 pool size | MEDIUM | Reliability |
|
|
45
|
+
|
|
46
|
+
## D. 인프라 & 확장성
|
|
47
|
+
|
|
48
|
+
| # | 항목 | Severity | 근거 |
|
|
49
|
+
|---|------|:--------:|------|
|
|
50
|
+
| D-1 | 환경 분리 — dev/staging/production 격리 | HIGH | Safety (ISO 25010 신규) |
|
|
51
|
+
| D-2 | 헬스체크 엔드포인트 존재 | MEDIUM | Reliability |
|
|
52
|
+
| D-3 | 수평 확장 가능 설계 — stateless 서비스, 세션 외부화 | MEDIUM | Scalability |
|
|
53
|
+
| D-4 | 장애 복구 계획 — 백업, 복구 절차 문서화 | MEDIUM | Reliability |
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Functional & Requirements Checklist
|
|
3
|
+
area: "07"
|
|
4
|
+
tags: functional, requirements, rtm, coverage
|
|
5
|
+
standards: ISO 29119, Requirements Traceability Matrix
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 07. Functional & Requirements Checklist
|
|
9
|
+
|
|
10
|
+
## A. Requirements Traceability
|
|
11
|
+
|
|
12
|
+
| # | 항목 | Severity | 근거 |
|
|
13
|
+
|---|------|:--------:|------|
|
|
14
|
+
| A-1 | 양방향 추적성 — 요구사항 → 테스트 → 결함, 역방향도 가능 | HIGH | RTM 핵심 |
|
|
15
|
+
| A-2 | 모든 요구사항에 대응하는 테스트 케이스 존재 | HIGH | 요구사항 커버리지 |
|
|
16
|
+
| A-3 | 모든 기능에 대한 인수 조건 명시 | HIGH | 검증 가능성 |
|
|
17
|
+
| A-4 | RTM 최신 상태 유지 — 스프린트마다 갱신 | MEDIUM | Living document |
|
|
18
|
+
| A-5 | 미구현 요구사항 식별 및 사유 기록 | MEDIUM | 추적성 |
|
|
19
|
+
|
|
20
|
+
## B. Functional Testing
|
|
21
|
+
|
|
22
|
+
| # | 항목 | Severity | 근거 |
|
|
23
|
+
|---|------|:--------:|------|
|
|
24
|
+
| B-1 | Happy path 테스트 — 모든 핵심 기능의 정상 흐름 | CRITICAL | 기본 품질 |
|
|
25
|
+
| B-2 | Edge case 테스트 — 경계 조건 (빈 값, 0, null, 최대값) | HIGH | 견고성 |
|
|
26
|
+
| B-3 | Error case 테스트 — 오류 상황, 네트워크 장애, 잘못된 입력 | HIGH | 안정성 |
|
|
27
|
+
| B-4 | 기능당 5-7개 핵심 테스트 + 3-5개 엣지 케이스 | MEDIUM | 적정 커버리지 |
|
|
28
|
+
| B-5 | 자동화 + 탐색적 테스트 병행 | MEDIUM | ISO 29119 |
|
|
29
|
+
|
|
30
|
+
## C. Test Coverage
|
|
31
|
+
|
|
32
|
+
| # | 항목 | Severity | 근거 |
|
|
33
|
+
|---|------|:--------:|------|
|
|
34
|
+
| C-1 | 라인 커버리지 >= 80% | HIGH | 커버리지 기준 |
|
|
35
|
+
| C-2 | 브랜치 커버리지 >= 70% | HIGH | 커버리지 기준 |
|
|
36
|
+
| C-3 | 함수 커버리지 >= 80% | MEDIUM | 커버리지 기준 |
|
|
37
|
+
| C-4 | 커버리지 리포트 CI 통합 — 회귀 감지 | MEDIUM | 자동화 |
|
|
38
|
+
| C-5 | 커버리지 하락 시 PR 차단 또는 경고 | MEDIUM | 품질 게이트 |
|
|
39
|
+
|
|
40
|
+
## D. Integration & E2E
|
|
41
|
+
|
|
42
|
+
| # | 항목 | Severity | 근거 |
|
|
43
|
+
|---|------|:--------:|------|
|
|
44
|
+
| D-1 | 핵심 사용자 여정(Critical User Journey) E2E 테스트 | HIGH | 통합 품질 |
|
|
45
|
+
| D-2 | API 통합 테스트 — 외부 서비스 연동 검증 | HIGH | 호환성 |
|
|
46
|
+
| D-3 | E2E 안정성 — flaky test 비율 < 5% | MEDIUM | 테스트 신뢰도 |
|
|
47
|
+
| D-4 | 테스트 데이터 관리 — 독립적, 재현 가능한 테스트 환경 | MEDIUM | 테스트 품질 |
|
|
48
|
+
|
|
49
|
+
## E. Regression
|
|
50
|
+
|
|
51
|
+
| # | 항목 | Severity | 근거 |
|
|
52
|
+
|---|------|:--------:|------|
|
|
53
|
+
| E-1 | 변경 영향 분석 — 코드 변경과 테스트 케이스 매핑 | HIGH | 회귀 방지 |
|
|
54
|
+
| E-2 | 회귀 테스트 스위트 CI 통합 | HIGH | 자동화 |
|
|
55
|
+
| E-3 | 이전 감사 finding에 대한 회귀 테스트 존재 | MEDIUM | 재발 방지 |
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Audit Protocol
|
|
3
|
+
impact: HIGH
|
|
4
|
+
tags: audit, protocol, process
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Audit Protocol — 6단계 상세 절차
|
|
8
|
+
|
|
9
|
+
## Phase 1: Plan (감사 계획)
|
|
10
|
+
|
|
11
|
+
### 입력
|
|
12
|
+
- 프로젝트 코드베이스
|
|
13
|
+
- 이전 감사 리포트 (재감사 시)
|
|
14
|
+
- FP Registry (존재 시)
|
|
15
|
+
|
|
16
|
+
### 절차
|
|
17
|
+
|
|
18
|
+
1. **범위 결정**: 감사 대상 디렉토리, 모듈, 페이지 식별
|
|
19
|
+
2. **영역 선택**: 7개 영역 중 대상 선택 (전체 또는 부분)
|
|
20
|
+
3. **가중치 조정**: 프로젝트 타입에 따라 `scoring-criteria.md`의 가중치 조정
|
|
21
|
+
4. **기준 확인**: 각 영역의 체크리스트 버전 및 적용 기준 확인
|
|
22
|
+
5. **계획서 작성**: 아래 형식으로 작성
|
|
23
|
+
|
|
24
|
+
```markdown
|
|
25
|
+
## Audit Plan
|
|
26
|
+
|
|
27
|
+
- **일시**: {날짜}
|
|
28
|
+
- **범위**: {대상 모듈/페이지}
|
|
29
|
+
- **영역**: {선택된 영역 목록}
|
|
30
|
+
- **가중치**: {영역별 가중치}
|
|
31
|
+
- **도구**: {사용할 자동화 도구}
|
|
32
|
+
- **기준**: {gate 통과 기준}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
6. **유저 컨펌**: 계획서를 유저에게 제시하고 승인 받은 후 진행
|
|
36
|
+
|
|
37
|
+
### 출력
|
|
38
|
+
- 승인된 감사 계획서
|
|
39
|
+
|
|
40
|
+
## Phase 2: Audit (감사 실행)
|
|
41
|
+
|
|
42
|
+
### 절차
|
|
43
|
+
|
|
44
|
+
1. **자동화 감사 실행** (가능한 영역)
|
|
45
|
+
|
|
46
|
+
| 영역 | 도구 | 측정 대상 |
|
|
47
|
+
|------|------|-----------|
|
|
48
|
+
| Security | eslint-plugin-security, npm audit, Snyk | 코드 패턴, 의존성 취약점 |
|
|
49
|
+
| Performance | Lighthouse, bundlesize | CWV, 번들 크기 |
|
|
50
|
+
| SEO | Lighthouse SEO, structured data validator | SEO 점수, 스키마 |
|
|
51
|
+
| Accessibility | axe-core, Lighthouse a11y | WCAG 위반 |
|
|
52
|
+
| Functional | test runner (vitest, jest, playwright) | 커버리지, 통과율 |
|
|
53
|
+
|
|
54
|
+
2. **수동 감사 실행** (자동화 불가 영역)
|
|
55
|
+
|
|
56
|
+
| 영역 | 방법 |
|
|
57
|
+
|------|------|
|
|
58
|
+
| UI/UX | Nielsen Heuristic 기반 코드 리뷰 |
|
|
59
|
+
| Architecture | 코드 구조, 의존성 그래프, 데이터 흐름 분석 |
|
|
60
|
+
| Requirements | 요구사항 ↔ 구현 ↔ 테스트 추적 |
|
|
61
|
+
|
|
62
|
+
3. **항목별 판정**
|
|
63
|
+
|
|
64
|
+
| 판정 | 의미 |
|
|
65
|
+
|------|------|
|
|
66
|
+
| pass | 기준 충족 |
|
|
67
|
+
| fail | 기준 미달 — severity 부여 |
|
|
68
|
+
| warning | 권고 사항 — 즉시 수정 불필요 |
|
|
69
|
+
| skip | 해당 없음 (근거 기재 필수) |
|
|
70
|
+
|
|
71
|
+
4. **source 명시**: 모든 항목에 `estimated` 또는 `measured` 표기
|
|
72
|
+
|
|
73
|
+
## Phase 3: Report (보고)
|
|
74
|
+
|
|
75
|
+
### 절차
|
|
76
|
+
|
|
77
|
+
1. 영역별 점수 산출 (`scoring-criteria.md` 기준)
|
|
78
|
+
2. 가중 평균으로 종합 점수 계산
|
|
79
|
+
3. Finding을 severity별 분류
|
|
80
|
+
4. 이전 감사 대비 diff 생성 (재감사 시)
|
|
81
|
+
5. `templates/report-template.md` 형식으로 보고서 작성
|
|
82
|
+
|
|
83
|
+
### 보고서 품질 기준
|
|
84
|
+
- `source` 필드 없는 항목 → 검증 실패
|
|
85
|
+
- `estimated` 비율 50% 초과 → 경고
|
|
86
|
+
- FP Registry 항목은 점수 산출에서 제외
|
|
87
|
+
|
|
88
|
+
## Phase 4: Remediation Plan (개선 계획)
|
|
89
|
+
|
|
90
|
+
### 절차
|
|
91
|
+
|
|
92
|
+
1. Finding을 severity 기준 내림차순 정렬
|
|
93
|
+
2. 각 finding에 대해:
|
|
94
|
+
- 원인 분석
|
|
95
|
+
- 수정 방법 제안 (코드 diff 포함)
|
|
96
|
+
- 예상 영향 범위
|
|
97
|
+
- 관련 테스트 식별
|
|
98
|
+
3. `templates/improvement-plan-template.md` 형식으로 작성
|
|
99
|
+
4. **유저 컨펌 필수** — 컨펌 없이 개선 실시 금지
|
|
100
|
+
|
|
101
|
+
### 우선순위 원칙
|
|
102
|
+
- Critical → 현재 Phase 내 즉시 수정
|
|
103
|
+
- High → 현재 Phase 내 수정
|
|
104
|
+
- Medium → 백로그 등록
|
|
105
|
+
- Low → 선택적
|
|
106
|
+
|
|
107
|
+
## Phase 5: Fix (개선 실시)
|
|
108
|
+
|
|
109
|
+
### 절차
|
|
110
|
+
|
|
111
|
+
1. 컨펌된 계획서의 항목을 순서대로 수정
|
|
112
|
+
2. 각 수정 후:
|
|
113
|
+
- 관련 단위 테스트 실행
|
|
114
|
+
- 수정이 다른 영역에 영향을 줄 경우 통합 테스트 실행
|
|
115
|
+
3. 전체 수정 완료 후:
|
|
116
|
+
- 전체 테스트 스위트 실행 (unit + integration)
|
|
117
|
+
- E2E 테스트 실행
|
|
118
|
+
4. 테스트 실패 시 → 수정 반복
|
|
119
|
+
5. 모든 테스트 통과 → Phase 6 진행
|
|
120
|
+
|
|
121
|
+
## Phase 6: Re-audit (재감사)
|
|
122
|
+
|
|
123
|
+
### 절차
|
|
124
|
+
|
|
125
|
+
1. Phase 2와 동일한 감사 절차 실행
|
|
126
|
+
2. 이전 결과와 항목별 diff 비교:
|
|
127
|
+
- `FAIL → PASS`: 개선됨
|
|
128
|
+
- `PASS → PASS`: 유지됨
|
|
129
|
+
- `PASS → FAIL`: 회귀 — 즉시 대응
|
|
130
|
+
- `FAIL → FAIL`: 미해결 — 원인 재분석
|
|
131
|
+
3. Gate 기준 충족 여부 판정:
|
|
132
|
+
- 종합 점수 >= 60점
|
|
133
|
+
- Critical 항목 0건
|
|
134
|
+
- PASS→FAIL 전환 0건
|
|
135
|
+
4. Gate 통과 → 감사 완료
|
|
136
|
+
5. Gate 미통과 → Phase 4로 복귀
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: False Positive Guard
|
|
3
|
+
impact: HIGH
|
|
4
|
+
tags: audit, false-positive, triage
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# False Positive Guard
|
|
8
|
+
|
|
9
|
+
## FP 관리 원칙
|
|
10
|
+
|
|
11
|
+
- False Positive로 등록된 항목은 재감사 시 자동 제외
|
|
12
|
+
- FP 등록 시 반드시 `reason`(근거)과 `verified_by`(검증 방법) 기재
|
|
13
|
+
- FP Registry는 프로젝트 단위로 유지, 감사 간 누적
|
|
14
|
+
|
|
15
|
+
## FP Registry 형식
|
|
16
|
+
|
|
17
|
+
```markdown
|
|
18
|
+
## FP Registry
|
|
19
|
+
|
|
20
|
+
| ID | 영역 | 항목 | Reason | Verified By | 등록일 |
|
|
21
|
+
|----|------|------|--------|-------------|--------|
|
|
22
|
+
| FP-001 | Security | SQL Injection in ORM query | ORM이 parameterized query 사용 | 코드 확인 | 2026-03-08 |
|
|
23
|
+
| FP-002 | A11y | Missing alt on decorative SVG | 장식용 아이콘, aria-hidden 적용 | axe-core 재검증 | 2026-03-08 |
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## 계층적 검증 (Layered Verification)
|
|
27
|
+
|
|
28
|
+
FP 판정 전 3단계 검증을 거쳐 오탐을 최소화한다.
|
|
29
|
+
|
|
30
|
+
### Layer 1: 자동화 교차 검증
|
|
31
|
+
- 단일 도구의 결과만으로 fail 판정하지 않음
|
|
32
|
+
- 가능한 경우 2개 이상 도구로 교차 확인
|
|
33
|
+
- 예: eslint-plugin-security + npm audit 동시 플래그 → 높은 신뢰도
|
|
34
|
+
- 예: eslint만 플래그, npm audit 무반응 → FP 후보
|
|
35
|
+
|
|
36
|
+
### Layer 2: 컨텍스트 분석
|
|
37
|
+
- 플래그된 코드의 실제 실행 경로 확인
|
|
38
|
+
- 도달 불가능한 코드 경로의 취약점 → FP 후보
|
|
39
|
+
- 프레임워크/라이브러리가 이미 방어하는 패턴 → FP 후보
|
|
40
|
+
- 예: ORM의 parameterized query → SQL Injection FP
|
|
41
|
+
- 예: React의 자동 이스케이프 → XSS FP (단, dangerouslySetInnerHTML 제외)
|
|
42
|
+
|
|
43
|
+
### Layer 3: 수동 확인
|
|
44
|
+
- Layer 1, 2를 통과한 FP 후보에 대해 코드를 직접 확인
|
|
45
|
+
- 확인 결과를 `reason`에 구체적으로 기술
|
|
46
|
+
- 불확실한 경우 FP로 등록하지 않고 `warning`으로 유지
|
|
47
|
+
|
|
48
|
+
## FP 등록 규칙
|
|
49
|
+
|
|
50
|
+
### 등록 가능 조건
|
|
51
|
+
- 3단계 검증을 모두 통과한 경우
|
|
52
|
+
- 구체적 근거를 `reason`에 기술할 수 있는 경우
|
|
53
|
+
- 검증 방법을 `verified_by`에 명시할 수 있는 경우
|
|
54
|
+
|
|
55
|
+
### 등록 불가 조건
|
|
56
|
+
- "나중에 확인" 또는 "아마 괜찮을 것" 같은 모호한 근거
|
|
57
|
+
- Critical severity 항목 (Critical은 FP 등록 전 반드시 재현 시도)
|
|
58
|
+
- 검증 방법을 설명할 수 없는 경우
|
|
59
|
+
|
|
60
|
+
## FP 만료 정책
|
|
61
|
+
|
|
62
|
+
| 조건 | 처리 |
|
|
63
|
+
|------|------|
|
|
64
|
+
| 코드 변경으로 해당 영역 수정됨 | FP 자동 만료 → 재검증 필요 |
|
|
65
|
+
| 체크리스트 기준 버전 업데이트 | FP 재검토 필요 |
|
|
66
|
+
| 6개월 이상 미검토 | 만료 경고 |
|
|
67
|
+
|
|
68
|
+
## 보고서 내 FP 표기
|
|
69
|
+
|
|
70
|
+
FP 항목은 보고서에 별도 섹션으로 표기한다:
|
|
71
|
+
|
|
72
|
+
```markdown
|
|
73
|
+
### False Positives (점수 산출 제외)
|
|
74
|
+
|
|
75
|
+
| ID | 영역 | 항목 | Reason |
|
|
76
|
+
|----|------|------|--------|
|
|
77
|
+
| FP-001 | Security | SQL Injection in ORM query | ORM parameterized query 사용 확인 |
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
- FP 항목 수가 전체 항목의 20%를 초과하면 경고
|
|
81
|
+
- 이는 체크리스트 자체의 정확도 문제를 시사
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Scoring Criteria
|
|
3
|
+
impact: HIGH
|
|
4
|
+
tags: audit, scoring, metrics
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Scoring Criteria
|
|
8
|
+
|
|
9
|
+
## 스코어링 원칙
|
|
10
|
+
|
|
11
|
+
- **정량 70% + 정성 30%** 가중 평균
|
|
12
|
+
- 정량: 자동화 도구 결과, 메트릭 측정값 (source: measured)
|
|
13
|
+
- 정성: 코드 리뷰, 설계 판단 (source: estimated)
|
|
14
|
+
- 모든 점수는 0-100 스케일
|
|
15
|
+
|
|
16
|
+
## 영역별 기본 가중치
|
|
17
|
+
|
|
18
|
+
| # | 영역 | 기본 가중치 | 조정 범위 |
|
|
19
|
+
|---|------|:---------:|:---------:|
|
|
20
|
+
| 01 | Security | 25% | 15-35% |
|
|
21
|
+
| 02 | Performance | 15% | 10-25% |
|
|
22
|
+
| 03 | SEO | 10% | 5-15% |
|
|
23
|
+
| 04 | Accessibility | 10% | 5-20% |
|
|
24
|
+
| 05 | UI/UX | 10% | 5-15% |
|
|
25
|
+
| 06 | Architecture & DB | 15% | 10-25% |
|
|
26
|
+
| 07 | Functional & Requirements | 15% | 10-25% |
|
|
27
|
+
| | **합계** | **100%** | |
|
|
28
|
+
|
|
29
|
+
## 프로젝트 타입별 가중치 프리셋
|
|
30
|
+
|
|
31
|
+
### Web Service (기본)
|
|
32
|
+
기본 가중치 그대로 사용.
|
|
33
|
+
|
|
34
|
+
### Fintech / Healthcare
|
|
35
|
+
| 영역 | 가중치 |
|
|
36
|
+
|------|:------:|
|
|
37
|
+
| Security | 35% |
|
|
38
|
+
| Performance | 10% |
|
|
39
|
+
| SEO | 5% |
|
|
40
|
+
| Accessibility | 10% |
|
|
41
|
+
| UI/UX | 5% |
|
|
42
|
+
| Architecture & DB | 20% |
|
|
43
|
+
| Functional & Requirements | 15% |
|
|
44
|
+
|
|
45
|
+
### E-commerce
|
|
46
|
+
| 영역 | 가중치 |
|
|
47
|
+
|------|:------:|
|
|
48
|
+
| Security | 20% |
|
|
49
|
+
| Performance | 20% |
|
|
50
|
+
| SEO | 15% |
|
|
51
|
+
| Accessibility | 10% |
|
|
52
|
+
| UI/UX | 15% |
|
|
53
|
+
| Architecture & DB | 10% |
|
|
54
|
+
| Functional & Requirements | 10% |
|
|
55
|
+
|
|
56
|
+
### Internal Tool / Admin
|
|
57
|
+
| 영역 | 가중치 |
|
|
58
|
+
|------|:------:|
|
|
59
|
+
| Security | 20% |
|
|
60
|
+
| Performance | 10% |
|
|
61
|
+
| SEO | 5% |
|
|
62
|
+
| Accessibility | 10% |
|
|
63
|
+
| UI/UX | 10% |
|
|
64
|
+
| Architecture & DB | 20% |
|
|
65
|
+
| Functional & Requirements | 25% |
|
|
66
|
+
|
|
67
|
+
## 영역별 점수 산출
|
|
68
|
+
|
|
69
|
+
### 산출 공식
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
영역 점수 = (통과 항목 수 / 적용 항목 수) × 100
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
- `skip` 항목은 적용 항목에서 제외
|
|
76
|
+
- `warning` 항목은 0.5점 (pass = 1점, fail = 0점)
|
|
77
|
+
- FP Registry 등록 항목은 적용 항목에서 제외
|
|
78
|
+
|
|
79
|
+
### Severity 가중 감점
|
|
80
|
+
|
|
81
|
+
fail 항목은 severity에 따라 추가 감점:
|
|
82
|
+
|
|
83
|
+
| Severity | 감점 배수 |
|
|
84
|
+
|----------|:---------:|
|
|
85
|
+
| Critical | ×3 |
|
|
86
|
+
| High | ×2 |
|
|
87
|
+
| Medium | ×1 |
|
|
88
|
+
| Low | ×0.5 |
|
|
89
|
+
|
|
90
|
+
### 종합 점수 산출
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
종합 점수 = Σ(영역 점수 × 영역 가중치)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Gate 기준
|
|
97
|
+
|
|
98
|
+
| 조건 | 기준 | 미충족 시 |
|
|
99
|
+
|------|:----:|-----------|
|
|
100
|
+
| Critical 항목 | 0건 | gate 차단 (점수 무관) |
|
|
101
|
+
| 종합 점수 | >= 60점 | gate 차단 |
|
|
102
|
+
| PASS→FAIL 전환 | 0건 | gate 차단 (재감사 시) |
|
|
103
|
+
| estimated 비율 | < 50% | 경고 (차단 아님) |
|
|
104
|
+
|
|
105
|
+
## 등급 분류
|
|
106
|
+
|
|
107
|
+
| 등급 | 점수 범위 | 의미 |
|
|
108
|
+
|:----:|:---------:|------|
|
|
109
|
+
| A | 90-100 | 우수 — 릴리스 가능 |
|
|
110
|
+
| B | 75-89 | 양호 — 경미한 개선 권장 |
|
|
111
|
+
| C | 60-74 | 보통 — gate 통과, 개선 필요 |
|
|
112
|
+
| D | 40-59 | 미흡 — gate 차단, 개선 필수 |
|
|
113
|
+
| F | 0-39 | 불합격 — 심각한 문제 존재 |
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Improvement Plan Template
|
|
3
|
+
category: template
|
|
4
|
+
source: internal
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Improvement Plan
|
|
8
|
+
|
|
9
|
+
## 개요
|
|
10
|
+
|
|
11
|
+
- **감사 보고서**: {보고서 참조}
|
|
12
|
+
- **작성일**: {날짜}
|
|
13
|
+
- **대상 Finding**: Critical {n}건, High {n}건
|
|
14
|
+
- **예상 영역**: {영향 받는 모듈/파일}
|
|
15
|
+
|
|
16
|
+
## 개선 항목
|
|
17
|
+
|
|
18
|
+
### IMP-001: {개선 제목}
|
|
19
|
+
|
|
20
|
+
- **Severity**: {Critical/High/Medium/Low}
|
|
21
|
+
- **영역**: {감사 영역}
|
|
22
|
+
- **Finding**: {항목 ID} — {문제 설명}
|
|
23
|
+
- **원인 분석**: {근본 원인}
|
|
24
|
+
- **수정 방법**:
|
|
25
|
+
|
|
26
|
+
```diff
|
|
27
|
+
- 현재 코드/설정
|
|
28
|
+
+ 개선된 코드/설정
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
- **영향 범위**: {변경으로 영향 받는 파일/모듈}
|
|
32
|
+
- **관련 테스트**: {실행할 테스트 목록}
|
|
33
|
+
- **예상 점수 변화**: {영역 점수 X → Y}
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
(항목 반복)
|
|
38
|
+
|
|
39
|
+
## 실행 순서
|
|
40
|
+
|
|
41
|
+
| 순서 | 항목 | Severity | 의존성 |
|
|
42
|
+
|:----:|------|:--------:|--------|
|
|
43
|
+
| 1 | IMP-{n} | Critical | 없음 |
|
|
44
|
+
| 2 | IMP-{n} | Critical | IMP-{n} 완료 후 |
|
|
45
|
+
| 3 | IMP-{n} | High | 없음 |
|
|
46
|
+
|
|
47
|
+
## 검증 계획
|
|
48
|
+
|
|
49
|
+
| 단계 | 실행 내용 |
|
|
50
|
+
|------|-----------|
|
|
51
|
+
| 1 | 각 IMP 수정 후 관련 단위 테스트 실행 |
|
|
52
|
+
| 2 | 전체 수정 완료 후 통합 테스트 실행 |
|
|
53
|
+
| 3 | E2E 테스트 실행 |
|
|
54
|
+
| 4 | 재감사 실시 (Phase 6) |
|
|
55
|
+
|
|
56
|
+
## 승인
|
|
57
|
+
|
|
58
|
+
- [ ] 개선 계획 검토 완료
|
|
59
|
+
- [ ] 실행 순서 합의
|
|
60
|
+
- [ ] 유저 컨펌
|