@simplysm/sd-claude 14.0.71 → 14.0.73

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 (33) hide show
  1. package/claude/references/sd-simplysm14/README.md +3 -2
  2. package/claude/references/sd-simplysm14/apis/angular/README.md +50 -47
  3. package/claude/references/sd-simplysm14/apis/angular/buttons.md +13 -3
  4. package/claude/references/sd-simplysm14/apis/angular/forms.md +20 -9
  5. package/claude/references/sd-simplysm14/apis/angular/kanban.md +6 -3
  6. package/claude/references/sd-simplysm14/apis/angular/layout.md +18 -12
  7. package/claude/references/sd-simplysm14/apis/angular/modal.md +2 -2
  8. package/claude/references/sd-simplysm14/apis/angular/routing.md +3 -2
  9. package/claude/references/sd-simplysm14/apis/angular/selection-managers.md +2 -1
  10. package/claude/references/sd-simplysm14/apis/angular/sheet.md +1 -1
  11. package/claude/references/sd-simplysm14/apis/angular/visual.md +26 -8
  12. package/claude/references/sd-simplysm14/apis/capacitor-plugin-file-system/README.md +1 -1
  13. package/claude/references/sd-simplysm14/apis/core-browser/README.md +39 -8
  14. package/claude/references/sd-simplysm14/apis/core-common/README.md +87 -9
  15. package/claude/references/sd-simplysm14/apis/core-node/README.md +11 -2
  16. package/claude/references/sd-simplysm14/apis/excel/README.md +19 -5
  17. package/claude/references/sd-simplysm14/apis/lint/README.md +9 -0
  18. package/claude/references/sd-simplysm14/apis/orm-common/README.md +35 -10
  19. package/claude/references/sd-simplysm14/apis/orm-node/README.md +15 -5
  20. package/claude/references/sd-simplysm14/apis/sd-claude/README.md +3 -3
  21. package/claude/references/sd-simplysm14/apis/sd-cli/README.md +37 -7
  22. package/claude/references/sd-simplysm14/apis/service-client/README.md +56 -24
  23. package/claude/references/sd-simplysm14/apis/storage/README.md +3 -1
  24. package/claude/skills/sd-spec/SKILL.md +34 -14
  25. package/claude/skills/sd-spec/references/example-spec.md +6 -2
  26. package/claude/skills/sd-spec/references/spec-authoring.md +15 -4
  27. package/claude/skills/sd-unpack/scripts/handlers/__pycache__/__init__.cpython-314.pyc +0 -0
  28. package/claude/skills/sd-unpack/scripts/handlers/__pycache__/_common.cpython-314.pyc +0 -0
  29. package/claude/skills/sd-unpack/scripts/handlers/__pycache__/dispatch.cpython-314.pyc +0 -0
  30. package/claude/skills/sd-unpack/scripts/handlers/__pycache__/office_com.cpython-314.pyc +0 -0
  31. package/claude/skills/sd-unpack/scripts/handlers/office_com.py +4 -1
  32. package/claude/skills/sd-unpack/scripts/handlers/office_worker.py +5 -3
  33. package/package.json +1 -1
@@ -53,29 +53,43 @@ description: SI/업무시스템 요구사항을 분석해 spec.md 로 구조화
53
53
 
54
54
  Requirement Source 의 모든 요구를 일괄 분류 → 채팅으로만 제시 (spec.md 는 2단계에서 생성).
55
55
 
56
- **절차 진입 전 자문 (내부)**: 외부 관계자 평면(구매처·공급처·고객·하청·감독기관 등) 식별 + 관계자별 흐름 한 줄("주는 것 / 받는 것 / 사이클"). 5번 헤더 명칭의 어휘 근거. spec.md 에 기록 X.
56
+ **§2/§3 본질** (분류 판정 기준):
57
57
 
58
- **절차** (내부 수행, 사용자에겐 5번 결과만 제시):
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번 결과만 제시):
59
66
 
60
67
  1. **평면화**: source 의 모든 요구 후보를 평면 목록으로. 메일 항목·슬라이드·첨부·원본 자체 카테고리(업데이트/추가 기능 등) 의 구조는 분류 단위와 무관.
61
68
 
