@simplysm/sd-claude 14.0.80 → 14.0.81

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.
Files changed (88) hide show
  1. package/claude/references/sd-requirement-source-handling.md +17 -17
  2. package/claude/references/sd-simplysm14/README.md +58 -58
  3. package/claude/references/sd-simplysm14/manuals/client-component.md +739 -739
  4. package/claude/references/sd-simplysm14/manuals/client-crud.md +1 -1
  5. package/claude/references/sd-simplysm14/manuals/client-demo.md +1 -1
  6. package/claude/references/sd-simplysm14/manuals/client-setup.md +2 -2
  7. package/claude/references/sd-simplysm14/manuals/client-tab.md +2 -2
  8. package/claude/references/sd-simplysm14/manuals/logging.md +3 -3
  9. package/claude/references/sd-simplysm14/manuals/orm-union.md +7 -7
  10. package/claude/references/sd-simplysm14/manuals/orm.md +75 -75
  11. package/claude/references/sd-simplysm14/manuals/test.md +8 -8
  12. package/claude/rules/sd-base-rules.md +306 -293
  13. package/claude/rules/sd-design-rules.md +44 -44
  14. package/claude/skills/sd-commit/SKILL.md +17 -17
  15. package/claude/skills/sd-config/SKILL.md +4 -4
  16. package/claude/skills/sd-demo/SKILL.md +40 -48
  17. package/claude/skills/sd-demo/evals/fixtures/inventory-list/.specs/inventory/spec.md +99 -0
  18. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/package.json +12 -0
  19. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/index.ts +3 -0
  20. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inbound/inbound.list.ts +150 -0
  21. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inventory/inventory-master.list.ts +143 -0
  22. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/outbound/outbound.list.ts +150 -0
  23. package/claude/skills/sd-demo/evals/fixtures/inventory-list/pnpm-workspace.yaml +2 -0
  24. package/claude/skills/sd-demo/evals/fixtures/inventory-list/sd.config.ts +12 -0
  25. package/claude/skills/sd-demo/evals/golden.jsonl +1 -5
  26. package/claude/skills/sd-dev/SKILL.md +49 -22
  27. package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/package.json +8 -0
  28. package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/src/.gitkeep +0 -0
  29. package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/tests/.gitkeep +0 -0
  30. package/claude/skills/sd-dev/evals/fixtures/{case-modify → minimal-ts-pkg}/tsconfig.json +1 -3
  31. package/claude/skills/sd-dev/evals/golden.jsonl +1 -3
  32. package/claude/skills/sd-docs/SKILL.md +8 -8
  33. package/claude/skills/sd-impl/SKILL.md +172 -82
  34. package/claude/skills/sd-impl/evals/fixtures/case-a-new-screen/.specs/260513120000_warehouse/spec.md +101 -0
  35. package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/.specs/260513120000_warehouse/spec.md +101 -0
  36. package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/packages/app/src/screens/box-register/box-register.view.ts +46 -0
  37. package/claude/skills/sd-impl/evals/fixtures/case-c-new-cross/.specs/260513120000_warehouse/spec.md +89 -0
  38. package/claude/skills/sd-impl/evals/fixtures/case-d-spec-modify/.specs/260513120000_warehouse/spec.md +101 -0
  39. package/claude/skills/sd-impl/evals/golden.jsonl +4 -6
  40. package/claude/skills/sd-review/SKILL.md +33 -0
  41. package/claude/skills/sd-review/evals/fixtures/code-review/src/foo.ts +7 -0
  42. package/claude/skills/sd-review/evals/fixtures/doc-review/docs/foo.md +4 -0
  43. package/claude/skills/sd-review/evals/golden.jsonl +2 -0
  44. package/claude/skills/sd-skill/SKILL.md +99 -91
  45. package/claude/skills/sd-skill/evals/fixtures/existing-skill/.claude/skills/todo-format/SKILL.md +14 -0
  46. package/claude/skills/sd-skill/evals/fixtures/new-skill/.gitkeep +0 -0
  47. package/claude/skills/sd-skill/evals/golden.jsonl +2 -0
  48. package/claude/skills/sd-spec/SKILL.md +251 -246
  49. package/claude/skills/sd-spec/references/example-spec.md +1 -1
  50. package/claude/skills/sd-unpack/SKILL.md +83 -83
  51. package/claude/skills/sd-use/SKILL.md +4 -4
  52. package/package.json +1 -1
  53. package/claude/skills/sd-demo/evals/fixtures/empty/.specs/260513120000_warehouse/spec.md +0 -45
  54. package/claude/skills/sd-demo/evals/fixtures/with-existing-screen/.specs/260513120000_warehouse/spec.md +0 -42
  55. package/claude/skills/sd-demo/evals/fixtures/with-existing-screen/packages/app/src/screens/dashboard/dashboard.view.ts +0 -33
  56. package/claude/skills/sd-demo/evals/fixtures/with-master-screen/.specs/260513120000_warehouse/spec.md +0 -45
  57. package/claude/skills/sd-demo/evals/fixtures/with-master-screen/packages/app/src/screens/dashboard/dashboard.view.ts +0 -33
  58. package/claude/skills/sd-demo/evals/fixtures/with-modal/.specs/260513120000_warehouse/spec.md +0 -75
  59. package/claude/skills/sd-demo/evals/fixtures/with-modal/packages/app/src/screens/dashboard/dashboard.view.ts +0 -33
  60. package/claude/skills/sd-demo/evals/fixtures/with-screens/.specs/260513120000_warehouse/spec.md +0 -45
  61. package/claude/skills/sd-demo/evals/fixtures/with-screens/packages/app/src/screens/dashboard/dashboard.view.ts +0 -33
  62. package/claude/skills/sd-dev/evals/fixtures/case-add/package.json +0 -13
  63. package/claude/skills/sd-dev/evals/fixtures/case-add/src/index.ts +0 -10
  64. package/claude/skills/sd-dev/evals/fixtures/case-add/tests/index.test.ts +0 -11
  65. package/claude/skills/sd-dev/evals/fixtures/case-add/tsconfig.json +0 -12
  66. package/claude/skills/sd-dev/evals/fixtures/case-bug/package.json +0 -13
  67. package/claude/skills/sd-dev/evals/fixtures/case-bug/src/index.ts +0 -10
  68. package/claude/skills/sd-dev/evals/fixtures/case-bug/tests/index.test.ts +0 -11
  69. package/claude/skills/sd-dev/evals/fixtures/case-bug/tsconfig.json +0 -12
  70. package/claude/skills/sd-dev/evals/fixtures/case-modify/package.json +0 -13
  71. package/claude/skills/sd-dev/evals/fixtures/case-modify/src/index.ts +0 -10
  72. package/claude/skills/sd-dev/evals/fixtures/case-modify/tests/index.test.ts +0 -11
  73. package/claude/skills/sd-impl/evals/fixtures/case-001-new-screen/spec.md +0 -55
  74. package/claude/skills/sd-impl/evals/fixtures/case-002-auto-process/spec.md +0 -55
  75. package/claude/skills/sd-impl/evals/fixtures/case-003-update-screen/packages/client/src/pages/book-list.ts +0 -22
  76. package/claude/skills/sd-impl/evals/fixtures/case-003-update-screen/spec.md +0 -57
  77. package/claude/skills/sd-impl/evals/fixtures/case-004-ambiguous-spec/spec.md +0 -58
  78. package/claude/skills/sd-impl/evals/fixtures/case-005-id-mismatch/spec.md +0 -52
  79. package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/client/src/pages//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/251/353/241/235.test.ts +0 -10
  80. package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/client/src/pages//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/251/353/241/235.ts +0 -11
  81. package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/server/src/data-access//352/261/260/353/236/230/354/262/230-/354/240/221/352/267/274.ts +0 -12
  82. package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/server/src/models//352/261/260/353/236/230/354/262/230.ts +0 -8
  83. package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/spec.md +0 -77
  84. package/claude/skills/sd-impl/evals/fixtures/case-new/.specs/260514120000_/352/261/260/353/236/230/354/262/230/spec.md +0 -101
  85. package/claude/skills/sd-impl/evals/fixtures/case-update/.specs/260514120000_/352/261/260/353/236/230/354/262/230/spec.md +0 -101
  86. package/claude/skills/sd-impl/evals/fixtures/case-update/src//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/250/353/215/270.txt +0 -1
  87. package/claude/skills/sd-impl/evals/fixtures/case-update/src//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/251/353/241/235.txt +0 -1
  88. package/claude/skills/sd-impl/references/spec-cross-check.md +0 -82
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: sd-spec
3
- description: SI/업무시스템 요구사항을 분석해 spec.md 로 구조화한다. Use when "요구사항 분석", "SI 분석", "업무시스템 spec 작성" 을 요청할
3
+ description: SI/업무시스템 요구사항을 분석해 spec.md 로 구조화. Use when "요구사항 분석", "SI 분석", "업무시스템 spec 작성" 을 요청할 때.
4
4
  ---
5
5
 
6
6
  # sd-spec
@@ -9,11 +9,11 @@ description: SI/업무시스템 요구사항을 분석해 spec.md 로 구조화
9
9
 
10
10
  ## 입출력
11
11
 
12
- - **Input**: Requirement Source (회의록·메일·문서·PDF·발화 등 비정형) + 사용자 대화 + (재진입) 기존 spec.md
13
- - **Output**: spec.md 1개 (후속 도구 sd-impl·sd-demo 의 입력 계약)
14
- - **폴더**: `.specs/{yyMMddHHmmss}_{slug}/`
15
- - `yyMMddHHmmss`: Bash `date +%y%m%d%H%M%S` (예: `260513204500` = 2026-05-13 20:45:00)
16
- - `slug`: 짧은 한·두 단어. 허용 문자 = 한글·영문·`_`·`-`·공백 (그 외 금지)
12
+ - **Input**: Requirement Source (회의록·메일·문서·PDF·발화 등 비정형) + 사용자 대화 + (재진입) 기존 spec.md.
13
+ - **Output**: spec.md 1개 (후속 도구 sd-impl·sd-demo 의 입력 계약).
14
+ - **폴더**: `.specs/{yyMMddHHmmss}_{slug}/`.
15
+ - `yyMMddHHmmss`: Bash `date +%y%m%d%H%M%S` (예: `260513204500` = 2026-05-13 20:45:00).
16
+ - `slug`: 짧은 한·두 단어. 허용 문자 = 한글·영문·`_`·`-`·공백 (그 외 금지).
17
17
 
18
18
  ## 사이클 (본체)
19
19
 
@@ -29,6 +29,8 @@ description: SI/업무시스템 요구사항을 분석해 spec.md 로 구조화
29
29
 
30
30
  #### 큰 순서 (권장)
31
31
 
32
+ 각 단계별 진입 조건·spec.md 매핑·절차 위치·다음 단계:
33
+
32
34
  | 단계 | 진입 | spec.md 매핑 | 절차 위치 | 다음 |
