@simplysm/sd-claude 14.0.88 → 14.0.90
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 +16 -17
- package/claude/references/sd-simplysm14/apis/angular/README.md +39 -43
- package/claude/references/sd-simplysm14/apis/angular/controls.md +174 -80
- package/claude/references/sd-simplysm14/apis/angular/crud.md +41 -50
- package/claude/references/sd-simplysm14/apis/angular/directives.md +60 -26
- package/claude/references/sd-simplysm14/apis/angular/features.md +109 -37
- package/claude/references/sd-simplysm14/apis/angular/infra.md +61 -44
- package/claude/references/sd-simplysm14/apis/angular/layout.md +39 -31
- package/claude/references/sd-simplysm14/apis/angular/overlay.md +73 -85
- package/claude/references/sd-simplysm14/apis/angular/routing-appstructure.md +54 -39
- package/claude/references/sd-simplysm14/apis/angular/selection-managers.md +55 -30
- package/claude/references/sd-simplysm14/apis/angular/shared-data.md +71 -67
- package/claude/references/sd-simplysm14/apis/angular/sheet.md +82 -72
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-auto-update/README.md +35 -36
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-file-system/README.md +71 -43
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-intent/README.md +38 -30
- 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 +39 -38
- package/claude/references/sd-simplysm14/apis/core-common/README.md +95 -103
- package/claude/references/sd-simplysm14/apis/core-common/array-ext.md +59 -54
- package/claude/references/sd-simplysm14/apis/core-common/async-runtime.md +86 -0
- package/claude/references/sd-simplysm14/apis/core-common/datetime.md +57 -66
- package/claude/references/sd-simplysm14/apis/core-common/errors.md +86 -0
- package/claude/references/sd-simplysm14/apis/core-common/obj.md +60 -42
- package/claude/references/sd-simplysm14/apis/core-common/serialization.md +55 -0
- package/claude/references/sd-simplysm14/apis/core-node/README.md +10 -8
- package/claude/references/sd-simplysm14/apis/core-node/consola.md +29 -32
- package/claude/references/sd-simplysm14/apis/core-node/cpx.md +34 -22
- package/claude/references/sd-simplysm14/apis/core-node/fs-watcher.md +29 -25
- package/claude/references/sd-simplysm14/apis/core-node/fsx.md +40 -53
- package/claude/references/sd-simplysm14/apis/core-node/pathx.md +22 -29
- package/claude/references/sd-simplysm14/apis/core-node/worker.md +31 -31
- package/claude/references/sd-simplysm14/apis/excel/README.md +26 -26
- package/claude/references/sd-simplysm14/apis/excel/cell.md +37 -29
- package/claude/references/sd-simplysm14/apis/excel/conditional-format.md +29 -15
- package/claude/references/sd-simplysm14/apis/excel/style.md +33 -27
- package/claude/references/sd-simplysm14/apis/excel/utils.md +29 -19
- package/claude/references/sd-simplysm14/apis/excel/workbook-worksheet.md +78 -55
- package/claude/references/sd-simplysm14/apis/excel/wrapper.md +42 -45
- 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 +6 -62
- package/claude/references/sd-simplysm14/apis/orm-common/db-context.md +149 -67
- package/claude/references/sd-simplysm14/apis/orm-common/expr.md +111 -99
- package/claude/references/sd-simplysm14/apis/orm-common/queryable.md +115 -72
- package/claude/references/sd-simplysm14/apis/orm-common/schema.md +134 -92
- package/claude/references/sd-simplysm14/apis/orm-common/types.md +67 -52
- package/claude/references/sd-simplysm14/apis/orm-node/README.md +63 -26
- package/claude/references/sd-simplysm14/apis/orm-node/db-conn.md +51 -40
- package/claude/references/sd-simplysm14/apis/sd-cli/README.md +10 -12
- 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 +90 -88
- package/claude/references/sd-simplysm14/apis/service-client/orm.md +37 -29
- package/claude/references/sd-simplysm14/apis/service-client/transport.md +45 -20
- package/claude/references/sd-simplysm14/apis/service-common/README.md +89 -40
- package/claude/references/sd-simplysm14/apis/service-common/app-structure.md +126 -34
- package/claude/references/sd-simplysm14/apis/service-common/protocol.md +109 -54
- package/claude/references/sd-simplysm14/apis/service-server/README.md +70 -66
- package/claude/references/sd-simplysm14/apis/service-server/service-authoring.md +47 -47
- package/claude/references/sd-simplysm14/apis/service-server/transport-internals.md +71 -34
- package/claude/references/sd-simplysm14/apis/service-server/v1-legacy.md +31 -32
- package/claude/references/sd-simplysm14/apis/storage/README.md +34 -28
- package/claude/references/sd-simplysm14/manuals/client-app-structure.md +142 -140
- package/claude/references/sd-simplysm14/manuals/client-orm.md +1 -1
- package/claude/references/sd-simplysm14/manuals/client-service.md +19 -7
- package/claude/references/sd-simplysm14/manuals/client-shared-data.md +2 -2
- package/claude/references/sd-simplysm14/manuals/client-system-log.md +11 -3
- package/claude/references/sd-simplysm14/manuals/data-log.md +0 -1
- package/claude/references/sd-simplysm14/manuals/orm.md +16 -0
- package/claude/rules/sd-design-rules.md +10 -0
- package/claude/skills/sd-docs/SKILL.md +58 -46
- package/claude/skills/sd-docs/references/{doc-rules.md → subagent-prompt.md} +103 -103
- package/claude/skills/sd-impl/SKILL.md +1 -1
- package/claude/skills/sd-spec/SKILL.md +858 -858
- package/claude/skills/sd-spec/references/example-spec.md +26 -36
- package/package.json +1 -1
- package/claude/references/sd-simplysm14/apis/core-common/json-transfer.md +0 -47
- 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/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
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ChangeDetectionStrategy,
|
|
3
|
-
Component,
|
|
4
|
-
ViewEncapsulation,
|
|
5
|
-
effect,
|
|
6
|
-
inject,
|
|
7
|
-
signal,
|
|
8
|
-
untracked,
|
|
9
|
-
} from "@angular/core";
|
|
10
|
-
import {
|
|
11
|
-
injectPermsSignal,
|
|
12
|
-
mark,
|
|
13
|
-
SdCrudListComponent,
|
|
14
|
-
SdSheetColumnDirective,
|
|
15
|
-
SdTextfieldComponent,
|
|
16
|
-
SdToastProvider,
|
|
17
|
-
} from "@simplysm/angular";
|
|
18
|
-
|
|
19
|
-
interface IOutboundItem {
|
|
20
|
-
id: number;
|
|
21
|
-
orderNo: string;
|
|
22
|
-
customerName: string;
|
|
23
|
-
itemName: string;
|
|
24
|
-
quantity: number;
|
|
25
|
-
shippedAt: string;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
interface IFilter {
|
|
29
|
-
searchText: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
@Component({
|
|
33
|
-
selector: "app-outbound-list",
|
|
34
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
35
|
-
encapsulation: ViewEncapsulation.None,
|
|
36
|
-
standalone: true,
|
|
37
|
-
imports: [SdCrudListComponent, SdSheetColumnDirective, SdTextfieldComponent],
|
|
38
|
-
template: `
|
|
39
|
-
<div class="flex-column fill">
|
|
40
|
-
<sd-crud-list
|
|
41
|
-
title="출고 내역 조회"
|
|
42
|
-
[(ready)]="ready"
|
|
43
|
-
[initialized]="initialized()"
|
|
44
|
-
[(busyCount)]="busyCount"
|
|
45
|
-
[items]="items()"
|
|
46
|
-
[(selectedKeys)]="selectedKeys"
|
|
47
|
-
[(page)]="page"
|
|
48
|
-
[totalPageCount]="pageLength()"
|
|
49
|
-
[(sorts)]="sortingDefs"
|
|
50
|
-
[trackByFn]="trackByFn"
|
|
51
|
-
[restricted]="!perms().includes('use')"
|
|
52
|
-
(filterSubmit)="onFilterSubmit()"
|
|
53
|
-
>
|
|
54
|
-
<ng-template #filterTpl>
|
|
55
|
-
<div class="form-box-inline">
|
|
56
|
-
<div>
|
|
57
|
-
<label>검색</label>
|
|
58
|
-
<sd-textfield [(value)]="filter().searchText" (valueChange)="mark(filter)" />
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
</ng-template>
|
|
62
|
-
|
|
63
|
-
<sd-sheet-column [key]="'orderNo'" [header]="'출고 번호'">
|
|
64
|
-
<ng-template [cell]="items()" let-item="item">
|
|
65
|
-
<div class="p-xs-sm">{{ item.orderNo }}</div>
|
|
66
|
-
</ng-template>
|
|
67
|
-
</sd-sheet-column>
|
|
68
|
-
|
|
69
|
-
<sd-sheet-column [key]="'customerName'" [header]="'거래처'">
|
|
70
|
-
<ng-template [cell]="items()" let-item="item">
|
|
71
|
-
<div class="p-xs-sm">{{ item.customerName }}</div>
|
|
72
|
-
</ng-template>
|
|
73
|
-
</sd-sheet-column>
|
|
74
|
-
|
|
75
|
-
<sd-sheet-column [key]="'itemName'" [header]="'품목'">
|
|
76
|
-
<ng-template [cell]="items()" let-item="item">
|
|
77
|
-
<div class="p-xs-sm">{{ item.itemName }}</div>
|
|
78
|
-
</ng-template>
|
|
79
|
-
</sd-sheet-column>
|
|
80
|
-
|
|
81
|
-
<sd-sheet-column [key]="'quantity'" [header]="'수량'">
|
|
82
|
-
<ng-template [cell]="items()" let-item="item">
|
|
83
|
-
<div class="p-xs-sm tx-right">{{ item.quantity }}</div>
|
|
84
|
-
</ng-template>
|
|
85
|
-
</sd-sheet-column>
|
|
86
|
-
</sd-crud-list>
|
|
87
|
-
|
|
88
|
-
@if (initialized() && items().length === 0) {
|
|
89
|
-
<div class="p-default tx-center tx-theme-gray-default">조회된 출고 내역이 없습니다.</div>
|
|
90
|
-
}
|
|
91
|
-
</div>
|
|
92
|
-
`,
|
|
93
|
-
})
|
|
94
|
-
export class OutboundListComponent {
|
|
95
|
-
private readonly _sdToast = inject(SdToastProvider);
|
|
96
|
-
|
|
97
|
-
perms = injectPermsSignal(["outbound"], ["use"]);
|
|
98
|
-
|
|
99
|
-
ready = signal(false);
|
|
100
|
-
initialized = signal(false);
|
|
101
|
-
busyCount = signal(0);
|
|
102
|
-
|
|
103
|
-
items = signal<IOutboundItem[]>([]);
|
|
104
|
-
selectedKeys = signal<number[]>([]);
|
|
105
|
-
page = signal(0);
|
|
106
|
-
pageLength = signal(0);
|
|
107
|
-
sortingDefs = signal<{ key: string; desc: boolean }[]>([]);
|
|
108
|
-
|
|
109
|
-
filter = signal<IFilter>({ searchText: "" });
|
|
110
|
-
lastFilter = signal<IFilter>({ searchText: "" });
|
|
111
|
-
|
|
112
|
-
trackByFn = (item: IOutboundItem) => item.id;
|
|
113
|
-
|
|
114
|
-
protected readonly mark = mark;
|
|
115
|
-
|
|
116
|
-
constructor() {
|
|
117
|
-
effect(() => {
|
|
118
|
-
if (!this.perms().includes("use") || !this.ready()) {
|
|
119
|
-
this.initialized.set(true);
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
this.lastFilter();
|
|
124
|
-
this.page();
|
|
125
|
-
this.sortingDefs();
|
|
126
|
-
|
|
127
|
-
void untracked(async () => {
|
|
128
|
-
this.busyCount.update((v) => v + 1);
|
|
129
|
-
await this._sdToast.try(async () => {
|
|
130
|
-
await this._refresh();
|
|
131
|
-
});
|
|
132
|
-
this.busyCount.update((v) => v - 1);
|
|
133
|
-
this.initialized.set(true);
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
onFilterSubmit(): void {
|
|
139
|
-
this.page.set(0);
|
|
140
|
-
this.lastFilter.set({ ...this.filter() });
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
doRefresh(): void {
|
|
144
|
-
if (!this.perms().includes("use")) return;
|
|
145
|
-
mark(this.lastFilter);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
private async _refresh(): Promise<void> {
|
|
149
|
-
}
|
|
150
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id": "case-001", "input": "/sd-demo .specs/inventory/spec.md §4.1 데모 만들어줘", "rubric": ["fixture 의 `packages/demo-client/src/screens/inventory/` 폴더 안에 화면 컴포넌트 파일이 새로 생성되었는가", "생성된 컴포넌트 파일이 Angular @Component 데코레이터 + selector 를 가지는가", "생성된 컴포넌트의 template 에 필터 영역·시트 영역·빈 상태 영역 마크업이 모두 등장하는가", "생성된 컴포넌트의 template 가 답습 화면(출고·입고 조회) 의 부위 마크업 구조(같은 컴포넌트·같은 클래스 패턴 사용)와 일치하는가", "생성된 파일 본문에 `// sd-demo:` 마커가 1회 이상 등장하는가", "events 에 `.claude/references/sd-simplysm14/` 폴더 안 파일 Read 또는 동등 명령 1회 이상 있는가"], "fixture": "inventory-list"}
|
|
File without changes
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id": "sum-add", "input": "/sd-dev sum 함수 추가해줘. a + b 반환.", "rubric": ["tree.json 에 sum 함수 구현 파일이 src/ 하위 (위치 자유) 에 존재하는가", "tree.json 에 sum 함수 테스트 파일 (위치 자유) 이 존재하는가", "events 에 테스트 러너 실행 흔적 (Bash 의 node --test 또는 동등 명령) 이 1회 이상 있는가", "구현 파일 내용에 sum 함수 정의 및 export 가 포함되는가", "테스트 파일 내용에 sum 호출 + 결과 검증 assertion 이 1개 이상 있는가"], "fixture": "minimal-ts-pkg"}
|
|
@@ -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. 본문 외 결정사항
|