62
- 2. **항목별 자문 1줄**: "최종 사용자가 이걸 한 가지 업무로 인식하는가? 목적이 뭔가?" 답에 따라:
63
- - **단일 명확한 목적** → §2.x 후보 (3번으로)
64
- - **모호 / 여러 프로세스 걸친 다중 목적**별도 §2.x X. 사용 §2.x 들 안에서 각자의 목적에 맞게 흡수 (공통 utility 동작)
65
- - **다른 흐름의 사전·부수·케이스/서브 타입** → 별도 §2.x X. 그 §2.x 안에서 흡수
66
- - **데이터 적재·내부 조회·표시일 뿐 외부 effect X** → 별도 §2.x X. 사용 §2.x 본문에서 §4 화면으로 다룸
67
- - **신규 §4 화면 또는 §5 자동 처리 등장 필요한 비-프로세스 요구** §3.x
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 안에서 흡수
68
75
  - **기존 화면/흐름 미세 변경 (필드 추가·라벨·동작 조정·버그 수정·인식률 개선) 또는 자료 해석·파라미터 규칙** → §9 분석 제외 항목
69
76
 
70
- 3. **§2.x 후보 재검증**: business outcome 한 사이클 완결 (시작 트리거 → 종료 결과). 풀 BPMN (입고·출고) + 단순 조회 (과거 재고 조회) 모두 포함. 출력 산출물·트리거·대상이 명확히 다르면 합치지 X (같은 카테고리라도 별개 §2.x).
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 그룹화만 근거) → 후보·흡수에 두지 말고 **별도 질문 항목으로 분리**해 사용자에 묻기.
71
85
 
72
- 4. **OPEN 표기**: 후속 요청 예정·구현 시점 미정 항목도 2~3번 동일 적용. 해당 카테고리에 추가하되 `[OPEN: YYYY-MM-DD]` 마커.
86
+ 5. **OPEN 표기**: 후속 요청 예정·구현 시점 미정 항목도 2~4번 동일 적용. 해당 카테고리에 추가하되 `[OPEN: YYYY-MM-DD]` 마커.
73
87
 
74
- 5. **헤더 명칭 규칙**: 헤더는 위 외부 관계자 평면 기반 도메인 업무 동사구. 시스템·문서·메뉴·양식 명칭을 그대로 헤더에 쓰지 X. 외부 관계자 관계가 드러나야 함.
88
+ 6. **헤더 명칭 규칙**: 헤더는 위 외부 관계자 평면 기반 도메인 업무 동사구. 시스템·문서·메뉴·양식 명칭을 그대로 헤더에 쓰지 X. 외부 관계자 관계가 드러나야 함.
75
89
  - ❌ 나쁜 예: `발주서 변경 요청` (발주서 = 시스템 문서)
76
90
  - ✅ 좋은 예: `구매처 발주 변경 요청`
77
91
 
78
- 6. **제시**: 분류별 헤더만 1줄씩. 자문 내용·근거·부연 묘사 X.
92
+ 7. **제시**: 분류별로 헤더 + 그 안에 흡수되는 마스터·화면을 들여쓰기로 명시. 자문 내용·내부 절차 해설·출처 인용 X (출처는 내부 자기검증용). 4번에 따라 분리된 추정 흡수 후보는 별도 질문 항목으로 함께 제시.
79
93
 
80
94
  ### 2단계: 초기 생성
81
95
 
@@ -83,7 +97,9 @@ Requirement Source 의 모든 요구를 일괄 분류 → 채팅으로만 제시
83
97
 
84
98
  - slug 임의안 (한글, 1단계 헤더가 주제를 드러내므로 그를 근거로 도출).
85
99
  - 폴더: `.specs/{yyMMddHHmmss}_{slug}/`
86
- - spec.md = [spec-md-template](references/spec-md-template.md) + 1단계 결과 (§2/§3 헤더 · §9 분석 제외 항목) 반영.
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단계 제외 결정 반영.
87
103
 
88
104
  ### 3단계: §1 개요
89
105
 
@@ -109,7 +125,11 @@ Requirement Source 의 모든 요구를 일괄 분류 → 채팅으로만 제시
109
125
 
110
126
  **Re-Read**: spec-authoring.md §4 화면 목록 표, example-spec.md §4 헤더 + §5 헤더.
111
127
 