33
35
  | --------- | ------------------------ | ----------------------------------- | ----------------------- | ---------------- |
34
36
  | 분석 분할 | Requirement Source 수집 | §2/§3 헤더 분할 + spec.md 골격 생성 | §2 안 "분할 절차" | §x.x 분석 명세 |
@@ -37,28 +39,30 @@ description: SI/업무시스템 요구사항을 분석해 spec.md 로 구조화
37
39
  | 설계 명세 | 설계 분할 §x.x [OPEN] | §4/§5/§6 본문 | §별 작성법 (사이클 2~5) | (반복 / 종료) |
38
40
 
39
41
  - **분할 단계 사이클** (분석 분할 / 설계 분할 공통, 5 단계 적용):
40
- 1. 임의안 = 분류 평면 채팅 출력 + 순서·명칭
41
- - 분석 분할 = §2 후보 / §3 후보 / 미분류 (분류 룰 = §2 "분할 절차")
42
- - 설계 분할 = §4 후보 / §5 후보 / §6 후보 (분류 룰 = §4 "설계 분할 절차")
43
- 2. 사용자 피드백 = 분류 이동 / 순서 / 명칭 / 추가·제거 / "전부 확정"
44
- 3. 피드백 → 구성 갱신 → 채팅 재출력 → 2 재진입 (**루프**)
45
- 4. "전부 확정" → 헤더 일괄 Write ([OPEN: 날짜] + 본문 = 분석 방법 자동)
46
- - 분석 분할 = spec.md 골격 신규 + §2.x/§3.x 헤더 일괄
47
- - 설계 분할 = §4.x/§5.x/§6.x 헤더 일괄
48
- - **명세 단계**: §x.x 본문을 §별 임의안 단위 따라 1건씩 사이클 (2~5단계).
42
+ 1. 임의안 = 분류 평면 채팅 출력 + 순서·명칭.
43
+ - 분석 분할 = §2 후보 / §3 후보 / 미분류 (분류 룰 = §2 "분할 절차").
44
+ - 설계 분할 = §4 후보 / §5 후보 / §6 후보 (분류 룰 = §4 "설계 분할 절차").
45
+ 2. 사용자 피드백 = 분류 이동 / 순서 / 명칭 / 추가·제거 / "전부 확정".
46
+ 3. 피드백 → 구성 갱신 → 채팅 재출력 → 2 재진입 (**루프**).
47
+ 4. "전부 확정" → 헤더 일괄 Write ([OPEN: 날짜] + 본문 = 분석 방법 자동).
48
+ - 분석 분할 = spec.md 골격 신규 + §2.x/§3.x 헤더 일괄.
49
+ - 설계 분할 = §4.x/§5.x/§6.x 헤더 일괄.
50
+ - **명세 단계**: §x.x 본문을 §별 임의안 단위에 따라 1건씩 사이클 (2~5단계).
49
51
 
50
52
  #### 자유 진입
51
53
 
52
- - 큰 순서 안 §x.x 선택 = 사용자 자유 (지시 없으면 LLM 권장)
53
- - 큰 순서 간 §x.x 단위 파이프라인 — 전체 완료 강제 X
54
- - 예: §2.1 본문 확정 → §2.1 관련 §4/§5/§6 분할 진입 (§2.2 본문 미시작 OK)
55
- - 의존성 strict: §x.x 단위로 직전 큰 순서 완료 후 다음 큰 순서 진입 (예: §4.1 본문 진입 = §4.1 헤더 분할 + §2.1 본문 완료 후)
56
- - 서브섹션끼리는 자유 (§4.1 안 와이어·항목·동작 등 순서)
57
- - §7/§8/§9 = 작업 중 자연 도출 (다른 § 영향, 5단계 참조)
58
- - §10 = 결정 발생 시 누적 (각 결정 항목 = 1 사이클)
54
+ - 큰 순서 안 §x.x 선택 = 사용자 자유 (지시 없으면 LLM 권장).
55
+ - 큰 순서 간 §x.x 단위 파이프라인 — 전체 완료 강제 X.
56
+ - 예: §2.1 본문 확정 → §2.1 관련 §4/§5/§6 분할 진입 (§2.2 본문 미시작 OK).
57
+ - 의존성 strict: §x.x 단위로 직전 큰 순서 완료 후 다음 큰 순서 진입 (예: §4.1 본문 진입 = §4.1 헤더 분할 + §2.1 본문 완료 후).
58
+ - 서브섹션끼리는 자유 (§4.1 안 와이어·항목·동작 등 순서).
59
+ - §7/§8/§9 = 작업 중 자연 도출 (다른 § 영향, 5단계 참조).
60
+ - §10 = 결정 발생 시 누적 (각 확정 항목 = 1 사이클).
59
61
 
60
62
  #### 재진입 분기 (spec.md 첨부 시)
61
63
 
64
+ spec.md 첨부 재진입 시 상황별 권장 진입점:
65
+
62
66
  | 상황 | 권장 진입점 |
63
67
  | ------------------------------------------ | ----------------------------------------------------------------- |
64
68
  | 헤더 `[OPEN: 날짜]` 있음 | 첫 OPEN 섹션 본문 분석 방법대로 재분석 → 임의안 → 사이클 진입 |
@@ -73,34 +77,31 @@ sd-base-rules "단위 흡수 금지" 적용 — 단번에 yes/no 가능한 최
73
77
 
74
78
  #### 자가검증 게이트
75
79
 
76
- 매 임의안 출력 직전 자문. 하나라도 실패 = 폐기 후 재작성 또는 사용자 질문. sd-base-rules "출력 직전 자가검증" 위에 추가되는 sd-spec 고유 검증.
80
+ 매 임의안 출력 직전 자문. 하나라도 실패 = 폐기 후 재작성 또는 사용자 질문. sd-base-rules "응답 송출 직전 자가 점검" 위에 추가되는 sd-spec 고유 검증.
77
81
 
78
- 1. **형식** — § 작성법 규약 따랐는가 (해당 § 작성법 절 재독 후 헤더 구조·표 형식·마커 표기 점검)
79
- 2. **출처** — 각 항목·필드·동작 1건마다 사용자 발언·자료 인용 가능한가
80
- - 인용 불가 = As-Is 답습 / 다른 §·example 패턴 복제 의심 → 제거 또는 별도 질문
81
- - As-Is (회의록·매뉴얼·현행 화면) 는 추정 자료 (sd-base-rules "결정 근거 안티패턴")
82
- - 다른 §·example 은 **형식만** 가져오고 **내용물** (항목·컬럼·필드·액션·동작) 은 본 §의 §2.x/§3.x 본문·사용자 발언에서 직접 도출
83
- 3. **단순화 차단** — spec 명시 정의·식·분기·경계를 임의안에서 자체 단순화·근사화·안전 처리 (NULL 강제·0 클램프·방어 가드·생략 분기) 추가하지 않았는가
84
- - 식 그대로 풀어쓸
85
- - 정확 풀이 부담 크면 단순화안을 사용자에 보고 후 합의
82
+ 1. **형식** — § 작성법 규약 따랐는가 (해당 § 작성법 절 재독 후 헤더 구조·표 형식·마커 표기 점검).
83
+ 2. **출처** — 각 항목·필드·동작 1건마다 사용자 발언·자료 인용 가능한가.
84
+ - 인용 불가 = As-Is 답습 / 다른 §·example 패턴 복제 의심 → 제거 또는 별도 질문.
85
+ - As-Is (회의록·매뉴얼·현행 화면) 는 추정 자료 (sd-base-rules "결정 근거 안티패턴").
86
+ - 다른 §·example 은 **형식만** 가져오고 **내용물** (항목·컬럼·필드·액션·동작) 은 본 §의 §2.x/§3.x 본문·사용자 발언에서 직접 도출.
87
+ 3. **단순화 차단** — spec 명시 정의·식·분기·경계를 임의안에서 자체 단순화·근사화·안전 처리 (NULL 강제·0 클램프·방어 가드·생략 분기) 추가하지 않았는가.
88
+ - 식 그대로 풀어쓸 것.
89
+ - 정확 풀이 부담 크면 단순화안을 사용자에 보고 후 합의.
86
90
 
87
91
  ### 3단계: "맞나요?" 합의
88
92
 
89
- - "맞나요?" + 사용자 답변 대기
90
- - 답변 종류: 확정 / 수정 / 보류
93
+ - "맞나요?" + 사용자 답변 대기.
94
+ - 답변 종류: 확정 / 수정 / 보류.
91
95
 
92
96
  ### 4단계: spec.md 반영
93
97
 
94
98
  #### 확정 → Write
95
99
 
96
- - 헤더 마커 `[확정: YYYY-MM-DD]` 부착 (Bash `date +%Y-%m-%d`)
97
- - Write 직전 출력 1줄 (sd-base-rules "사용자 발언 의도 파악" — 의도 표기):
98
-
99
- `> 사용자 의도: 승인. 근거: 사용자 발언 "<verbatim 인용>" 의 "<실행 신호 부분>"`
100
+ 헤더 마커 `[확정: YYYY-MM-DD]` 부착 (Bash `date +%Y-%m-%d`).
100
101
 
101
102
  #### 수정 → 재작성
102
103
 
103
- - 사용자 정정 반영 → 2단계 임의안 재작성 → 3단계 재진행
104
+ - 사용자 정정 반영 → 2단계 임의안 재작성 → 3단계 재진행.
104
105
 
105
106
  #### 보류 → Write (분석 방법)
106
107
 
@@ -108,17 +109,17 @@ OPEN 섹션 본문 = **분석 방법** (임의안 X) — 재분석할 절차 또
108
109
 
109
110
  분석 방법 가이드 (해당 시 자유 조합):
110
111
 
111
- - 자료 참고 시 자료 위치 명시 (예: `회의록.md L12-30`, `As-Is 매뉴얼 X.pdf p.3`)
112
- - 사용자 보류 발언 인용 (1~2줄)
113
- - 한 섹션이 여러 자료에 걸치면 자료 연결 추정 한
114
- - 다른 § 확정이 본 OPEN 재분석에 영향 시 한 줄 누적 (운용 = 5단계 OPEN 푸시. 형식: `§X.Y <섹션명> 확정 — <결정 한 줄>`)
112
+ - 자료 참고 시 자료 위치 명시 (예: `회의록.md L12-30`, `As-Is 매뉴얼 X.pdf p.3`).
113
+ - 사용자 보류 발언 인용 (1~2줄).
114
+ - 한 섹션이 여러 자료에 걸치면 자료 연결 추정 한 줄.
115
+ - 다른 § 확정이 본 OPEN 재분석에 영향 시 한 줄 누적 (운용 = 5단계 OPEN 푸시. 형식: `§X.Y <섹션명> 확정 — <결정 한 줄>`).
115
116
 
