@simplysm/sd-claude 14.0.77 → 14.0.79

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