112
- §2.x/§3.x 가 매핑되는 화면(§4) / 자동 처리(§5) 의 §번호 + 이름만 순서대로 나열. §4 일 땐 화면 목록 표 (spec-authoring §4) 도 함께.
128
+ §2.x/§3.x 가 매핑되는 화면(§4) / 자동 처리(§5) 의 §번호 + 이름을 순서대로 나열 (채팅 임의안). §4 일 땐 화면 목록 표 (spec-authoring §4) 도 함께.
129
+
130
+ 확정 시 spec.md 갱신:
131
+ - 모든 §4.x/§5.x 헤더에 `[OPEN: YYYY-MM-DD]` 일괄 마킹, 본문은 관련 §2.x/§3.x 1줄 참조 포인터. 임의안 본문(와이어프레임·항목·동작·Flowchart 등) X.
132
+ - §4 화면 목록 표 spec.md 에 박기.
113
133
 
114
134
  ### 6단계: §4.x/§5.x 본문 작성
115
135
 
@@ -573,8 +573,12 @@ flowchart LR
573
573
 
574
574
  ### 9.1 분석 제외 항목 [확정: 2026-04-01]
575
575
 
576
- - 직원 관리 사원번호 컬럼 추가 — 운영 잔손
577
- - 재고 확인 화면 정렬 버그 — 운영 잔손
576
+ - 직원 관리 사원번호 컬럼 추가
577
+ - 후속 처리: sd-dev
578
+ - 자료 위치: 회의록.md L42
579
+ - 재고 확인 화면 정렬 버그
580
+ - 후속 처리: 운영 잔손
581
+ - 자료 위치: 이슈 #128
578
582
 
579
583
  ## 10. 변경 이력
580
584
 
@@ -26,7 +26,7 @@
26
26
  | 마커 | 의미 |
27
27
  | --------------------------------------------- | ------------------------------------------------------------------------------------------------- |
28
28
  | `[확정: YYYY-MM-DD]` | 섹션 확정. 본문에 인라인 `[OPEN]` 있어도 무방. |
29
- | `[OPEN: YYYY-MM-DD]` | 섹션 자체 보류. 본문 = 재분석용 참조 포인터만. 임의안(BPMN/와이어프레임/항목 등) 채우지 X. |
29
+ | `[OPEN: YYYY-MM-DD]` | 섹션 미확정 (사용자 보류 또는 헤더 분할 직후 자동). 본문 = 재분석용 참조 포인터만. 임의안(BPMN/와이어프레임/항목 등) 채우지 X. |
30
30
  | `[확정: YYYY-MM-DD, 구현: YYYY-MM-DD]` | §4 화면 / §5 자동 처리 한정. `[확정]` 마커에 `구현: 날짜` 를 콤마로 이어붙인 확장형. sd-impl 이 시연 검증까지 통과한 시점에 부착. 본문이 변경되면 `[확정]` 날짜 갱신 여부와 무관하게 `구현: …` 부분을 제거 (구버전 구현 무효화). |
31
31
 
32
32
  대괄호 쌍을 연달아 두면(`[확정: …][구현: …]`) 마크다운이 reference-style 링크로 해석해 렌더링이 깨지므로, **단일 대괄호 안 콤마 결합** 형식을 사용한다.
@@ -44,7 +44,12 @@
44
44
 
45
45
  ### 헤더 `[OPEN]` 본문 — 재분석용 참조 포인터
46
46
 
47
- 섹션 보류 본문에 담을 항목 (임의안 X):
47
+ 발생 경로 2가지 (본문 메커니즘·재개 절차는 동일):
48
+
49
+ - **사용자 명시 보류**: 임의안 제시 후 사용자가 보류 지시.
50
+ - **헤더 분할 직후 자동 OPEN**: SKILL.md 2단계(§2.x/§3.x) · 5단계(§4.x/§5.x) 확정 직후 본문 미작성 상태로 일괄 OPEN. 본문은 자료 위치 1줄이면 충분 (분류·분할 시 파악된 위치 그대로).
51
+
52
+ 본문에 담을 항목 (임의안 X):
48
53
 
49
54
  - **자료 위치**: Requirement Source 파일·범위 (예: `회의록.md L12-30`, `첨부A.pdf p.3`).
50
55
  - **LLM 과의 대화 발췌**: 분석 세션 중 사용자가 보류 즈음 준 부분 의견·근거·미결 코멘트 1~2줄 직접 인용 (Requirement Source 발화 X — 그건 "자료 위치" 로 처리).
@@ -275,12 +280,18 @@ ASCII 그림 공통 규칙은 `sd-base-rules.md` 의 "ASCII 그림" 절 참조.
275
280
 
276
281
  ### 분석 제외 항목
277
282
 