116
117
  **발생 경로** (본문 = 분석 방법 공통):
117
118
 
118
- - 사용자 명시 보류 (임의안 후 보류 지시) — 분석 방법 자유 작성
119
+ - 사용자 명시 보류 (임의안 후 보류 지시) — 분석 방법 자유 작성.
119
120
  - 헤더 분할 직후 자동 (본문 미작성 일괄 OPEN):
120
- - 분석 분할 §2.x/§3.x — 분석 방법 = Requirement Source 자료 위치·접근 방식
121
- - 설계 분할 §4.x/§5.x/§6.x — 분석 방법 = 관련 §2.x/§3.x 본문 참고
121
+ - 분석 분할 §2.x/§3.x — 분석 방법 = Requirement Source 자료 위치·접근 방식.
122
+ - 설계 분할 §4.x/§5.x/§6.x — 분석 방법 = 관련 §2.x/§3.x 본문 참고.
122
123
 
123
124
  **재개**: 본문 분석 방법대로 자료 재독·분석 → 임의안 도출 → 확정되면 본문 임의안 교체 + 헤더 `[확정: 날짜]`.
124
125
 
@@ -130,18 +131,18 @@ OPEN 섹션 본문 = **분석 방법** (임의안 X) — 재분석할 절차 또
130
131
 
131
132
  발견 경로 무관 — 본문 작성 중·자료 재독 중·외부 조사·OPEN 섹션 재분석 부산물 등 어디서든 다른 §(기존 §x.x 본문 보강·신규 §x.x 추가·§7/§8/§9 공통 섹션 추가) 반영 정보 발견 시:
132
133
 
133
- 1. 발견 즉시 같은 턴 처리 — 휘발·미루기 금지
134
- 2. 해당 § 사이클 진입 (임의안 → 합의 → 반영) → 원 작업 재개
134
+ 1. 발견 즉시 같은 턴 처리 — 휘발·미루기 금지.
135
+ 2. 해당 § 사이클 진입 (임의안 → 합의 → 반영) → 원 작업 재개.
135
136
 
136
- - ❌ §2.1 작성 중 "BOA 매일 갱신·라인 며칠 내 사라짐" 발견 → 메모 없이 §2.1 만 계속
137
- - ✅ §7.x 보강 사이클 즉시 진입 → 확정 → §7.x 반영 → §2.1 재개
137
+ - ❌ §2.1 작성 중 "BOA 매일 갱신·라인 며칠 내 사라짐" 발견 → 메모 없이 §2.1 만 계속.
138
+ - ✅ §7.x 보강 사이클 즉시 진입 → 확정 → §7.x 반영 → §2.1 재개.
138
139
 
139
140
  #### 사용자 흘림 반영
140
141
 
141
142
  사용자가 흘리듯 말한 가드레일·단서·미반영 의견은 영향 § 임의안 작성 시 반영. 휘발 금지.
142
143
 
143
- - ❌ §1 단계에서 "Location 코드 영문 대문자만" 흘림 → §7.1 임의안에 미반영
144
- - ✅ §7.1 임의안에 "Location 코드 영문 대문자/숫자/하이픈" 포함
144
+ - ❌ §1 단계에서 "Location 코드 영문 대문자만" 흘림 → §7.1 임의안에 미반영.
145
+ - ✅ §7.1 임의안에 "Location 코드 영문 대문자/숫자/하이픈" 포함.
145
146
 
146
147
  영향 §가 현재 §와 다르면 "다른 § 영향" 절차.
147
148
 
@@ -153,30 +154,32 @@ OPEN 섹션 본문 = **분석 방법** (임의안 X) — 재분석할 절차 또
153
154
 
154
155
  확정 결정이 OPEN 상태 다른 § 재분석에 영향 줄 수 있는지 자문.
155
156
 
156
- - 영향 있으면 해당 OPEN 본문 분석 방법에 `§X.Y <섹션명> 확정 — <결정 한 줄>` 메모 추가
157
- - 같은 작업에 함께. 사용자에 한 줄 보고
158
- - 별도 "맞나요?" X (확정 기록일 뿐, 임의안 X)
157
+ - 영향 있으면 해당 OPEN 본문 분석 방법에 `§X.Y <섹션명> 확정 — <결정 한 줄>` 메모 추가.
158
+ - 같은 작업에 함께. 사용자에 한 줄 보고.
159
+ - 별도 "맞나요?" X (확정 기록일 뿐, 임의안 X).
159
160
 
160
161
  #### §4/§5/§6 구현 마커 제거
161
162
 
162
163
  §4.x/§5.x/§6.x 본문 또는 그 본문이 의존하는 § 본문 갱신 시 `[확정: X, 구현: Y]` 의 `, 구현: Y` 부분만 제거 → `[확정: X]` (이전 구현 무효화 → sd-impl 재실행 대기). 확정 날짜 갱신 여부는 무관.
163
164
 
164
165
  **의존 식별** — §4.x/§5.x/§6.x 본문에 다음 중 하나라도 나타나는 §x.x = 그 §4.x/§5.x/§6.x 의 의존:
165
- - `관련 섹션:` 줄의 `[프로세스.X]`·`[기타.X]`·`[화면.X]`·`[자동 처리.X]`·`[횡단 처리.X]`·`[외부인터페이스.X]`
166
- - 본문 어느 위치든 등장하는 `[모델.X…]`·`[공통 정의.X]`
167
- - §7 외부 자료 명세를 컬럼명 일치로 끌어다 쓴 양식 매핑 표 (해당 §7.x)
168
- - 모달 호출 `→ [화면.X]` 의 그 §4.x
166
+ - `관련 섹션:` 줄의 `[프로세스.X]`·`[기타.X]`·`[화면.X]`·`[자동 처리.X]`·`[횡단 처리.X]`·`[외부인터페이스.X]`.
167
+ - 본문 어느 위치든 등장하는 `[모델.X…]`·`[공통 정의.X]`.
168
+ - §7 외부 자료 명세를 컬럼명 일치로 끌어다 쓴 양식 매핑 표 (해당 §7.x).
169
+ - 모달 호출 `→ [화면.X]` 의 그 §4.x.
169
170
 
170
171
  **전파 방향**: 참조 대상 → 참조하는 §4.x/§5.x/§6.x 단방향.
171
172
 
172
173
  **처리**: "다른 § 영향" 과 같은 턴. 변경 임의안 확정 시 영향 §4.x/§5.x/§6.x 를 번호 매겨 각 한 줄 이유와 함께 모아 "맞나요?".
173
- - 전부 동의 → 일괄 마커 제거
174
- - 일부 유지 지목 (예: "3~5는 유지") → 지목 항목 마커 유지, 나머지만 제거
174
+ - 전부 동의 → 일괄 마커 제거.
175
+ - 일부 유지 지목 (예: "3~5는 유지") → 지목 항목 마커 유지, 나머지만 제거.
175
176
 
176
177
  ## spec.md 형식
177
178
 
178
179
  ### 섹션 구조
179
180
 
181
+ spec.md §별 섹션 이름과 분류:
182
+
180
183
  | § | 섹션 | 분류 |
181
184
  | --- | ---------------- | ---------------------------- |
182
185
  | §1 | 개요 | 분석 명세 |
@@ -188,12 +191,14 @@ OPEN 섹션 본문 = **분석 방법** (임의안 X) — 재분석할 절차 또
188
191
  | §7 | 공통 정의 | 자연 도출 (다른 § 영향) |
189
192
  | §8 | 도메인 모델 | 자연 도출 (다른 § 영향) |
190
193
  | §9 | 외부 인터페이스 | 자연 도출 (다른 § 영향) |
191
- | §10 | 본문 외 결정사항 | 메타 (결정 발생 시 누적) |
194
+ | §10 | 본문 외 확정 사항 | 메타 (결정 발생 시 누적) |
192
195
 
193
196
  ### 마커
194
197
 
195
198
  #### 헤더 마커 (섹션 상태)
196
199
 
200
+ 섹션 헤더에 부착하는 마커:
201
+
197
202
  | 마커 | 의미 |
198
203
  | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
199
204
  | `[확정: YYYY-MM-DD]` | 섹션 확정. 본문 인라인 `[OPEN]` 있어도 무방. |
@@ -204,23 +209,25 @@ OPEN 섹션 본문 = **분석 방법** (임의안 X) — 재분석할 절차 또
204
209
 
205
210
  #### 본문 인라인 마커
206
211
 
212
+ 본문 안에서 사용하는 인라인 마커:
213
+
207
214
  | 마커 | 의미 |
208
215
  | -------- | ----------------------------------------- |
209
216
  | `[OPEN]` | 정보 부족·근거 없는 항목. 향후 확정 필요. |
210
217
 
211
- - 임의 채우거나 누락하지 말고 `[OPEN]` 표기
212
- - 근거 부족 판정 = sd-base-rules "결정 근거" 적용. As-Is 만 근거인 항목·답변 범위 흡수 등 안티패턴 자료는 근거 없음으로 `[OPEN]`
213
- - 헤더 `[확정]` + 본문 `[OPEN]` = OPEN 인정 상태로 섹션 확정. 향후 OPEN 만 처리
214
- - 묻기 선택지: `맞나요? [OPEN 상태로 확정 / 섹션 전체 보류 / OPEN 하나씩 해결]`
218
+ - 임의 채우거나 누락하지 말고 `[OPEN]` 표기.
219
+ - 근거 부족 판정 = sd-base-rules "결정 근거" 적용. As-Is 만 근거인 항목·답변 범위 흡수 등 안티패턴 자료는 근거 없음으로 `[OPEN]`.
220
+ - 헤더 `[확정]` + 본문 `[OPEN]` = OPEN 인정 상태로 섹션 확정. 향후 OPEN 만 처리.
221
+ - 묻기 선택지: `맞나요? [OPEN 상태로 확정 / 섹션 전체 보류 / OPEN 하나씩 해결]`.
215
222
 
216
223
  ### 본문 내 참조 (이름 기반)
217
224
 
218
225
  본문 내 다른 섹션 참조 시 § 번호 대신 `[카테고리.이름]` 형식. 다단 가능. § 번호는 분석 중 자주 바뀌므로 이름 기반이 안정적.
219
226
 
220
227
  예:
221
- - `[모델.재고]`·`[모델.박스.수량]`·`[모델.박스.품목.코드]`
222
- - `[화면.재고 확인]`·`[프로세스.입고]`·`[기타.과거 재고 조회]`
223
- - `[자동 처리.재고 스냅샷]`·`[횡단 처리.DataLog 기록]`·`[외부인터페이스.ERP 입고 통보]`·`[공통 정의.Location 라벨]`
228
+ - `[모델.재고]`·`[모델.박스.수량]`·`[모델.박스.품목.코드]`.
229
+ - `[화면.재고 확인]`·`[프로세스.입고]`·`[기타.과거 재고 조회]`.
230
+ - `[자동 처리.재고 스냅샷]`·`[횡단 처리.DataLog 기록]`·`[외부인터페이스.ERP 입고 통보]`·`[공통 정의.Location 라벨]`.
224
231
 
