@simplysm/sd-claude 14.0.88 → 14.0.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/claude/references/sd-simplysm14/README.md +17 -17
- package/claude/references/sd-simplysm14/apis/angular/README.md +27 -53
- package/claude/references/sd-simplysm14/apis/angular/controls.md +37 -105
- package/claude/references/sd-simplysm14/apis/angular/crud.md +46 -43
- package/claude/references/sd-simplysm14/apis/angular/directives.md +22 -32
- package/claude/references/sd-simplysm14/apis/angular/features.md +40 -55
- package/claude/references/sd-simplysm14/apis/angular/infra.md +40 -40
- package/claude/references/sd-simplysm14/apis/angular/layout.md +25 -53
- package/claude/references/sd-simplysm14/apis/angular/overlay.md +70 -82
- package/claude/references/sd-simplysm14/apis/angular/routing-appstructure.md +44 -39
- package/claude/references/sd-simplysm14/apis/angular/selection-managers.md +21 -36
- package/claude/references/sd-simplysm14/apis/angular/shared-data.md +52 -65
- package/claude/references/sd-simplysm14/apis/angular/sheet.md +65 -70
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-auto-update/README.md +33 -35
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-file-system/README.md +7 -7
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-intent/README.md +29 -29
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-usb-storage/README.md +45 -50
- package/claude/references/sd-simplysm14/apis/core-browser/README.md +42 -55
- package/claude/references/sd-simplysm14/apis/core-browser/dom-element.md +62 -0
- package/claude/references/sd-simplysm14/apis/core-browser/indexed-db.md +13 -12
- package/claude/references/sd-simplysm14/apis/core-common/README.md +222 -98
- package/claude/references/sd-simplysm14/apis/core-common/array-ext.md +102 -53
- package/claude/references/sd-simplysm14/apis/core-common/async-runtime.md +128 -0
- package/claude/references/sd-simplysm14/apis/core-common/datetime.md +98 -64
- package/claude/references/sd-simplysm14/apis/core-common/errors.md +91 -0
- package/claude/references/sd-simplysm14/apis/core-common/json-transfer.md +34 -28
- package/claude/references/sd-simplysm14/apis/core-common/obj.md +104 -40
- package/claude/references/sd-simplysm14/apis/core-node/README.md +11 -8
- package/claude/references/sd-simplysm14/apis/core-node/consola.md +23 -31
- package/claude/references/sd-simplysm14/apis/core-node/cpx.md +33 -22
- package/claude/references/sd-simplysm14/apis/core-node/fs-watcher.md +28 -25
- package/claude/references/sd-simplysm14/apis/core-node/fsx.md +39 -53
- package/claude/references/sd-simplysm14/apis/core-node/pathx.md +26 -29
- package/claude/references/sd-simplysm14/apis/core-node/worker.md +27 -29
- package/claude/references/sd-simplysm14/apis/excel/README.md +14 -14
- package/claude/references/sd-simplysm14/apis/lint/README.md +27 -21
- package/claude/references/sd-simplysm14/apis/lint/rules.md +89 -49
- package/claude/references/sd-simplysm14/apis/orm-common/README.md +5 -59
- package/claude/references/sd-simplysm14/apis/orm-common/db-context.md +98 -67
- package/claude/references/sd-simplysm14/apis/orm-common/expr.md +107 -92
- package/claude/references/sd-simplysm14/apis/orm-common/queryable.md +99 -65
- package/claude/references/sd-simplysm14/apis/orm-common/schema.md +83 -98
- package/claude/references/sd-simplysm14/apis/orm-common/types.md +62 -52
- package/claude/references/sd-simplysm14/apis/orm-node/README.md +62 -25
- package/claude/references/sd-simplysm14/apis/orm-node/db-conn.md +27 -27
- package/claude/references/sd-simplysm14/apis/sd-cli/README.md +12 -15
- package/claude/references/sd-simplysm14/apis/sd-cli/SdTsCompiler.md +92 -45
- package/claude/references/sd-simplysm14/apis/sd-cli/sd-config-types.md +226 -108
- package/claude/references/sd-simplysm14/apis/service-client/README.md +84 -86
- package/claude/references/sd-simplysm14/apis/service-client/orm.md +14 -11
- package/claude/references/sd-simplysm14/apis/service-client/transport.md +33 -10
- package/claude/references/sd-simplysm14/apis/service-common/README.md +37 -23
- package/claude/references/sd-simplysm14/apis/service-common/app-structure.md +9 -9
- package/claude/references/sd-simplysm14/apis/service-common/protocol.md +13 -13
- package/claude/references/sd-simplysm14/apis/service-server/README.md +81 -65
- package/claude/references/sd-simplysm14/apis/service-server/service-authoring.md +32 -35
- package/claude/references/sd-simplysm14/apis/service-server/transport-internals.md +44 -33
- package/claude/references/sd-simplysm14/apis/service-server/v1-legacy.md +34 -45
- package/claude/references/sd-simplysm14/apis/storage/README.md +24 -18
- package/claude/skills/sd-demo/SKILL.md +6 -0
- package/claude/skills/sd-impl/SKILL.md +4 -7
- package/claude/skills/sd-spec/SKILL.md +31 -858
- package/claude/skills/sd-spec/references/spec-authoring.md +519 -0
- package/claude/workflows/sd-docs.js +84 -0
- package/package.json +1 -1
- package/claude/references/sd-simplysm14/apis/orm-common/query-builder.md +0 -29
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/.specs/inventory/spec.md +0 -99
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/package.json +0 -12
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/index.ts +0 -3
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inbound/inbound.list.ts +0 -150
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inventory/inventory-master.list.ts +0 -143
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/outbound/outbound.list.ts +0 -150
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/pnpm-workspace.yaml +0 -2
- package/claude/skills/sd-demo/evals/fixtures/inventory-list/sd.config.ts +0 -12
- package/claude/skills/sd-demo/evals/golden.jsonl +0 -1
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/package.json +0 -8
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/src/.gitkeep +0 -0
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/tests/.gitkeep +0 -0
- package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/tsconfig.json +0 -10
- package/claude/skills/sd-dev/evals/golden.jsonl +0 -1
- package/claude/skills/sd-docs/SKILL.md +0 -46
- package/claude/skills/sd-docs/evals/fixtures/new-write/.claude/references/sd-simplysm14/README.md +0 -7
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/package.json +0 -5
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/src/index.ts +0 -3
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/package.json +0 -6
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/src/index.ts +0 -1
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/package.json +0 -5
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/src/index.ts +0 -8
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/README.md +0 -7
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/apis/foo/README.md +0 -3
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/package.json +0 -5
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/src/index.ts +0 -3
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/package.json +0 -6
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/src/index.ts +0 -1
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/package.json +0 -5
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/src/index.ts +0 -8
- package/claude/skills/sd-docs/evals/golden.jsonl +0 -2
- package/claude/skills/sd-impl/evals/fixtures/case-a-new-screen/.specs/260513120000_warehouse/spec.md +0 -101
- package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/.specs/260513120000_warehouse/spec.md +0 -101
- package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/packages/app/src/screens/box-register/box-register.view.ts +0 -46
- package/claude/skills/sd-impl/evals/fixtures/case-c-new-cross/.specs/260513120000_warehouse/spec.md +0 -89
- package/claude/skills/sd-impl/evals/fixtures/case-d-spec-modify/.specs/260513120000_warehouse/spec.md +0 -101
- package/claude/skills/sd-impl/evals/golden.jsonl +0 -4
- package/claude/skills/sd-manual/evals/fixtures/new-manual/src/notification.ts +0 -25
- package/claude/skills/sd-manual/evals/fixtures/update-manual/.claude/references/sd-simplysm14/manuals/notification.md +0 -14
- package/claude/skills/sd-manual/evals/fixtures/update-manual/src/notification.ts +0 -37
- package/claude/skills/sd-manual/evals/golden.jsonl +0 -2
- package/claude/skills/sd-review/evals/fixtures/code-review/src/foo.ts +0 -7
- package/claude/skills/sd-review/evals/fixtures/doc-review/docs/foo.md +0 -4
- package/claude/skills/sd-review/evals/golden.jsonl +0 -2
- package/claude/skills/sd-skill/evals/fixtures/existing-skill/.claude/skills/todo-format/SKILL.md +0 -14
- package/claude/skills/sd-skill/evals/fixtures/new-skill/.gitkeep +0 -0
- package/claude/skills/sd-skill/evals/golden.jsonl +0 -2
- package/claude/skills/sd-spec/evals/fixtures/case-a-split//355/232/214/354/235/230/353/241/235.md +0 -20
- package/claude/skills/sd-spec/evals/fixtures/case-b-detail/.specs/260513120000_warehouse/spec.md +0 -95
- package/claude/skills/sd-spec/evals/golden.jsonl +0 -2
- package/claude/skills/sd-unpack/evals/fixtures/eml-with-text-attachment/meeting.eml +0 -21
- package/claude/skills/sd-unpack/evals/fixtures/simple-eml/meeting.eml +0 -10
- package/claude/skills/sd-unpack/evals/golden.jsonl +0 -2
- package/claude/skills/sd-use/evals/fixtures/empty/.gitkeep +0 -0
- package/claude/skills/sd-use/evals/golden.jsonl +0 -6
- /package/claude/{skills/sd-docs/references/doc-rules.md → workflows/sd-docs.rules.md} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const BAZ_SECRET = "internal-only";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const BAZ_SECRET = "internal-only";
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
{"id":"new-write","input":"/sd-docs","fixture":"new-write","rubric":["샌드박스 종료 시점 트리에 `.claude/references/sd-simplysm14/apis/foo/README.md` 파일이 존재하는가?","샌드박스 종료 시점 트리에 `.claude/references/sd-simplysm14/apis/bar/README.md` 파일이 존재하는가?","샌드박스 종료 시점 트리에 `.claude/references/sd-simplysm14/apis/baz/` 경로(`baz` 패키지 산출물)가 전혀 존재하지 않는가?","`.claude/references/sd-simplysm14/README.md` 본문에 `apis/foo` 를 가리키는 링크와 `apis/bar` 를 가리키는 링크가 모두 포함되었는가?","`.claude/references/sd-simplysm14/README.md` 본문에 `baz` 패키지가 패키지 인덱스 항목으로 노출되지 않는가?","`.claude/references/sd-simplysm14/apis/foo/README.md` 의 첫 줄(H1)이 정확히 `# @simplysm/foo` 문자열인가?"]}
|
|
2
|
-
{"id":"update-mixed","input":"/sd-docs","fixture":"update-mixed","rubric":["`.claude/references/sd-simplysm14/apis/foo/README.md` 파일 내용에 `OLD_FOO_DOC_PLACEHOLDER_MUST_BE_REWRITTEN` 문자열이 포함되지 않는가?","샌드박스 종료 시점 트리에 `.claude/references/sd-simplysm14/apis/bar/README.md` 파일이 존재하는가?","샌드박스 종료 시점 트리에 `.claude/references/sd-simplysm14/apis/baz/` 경로가 전혀 존재하지 않는가?","`.claude/references/sd-simplysm14/README.md` 본문에 `OLD_INDEX_PLACEHOLDER_MUST_BE_REWRITTEN` 문자열이 포함되지 않는가?","`.claude/references/sd-simplysm14/README.md` 본문에 `apis/bar` 를 가리키는 링크가 포함되었는가?","`.claude/references/sd-simplysm14/apis/bar/README.md` 의 첫 줄(H1)이 정확히 `# @simplysm/bar` 문자열인가?"]}
|
package/claude/skills/sd-impl/evals/fixtures/case-a-new-screen/.specs/260513120000_warehouse/spec.md
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
# 재고관리 요구 분석서
|
|
2
|
-
|
|
3
|
-
## 1. 개요
|
|
4
|
-
|
|
5
|
-
### 1.1 핵심 목적
|
|
6
|
-
|
|
7
|
-
- 박스 단위 입고·재고 관리
|
|
8
|
-
|
|
9
|
-
### 1.2 주요 목표
|
|
10
|
-
|
|
11
|
-
- 박스 1건 등록
|
|
12
|
-
|
|
13
|
-
### 1.3 최종 사용자/이해관계자
|
|
14
|
-
|
|
15
|
-
- 창고 작업자
|
|
16
|
-
|
|
17
|
-
### 1.4 환경/장치
|
|
18
|
-
|
|
19
|
-
#### 구성도
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
┌──────────────┐ ┌──────────────┐
|
|
23
|
-
│ PC 클라이언트 │───→│ 서버 │
|
|
24
|
-
└──────────────┘ └──────────────┘
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
#### 장치 목록
|
|
28
|
-
|
|
29
|
-
- PC: 창고 작업자용. Chrome 최신. 1920x1080
|
|
30
|
-
- 서버: Node 20
|
|
31
|
-
|
|
32
|
-
## 2. 업무 프로세스
|
|
33
|
-
|
|
34
|
-
## 3. 기타 요구사항
|
|
35
|
-
|
|
36
|
-
## 4. 화면
|
|
37
|
-
|
|
38
|
-
| § | 분류 | 화면 | 유형 | 장치 |
|
|
39
|
-
| --- | -------- | --------- | -------- | ---- |
|
|
40
|
-
| 4.1 | 기준정보 | 박스 등록 | 트랜잭션 | PC |
|
|
41
|
-
|
|
42
|
-
### 4.1 박스 등록 (PC) [확정: 2026-05-20]
|
|
43
|
-
|
|
44
|
-
Actor: 창고 작업자
|
|
45
|
-
관련 섹션: [모델.박스]
|
|
46
|
-
|
|
47
|
-
기능 개요:
|
|
48
|
-
|
|
49
|
-
- 박스 1건 신규 등록
|
|
50
|
-
|
|
51
|
-
#### 와이어프레임 (텍스트)
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
┌─────────────────────────┐
|
|
55
|
-
│ 박스 등록 │
|
|
56
|
-
├─────────────────────────┤
|
|
57
|
-
│ <등록 폼> │
|
|
58
|
-
│ │
|
|
59
|
-
│ [저장] │
|
|
60
|
-
└─────────────────────────┘
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
#### 항목
|
|
64
|
-
|
|
65
|
-
**등록 폼**
|
|
66
|
-
|
|
67
|
-
| 항목 | 종류 | 필수 | 도메인 매핑 | 비고 |
|
|
68
|
-
| --------- | ------ | ---- | ---------------- | ------------------- |
|
|
69
|
-
| 박스 코드 | 문자열 | Y | [모델.박스.코드] | 코드 길이 규칙 따름 |
|
|
70
|
-
| 품목 코드 | 문자열 | Y | [모델.박스.품목] | - |
|
|
71
|
-
|
|
72
|
-
#### 동작
|
|
73
|
-
|
|
74
|
-
- `[저장]` 클릭: 입력값으로 박스 1건 등록
|
|
75
|
-
|
|
76
|
-
## 5. 자동 처리
|
|
77
|
-
|
|
78
|
-
## 6. 공통·기반 기능
|
|
79
|
-
|
|
80
|
-
## 7. 공통 정의
|
|
81
|
-
|
|
82
|
-
## 8. 도메인 모델
|
|
83
|
-
|
|
84
|
-
### 8.1 박스 [확정: 2026-05-20]
|
|
85
|
-
|
|
86
|
-
필드:
|
|
87
|
-
|
|
88
|
-
| 필드 | 타입 | 필수 | 비고 |
|
|
89
|
-
| ---- | ------ | ---- | ---------------------- |
|
|
90
|
-
| ID | 숫자 | Y | 자동 부여 |
|
|
91
|
-
| 코드 | 문자열 | Y | 12자, 영문 대문자·숫자 |
|
|
92
|
-
| 품목 | 문자열 | Y | 품목 코드 |
|
|
93
|
-
|
|
94
|
-
키/제약:
|
|
95
|
-
|
|
96
|
-
- 식별 키: ID
|
|
97
|
-
- 비즈니스 키: 코드 (수정 가능)
|
|
98
|
-
|
|
99
|
-
## 9. 외부 인터페이스
|
|
100
|
-
|
|
101
|
-
## 10. 본문 외 결정사항
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
# 재고관리 요구 분석서
|
|
2
|
-
|
|
3
|
-
## 1. 개요
|
|
4
|
-
|
|
5
|
-
### 1.1 핵심 목적
|
|
6
|
-
|
|
7
|
-
- 박스 단위 입고·재고 관리
|
|
8
|
-
|
|
9
|
-
### 1.2 주요 목표
|
|
10
|
-
|
|
11
|
-
- 박스 1건 등록
|
|
12
|
-
|
|
13
|
-
### 1.3 최종 사용자/이해관계자
|
|
14
|
-
|
|
15
|
-
- 창고 작업자
|
|
16
|
-
|
|
17
|
-
### 1.4 환경/장치
|
|
18
|
-
|
|
19
|
-
#### 구성도
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
┌──────────────┐ ┌──────────────┐
|
|
23
|
-
│ PC 클라이언트 │───→│ 서버 │
|
|
24
|
-
└──────────────┘ └──────────────┘
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
#### 장치 목록
|
|
28
|
-
|
|
29
|
-
- PC: 창고 작업자용. Chrome 최신. 1920x1080
|
|
30
|
-
- 서버: Node 20
|
|
31
|
-
|
|
32
|
-
## 2. 업무 프로세스
|
|
33
|
-
|
|
34
|
-
## 3. 기타 요구사항
|
|
35
|
-
|
|
36
|
-
## 4. 화면
|
|
37
|
-
|
|
38
|
-
| § | 분류 | 화면 | 유형 | 장치 |
|
|
39
|
-
| --- | -------- | --------- | -------- | ---- |
|
|
40
|
-
| 4.1 | 기준정보 | 박스 등록 | 트랜잭션 | PC |
|
|
41
|
-
|
|
42
|
-
### 4.1 박스 등록 (PC) [확정: 2026-05-20]
|
|
43
|
-
|
|
44
|
-
Actor: 창고 작업자
|
|
45
|
-
관련 섹션: [모델.박스]
|
|
46
|
-
|
|
47
|
-
기능 개요:
|
|
48
|
-
|
|
49
|
-
- 박스 1건 신규 등록
|
|
50
|
-
|
|
51
|
-
#### 와이어프레임 (텍스트)
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
┌─────────────────────────┐
|
|
55
|
-
│ 박스 등록 │
|
|
56
|
-
├─────────────────────────┤
|
|
57
|
-
│ <등록 폼> │
|
|
58
|
-
│ │
|
|
59
|
-
│ [저장] │
|
|
60
|
-
└─────────────────────────┘
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
#### 항목
|
|
64
|
-
|
|
65
|
-
**등록 폼**
|
|
66
|
-
|
|
67
|
-
| 항목 | 종류 | 필수 | 도메인 매핑 | 비고 |
|
|
68
|
-
| --------- | ------ | ---- | ---------------- | ------------------- |
|
|
69
|
-
| 박스 코드 | 문자열 | Y | [모델.박스.코드] | 코드 길이 규칙 따름 |
|
|
70
|
-
| 품목 코드 | 문자열 | Y | [모델.박스.품목] | - |
|
|
71
|
-
|
|
72
|
-
#### 동작
|
|
73
|
-
|
|
74
|
-
- `[저장]` 클릭: 입력값으로 박스 1건 등록
|
|
75
|
-
|
|
76
|
-
## 5. 자동 처리
|
|
77
|
-
|
|
78
|
-
## 6. 공통·기반 기능
|
|
79
|
-
|
|
80
|
-
## 7. 공통 정의
|
|
81
|
-
|
|
82
|
-
## 8. 도메인 모델
|
|
83
|
-
|
|
84
|
-
### 8.1 박스 [확정: 2026-05-20]
|
|
85
|
-
|
|
86
|
-
필드:
|
|
87
|
-
|
|
88
|
-
| 필드 | 타입 | 필수 | 비고 |
|
|
89
|
-
| ---- | ------ | ---- | ---------------------- |
|
|
90
|
-
| ID | 숫자 | Y | 자동 부여 |
|
|
91
|
-
| 코드 | 문자열 | Y | 12자, 영문 대문자·숫자 |
|
|
92
|
-
| 품목 | 문자열 | Y | 품목 코드 |
|
|
93
|
-
|
|
94
|
-
키/제약:
|
|
95
|
-
|
|
96
|
-
- 식별 키: ID
|
|
97
|
-
- 비즈니스 키: 코드 (수정 가능)
|
|
98
|
-
|
|
99
|
-
## 9. 외부 인터페이스
|
|
100
|
-
|
|
101
|
-
## 10. 본문 외 결정사항
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Component, signal } from "@angular/core";
|
|
2
|
-
|
|
3
|
-
@Component({
|
|
4
|
-
selector: "app-box-register",
|
|
5
|
-
template: `
|
|
6
|
-
<div class="box-register">
|
|
7
|
-
<h2>박스 등록</h2>
|
|
8
|
-
<div class="form">
|
|
9
|
-
<label>
|
|
10
|
-
박스 코드
|
|
11
|
-
<input
|
|
12
|
-
type="text"
|
|
13
|
-
[value]="boxCode()"
|
|
14
|
-
(input)="onBoxCodeInput($event)"
|
|
15
|
-
/>
|
|
16
|
-
</label>
|
|
17
|
-
<label>
|
|
18
|
-
품목 코드
|
|
19
|
-
<input
|
|
20
|
-
type="text"
|
|
21
|
-
[value]="itemCode()"
|
|
22
|
-
(input)="onItemCodeInput($event)"
|
|
23
|
-
/>
|
|
24
|
-
</label>
|
|
25
|
-
</div>
|
|
26
|
-
<button (click)="onSave()">저장</button>
|
|
27
|
-
</div>
|
|
28
|
-
`,
|
|
29
|
-
})
|
|
30
|
-
export class BoxRegisterView {
|
|
31
|
-
boxCode = signal("");
|
|
32
|
-
itemCode = signal("");
|
|
33
|
-
|
|
34
|
-
onBoxCodeInput(e: Event) {
|
|
35
|
-
this.boxCode.set((e.target as HTMLInputElement).value);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
onItemCodeInput(e: Event) {
|
|
39
|
-
this.itemCode.set((e.target as HTMLInputElement).value);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
onSave() {
|
|
43
|
-
// 데모 골격: 실제 저장 동작 없음 (sd-impl 풀 구현 대기)
|
|
44
|
-
console.log("박스 등록 데모", { box: this.boxCode(), item: this.itemCode() });
|
|
45
|
-
}
|
|
46
|
-
}
|
package/claude/skills/sd-impl/evals/fixtures/case-c-new-cross/.specs/260513120000_warehouse/spec.md
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# 재고관리 요구 분석서
|
|
2
|
-
|
|
3
|
-
## 1. 개요
|
|
4
|
-
|
|
5
|
-
### 1.1 핵심 목적
|
|
6
|
-
|
|
7
|
-
- 박스 단위 입고·재고 관리
|
|
8
|
-
|
|
9
|
-
### 1.2 주요 목표
|
|
10
|
-
|
|
11
|
-
- 데이터 변경 이력 추적
|
|
12
|
-
|
|
13
|
-
### 1.3 최종 사용자/이해관계자
|
|
14
|
-
|
|
15
|
-
- 창고 작업자
|
|
16
|
-
- 시스템 운영자 (감사)
|
|
17
|
-
|
|
18
|
-
### 1.4 환경/장치
|
|
19
|
-
|
|
20
|
-
#### 구성도
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
┌──────────────┐ ┌──────────────┐
|
|
24
|
-
│ PC 클라이언트 │───→│ 서버 │
|
|
25
|
-
└──────────────┘ └──────────────┘
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
#### 장치 목록
|
|
29
|
-
|
|
30
|
-
- PC: Chrome 최신
|
|
31
|
-
- 서버: Node 20
|
|
32
|
-
|
|
33
|
-
## 2. 업무 프로세스
|
|
34
|
-
|
|
35
|
-
## 3. 기타 요구사항
|
|
36
|
-
|
|
37
|
-
### 3.1 데이터 변경 이력 추적 [확정: 2026-05-20]
|
|
38
|
-
|
|
39
|
-
모든 도메인 모델 변경분을 변경 로그에 기록. 감사·복구 목적.
|
|
40
|
-
|
|
41
|
-
관련 섹션: [기반.데이터 변경 로그]
|
|
42
|
-
|
|
43
|
-
## 4. 화면
|
|
44
|
-
|
|
45
|
-
## 5. 자동 처리
|
|
46
|
-
|
|
47
|
-
## 6. 공통·기반 기능
|
|
48
|
-
|
|
49
|
-
### 6.1 데이터 변경 로그 [확정: 2026-05-20]
|
|
50
|
-
|
|
51
|
-
목적: 모든 도메인 모델 변경분 기록
|
|
52
|
-
트리거: 모든 엔티티 update 시 / 전체
|
|
53
|
-
관련 섹션: [모델.변경 로그]
|
|
54
|
-
|
|
55
|
-
#### 처리
|
|
56
|
-
|
|
57
|
-
1. 변경 전 엔티티 스냅샷 수집
|
|
58
|
-
2. 변경 후 엔티티 스냅샷 수집
|
|
59
|
-
3. 변경 로그 1건 적재 (필드: 엔티티명·키·변경 전·변경 후·일시·사용자)
|
|
60
|
-
|
|
61
|
-
#### 예외 처리
|
|
62
|
-
|
|
63
|
-
- 적재 실패: 로그 X, 원 트랜잭션 진행 (best-effort)
|
|
64
|
-
|
|
65
|
-
## 7. 공통 정의
|
|
66
|
-
|
|
67
|
-
## 8. 도메인 모델
|
|
68
|
-
|
|
69
|
-
### 8.1 변경 로그 [확정: 2026-05-20]
|
|
70
|
-
|
|
71
|
-
필드:
|
|
72
|
-
|
|
73
|
-
| 필드 | 타입 | 필수 | 비고 |
|
|
74
|
-
| --------- | ------ | ---- | --------------------- |
|
|
75
|
-
| ID | 숫자 | Y | 자동 부여 |
|
|
76
|
-
| 엔티티명 | 문자열 | Y | 변경된 엔티티 종류 |
|
|
77
|
-
| 엔티티 키 | 문자열 | Y | 변경된 엔티티 식별 키 |
|
|
78
|
-
| 변경 전 | 텍스트 | N | JSON 직렬화 |
|
|
79
|
-
| 변경 후 | 텍스트 | N | JSON 직렬화 |
|
|
80
|
-
| 일시 | 일시 | Y | 변경 발생 시점 |
|
|
81
|
-
| 사용자 | 문자열 | Y | 변경 수행자 |
|
|
82
|
-
|
|
83
|
-
키/제약:
|
|
84
|
-
|
|
85
|
-
- 식별 키: ID
|
|
86
|
-
|
|
87
|
-
## 9. 외부 인터페이스
|
|
88
|
-
|
|
89
|
-
## 10. 본문 외 결정사항
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
# 재고관리 요구 분석서
|
|
2
|
-
|
|
3
|
-
## 1. 개요
|
|
4
|
-
|
|
5
|
-
### 1.1 핵심 목적
|
|
6
|
-
|
|
7
|
-
- 박스 단위 입고·재고 관리
|
|
8
|
-
|
|
9
|
-
### 1.2 주요 목표
|
|
10
|
-
|
|
11
|
-
- 박스 1건 등록
|
|
12
|
-
|
|
13
|
-
### 1.3 최종 사용자/이해관계자
|
|
14
|
-
|
|
15
|
-
- 창고 작업자
|
|
16
|
-
|
|
17
|
-
### 1.4 환경/장치
|
|
18
|
-
|
|
19
|
-
#### 구성도
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
┌──────────────┐ ┌──────────────┐
|
|
23
|
-
│ PC 클라이언트 │───→│ 서버 │
|
|
24
|
-
└──────────────┘ └──────────────┘
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
#### 장치 목록
|
|
28
|
-
|
|
29
|
-
- PC: 창고 작업자용. Chrome 최신. 1920x1080
|
|
30
|
-
- 서버: Node 20
|
|
31
|
-
|
|
32
|
-
## 2. 업무 프로세스
|
|
33
|
-
|
|
34
|
-
## 3. 기타 요구사항
|
|
35
|
-
|
|
36
|
-
## 4. 화면
|
|
37
|
-
|
|
38
|
-
| § | 분류 | 화면 | 유형 | 장치 |
|
|
39
|
-
| --- | -------- | --------- | -------- | ---- |
|
|
40
|
-
| 4.1 | 기준정보 | 박스 등록 | 트랜잭션 | PC |
|
|
41
|
-
|
|
42
|
-
### 4.1 박스 등록 (PC) [확정: 2026-05-20]
|
|
43
|
-
|
|
44
|
-
Actor: 창고 작업자
|
|
45
|
-
관련 섹션: [모델.박스]
|
|
46
|
-
|
|
47
|
-
기능 개요:
|
|
48
|
-
|
|
49
|
-
- 박스 1건 신규 등록
|
|
50
|
-
|
|
51
|
-
#### 와이어프레임 (텍스트)
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
┌─────────────────────────┐
|
|
55
|
-
│ 박스 등록 │
|
|
56
|
-
├─────────────────────────┤
|
|
57
|
-
│ <등록 폼> │
|
|
58
|
-
│ │
|
|
59
|
-
│ [저장] │
|
|
60
|
-
└─────────────────────────┘
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
#### 항목
|
|
64
|
-
|
|
65
|
-
**등록 폼**
|
|
66
|
-
|
|
67
|
-
| 항목 | 종류 | 필수 | 도메인 매핑 | 비고 |
|
|
68
|
-
| --------- | ------ | ---- | ---------------- | ------------------- |
|
|
69
|
-
| 박스 코드 | 문자열 | Y | [모델.박스.코드] | 코드 길이 규칙 따름 |
|
|
70
|
-
| 품목 코드 | 문자열 | Y | [모델.박스.품목] | - |
|
|
71
|
-
|
|
72
|
-
#### 동작
|
|
73
|
-
|
|
74
|
-
- `[저장]` 클릭: 입력값으로 박스 1건 등록
|
|
75
|
-
|
|
76
|
-
## 5. 자동 처리
|
|
77
|
-
|
|
78
|
-
## 6. 공통·기반 기능
|
|
79
|
-
|
|
80
|
-
## 7. 공통 정의
|
|
81
|
-
|
|
82
|
-
## 8. 도메인 모델
|
|
83
|
-
|
|
84
|
-
### 8.1 박스 [확정: 2026-05-20]
|
|
85
|
-
|
|
86
|
-
필드:
|
|
87
|
-
|
|
88
|
-
| 필드 | 타입 | 필수 | 비고 |
|
|
89
|
-
| ---- | ------ | ---- | --------------------------------- |
|
|
90
|
-
| ID | 숫자 | Y | 자동 부여 |
|
|
91
|
-
| 코드 | 문자열 | Y | 길이 [OPEN] — 12자 또는 24자 결정 필요 |
|
|
92
|
-
| 품목 | 문자열 | Y | 품목 코드 |
|
|
93
|
-
|
|
94
|
-
키/제약:
|
|
95
|
-
|
|
96
|
-
- 식별 키: ID
|
|
97
|
-
- 비즈니스 키: 코드 (수정 가능)
|
|
98
|
-
|
|
99
|
-
## 9. 외부 인터페이스
|
|
100
|
-
|
|
101
|
-
## 10. 본문 외 결정사항
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
{"id": "case-a-new-screen", "input": ".specs/260513120000_warehouse/spec.md §4.1 화면 풀 구현해줘. eval 환경 단축 모드: 단위 테스트 핵심 1건만, 6단계 subagent 대조·7단계 코드 정리·REFACTOR·dev 시연 스킵.", "rubric": ["fixture 의 spec.md 파일이 워크스페이스에 보존되었는가", "워크스페이스 spec.md 의 §4.1 헤더에 [확정: YYYY-MM-DD, 구현: YYYY-MM-DD] 형식 마커가 부착되었는가", "워크스페이스에 §4.1 화면 본체에 해당하는 코드 파일이 1개 이상 생성되었는가 (예: 박스 등록 화면 컴포넌트)", "assistant 응답에 spec 분해 표가 마크다운 표 형식(파이프 구분, 헤더 행 포함)으로 출력되었는가"], "fixture": "case-a-new-screen"}
|
|
2
|
-
{"id": "case-b-update-with-demo", "input": ".specs/260513120000_warehouse/spec.md §4.1 데모를 실 구현으로 전환해줘. eval 환경 단축 모드: 단위 테스트 핵심 1건만, 6단계 subagent 대조·7단계 코드 정리·REFACTOR·dev 시연 스킵.", "rubric": ["fixture 의 데모 골격 파일(packages/app/src/screens/box-register/box-register.view.ts)이 워크스페이스에 보존되었는가 (삭제되지 않았는가)", "워크스페이스 spec.md 의 §4.1 헤더에 [확정: YYYY-MM-DD, 구현: YYYY-MM-DD] 형식 마커가 부착되었는가", "워크스페이스에 데모 골격 외의 코드 파일(데이터 접근 또는 단위 테스트 계층)이 1개 이상 추가되었는가", "assistant 응답에 spec 분해 표가 마크다운 표 형식(파이프 구분, 헤더 행 포함)으로 출력되었는가"], "fixture": "case-b-update-with-demo"}
|
|
3
|
-
{"id": "case-c-new-cross", "input": ".specs/260513120000_warehouse/spec.md §6.1 공통·기반 기능 풀 구현해줘. eval 환경 단축 모드: 단위 테스트 핵심 1건만, 6단계 subagent 대조·7단계 코드 정리·REFACTOR·dev 시연 스킵.", "rubric": ["워크스페이스에 §6.1 공통·기반 기능 본체(부수효과 후크 또는 처리 로직)에 해당하는 코드 파일이 1개 이상 생성되었는가", "워크스페이스 spec.md 의 §6.1 헤더에 [확정: YYYY-MM-DD, 구현: YYYY-MM-DD] 형식 마커가 부착되었는가", "assistant 응답에 spec 분해 표가 마크다운 표 형식(파이프 구분, 헤더 행 포함)으로 출력되었는가"], "fixture": "case-c-new-cross"}
|
|
4
|
-
{"id": "case-d-spec-modify", "input": ".specs/260513120000_warehouse/spec.md §4.1 화면 풀 구현해줘. §8.1 의 인라인 [OPEN] 마커는 만나는 즉시 결정해서 spec.md 를 직접 수정하고 진행해줘. eval 환경 단축 모드: 단위 테스트 핵심 1건만, 6단계 subagent 대조·7단계 코드 정리·REFACTOR·dev 시연 스킵.", "rubric": ["fixture spec.md 안의 인라인 [OPEN] 마커가 워크스페이스 spec.md 의 §8.1 본문에서 제거 또는 결정 내용으로 치환되었는가 ('[OPEN]' 문자열이 §8.1 본문에 더 이상 존재하지 않는가)", "워크스페이스 spec.md 의 §4.1 헤더에 [확정: YYYY-MM-DD, 구현: YYYY-MM-DD] 형식 마커가 부착되었는가", "events 에 sd-spec 룰 자료(.claude/skills/sd-spec/SKILL.md 또는 동등 자료) 읽기 흔적(Read·Bash cat 등 동등 명령)이 1회 이상 있는가", "워크스페이스에 §4.1 화면 본체에 해당하는 코드 파일이 1개 이상 생성되었는가"], "fixture": "case-d-spec-modify"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export type Severity = "info" | "success" | "warning" | "danger";
|
|
2
|
-
|
|
3
|
-
export interface ShowOptions {
|
|
4
|
-
/** 색상 강조 단계. 기본값 "info". */
|
|
5
|
-
severity?: Severity;
|
|
6
|
-
/** 자동 사라짐 시간(ms). 기본값 3000. */
|
|
7
|
-
durationMs?: number;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* 화면 우상단에 토스트 알림을 띄운다.
|
|
12
|
-
* durationMs 경과 후 자동으로 사라진다.
|
|
13
|
-
*/
|
|
14
|
-
export function show(message: string, opts?: ShowOptions): void {
|
|
15
|
-
const severity = opts?.severity ?? "info";
|
|
16
|
-
const durationMs = opts?.durationMs ?? 3000;
|
|
17
|
-
renderToast(message, severity, durationMs);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function renderToast(message: string, severity: Severity, durationMs: number): void {
|
|
21
|
-
// 실제 DOM 렌더링 (생략)
|
|
22
|
-
void message;
|
|
23
|
-
void severity;
|
|
24
|
-
void durationMs;
|
|
25
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# 알림(notification) 매뉴얼
|
|
2
|
-
|
|
3
|
-
화면에 토스트 알림을 띄우는 방법.
|
|
4
|
-
|
|
5
|
-
## 알림 띄우기
|
|
6
|
-
|
|
7
|
-
`show(message, opts)` 로 토스트를 띄움.
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
show("저장되었습니다", { severity: "success" });
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
- `severity` 로 색상 강조 단계(`info`/`success`/`warning`/`danger`)를 지정.
|
|
14
|
-
- `durationMs` 로 자동 사라짐 시간을 조정 (미지정 시 3초).
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
export type Severity = "info" | "success" | "warning" | "danger";
|
|
2
|
-
|
|
3
|
-
export interface ShowOptions {
|
|
4
|
-
/** 색상 강조 단계. 기본값 "info". */
|
|
5
|
-
severity?: Severity;
|
|
6
|
-
/** 자동 사라짐 시간(ms). 기본값 3000. */
|
|
7
|
-
durationMs?: number;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* 화면 우상단에 토스트 알림을 띄운다.
|
|
12
|
-
* durationMs 경과 후 자동으로 사라진다.
|
|
13
|
-
*/
|
|
14
|
-
export function show(message: string, opts?: ShowOptions): void {
|
|
15
|
-
const severity = opts?.severity ?? "info";
|
|
16
|
-
const durationMs = opts?.durationMs ?? 3000;
|
|
17
|
-
renderToast(message, severity, durationMs);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* 확인/취소 대화상자를 띄우고 사용자의 선택을 반환한다.
|
|
22
|
-
* 확인 시 true, 취소 시 false.
|
|
23
|
-
*/
|
|
24
|
-
export async function confirm(message: string): Promise<boolean> {
|
|
25
|
-
return await renderConfirmDialog(message);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function renderToast(message: string, severity: Severity, durationMs: number): void {
|
|
29
|
-
void message;
|
|
30
|
-
void severity;
|
|
31
|
-
void durationMs;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
async function renderConfirmDialog(message: string): Promise<boolean> {
|
|
35
|
-
void message;
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
{"id": "case-001", "input": "/sd-manual src/notification.ts 의 알림 표시 기능 매뉴얼 만들어줘 (평가 환경 — 이 파일만 대상으로 최소 작성)", "rubric": ["manuals/ 디렉토리에 새 .md 매뉴얼 파일이 1개 이상 생성되었는가", "생성된 매뉴얼에 코드 예시 블록(``` 펜스)이 1개 이상 포함되었는가", "생성된 매뉴얼의 섹션 헤딩이 사용/작업 목적 형태(예: '~하려면', '~하기', '~띄우기')로 구성되어 있는가", "README.md 의 매뉴얼 인덱스 표 또는 목록에 새 매뉴얼로 향하는 링크 행이 1줄 추가되었는가", "fixture 에 원래 있던 기존 manuals/*.md 파일들이 삭제되지 않고 보존되었는가"], "fixture": "new-manual"}
|
|
2
|
-
{"id": "case-002", "input": "/sd-manual notification 매뉴얼 최신 코드 반영해서 갱신해줘", "rubric": ["기존 manuals/notification.md 파일이 보존된 상태로 존재하는가", "갱신된 notification.md 에 src/notification.ts 의 confirm 기능에 대한 사용법이 추가되었는가", "갱신된 notification.md 에 코드 예시 블록(``` 펜스)이 포함되어 있는가", "fixture 에 원래 있던 기존 manuals/*.md 파일들이 삭제되지 않고 보존되었는가"], "fixture": "update-manual"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
{"id": "code-review", "input": "/sd-review src/foo.ts 코드 리뷰", "rubric": ["응답에 리뷰 대상(파일 경로 또는 코드 인용)이 명시되었는가?", "응답에 적용 룰·기준·원칙 인용이 1건 이상 포함되었는가?", "응답에 코드의 잠재 문제·개선점 또는 통과 판정이 명시되었는가?"], "fixture": "code-review"}
|
|
2
|
-
{"id": "doc-review", "input": "/sd-review docs/foo.md 문서 리뷰", "rubric": ["응답에 리뷰 대상(파일 경로 또는 문서 인용)이 명시되었는가?", "응답에 적용 룰·기준·원칙 인용이 1건 이상 포함되었는가?", "응답에 문서의 잠재 문제·개선점 또는 통과 판정이 명시되었는가?"], "fixture": "doc-review"}
|
|
File without changes
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
{"id": "case-001", "input": "/sd-skill 할일 텍스트를 마크다운 표로 변환하는 스킬 만들자. § 4·§ 5 스킵.", "rubric": ["`.claude/skills/` 하위에 신규 스킬 디렉토리가 생성되고 그 안에 `SKILL.md` 파일이 존재하는가?", "신규 SKILL.md frontmatter 에 `name` 키와 `description` 키가 모두 존재하는가?", "신규 SKILL.md frontmatter 의 `description` 에 'Use when' 표현이 포함되었는가?", "신규 스킬 디렉토리 하위에 `evals/golden.jsonl` 파일이 존재하고 1줄 이상의 JSON 케이스가 포함되었는가?", "신규 스킬 디렉토리 하위에 `evals/fixtures/` 디렉토리가 존재하고 그 하위에 1개 이상의 fixture 디렉토리가 존재하는가?"], "fixture": "new-skill"}
|
|
2
|
-
{"id": "case-002", "input": "/sd-skill 기존 todo-format 스킬에 우선순위 정렬 기능 추가하자. § 4·§ 5 스킵.", "rubric": ["기존 `.claude/skills/todo-format/SKILL.md` 파일이 손실 없이 존재하는가?", "SKILL.md frontmatter 에 `name` 키와 `description` 키가 모두 존재하는가?", "SKILL.md frontmatter 의 `name` 값이 `todo-format` 으로 유지되었는가?", "SKILL.md frontmatter 의 `description` 에 'Use when' 표현이 포함되었는가?"], "fixture": "existing-skill"}
|