278
- 1단계 헤더 분류 + 이후 본문 작성 중 식별된 "제외" 결정을 1줄씩 누적. 형식:
283
+ 1단계 헤더 분류 + 이후 본문 작성 중 식별된 "제외" 결정을 누적. 본 spec 에서 다루지 않지만 다른 spec / sd-dev / 운영 잔손 등으로 후속 처리될 항목 포함. 형식 (`- <요구 한 줄>` 1 + 자식 불릿 2~3종):
279
284
 
280
285
  ```
281
- - <요구 한 줄> — <사유 한 마디 (운영 잔손 / 범위 밖 / 보류 등)>
286
+ - <요구 한 줄>
287
+ - 후속 처리: <다른 spec 신규 / 다른 spec 합류 / sd-dev / 운영 잔손 등>
288
+ - 자료 위치: <Requirement Source 파일·범위 (예: 회의록.md L12-30)>
289
+ - 메모: <대화 발췌 1~2줄, 필요 시>
282
290
  ```
283
291
 
292
+ - `후속 처리` · `자료 위치` 필수. `메모` 는 후속 처리 시 참고할 단서가 있을 때만.
293
+ - 다른 spec / sd-dev 후속 처리 항목은 자료 위치를 충실히 — 후속 도구가 재독해야 함.
294
+
284
295
  ## §10 변경 이력
285
296
 
286
297
  - 본문 수정·추가 사항을 날짜순으로 누적 기록.
@@ -361,10 +361,13 @@ def _run_worker(cmd: str, *args: str, timeout: float, capture_stdout: bool = Fal
361
361
 
362
362
  호출자는 com_lock 으로 sequential 보장. worker 자체는 단독 process 라 인스턴스 격리됨.
363
363
  """
364
+ # worker 는 동일 sys.executable 로 실행되므로 호출 전 호스트 환경에 pywin32 보장 → worker 가 import 가능.
365
+ _common.ensure_pip("pythoncom", "pywin32")
364
366
  import subprocess
367
+ # errors="replace": Windows COM 에러 메시지가 cp949 등 비-utf8 로 올 수 있음 → None 변환 회피.
365
368
  proc = subprocess.run(
366
369
  [sys.executable, str(_WORKER_PATH), cmd, *args],
367
- capture_output=True, text=True, timeout=timeout, encoding="utf-8",
370
+ capture_output=True, text=True, timeout=timeout, encoding="utf-8", errors="replace",
368
371
  )
369
372
  if proc.returncode != 0:
370
373
  raise RuntimeError(
@@ -192,14 +192,16 @@ def _export_one_sheet(wb, tmp: Path, sheets_dir: Path,
192
192
  sheet_ranges[raw_name] = (last_row, last_col)
193
193
 
194
194
  data_range = ws.Range(ws.Cells(1, 1), ws.Cells(last_row, last_col))
195
- # Range → 클립보드 비트맵 → 임시 ChartObject paste → Chart.Export("PNG").
196
- # xlScreen=1, xlBitmap=2
195
+ # Range → 클립보드 EMF → 임시 ChartObject paste → Chart.Export("PNG").
196
+ # xlScreen=1, xlPicture=-4147
197
+ # Format=xlBitmap(2) 는 화면 픽셀 버퍼 캡처라 Excel.Visible=False headless 환경에서 빈/부분 비트맵 생성됨 → xlPicture(EMF) 사용.
198
+ # EMF 는 메타파일 명령으로 시트 콘텐츠 직접 직렬화 → 화면 렌더 의존 없음.
197
199
  # ChartObject pt 그대로. PNG 는 시각/레이아웃용, 정확한 텍스트는 .md 가 책임.
198
200
  # 사이즈 키우면 큰 시트가 Chart.Export PNG dimension 16-bit cap (65535px) 에 걸림.
199
201
  chart_w = data_range.Width
200
202
  chart_h = data_range.Height
201
203
  try:
202
- data_range.CopyPicture(Appearance=1, Format=2)
204
+ data_range.CopyPicture(Appearance=1, Format=-4147)
203
205
  chart_obj = ws.ChartObjects().Add(0, 0, chart_w, chart_h)
204
206
  try:
205
207
  chart_obj.Activate()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/sd-claude",
3
- "version": "14.0.71",
3
+ "version": "14.0.73",
4
4
  "description": "심플리즘 패키지 - Claude Code 셋업",
5
5
  "author": "심플리즘",
6
6
  "license": "Apache-2.0",