225
232
  **관련 섹션 한 줄**: §2~§9 본문에 `관련 섹션: [카테고리.이름], ...` 한 줄로 참조/의존 섹션 콤마 나열 (카테고리 제한 없음). **임의안 단위 X** — 다른 sub-section 작성 부산물로 자동 누적.
226
233
 
@@ -242,12 +249,12 @@ SKILL.md 안 `#### BPMN`·`#### 목적` 등 표기는 작성법 sub-section 분
242
249
 
243
250
  사이클 중 사용자가 진행 방식 합의 시 (예: "시트별로 분석", "시트별 분석 = 6단계 답습") 즉시 누적. 범위에 따라 2 경로:
244
251
 
245
- **spec 전체 적용** → §10 진행 방법 항목 (`- YYYY-MM-DD: ...` bullet)
252
+ **spec 전체 적용** → §10 진행 방법 항목 (`- YYYY-MM-DD: ...` bullet).
246
253
 
247
254
  **분석 단위 한정** (§X.Y 또는 안 sub-section/sub-단위) → 해당 단위 도입부 NOTE blockquote:
248
- - 형식: `> **NOTE** (진행 방법): <한 줄 요약>` blockquote + 다단 (`> 1. ...`·`> 2. ...` 형식)
249
- - 분석 단위 헤더가 `[OPEN]` 상태면 본 NOTE 가 다른 대화 재진입 시 진행 룰 회복 출처
250
- - 본 단위 모든 sub-단위 합의 후 `[확정]` 환원 시 NOTE 유지 (진행 이력 기록 보존) 또는 제거 (분석 단위 룰)
255
+ - 형식: `> **NOTE** (진행 방법): <한 줄 요약>` blockquote + 다단 (`> 1. ...`·`> 2. ...` 형식).
256
+ - 분석 단위 헤더가 `[OPEN]` 상태면 본 NOTE 가 다른 대화 재진입 시 진행 룰 회복 출처.
257
+ - 본 단위 모든 sub-단위 합의 후 `[확정]` 환원 시 NOTE 유지 (진행 이력 기록 보존) 또는 제거 (분석 단위 룰).
251
258
 
252
259
  별도 "맞나요?" X (사용자 발언 직접 기록).
253
260
 
@@ -259,21 +266,21 @@ SKILL.md 안 `#### BPMN`·`#### 목적` 등 표기는 작성법 sub-section 분
259
266
 
260
267
  ### §1.1 핵심 목적
261
268
 
262
- - 한 줄 동사형 큰 단위
263
- - 분석 분할 단계 도메인 관계도 기반 사이클·관계 표현
264
- - §2.x 동사구 항목 나열 X (그건 §1.2 역할)
269
+ - 한 줄 동사형 큰 단위.
270
+ - 분석 분할 단계 도메인 관계도 기반 사이클·관계 표현.
271
+ - §2.x 동사구 항목 나열 X (그건 §1.2 역할).
265
272
 
266
273
  ### §1.2 주요 목표
267
274
 
268
- - 단위: 최종 사용자 업무 흐름 1건 (화면·기능 단위 X)
269
- - 표현: 한 줄 동사구. 최종 사용자 도메인 어휘
270
- - §2 업무 프로세스 헤더와 1:1 매핑 일반적
271
- - §2.x 본문 핵심 항목은 한 줄에 모두 담아 임의 축약·누락 X
275
+ - 단위: 최종 사용자 업무 흐름 1건 (화면·기능 단위 X).
276
+ - 표현: 한 줄 동사구. 최종 사용자 도메인 어휘.
277
+ - §2 업무 프로세스 헤더와 1:1 매핑이 일반적.
278
+ - §2.x 본문 핵심 항목은 한 줄에 모두 담아 임의 축약·누락 X.
272
279
 
273
280
  ### §1.3 최종 사용자/이해관계자
274
281
 
275
- - 실제 담당자 이름 X
276
- - 일반화
282
+ - 실제 담당자 이름 X.
283
+ - 일반화.
277
284
 
278
285
  ### §1.4 환경/장치
279
286
 
@@ -281,17 +288,17 @@ SKILL.md 안 `#### BPMN`·`#### 목적` 등 표기는 작성법 sub-section 분
281
288
 
282
289
  구성도와 장치 목록 목적 별개 → 각각 독립 작성.
283
290
 
284
- - **ASCII 구성도**: 현장이 어떻게 생겼는지 시각화 — 이해당사자 간 그림 맞추기
285
- - 포함: 솔루션 노드(서버·DB·클라이언트) + 노드 간 연결선 + 물리 위치 그룹(IDC·사무실·창고) + 자동 연동 외부 시스템
286
- - 제외: Actor, 외부 관계자(인적·조직), 수동 채널(메일·종이), 구체 제품명(MySQL)·통신 프로토콜(HTTPS), 장치 사양(OS·해상도)
287
- - **장치 목록**: 솔루션이 대상으로 하는 장치/환경 스펙 — 서버·DB·클라이언트 등. OS·버전·제품명·모델·해상도·하드웨어
288
- - 명시 스펙에 맞게 개발 → 다른 스펙 환경 동작은 책임 범위
291
+ - **ASCII 구성도**: 현장이 어떻게 생겼는지 시각화 — 이해당사자 간 그림 맞추기.
292
+ - 포함: 솔루션 노드(서버·DB·클라이언트) + 노드 간 연결선 + 물리 위치 그룹(IDC·사무실·창고) + 자동 연동 외부 시스템.
293
+ - 제외: Actor, 외부 관계자(인적·조직), 수동 채널(메일·종이), 구체 제품명(MySQL)·통신 프로토콜(HTTPS), 장치 사양(OS·해상도).
294
+ - **장치 목록**: 솔루션이 대상으로 하는 장치/환경 스펙 — 서버·DB·클라이언트 등. OS·버전·제품명·모델·해상도·하드웨어.
295
+ - 명시 스펙에 맞게 개발 → 다른 스펙 환경 동작은 책임 범위 외.
289
296
 
290
297
  ## §2 업무 프로세스
291
298
 
292
299
  **임의안 단위**: §2.x 1개당 위→아래 1건씩:
293
- 1. BPMN (사용자에겐 ASCII, 확정 후 mermaid 저장)
294
- 2. 흐름 설명 bullet
300
+ 1. BPMN (사용자에겐 ASCII, 확정 후 mermaid 저장).
301
+ 2. 흐름 설명 bullet.
295
302
 
296
303
  **모범**: example-spec.md §2.1.
297
304
 
@@ -300,46 +307,46 @@ SKILL.md 안 `#### BPMN`·`#### 목적` 등 표기는 작성법 sub-section 분
300
307
  §2.x 1건 = BPMN end-to-end process 1건 (= Value Stream L1). start event ~ end event 풀 사이클. 사이클 내부 handoff (역할 전환·시간 지연·외부 채널·동일인 다른 시점) 흡수 — BPMN swim lane / 노드 분기로 표현. **handoff 는 분리 사유 X**.
301
308
 
302
309
  - **start event** (BPMN 시작 트리거):
303
- - Message — 외부 actor 메시지·자료 도착 (구매처 발주·고객 주문·거래처 EDI)
304
- - Timer — 시간 도래 (세무 신고일·정산 마감일)
305
- - Signal — 외부 조건 신호
310
+ - Message — 외부 actor 메시지·자료 도착 (구매처 발주·고객 주문·거래처 EDI).
311
+ - Timer — 시간 도래 (세무 신고일·정산 마감일).
312
+ - Signal — 외부 조건 신호.
306
313
  - **end event** (BPMN 종결 outcome):
307
- - 외부 가치 전달·외부 자료 송신 (출하 완료·세금 제출·EDI 송신)
314
+ - 외부 가치 전달·외부 자료 송신 (출하 완료·세금 제출·EDI 송신).
308
315
  - **분리 기준 = pivotal event** (Event Storming):
309
- 1. start event 별개 (입고 start ↔ 출고 start)
310
- 2. end event 별개
311
- 3. 도메인 어휘 자체 전환점 (DDD 경계)
316
+ 1. start event 별개 (입고 start ↔ 출고 start).
317
+ 2. end event 별개.
318
+ 3. 도메인 어휘 자체 전환점 (DDD 경계).
312
319
 
313
320
  ### 분할 절차 (분석 분할 단계)
314
321
 
315
322
  분석 분할 단계에서 §2/§3 분할 동시 진행. 절차 4단계.
316
323
 
317
- 1. **domain event 추출** (Event Storming "chaotic events") — Requirement Source 에서 동사 과거형 사건 모두 평면 추출. 원본 구조(메일·슬라이드·문서) 무관
318
- 2. **timeline 정렬** ("Enforce timeline") — 비즈니스 시간 순 정렬. 모호 시점은 인접 후보로 보류
319
- 3. **pivotal event 식별** — start/end/도메인 어휘 전환점 마킹. 외부 관계자 평면(구매처·공급처·고객·하청·감독기관)은 이 단계 자연 도출 — 이게 §1 작성용 도메인 관계도 자료
320
- 4. **bounded subdomain 그룹화** — 한 pivotal trigger ~ 다음 pivotal outcome = 1 사이클. 사이클 안 handoff 흡수
324
+ 1. **domain event 추출** (Event Storming "chaotic events") — Requirement Source 에서 동사 과거형 사건 모두 평면 추출. 원본 구조(메일·슬라이드·문서) 무관.
325
+ 2. **timeline 정렬** ("Enforce timeline") — 비즈니스 시간 순 정렬. 모호 시점은 인접 후보로 보류.
326
+ 3. **pivotal event 식별** — start/end/도메인 어휘 전환점 마킹. 외부 관계자 평면(구매처·공급처·고객·하청·감독기관)은 이 단계 자연 도출 — 이게 §1 작성용 도메인 관계도 자료.
327
+ 4. **bounded subdomain 그룹화** — 한 pivotal trigger ~ 다음 pivotal outcome = 1 사이클. 사이클 안 handoff 흡수.
321
328
 
322
329
  #### 분할 결과 매핑 (분석 분할 출력)
323
330
 
324
331
  3분류:
325
- - **사이클** (multi-event handoff 포함) → §2.x
326
- - **단일 user goal 완결** → §3.x
327
- - **사이클·user goal 단위 아닌 것** (도메인 룰·계산식·기존 화면 미세 변경·자료 해석 파라미터·기타 규칙) → **미분류**
332
+ - **사이클** (multi-event handoff 포함) → §2.x.
333
+ - **단일 user goal 완결** → §3.x.
334
+ - **사이클·user goal 단위 아닌 것** (도메인 룰·계산식·기존 화면 미세 변경·자료 해석 파라미터·기타 규칙) → **미분류**.
328
335
 
