@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.
Files changed (135) hide show
  1. package/claude/references/sd-simplysm14/README.md +16 -17
  2. package/claude/references/sd-simplysm14/apis/angular/README.md +39 -43
  3. package/claude/references/sd-simplysm14/apis/angular/controls.md +174 -80
  4. package/claude/references/sd-simplysm14/apis/angular/crud.md +41 -50
  5. package/claude/references/sd-simplysm14/apis/angular/directives.md +60 -26
  6. package/claude/references/sd-simplysm14/apis/angular/features.md +109 -37
  7. package/claude/references/sd-simplysm14/apis/angular/infra.md +61 -44
  8. package/claude/references/sd-simplysm14/apis/angular/layout.md +39 -31
  9. package/claude/references/sd-simplysm14/apis/angular/overlay.md +73 -85
  10. package/claude/references/sd-simplysm14/apis/angular/routing-appstructure.md +54 -39
  11. package/claude/references/sd-simplysm14/apis/angular/selection-managers.md +55 -30
  12. package/claude/references/sd-simplysm14/apis/angular/shared-data.md +71 -67
  13. package/claude/references/sd-simplysm14/apis/angular/sheet.md +82 -72
  14. package/claude/references/sd-simplysm14/apis/capacitor-plugin-auto-update/README.md +35 -36
  15. package/claude/references/sd-simplysm14/apis/capacitor-plugin-file-system/README.md +71 -43
  16. package/claude/references/sd-simplysm14/apis/capacitor-plugin-intent/README.md +38 -30
  17. package/claude/references/sd-simplysm14/apis/capacitor-plugin-usb-storage/README.md +45 -50
  18. package/claude/references/sd-simplysm14/apis/core-browser/README.md +42 -55
  19. package/claude/references/sd-simplysm14/apis/core-browser/dom-element.md +62 -0
  20. package/claude/references/sd-simplysm14/apis/core-browser/indexed-db.md +39 -38
  21. package/claude/references/sd-simplysm14/apis/core-common/README.md +95 -103
  22. package/claude/references/sd-simplysm14/apis/core-common/array-ext.md +59 -54
  23. package/claude/references/sd-simplysm14/apis/core-common/async-runtime.md +86 -0
  24. package/claude/references/sd-simplysm14/apis/core-common/datetime.md +57 -66
  25. package/claude/references/sd-simplysm14/apis/core-common/errors.md +86 -0
  26. package/claude/references/sd-simplysm14/apis/core-common/obj.md +60 -42
  27. package/claude/references/sd-simplysm14/apis/core-common/serialization.md +55 -0
  28. package/claude/references/sd-simplysm14/apis/core-node/README.md +10 -8
  29. package/claude/references/sd-simplysm14/apis/core-node/consola.md +29 -32
  30. package/claude/references/sd-simplysm14/apis/core-node/cpx.md +34 -22
  31. package/claude/references/sd-simplysm14/apis/core-node/fs-watcher.md +29 -25
  32. package/claude/references/sd-simplysm14/apis/core-node/fsx.md +40 -53
  33. package/claude/references/sd-simplysm14/apis/core-node/pathx.md +22 -29
  34. package/claude/references/sd-simplysm14/apis/core-node/worker.md +31 -31
  35. package/claude/references/sd-simplysm14/apis/excel/README.md +26 -26
  36. package/claude/references/sd-simplysm14/apis/excel/cell.md +37 -29
  37. package/claude/references/sd-simplysm14/apis/excel/conditional-format.md +29 -15
  38. package/claude/references/sd-simplysm14/apis/excel/style.md +33 -27
  39. package/claude/references/sd-simplysm14/apis/excel/utils.md +29 -19
  40. package/claude/references/sd-simplysm14/apis/excel/workbook-worksheet.md +78 -55
  41. package/claude/references/sd-simplysm14/apis/excel/wrapper.md +42 -45
  42. package/claude/references/sd-simplysm14/apis/lint/README.md +27 -21
  43. package/claude/references/sd-simplysm14/apis/lint/rules.md +89 -49
  44. package/claude/references/sd-simplysm14/apis/orm-common/README.md +6 -62
  45. package/claude/references/sd-simplysm14/apis/orm-common/db-context.md +149 -67
  46. package/claude/references/sd-simplysm14/apis/orm-common/expr.md +111 -99
  47. package/claude/references/sd-simplysm14/apis/orm-common/queryable.md +115 -72
  48. package/claude/references/sd-simplysm14/apis/orm-common/schema.md +134 -92
  49. package/claude/references/sd-simplysm14/apis/orm-common/types.md +67 -52
  50. package/claude/references/sd-simplysm14/apis/orm-node/README.md +63 -26
  51. package/claude/references/sd-simplysm14/apis/orm-node/db-conn.md +51 -40
  52. package/claude/references/sd-simplysm14/apis/sd-cli/README.md +10 -12
  53. package/claude/references/sd-simplysm14/apis/sd-cli/SdTsCompiler.md +92 -45
  54. package/claude/references/sd-simplysm14/apis/sd-cli/sd-config-types.md +226 -108
  55. package/claude/references/sd-simplysm14/apis/service-client/README.md +90 -88
  56. package/claude/references/sd-simplysm14/apis/service-client/orm.md +37 -29
  57. package/claude/references/sd-simplysm14/apis/service-client/transport.md +45 -20
  58. package/claude/references/sd-simplysm14/apis/service-common/README.md +89 -40
  59. package/claude/references/sd-simplysm14/apis/service-common/app-structure.md +126 -34
  60. package/claude/references/sd-simplysm14/apis/service-common/protocol.md +109 -54
  61. package/claude/references/sd-simplysm14/apis/service-server/README.md +70 -66
  62. package/claude/references/sd-simplysm14/apis/service-server/service-authoring.md +47 -47
  63. package/claude/references/sd-simplysm14/apis/service-server/transport-internals.md +71 -34
  64. package/claude/references/sd-simplysm14/apis/service-server/v1-legacy.md +31 -32
  65. package/claude/references/sd-simplysm14/apis/storage/README.md +34 -28
  66. package/claude/references/sd-simplysm14/manuals/client-app-structure.md +142 -140
  67. package/claude/references/sd-simplysm14/manuals/client-orm.md +1 -1
  68. package/claude/references/sd-simplysm14/manuals/client-service.md +19 -7
  69. package/claude/references/sd-simplysm14/manuals/client-shared-data.md +2 -2
  70. package/claude/references/sd-simplysm14/manuals/client-system-log.md +11 -3
  71. package/claude/references/sd-simplysm14/manuals/data-log.md +0 -1
  72. package/claude/references/sd-simplysm14/manuals/orm.md +16 -0
  73. package/claude/rules/sd-design-rules.md +10 -0
  74. package/claude/skills/sd-docs/SKILL.md +58 -46
  75. package/claude/skills/sd-docs/references/{doc-rules.md → subagent-prompt.md} +103 -103
  76. package/claude/skills/sd-impl/SKILL.md +1 -1
  77. package/claude/skills/sd-spec/SKILL.md +858 -858
  78. package/claude/skills/sd-spec/references/example-spec.md +26 -36
  79. package/package.json +1 -1
  80. package/claude/references/sd-simplysm14/apis/core-common/json-transfer.md +0 -47
  81. package/claude/references/sd-simplysm14/apis/orm-common/query-builder.md +0 -29
  82. package/claude/skills/sd-demo/evals/fixtures/inventory-list/.specs/inventory/spec.md +0 -99
  83. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/package.json +0 -12
  84. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/index.ts +0 -3
  85. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inbound/inbound.list.ts +0 -150
  86. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inventory/inventory-master.list.ts +0 -143
  87. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/outbound/outbound.list.ts +0 -150
  88. package/claude/skills/sd-demo/evals/fixtures/inventory-list/pnpm-workspace.yaml +0 -2
  89. package/claude/skills/sd-demo/evals/fixtures/inventory-list/sd.config.ts +0 -12
  90. package/claude/skills/sd-demo/evals/golden.jsonl +0 -1
  91. package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/package.json +0 -8
  92. package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/src/.gitkeep +0 -0
  93. package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/tests/.gitkeep +0 -0
  94. package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/tsconfig.json +0 -10
  95. package/claude/skills/sd-dev/evals/golden.jsonl +0 -1
  96. package/claude/skills/sd-docs/evals/fixtures/new-write/.claude/references/sd-simplysm14/README.md +0 -7
  97. package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/package.json +0 -5
  98. package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/src/index.ts +0 -3
  99. package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/package.json +0 -6
  100. package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/src/index.ts +0 -1
  101. package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/package.json +0 -5
  102. package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/src/index.ts +0 -8
  103. package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/README.md +0 -7
  104. package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/apis/foo/README.md +0 -3
  105. package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/package.json +0 -5
  106. package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/src/index.ts +0 -3
  107. package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/package.json +0 -6
  108. package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/src/index.ts +0 -1
  109. package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/package.json +0 -5
  110. package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/src/index.ts +0 -8
  111. package/claude/skills/sd-docs/evals/golden.jsonl +0 -2
  112. package/claude/skills/sd-impl/evals/fixtures/case-a-new-screen/.specs/260513120000_warehouse/spec.md +0 -101
  113. package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/.specs/260513120000_warehouse/spec.md +0 -101
  114. package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/packages/app/src/screens/box-register/box-register.view.ts +0 -46
  115. package/claude/skills/sd-impl/evals/fixtures/case-c-new-cross/.specs/260513120000_warehouse/spec.md +0 -89
  116. package/claude/skills/sd-impl/evals/fixtures/case-d-spec-modify/.specs/260513120000_warehouse/spec.md +0 -101
  117. package/claude/skills/sd-impl/evals/golden.jsonl +0 -4
  118. package/claude/skills/sd-manual/evals/fixtures/new-manual/src/notification.ts +0 -25
  119. package/claude/skills/sd-manual/evals/fixtures/update-manual/.claude/references/sd-simplysm14/manuals/notification.md +0 -14
  120. package/claude/skills/sd-manual/evals/fixtures/update-manual/src/notification.ts +0 -37
  121. package/claude/skills/sd-manual/evals/golden.jsonl +0 -2
  122. package/claude/skills/sd-review/evals/fixtures/code-review/src/foo.ts +0 -7
  123. package/claude/skills/sd-review/evals/fixtures/doc-review/docs/foo.md +0 -4
  124. package/claude/skills/sd-review/evals/golden.jsonl +0 -2
  125. package/claude/skills/sd-skill/evals/fixtures/existing-skill/.claude/skills/todo-format/SKILL.md +0 -14
  126. package/claude/skills/sd-skill/evals/fixtures/new-skill/.gitkeep +0 -0
  127. package/claude/skills/sd-skill/evals/golden.jsonl +0 -2
  128. package/claude/skills/sd-spec/evals/fixtures/case-a-split//355/232/214/354/235/230/353/241/235.md +0 -20
  129. package/claude/skills/sd-spec/evals/fixtures/case-b-detail/.specs/260513120000_warehouse/spec.md +0 -95
  130. package/claude/skills/sd-spec/evals/golden.jsonl +0 -2
  131. package/claude/skills/sd-unpack/evals/fixtures/eml-with-text-attachment/meeting.eml +0 -21
  132. package/claude/skills/sd-unpack/evals/fixtures/simple-eml/meeting.eml +0 -10
  133. package/claude/skills/sd-unpack/evals/golden.jsonl +0 -2
  134. package/claude/skills/sd-use/evals/fixtures/empty/.gitkeep +0 -0
  135. 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,2 +0,0 @@