329
336
  #### 분석 분할 채팅 출력 형식
330
337
 
331
- - 3분류 일괄 나열 (§2 / §3 / 미분류)
332
- - 자문·내부 절차 해설·출처 인용 X
333
- - 화면·마스터 흡수 들여쓰기 X (설계 분할 시야)
334
- - 자료 부족 분리 항목은 별도 질문으로 함께 제시
335
- - 사이클 2단계 자가검증 게이트 출처 적용 — 인용 불가 항목은 후보에서 빼고 별도 질문으로 분리
338
+ - 3분류 일괄 나열 (§2 / §3 / 미분류).
339
+ - 자문·내부 절차 해설·출처 인용 X.
340
+ - 화면·마스터 흡수 들여쓰기 X (설계 분할 시야).
341
+ - 자료 부족 분리 항목은 별도 질문으로 함께 제시.
342
+ - 사이클 2단계 자가검증 게이트 출처 적용 — 인용 불가 항목은 후보에서 빼고 별도 질문으로 분리.
336
343
 
337
344
  ### 헤더 명칭
338
345
 
339
- - 외부 관계자 평면 기반 도메인 업무 동사구
340
- - 시스템·문서·메뉴·양식 명칭 그대로 X
341
- - ❌ `발주서 변경 요청` (발주서 = 시스템 문서)
342
- - ✅ `구매처 발주 변경 요청`
346
+ - 외부 관계자 평면 기반 도메인 업무 동사구.
347
+ - 시스템·문서·메뉴·양식 명칭 그대로 X.
348
+ - ❌ `발주서 변경 요청` (발주서 = 시스템 문서).
349
+ - ✅ `구매처 발주 변경 요청`.
343
350
 
344
351
  ### 본문 구조
345
352
 
@@ -348,21 +355,21 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
348
355
  **평문 sub-section** (§2.x 헤더 바로 아래, 위→아래):
349
356
 
350
357
  - **BPMN** (mermaid fence):
351
- - 사용자에겐 ASCII, 확정 후 mermaid 저장
352
- - 노드 = 최종 사용자 액션·시스템 핵심 트랜잭션 (1행 동사구). 줄바꿈 `<br/>` X
353
- - Actor·장치·매체(PDA·PC·종이)는 액션 컨텍스트로 노드에 명시 OK (예: `창고 작업자: PDA 박스 바코드 스캔`). OS·해상도·API·DB 등 시스템 내부 디테일 X
354
- - 외부 채널 송신(메일·파일 다운로드)·외부 응답 수신(다음 사이클 자료 도착)도 노드. 처리 노드 = 사각(`T[...]`), 이벤트 노드 = 둥근(`E([...])`)
355
- - 분기 = 사용자 의사결정 분기만
358
+ - 사용자에겐 ASCII, 확정 후 mermaid 저장.
359
+ - 노드 = 최종 사용자 액션·시스템 핵심 트랜잭션 (1행 동사구). 줄바꿈 `<br/>` X.
360
+ - Actor·장치·매체(PDA·PC·종이)는 액션 컨텍스트로 노드에 명시 OK (예: `창고 작업자: PDA 박스 바코드 스캔`). OS·해상도·API·DB 등 시스템 내부 디테일 X.
361
+ - 외부 채널 송신(메일·파일 다운로드)·외부 응답 수신(다음 사이클 자료 도착)도 노드. 처리 노드 = 사각(`T[...]`), 이벤트 노드 = 둥근(`E([...])`).
362
+ - 분기 = 사용자 의사결정 분기만.
356
363
  - **흐름 설명 bullet** (BPMN 아래·관련 섹션 위에 자유 나열):
357
- - 노드 동사구만으로 안 잡히는 룰·조건·계산식·외부 약속·자료 출처 인용 등 1줄씩
358
- - §4/§5/§6 본문 작성 시 이 bullet 들을 근거로 매핑 → 누락 방지
359
- - 단, §4/§5/§6 자체 디테일(필드·UI·파일 확장자) / §7/§8/§9 정형 명세는 여기 X — 각 § 본문에선 이름 참조
360
- - **관련 섹션** (`관련 섹션: [카테고리.이름], ...` 한 줄, 자동 누적): 본문 내 참조 절 룰 따름
364
+ - 노드 동사구만으로 안 잡히는 룰·조건·계산식·외부 약속·자료 출처 인용 등 1줄씩.
365
+ - §4/§5/§6 본문 작성 시 이 bullet 들을 근거로 매핑 → 누락 방지.
366
+ - 단, §4/§5/§6 자체 디테일(필드·UI·파일 확장자) / §7/§8/§9 정형 명세는 여기 X — 각 § 본문에선 이름 참조.
367
+ - **관련 섹션** (`관련 섹션: [카테고리.이름], ...` 한 줄, 자동 누적): 본문 내 참조 절 룰 따름.
361
368
 
362
369
  ### 안티패턴 (분할)
363
370
 
364
- - ❌ 같은 사이클의 A→B→C 단계별 담당자·산출물 다르다는 이유로 §2.A·§2.B·§2.C 로 쪼개기
365
- - ❌ 메뉴 그룹화·기존 화면 폴더·코드 As-Is 구조로 묶기/쪼개기
371
+ - ❌ 같은 사이클의 A→B→C 단계별 담당자·산출물 다르다는 이유로 §2.A·§2.B·§2.C 로 쪼개기.
372
+ - ❌ 메뉴 그룹화·기존 화면 폴더·코드 As-Is 구조로 묶기/쪼개기.
366
373
 
367
374
  ## §3 기타 요구사항
368
375
 
@@ -372,63 +379,63 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
372
379
 
373
380
  ### 분할 단위 = Cockburn sea level use case
374
381
 
375
- - "primary actor go away happy after having done this in a single sitting?"
376
- - 행위자가 1회 작업으로 끝내고 만족하고 떠나는 단일 user goal
377
- - 사이클·handoff·지연 없음
378
- - 정형 분해(화면/자동 처리/횡단 처리) 동반하는 사용자 직접 요구
379
- - 시스템 전반 자동 룰 (예: "모든 데이터 수정 시 DataLog 기록") 도 §3 — 설계는 §6 횡단 처리에서
382
+ - "primary actor go away happy after having done this in a single sitting?".
383
+ - 행위자가 1회 작업으로 끝내고 만족하고 떠나는 단일 user goal.
384
+ - 사이클·handoff·지연 없음.
385
+ - 정형 분해(화면/자동 처리/횡단 처리) 동반하는 사용자 직접 요구.
386
+ - 시스템 전반 자동 룰 (예: "모든 데이터 수정 시 DataLog 기록") 도 §3 — 설계는 §6 횡단 처리에서.
380
387
 
381
388
  ### 본문 구조
382
389
 
383
- - 요구 의도 (한 줄~한 문단)
384
- - 관련 섹션 한 줄 (본문 내 참조 절)
385
- - 구현 디테일은 §4 화면 / §5 자동 처리 / §6 횡단 처리 본문에서
390
+ - 요구 의도 (한 줄~한 문단).
391
+ - 관련 섹션 한 줄 (본문 내 참조 절).
392
+ - 구현 디테일은 §4 화면 / §5 자동 처리 / §6 횡단 처리 본문에서.
386
393
 
387
394
  ## §4 화면
388
395
 
389
396
  **임의안 단위**: §4.x 1개당 §4.x 표준 구조 절 단위로 위→아래, 각 확정 후 다음:
390
- 1. 기능 개요 — 1
391
- 2. 와이어프레임 — 1
397
+ 1. 기능 개요 — 1건.
398
+ 2. 와이어프레임 — 1건.
392
399
  3. 항목 — 다단 분할:
393
- - 1차: 영역 (좌/우 등) 단위 — 와이어프레임 영역 라벨 기준
394
- - 2차: 영역 안 하위 요소 (필터·시트 컬럼·입력/상세 폼) 단위
395
- - 1 임의안 = 1 (영역, 하위 요소) 쌍 — 예: `좌측 영역 — 필터` 1건, `좌측 영역 — 시트 컬럼` 별건
396
- 4. 동작 — 1
397
- 5. 시각 규칙 (해당 시) — 1
398
- 6. 도메인 규칙·로직 (해당 시) — 규칙별 1
400
+ - 1차: 영역 (좌/우 등) 단위 — 와이어프레임 영역 라벨 기준.
401
+ - 2차: 영역 안 하위 요소 (필터·시트 컬럼·입력/상세 폼) 단위.
402
+ - 1 임의안 = 1 (영역, 하위 요소) 쌍 — 예: `좌측 영역 — 필터` 1건, `좌측 영역 — 시트 컬럼` 별건.
403
+ 4. 동작 — 1건.
404
+ 5. 시각 규칙 (해당 시) — 1건.
405
+ 6. 도메인 규칙·로직 (해당 시) — 규칙별 1건.
399
406
  7. 자유 추가 sub-section (해당 시) — sub-section 별 1건 (예: 업로드 양식·다운로드 양식 각각). 복잡 양식 안 sub-단위 (시트 등) = sub-단위별 1건.
400
407
 
401
- (헤더 인덱스 = Actor + 관련 섹션 모두 자동 누적 — 임의안 단위 X)
408
+ (헤더 인덱스 = Actor + 관련 섹션 모두 자동 누적 — 임의안 단위 X).
402
409
 
403
410
  신규 작성·정정·골격 신설 무관 동일 적용.
404
411
 
405
412
  **모범** (와이어 패턴별):
406
- - 시트 화면: example-spec.md §4.1·§4.3
407
- - 폼 모달: §4.2·§4.4
408
- - PDA: §4.5
409
- - 분석 시트: §4.6
413
+ - 시트 화면: example-spec.md §4.1·§4.3.
414
+ - 폼 모달: §4.2·§4.4.
415
+ - PDA: §4.5.
416
+ - 분석 시트: §4.6.
410
417
 
411
418
  ### 설계 분할 절차 (§4/§5/§6 공통)
412
419
 
413
420
  설계 분할 단계에서 §4/§5/§6 헤더를 §2/§3 본문 (+ §8 마스터 엔티티) 에서 도출. 절차:
414
421
 
415
422
  1. **§4 화면 도출**:
416
- - §2 BPMN 최종 사용자 액션 노드 + §3 사용자 직접 요구 → 트랜잭션/조회 화면
417
- - §8 마스터 엔티티 → 마스터 화면
418
- - 도메인 묶음/장치별 그룹화 → 화면 목록
419
- 2. **§5 자동 처리 도출** — §2/§3 의 시스템 백그라운드 처리 (스케줄·이벤트 트리거·외부 자료 수집·적재) 추출
420
- 3. **§6 횡단 처리 도출** — §3 시스템 전반 자동 룰 + §4/§5 부수효과 동작 추출
423
+ - §2 BPMN 최종 사용자 액션 노드 + §3 사용자 직접 요구 → 트랜잭션/조회 화면.
424
+ - §8 마스터 엔티티 → 마스터 화면.
425
+ - 도메인 묶음/장치별 그룹화 → 화면 목록 표.
426
+ 2. **§5 자동 처리 도출** — §2/§3 의 시스템 백그라운드 처리 (스케줄·이벤트 트리거·외부 자료 수집·적재) 추출.
427
+ 3. **§6 횡단 처리 도출** — §3 시스템 전반 자동 룰 + §4/§5 부수효과 동작 추출.
421
428
 
422
429
  각 § 헤더 분할 직후 자동 OPEN (4단계 보류 발생 경로 참조).
423
430
 
424
431
  ### 화면 목록 표 (§4 첫머리)
425
432
 
426
- 5컬럼: `§ | 분류 | 화면 | 유형 | 장치`
433
+ 5컬럼: `§ | 분류 | 화면 | 유형 | 장치`.
427
434
 
428
- - 분류: 도메인 묶음/메뉴 그룹 자유 명칭 (예: `기준정보`·`입고`·`재고`). LLM 임의안 → 확정
429
- - 유형: 마스터 / 트랜잭션 / 조회
430
- - 장치: PC / PDA / 기타
431
- - 화면 추가/제거 시 표도 갱신. 같은 분류끼리 인접 배치
435
+ - 분류: 도메인 묶음/메뉴 그룹 자유 명칭 (예: `기준정보`·`입고`·`재고`). LLM 임의안 → 확정.
436
+ - 유형: 마스터 / 트랜잭션 / 조회.
437
+ - 장치: PC / PDA / 기타.
438
+ - 화면 추가/제거 시 표도 갱신. 같은 분류끼리 인접 배치.
432
439
 
433
440
  ### 화면 정의 (§4.x 표준 구조)
434
441
 
@@ -439,55 +446,53 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
439
446
  **평문 sub-section** (§4.x 헤더 바로 아래, 위→아래):
440
447
 
441
448
  - **헤더 인덱스** (한 줄씩, 자동 누적 — 임의안 단위 X):
442
- - `Actor: <역할>` — §2 BPMN swim lane 또는 §3 사용자 직접 요구에서 자연 도출
443
- - `관련 섹션:` 본문 내 참조 절 룰 따름 — 모달 호출·시트 영역 재활용 등 화면 간 의존 포함
444
- - **기능 개요**: `기능 개요:` 라벨 다음 bullet 로 화면 기능 설명
449
+ - `Actor: <역할>` — §2 BPMN swim lane 또는 §3 사용자 직접 요구에서 자연 도출.
450
+ - `관련 섹션:` 본문 내 참조 절 룰 따름 — 모달 호출·시트 영역 재활용 등 화면 간 의존 포함.
451
+ - **기능 개요**: `기능 개요:` 라벨 다음 bullet 로 화면 기능 설명.
445
452
 
446
453
  **h4 sub-section** (평문 아래, 고정 순서, 위→아래):
447
454
 
448
455
  #### 와이어프레임 (텍스트)
449
456
 
450
- ASCII 그림 공통 규칙은 output-style `sd-tone` "ASCII 그림" 절 참조.
451
-
452
457
  **형식 일탈 금지**:
453
- - example-spec.md 의 가장 가까운 화면 패턴 라인을 형식 모범으로 직접 참조 — 시트=§4.1·§4.3 / 폼 모달=§4.2·§4.4 / PDA=§4.5 / 분석 시트=§4.6
454
- - ASCII 박스(┌─┐ │ └┘)·영역 추상화 표기(`<필터>`·`<시트>`·`<폼>` 등)·액션 버튼 텍스트 표기 자체 변형 X
458
+ - example-spec.md 의 가장 가까운 화면 패턴 라인을 형식 모범으로 직접 참조 — 시트=§4.1·§4.3 / 폼 모달=§4.2·§4.4 / PDA=§4.5 / 분석 시트=§4.6.
459
+ - ASCII 박스(┌─┐ │ └┘)·영역 추상화 표기(`<필터>`·`<시트>`·`<폼>` 등)·액션 버튼 텍스트 표기 자체 변형 X.
455
460
 
456
461
  **원칙**: 영역 배치·구획만. 디테일(필드·시트 컬럼·실제 값·아이콘 placeholder·fixed 경계·비활성 행 등 시각 표현)은 와이어에 X — 항목 표·동작 절·도메인 규칙 절이 단일 출처.
457
462
 
458
- - 데이터 영역: 영역 타입 + 짧은 라벨로 추상화 — `<필터>`·`<폼>`·`<시트>`·`<목록>`·`<PO 목록>`·`<라인 시트 - 작성영역>` 등. 영역 종류가 한눈에 안 잡히면 라벨 보강
459
- - 액션 버튼: 텍스트 유지 (`[조회]`·`[저장]`·`[등록]`) — 버튼 위치가 와이어의 정보. 아이콘만 있는 버튼도 텍스트로
460
- - 영역(좌/우 분할·탭·상단 command 바·시트 상단 버튼바)으로 나뉘면 박스 라인으로 구획
461
- - 상태(작성중/확정 등)에 따라 영역 구획 크게 달라지면 상태별 분리. 제목: `와이어프레임 (<상태명>):` (예: `와이어프레임 (확정 전):`)
463
+ - 데이터 영역: 영역 타입 + 짧은 라벨로 추상화 — `<필터>`·`<폼>`·`<시트>`·`<목록>`·`<PO 목록>`·`<라인 시트 - 작성영역>` 등. 영역 종류가 한눈에 안 잡히면 라벨 보강.
464
+ - 액션 버튼: 텍스트 유지 (`[조회]`·`[저장]`·`[등록]`) — 버튼 위치가 와이어의 정보. 아이콘만 있는 버튼도 텍스트로.
465
+ - 영역(좌/우 분할·탭·상단 command 바·시트 상단 버튼바)으로 나뉘면 박스 라인으로 구획.
466
+ - 상태(작성중/확정 등)에 따라 영역 구획 크게 달라지면 상태별 분리. 제목: `와이어프레임 (<상태명>):` (예: `와이어프레임 (확정 전):`).
462
467
 
463
468
  #### 항목
464
469
 
465
470
  데이터 항목만 (필터·시트 컬럼·입력/상세 폼). 액션 버튼은 "동작" 에.
466
471
 
467
- - **표 제목 = 와이어 영역 라벨과 동일 명칭** 굵게 — 와이어 `<필터>` → `**필터**`, `<품목 목록 시트>` → `**품목 목록 시트**`, `<스캔 입력 폼>` → `**스캔 입력 폼**`
468
- - 한 영역에 종류 다른 표 여러 개 시 종류 부기 — `**<영역 라벨> — <필터|시트 컬럼|입력 폼>**` (예: `**헤더 목록 — 필터**`, `**BOA 시트 — 시트 컬럼**`)
469
- - 시트 화면 기본 구성: 상단 command 바의 `<필터>` + 시트 영역 (시트 컬럼) 2 그룹
472
+ - **표 제목 = 와이어 영역 라벨과 동일 명칭** 굵게 — 와이어 `<필터>` → `**필터**`, `<품목 목록 시트>` → `**품목 목록 시트**`, `<스캔 입력 폼>` → `**스캔 입력 폼**`.
473
+ - 한 영역에 종류 다른 표 여러 개 시 종류 부기 — `**<영역 라벨> — <필터|시트 컬럼|입력 폼>**` (예: `**헤더 목록 — 필터**`, `**BOA 시트 — 시트 컬럼**`).
474
+ - 시트 화면 기본 구성: 상단 command 바의 `<필터>` + 시트 영역 (시트 컬럼) 2 그룹.
470
475
 
471
476
  **표 형식** — 도메인 매핑은 별도 컬럼 (필터는 시트 컬럼과 중복이라 도메인 매핑 X):
472
- - 입력 폼: `항목 | 종류 | 필수 | 도메인 매핑 | 비고`
473
- - 시트 컬럼: `컬럼 | 종류 | 필수 | 도메인 매핑 | 비고`
474
- - 필터: `항목 | 종류 | 필수 | 비고`
477
+ - 입력 폼: `항목 | 종류 | 필수 | 도메인 매핑 | 비고`.
478
+ - 시트 컬럼: `컬럼 | 종류 | 필수 | 도메인 매핑 | 비고`.
479
+ - 필터: `항목 | 종류 | 필수 | 비고`.
475
480
 
476
- - 필수 컬럼: 무의미한 경우(조회 시트 컬럼 등) `-`
477
- - 도메인 매핑: `[모델.X.Y]` (양식 매핑과 일관). 매핑 없는 항목(선택 체크박스 등) `-`
478
- - 비고: 표시 내용 (이름과 도메인으로 자명하지 않을 때 어떤 값이 표시되는지) / 편집 방법 (편집 가능 항목 — 예: 클릭 시 모달, 인라인 편집) / 기타 자유 설명
481
+ - 필수 컬럼: 무의미한 경우(조회 시트 컬럼 등) `-`.
482
+ - 도메인 매핑: `[모델.X.Y]` (양식 매핑과 일관). 매핑 없는 항목(선택 체크박스 등) `-`.
483
+ - 비고: 표시 내용 (이름과 도메인으로 자명하지 않을 때 어떤 값이 표시되는지) / 편집 방법 (편집 가능 항목 — 예: 클릭 시 모달, 인라인 편집) / 기타 자유 설명.
479
484
 
480
485
  **시트 컬럼 그룹핑** (해당 시): 컬럼이 도메인적으로 묶일 때 표 안에 그룹 표시.
481
- - 그룹 헤더 행 1줄 (`**그룹명**`, 다른 셀 빈 칸)
482
- - 자식 컬럼은 `└ ` 들여쓰기 prefix
483
- - 표 컬럼 수 유지
486
+ - 그룹 헤더 행 1줄 (`**그룹명**`, 다른 셀 빈 칸).
487
+ - 자식 컬럼은 `└ ` 들여쓰기 prefix.
488
+ - 표 컬럼 수 유지.
484
489
 
485
490
  #### 동작
486
491
 
487
492
  bullet `- <트리거>: 처리 내용` 형식.
488
493
 
489
- - 트리거 예: `` `[버튼]` 클릭 ``, `박스 바코드 스캔`, `Enter 키`
490
- - 처리 내용: 동사구 + 대상 (예: `[화면.X] 을 모달로 띄움`, `검색 필터 조건으로 목록 갱신`)
494
+ - 트리거 예: `` `[버튼]` 클릭 ``, `박스 바코드 스캔`, `Enter 키`.
495
+ - 처리 내용: 동사구 + 대상 (예: `[화면.X] 을 모달로 띄움`, `검색 필터 조건으로 목록 갱신`).
491
496
 