1
- packages:
2
- - packages/*
@@ -1,12 +0,0 @@
1
- import type { SdConfigFn } from "@simplysm/sd-cli";
2
-
3
- const config: SdConfigFn = () => ({
4
- packages: {
5
- "demo-client": {
6
- target: "client",
7
- server: 4000,
8
- },
9
- },
10
- });
11
-
12
- export default config;
@@ -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"}
@@ -1,8 +0,0 @@
1
- {
2
- "name": "minimal-ts-pkg",
3
- "version": "0.1.0",
4
- "type": "module",
5
- "scripts": {
6
- "test": "node --test tests/"
7
- }
8
- }
@@ -1,10 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "ESNext",
5
- "moduleResolution": "Bundler",
6
- "strict": true,
7
- "esModuleInterop": true
8
- },
9
- "include": ["src/**/*", "tests/**/*"]
10
- }
@@ -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,7 +0,0 @@
1
- # @simplysm/* v14 행동 지침
2
-
3
- (eval fixture — 미니 README)
4
-
5
- ## 패키지 인덱스
6
-
7
- (비어 있음 — sd-docs 가 채워야 함)
@@ -1,5 +0,0 @@
1
- {
2
- "name": "@simplysm/bar",
3
- "version": "14.0.0",
4
- "type": "module"
5
- }
@@ -1,3 +0,0 @@
1
- export function barSum(a: number, b: number): number {
2
- return a + b;
3
- }
@@ -1,6 +0,0 @@
1
- {
2
- "name": "@simplysm/baz",
3
- "version": "14.0.0",
4
- "type": "module",
5
- "private": true
6
- }
@@ -1 +0,0 @@
1
- export const BAZ_SECRET = "internal-only";
@@ -1,5 +0,0 @@
1
- {
2
- "name": "@simplysm/foo",
3
- "version": "14.0.0",
4
- "type": "module"
5
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Foo 패키지의 표준 인사 클래스.
3
- */
4
- export class FooGreeter {
5
- hello(name: string): string {
6
- return `hello, ${name}`;
7
- }
8
- }
@@ -1,7 +0,0 @@
1
- # @simplysm/* v14 행동 지침
2
-
3
- (eval fixture — 미니 README, 갱신 케이스)
4
-
5
- ## 패키지 인덱스
6
-
7
- - **foo** — OLD_INDEX_PLACEHOLDER_MUST_BE_REWRITTEN
@@ -1,3 +0,0 @@
1
- # @simplysm/foo
2
-
3
- OLD_FOO_DOC_PLACEHOLDER_MUST_BE_REWRITTEN
@@ -1,5 +0,0 @@
1
- {
2
- "name": "@simplysm/bar",
3
- "version": "14.0.0",
4
- "type": "module"
5
- }
@@ -1,3 +0,0 @@
1
- export function barSum(a: number, b: number): number {
2
- return a + b;
3
- }
@@ -1,6 +0,0 @@
1
- {
2
- "name": "@simplysm/baz",
3
- "version": "14.0.0",
4
- "type": "module",
5
- "private": true
6
- }
@@ -1 +0,0 @@
1
- export const BAZ_SECRET = "internal-only";
@@ -1,5 +0,0 @@
1
- {
2
- "name": "@simplysm/foo",
3
- "version": "14.0.0",
4
- "type": "module"
5
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Foo 패키지의 표준 인사 클래스.
3
- */
4
- export class FooGreeter {
5
- hello(name: string): string {
6
- return `hello, ${name}`;
7
- }
8
- }
@@ -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` 문자열인가?"]}
@@ -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
- }
@@ -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. 본문 외 결정사항