492
497
  #### 시각 규칙 (해당 시)
493
498
 
@@ -508,23 +513,23 @@ bullet `- <트리거>: 처리 내용` 형식.
508
513
 
509
514
  화면 목록 표 유형 = 마스터인 §4.x 에 적용. 화면 정의 sub-header (와이어프레임·항목·동작) 와 함께.
510
515
 
511
- - ID 컬럼 = 편집 버튼 (`[E N]`)
512
- - 첫 컬럼 = 선택 체크박스 (`[ ]`)
513
- - 시트 상단 버튼바: `[등록] [선택 삭제] [선택 복구] [엑셀 업로드] [엑셀 다운로드]`
514
- - ID 정렬 역방향
516
+ - ID 컬럼 = 편집 버튼 (`[E N]`).
517
+ - 첫 컬럼 = 선택 체크박스 (`[ ]`).
518
+ - 시트 상단 버튼바: `[등록] [선택 삭제] [선택 복구] [엑셀 업로드] [엑셀 다운로드]`.
519
+ - ID 정렬 역방향.
515
520
 
516
521
  ### 상단 command 바
517
522
 
518
523
  화면 정의 sub-header 와이어프레임·동작과 함께 작성. 페이지 제목 바로 아래, 시트/폼 영역 위. 페이지 전체 또는 현재 레코드 단위 액션 바.
519
524
 
520
- - 좌측: 필터 입력 + 조회 (list) / 진입 컨텍스트 표시 (detail)
521
- - 우측: 페이지·레코드 단위 액션 (있을 때만)
522
- - 좌/우 사이 ` │ ` 세로 구분선
525
+ - 좌측: 필터 입력 + 조회 (list) / 진입 컨텍스트 표시 (detail).
526
+ - 우측: 페이지·레코드 단위 액션 (있을 때만).
527
+ - 좌/우 사이 ` │ ` 세로 구분선.
523
528
 
524
529
  **우측 버튼 그룹 순서** (좌→우):
525
- 1. 기본 CRUD (저장 / 삭제 / 복구)
526
- 2. 워크플로 상태 전환 (확정 / 취소 / 승인 / 반려)
527
- 3. 유틸리티 (원본 다운로드 / 프린트 / PDF)
530
+ 1. 기본 CRUD (저장 / 삭제 / 복구).
531
+ 2. 워크플로 상태 전환 (확정 / 취소 / 승인 / 반려).
532
+ 3. 유틸리티 (원본 다운로드 / 프린트 / PDF).
528
533
 
529
534
  list·detail 동일. 새 버튼은 해당 그룹 끝에 추가. 시트 상단 버튼바도 동일 그룹 순서 (마스터 화면 표준은 구체 인스턴스).
530
535
 
@@ -532,16 +537,16 @@ list·detail 동일. 새 버튼은 해당 그룹 끝에 추가. 시트 상단
532
537
 
533
538
  호출하는 쪽 §4.x 동작 sub-header + 피호출 §4.x 양쪽 적용.
534
539
 
535
- - 모달 화면 = 별도 §4.x. 부르는 쪽 동작에 "→ [화면.X] 을 모달로 띄움" 명시
536
- - 화면명에 "(모달)" 등 사용 맥락 표기 X — 같은 화면이 다른 곳에서 다르게 호출될 수 있음
537
- - 화면 일부 영역(시트·탭)이 다른 화면에서 모달로 재활용되면 별도 §4.x 분리 X. 대신 그 화면 동작 절 끝에 영역별 모달 호출 시 제약(편집 가능 여부 / 선택 전용 / multiselect) 한 줄씩 명시. 호출하는 쪽 동작은 "→ [화면.X] 의 <영역> 을 모달로 띄움" 표기
540
+ - 모달 화면 = 별도 §4.x. 부르는 쪽 동작에 "→ [화면.X] 을 모달로 띄움" 명시.
541
+ - 화면명에 "(모달)" 등 사용 맥락 표기 X — 같은 화면이 다른 곳에서 다르게 호출될 수 있음.
542
+ - 화면 일부 영역(시트·탭)이 다른 화면에서 모달로 재활용되면 별도 §4.x 분리 X. 대신 그 화면 동작 절 끝에 영역별 모달 호출 시 제약(편집 가능 여부 / 선택 전용 / multiselect) 한 줄씩 명시. 호출하는 쪽 동작은 "→ [화면.X] 의 <영역> 을 모달로 띄움" 표기.
538
543
 
539
544
  ## §5 자동 처리
540
545
 
541
546
  **임의안 단위**: §5.x 1개당 위→아래 1건씩:
542
- 1. 목적 / 트리거 (한 묶음)
543
- 2. 처리
544
- 3. 예외 처리
547
+ 1. 목적 / 트리거 (한 묶음).
548
+ 2. 처리.
549
+ 3. 예외 처리.
545
550
  4. 자유 추가 sub-section (해당 시) — sub-section 별 1건 (예: 읽기 양식·쓰기 양식 각각). 복잡 양식 안 sub-단위 (시트 등) = sub-단위별 1건.
546
551
 
547
552
  **모범**: example-spec.md §5.1.
@@ -558,9 +563,9 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
558
563
 
559
564
  **평문 sub-section** (§5.x 헤더 바로 아래, 라벨 + 본문 형식):
560
565
 
561
- - `목적:` 도메인 목적 한
562
- - `트리거:` 스케줄·이벤트
563
- - `관련 섹션:` 본문 내 참조 절 룰 따름
566
+ - `목적:` 도메인 목적 한 줄.
567
+ - `트리거:` 스케줄·이벤트.
568
+ - `관련 섹션:` 본문 내 참조 절 룰 따름.
564
569
 
565
570
  **h4 sub-section** (평문 아래, 고정 순서, 위→아래):
566
571
 
@@ -580,9 +585,9 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
580
585
  ## §6 횡단 처리
581
586
 
582
587
  **임의안 단위**: §6.x 1개당 위→아래 1건씩:
583
- 1. 목적 / 트리거 (부수효과 발동 조건) (한 묶음)
584
- 2. 처리
585
- 3. 예외 처리
588
+ 1. 목적 / 트리거 (부수효과 발동 조건) (한 묶음).
589
+ 2. 처리.
590
+ 3. 예외 처리.
586
591
  4. 자유 추가 sub-section (해당 시) — sub-section 별 1건 (예: 양식 매핑·모델 매핑). 복잡 양식 안 sub-단위 = sub-단위별 1건.
587
592
 
588
593
  **모범**: example-spec.md §6.1.
@@ -592,11 +597,11 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
592
597
  다른 동작의 부수효과로 발동되는 시스템 동작. §3 기타 요구사항의 시스템 전반 자동 룰을 설계로 풀이.
593
598
 
594
599
  예시:
595
- - DataLog 기록 — 데이터 변경 부수
596
- - 권한 체크 — 요청 부수
597
- - 캐시 무효화 — 변경 부수
598
- - 알림 발송 — 이벤트 부수
599
- - 감사 로그 — 동작 부수
600
+ - DataLog 기록 — 데이터 변경 부수.
601
+ - 권한 체크 — 요청 부수.
602
+ - 캐시 무효화 — 변경 부수.
603
+ - 알림 발송 — 이벤트 부수.
604
+ - 감사 로그 — 동작 부수.
600
605
 
601
606
  §5 자동 처리와 차이: §5 = 스케줄/이벤트 명시 트리거 (예: 매일 자정·메일 도착). §6 = 다른 동작 부수효과 트리거 (예: 모든 엔티티 update 시).
602
607
 
@@ -606,9 +611,9 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
606
611
 
607
612
  **평문 sub-section** (§6.x 헤더 바로 아래, 라벨 + 본문 형식):
608
613
 
609
- - `목적:` 부수효과의 도메인 목적
610
- - `트리거:` 어떤 동작의 부수로 발동되는지 + 적용 범위 (예: "모든 엔티티 update 시 / 전체", "특정 도메인 X 변경 시 / 특정 엔티티", "API 요청 시 / 전체")
611
- - `관련 섹션:` 본문 내 참조 절 룰 따름
614
+ - `목적:` 부수효과의 도메인 목적.
615
+ - `트리거:` 어떤 동작의 부수로 발동되는지 + 적용 범위 (예: "모든 엔티티 update 시 / 전체", "특정 도메인 X 변경 시 / 특정 엔티티", "API 요청 시 / 전체").
616
+ - `관련 섹션:` 본문 내 참조 절 룰 따름.
612
617
 
613
618
  **h4 sub-section** (평문 아래, 고정 순서, 위→아래):
614
619
 
@@ -622,7 +627,7 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
622
627
 
623
628
  **자유 추가 sub-section** (`#### 예외 처리` 아래, §6.x 별 필요 시 h4 자유 추가):
624
629
 
625
- - **양식 입출력** (§5 양식 입출력 sub-section 룰 동일)
630
+ - **양식 입출력** (§5 양식 입출력 sub-section 룰 동일).
626
631
  - **모델 매핑** (예: `#### 모델 매핑`) — 이 횡단 처리가 사용·갱신하는 도메인 모델 매핑. 표 `필드 ([모델.X.Y])` + `용도` + `변환·규칙 (해당 시)`.
627
632
  - **기타 횡단 처리 고유 정보** — 자유 sub-section 이름.
628
633
 
@@ -649,17 +654,17 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
649
654
  자료별 표 필수. 외부 자료의 모든 컬럼/필드를 1행 1정의 (자료 자체 객관 명세).
650
655
 
651
656
  **자료-레벨 메타** (송신 측·자료 라이프사이클·갱신 주기·식별 키 구조 등 자료 *전체* 적용 객관 명세):
652
- - 근거 있을 때 컬럼 표 위에 자유 작성 (불릿/단락/`라벨: 값` 모두 허용)
653
- - 컬럼 표 안에 욱여넣지 X
657
+ - 근거 있을 때 컬럼 표 위에 자유 작성 (불릿/단락/`라벨: 값` 모두 허용).
658
+ - 컬럼 표 안에 욱여넣지 X.
654
659
 
655
660
  **컬럼 표**:
656
- - 외부 자료 여러 개 (`SAP.XML`·`D1.CSV`)면 자료별 별도
657
- - 컬럼: 자료 성격에 따라 LLM 임의안 → 확정. 예: `컬럼명/식별자 | 필수/선택 | 설명/규칙`
658
- - 모든 컬럼 행 유지
659
- - "설명/규칙" 류 = **그 컬럼이 무엇인지** (데이터 정의: 형식·값 범위·의미·제약) 만. **용도** (어디에 어떻게 쓰이는지) X — 용도·매핑은 사용처(§4/§5/§6 양식 매핑)에서
660
- - 각 셀 값은 근거 채택 가능 자료 있을 때만. 추정·임의 작성 X
661
- - "원본 따름"·"전체 명세는 X.xlsx 참조" 등 외부 참조로 본문 정의 대체 X
662
- - 원본 자료 LLM 접근 불가/누락/모호 → 임의 처리 X. 사용자에게 자료 또는 명세 정보 요청
661
+ - 외부 자료 여러 개 (`SAP.XML`·`D1.CSV`)면 자료별 별도 표.
662
+ - 컬럼: 자료 성격에 따라 LLM 임의안 → 확정. 예: `컬럼명/식별자 | 필수/선택 | 설명/규칙`.
663
+ - 모든 컬럼 행 유지.
664
+ - "설명/규칙" 류 = **그 컬럼이 무엇인지** (데이터 정의: 형식·값 범위·의미·제약) 만. **용도** (어디에 어떻게 쓰이는지) X — 용도·매핑은 사용처(§4/§5/§6 양식 매핑)에서.
665
+ - 각 셀 값은 근거 채택 가능 자료 있을 때만. 추정·임의 작성 X.
666
+ - "원본 따름"·"전체 명세는 X.xlsx 참조" 등 외부 참조로 본문 정의 대체 X.
667
+ - 원본 자료 LLM 접근 불가/누락/모호 → 임의 처리 X. 사용자에게 자료 또는 명세 정보 요청.
663
668
 
664
669
  ## §8 도메인 모델
665
670
 
@@ -671,21 +676,21 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
671
676
 
672
677
  ### 필드 표
673
678
 
674
- 컬럼: `필드 | 타입 | 필수 | 비고`
679
+ 컬럼: `필드 | 타입 | 필수 | 비고`.
675
680
 
676
- - 비고: **그 필드가 무엇인지** (데이터 정의: 형식·값 범위·의미·제약·예시) 만. **용도·출처·외부 양식/외부 시스템과의 매핑** X — §4/§5/§6 양식 매핑·모델 매핑 / §9 자료 매핑에서
681
+ - 비고: **그 필드가 무엇인지** (데이터 정의: 형식·값 범위·의미·제약·예시) 만. **용도·출처·외부 양식/외부 시스템과의 매핑** X — §4/§5/§6 양식 매핑·모델 매핑 / §9 자료 매핑에서.
677
682
 
678
683
  ### 키/제약 불릿
679
684
 
680
- - **식별 키**: 모든 엔티티에 `ID` 필드 (숫자, 자동 부여) 명시
681
- - **비즈니스 키** (코드 등): 별도 명시. 수정 가능 (PK 아님)
682
- - **활성/비활성 boolean** = 소프트 삭제 플래그. 마스터에 완전 삭제 없음. UI "삭제/복구" 액션과 매핑 → §7.1 용어 사전에 한 줄 명문화
685
+ - **식별 키**: 모든 엔티티에 `ID` 필드 (숫자, 자동 부여) 명시.
686
+ - **비즈니스 키** (코드 등): 별도 명시. 수정 가능 (PK 아님).
687
+ - **활성/비활성 boolean** = 소프트 삭제 플래그. 마스터에 완전 삭제 없음. UI "삭제/복구" 액션과 매핑 → §7.1 용어 사전에 한 줄 명문화.
683
688
 
684
689
  ## §9 외부 인터페이스
685
690
 
686
691
  **임의안 단위** (한 §9.x 당 2회):
687
- 1. 기본 정보 + 자료 매핑 → "맞나요?"
688
- 2. 예외 처리 → "맞나요?"
692
+ 1. 기본 정보 + 자료 매핑 → "맞나요?".
693
+ 2. 예외 처리 → "맞나요?".
689
694
 
690
695
  작성 중 자연 도출. 외부 시스템 호출 발견 시 사이클 진입.
691
696
 
@@ -695,12 +700,12 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
695
700
 
696
701
  §9 = 상대 시스템 고유 인터페이스 약속 (시스템마다 자료 매핑·방식 달라 협상 필요).
697
702
 
698
- - 포함 예: 상대 ERP/거래처 자체 정의 API·EDI 규격, 외부 시스템 webhook 페이로드
699
- - 제외 예: 표준 프로토콜·채널 (메일 SMTP/IMAP/Exchange/Graph, FTP, 표준 OAuth). 시스템별 협상 없음 → §5 자동 처리에서 트리거·처리·양식 매핑으로 흡수
703
+ - 포함 예: 상대 ERP/거래처 자체 정의 API·EDI 규격, 외부 시스템 webhook 페이로드.
704
+ - 제외 예: 표준 프로토콜·채널 (메일 SMTP/IMAP/Exchange/Graph, FTP, 표준 OAuth). 시스템별 협상 없음 → §5 자동 처리에서 트리거·처리·양식 매핑으로 흡수.
700
705
 
701
706
  ### 디테일 범위
702
707
 
703
- 도메인 약속 레벨까지만. 구체 endpoint URL·HTTP method·query 파라미터·인증 흐름 단계(grant_type·scope·token endpoint)·SDK 메소드명 등 구현 디테일 X — 구현이 알아서. (§2 BPMN·§4 와이어·§8 도메인 모델과 동일 원칙)
708
+ 도메인 약속 레벨까지만. 구체 endpoint URL·HTTP method·query 파라미터·인증 흐름 단계(grant_type·scope·token endpoint)·SDK 메소드명 등 구현 디테일 X — 구현이 알아서. (§2 BPMN·§4 와이어·§8 도메인 모델과 동일 원칙).
704
709
 
705
710
  ### 본문 구조
706
711
 
@@ -709,9 +714,9 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
709
714
  **평문 sub-section** (§9.x 헤더 바로 아래, 위→아래):
710
715
 
711
716
  - **기본 정보** (라벨 bullet 3):
712
- - `상대 시스템: <시스템명>`
713
- - `방향: <방향 표기>`
714
- - `전송 방식: <방식>`
717
+ - `상대 시스템: <시스템명>`.
718
+ - `방향: <방향 표기>`.
719
+ - `전송 방식: <방식>`.
715
720
  - **관련 섹션** (`관련 섹션: [카테고리.이름], ...` 한 줄, 자동 누적): 본문 내 참조 절 룰 따름. 호출자 등 참조/의존 섹션 포함.
716
721
 
717
722
  **h4 sub-section** (평문 아래, 고정 순서, 위→아래):
@@ -724,7 +729,7 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
724
729
 
725
730
  실패 케이스별 위험·대처·재시도 한계.
726
731
 
727
- ## §10 본문 외 결정사항
732
+ ## §10 본문 외 확정 사항
728
733
 
729
734
  §1~§9 어디에도 자연스럽게 안 들어가는 결정·메모를 누적. §1~§9 적절한 자리에 박을 수 있는 결정은 §10 X (누락 도피처 X).
730
735
 
@@ -734,22 +739,22 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
734
739
 
735
740
  각 항목:
736
741
 
737
- - **헤더 1줄** (필수): `- YYYY-MM-DD: <결정 한 줄>`
738
- - 분석 제외 시: `- YYYY-MM-DD [제외]: <결정 한 줄>`
739
- - **자식 bullet**: 자유 (개수·내용 자유)
740
- - **결정 근거 필수** (1개 이상)
741
- - 자유 항목 예: 자료 위치·영향 범위·대화 발췌·메모·관련 §
742
- - 분석 제외 시 추가 필수: `후속 처리`·`자료 위치`
742
+ - **헤더 1줄** (필수): `- YYYY-MM-DD: <결정 한 줄>`.
743
+ - 분석 제외 시: `- YYYY-MM-DD [제외]: <결정 한 줄>`.
744
+ - **자식 bullet**: 자유 (개수·내용 자유).
745
+ - **결정 근거 필수** (1개 이상).
746
+ - 자유 항목 예: 자료 위치·영향 범위·대화 발췌·메모·관련 § 등.
747
+ - 분석 제외 시 추가 필수: `후속 처리`·`자료 위치`.
743
748
 
744
749
  ### 포괄 결정 종류
745
750
 
746
751
  매번 분류 X — 자연 흐름대로 누적. 분석 제외 신호 있을 때만 `[제외]` 마커.
747
752
 
748
- - **진행 방법**: **spec 전체** 작업의 사용자 합의 진행 방식 (예: 작성 순서·범위 한정·전체 적용 규칙 등). 분석 단위 한정은 `## spec.md 형식` 안 "진행 방법 누적" 절 참조 — sd-spec 본인 후속 참조용
749
- - **미래 결정**: 단계 도달 전 결정 (예: "추후 §4.5 작성 시 X 항목 포함") — sd-spec 본인 후속 참조용
750
- - **구현 영역 결정**: spec 본문에 안 들어가는 구현 측 결정 (예: 라이브러리 선택) — sd-impl 후속 참조용
751
- - **부정 결정**: "X 안 함" 부정 명시 — 반복 질문 방지용
752
- - **분석 제외**: 본 spec 에서 다루지 않는 항목 — 다른 spec/sd-dev/운영 잔손 등 외부 후속 처리
753
+ - **진행 방법**: **spec 전체** 작업의 사용자 합의 진행 방식 (예: 작성 순서·범위 한정·전체 적용 규칙 등). 분석 단위 한정은 `## spec.md 형식` 안 "진행 방법 누적" 절 참조 — sd-spec 본인 후속 참조용.
754
+ - **미래 결정**: 단계 도달 전 결정 (예: "추후 §4.5 작성 시 X 항목 포함") — sd-spec 본인 후속 참조용.
755
+ - **구현 영역 결정**: spec 본문에 안 들어가는 구현 측 결정 (예: 라이브러리 선택) — sd-impl 후속 참조용.
756
+ - **부정 결정**: "X 안 함" 부정 명시 — 반복 질문 방지용.
757
+ - **분석 제외**: 본 spec 에서 다루지 않는 항목 — 다른 spec/sd-dev/운영 잔손 등 외부 후속 처리.
753
758
 
754
759
  ### 예시
755
760
 
@@ -804,12 +809,12 @@ sub-section 헤더 레벨 = `## spec.md 형식` 안 "sub-section 헤더 레벨"
804
809
 
805
810
  ## 9. 외부 인터페이스
806
811
 
807
- ## 10. 본문 외 결정사항
812
+ ## 10. 본문 외 확정 사항
808
813
  ```
809
814
 
810
815
  분석 분할 결과 반영:
811
- - §2.x/§3.x 헤더 일괄 추가 (헤더 마커 `[OPEN: 날짜]` + 본문 = 분석 방법)
812
- - §10 = 분석 분할 단계 사용자 명시 제외 결정 (`[제외]` 마커) 반영
816
+ - §2.x/§3.x 헤더 일괄 추가 (헤더 마커 `[OPEN: 날짜]` + 본문 = 분석 방법).
817
+ - §10 = 분석 분할 단계 사용자 명시 제외 결정 (`[제외]` 마커) 반영.
813
818
 
814
819
  ## 외부 참조
815
820