@simplysm/sd-claude 14.0.65 → 14.0.68
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-requirement-source-handling.md +64 -0
- package/claude/references/sd-simplysm14/README.md +44 -40
- package/claude/references/sd-simplysm14/apis/angular/README.md +95 -0
- package/claude/references/sd-simplysm14/apis/angular/app-structure.md +49 -0
- package/claude/references/sd-simplysm14/apis/angular/buttons.md +42 -0
- package/claude/references/sd-simplysm14/apis/angular/crud.md +35 -0
- package/claude/references/sd-simplysm14/apis/angular/forms.md +63 -0
- package/claude/references/sd-simplysm14/apis/angular/infrastructure.md +80 -0
- package/claude/references/sd-simplysm14/apis/angular/kanban.md +33 -0
- package/claude/references/sd-simplysm14/apis/angular/layout.md +41 -0
- package/claude/references/sd-simplysm14/apis/angular/modal.md +63 -0
- package/claude/references/sd-simplysm14/apis/angular/routing.md +45 -0
- package/claude/references/sd-simplysm14/apis/angular/select-dropdown.md +35 -0
- package/claude/references/sd-simplysm14/apis/angular/selection-managers.md +50 -0
- package/claude/references/sd-simplysm14/apis/angular/shared-data.md +42 -0
- package/claude/references/sd-simplysm14/apis/angular/sheet.md +52 -0
- package/claude/references/sd-simplysm14/apis/angular/toast.md +46 -0
- package/claude/references/sd-simplysm14/apis/angular/visual.md +41 -0
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-auto-update/README.md +76 -0
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-file-system/README.md +83 -0
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-intent/README.md +80 -0
- package/claude/references/sd-simplysm14/apis/capacitor-plugin-usb-storage/README.md +39 -0
- package/claude/references/sd-simplysm14/apis/core-browser/README.md +112 -0
- package/claude/references/sd-simplysm14/apis/core-common/README.md +53 -0
- package/claude/references/sd-simplysm14/apis/core-common/extensions.md +123 -0
- package/claude/references/sd-simplysm14/apis/core-common/features.md +46 -0
- package/claude/references/sd-simplysm14/apis/core-common/types.md +114 -0
- package/claude/references/sd-simplysm14/apis/core-common/utils.md +158 -0
- package/claude/references/sd-simplysm14/apis/core-node/README.md +12 -0
- package/claude/references/sd-simplysm14/apis/core-node/consola.md +64 -0
- package/claude/references/sd-simplysm14/apis/core-node/cpx.md +52 -0
- package/claude/references/sd-simplysm14/apis/core-node/fs-watcher.md +53 -0
- package/claude/references/sd-simplysm14/apis/core-node/fsx.md +81 -0
- package/claude/references/sd-simplysm14/apis/core-node/pathx.md +55 -0
- package/claude/references/sd-simplysm14/apis/core-node/worker.md +111 -0
- package/claude/references/sd-simplysm14/apis/excel/README.md +81 -0
- package/claude/references/sd-simplysm14/apis/lint/README.md +80 -0
- package/claude/references/sd-simplysm14/apis/orm-common/README.md +33 -0
- package/claude/references/sd-simplysm14/apis/orm-common/db-context.md +77 -0
- package/claude/references/sd-simplysm14/apis/orm-common/executable.md +20 -0
- package/claude/references/sd-simplysm14/apis/orm-common/expr.md +92 -0
- package/claude/references/sd-simplysm14/apis/orm-common/queryable.md +98 -0
- package/claude/references/sd-simplysm14/apis/orm-common/schema-builders.md +128 -0
- package/claude/references/sd-simplysm14/apis/orm-node/README.md +59 -0
- package/claude/references/sd-simplysm14/apis/sd-claude/README.md +9 -0
- package/claude/references/sd-simplysm14/apis/sd-cli/README.md +50 -0
- package/claude/references/sd-simplysm14/apis/sd-cli/sd-config.md +155 -0
- package/claude/references/sd-simplysm14/apis/service-client/README.md +92 -0
- package/claude/references/sd-simplysm14/apis/service-common/README.md +29 -0
- package/claude/references/sd-simplysm14/apis/service-common/app-structure.md +63 -0
- package/claude/references/sd-simplysm14/apis/service-common/messages.md +56 -0
- package/claude/references/sd-simplysm14/apis/service-common/protocol.md +64 -0
- package/claude/references/sd-simplysm14/apis/service-common/service-types.md +43 -0
- package/claude/references/sd-simplysm14/apis/service-server/README.md +20 -0
- package/claude/references/sd-simplysm14/apis/service-server/auth.md +31 -0
- package/claude/references/sd-simplysm14/apis/service-server/builtin-services.md +47 -0
- package/claude/references/sd-simplysm14/apis/service-server/define-service.md +71 -0
- package/claude/references/sd-simplysm14/apis/service-server/internals.md +41 -0
- package/claude/references/sd-simplysm14/apis/service-server/server.md +66 -0
- package/claude/references/sd-simplysm14/apis/storage/README.md +69 -0
- package/claude/references/sd-simplysm14/{client-component.md → manuals/client-component.md} +134 -128
- package/claude/references/sd-simplysm14/manuals/client-crud.md +102 -0
- package/claude/references/sd-simplysm14/manuals/client-demo.md +128 -0
- package/claude/references/sd-simplysm14/manuals/client-rules.md +7 -0
- package/claude/references/sd-simplysm14/{client-setup.md → manuals/client-setup.md} +2 -2
- package/claude/references/sd-simplysm14/{client-tab.md → manuals/client-tab.md} +13 -11
- package/claude/references/sd-simplysm14/{orm-union.md → manuals/orm-union.md} +1 -1
- package/claude/references/sd-simplysm14/manuals/orm.md +75 -0
- package/claude/rules/sd-base-rules.md +191 -79
- package/claude/scripts/sd_paths.py +22 -0
- package/claude/sd-check-bash.py +19 -0
- package/claude/sd-statusline.py +7 -12
- package/claude/skills/sd-commit/SKILL.md +8 -3
- package/claude/skills/sd-demo/SKILL.md +103 -62
- package/claude/skills/sd-demo/evals/fixtures/empty/.specs/260513120000_warehouse/spec.md +45 -0
- package/claude/skills/sd-demo/evals/fixtures/with-existing-screen/.specs/260513120000_warehouse/spec.md +42 -0
- package/claude/skills/sd-demo/evals/fixtures/with-existing-screen/packages/app/src/screens/dashboard/dashboard.view.ts +33 -0
- package/claude/skills/sd-demo/evals/fixtures/with-master-screen/.specs/260513120000_warehouse/spec.md +45 -0
- package/claude/skills/sd-demo/evals/fixtures/with-master-screen/packages/app/src/screens/dashboard/dashboard.view.ts +33 -0
- package/claude/skills/sd-demo/evals/fixtures/with-modal/.specs/260513120000_warehouse/spec.md +75 -0
- package/claude/skills/sd-demo/evals/fixtures/with-modal/packages/app/src/screens/dashboard/dashboard.view.ts +33 -0
- package/claude/skills/sd-demo/evals/fixtures/with-screens/.specs/260513120000_warehouse/spec.md +45 -0
- package/claude/skills/sd-demo/evals/fixtures/with-screens/packages/app/src/screens/dashboard/dashboard.view.ts +33 -0
- package/claude/skills/sd-demo/evals/golden.jsonl +5 -3
- package/claude/skills/sd-dev/SKILL.md +33 -63
- package/claude/skills/sd-dev/evals/fixtures/case-add/package.json +13 -0
- package/claude/skills/sd-dev/evals/fixtures/case-add/src/index.ts +10 -0
- package/claude/skills/sd-dev/evals/fixtures/case-add/tests/index.test.ts +11 -0
- package/claude/skills/sd-dev/evals/fixtures/case-add/tsconfig.json +12 -0
- package/claude/skills/sd-dev/evals/fixtures/case-bug/package.json +13 -0
- package/claude/skills/sd-dev/evals/fixtures/case-bug/src/index.ts +10 -0
- package/claude/skills/sd-dev/evals/fixtures/case-bug/tests/index.test.ts +11 -0
- package/claude/skills/sd-dev/evals/fixtures/case-bug/tsconfig.json +12 -0
- package/claude/skills/sd-dev/evals/fixtures/case-modify/package.json +13 -0
- package/claude/skills/sd-dev/evals/fixtures/case-modify/src/index.ts +10 -0
- package/claude/skills/sd-dev/evals/fixtures/case-modify/tests/index.test.ts +11 -0
- package/claude/skills/sd-dev/evals/fixtures/case-modify/tsconfig.json +12 -0
- package/claude/skills/sd-dev/evals/golden.jsonl +3 -3
- package/claude/skills/sd-docs/SKILL.md +53 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/.claude/references/sd-simplysm14/README.md +7 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/package.json +5 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/bar/src/index.ts +3 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/package.json +6 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/baz/src/index.ts +1 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/package.json +5 -0
- package/claude/skills/sd-docs/evals/fixtures/new-write/packages/foo/src/index.ts +8 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/README.md +7 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/.claude/references/sd-simplysm14/apis/foo/README.md +3 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/package.json +5 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/bar/src/index.ts +3 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/package.json +6 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/baz/src/index.ts +1 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/package.json +5 -0
- package/claude/skills/sd-docs/evals/fixtures/update-mixed/packages/foo/src/index.ts +8 -0
- package/claude/skills/sd-docs/evals/golden.jsonl +2 -0
- package/claude/skills/sd-docs/references/subagent-prompt.md +100 -0
- package/claude/skills/sd-impl/SKILL.md +149 -46
- package/claude/skills/sd-impl/evals/fixtures/case-001-new-screen/spec.md +55 -0
- package/claude/skills/sd-impl/evals/fixtures/case-002-auto-process/spec.md +55 -0
- package/claude/skills/sd-impl/evals/fixtures/case-003-update-screen/packages/client/src/pages/book-list.ts +22 -0
- package/claude/skills/sd-impl/evals/fixtures/case-003-update-screen/spec.md +57 -0
- package/claude/skills/sd-impl/evals/fixtures/case-004-ambiguous-spec/spec.md +58 -0
- package/claude/skills/sd-impl/evals/fixtures/case-005-id-mismatch/spec.md +52 -0
- package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/client/src/pages//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/251/353/241/235.test.ts +10 -0
- package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/client/src/pages//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/251/353/241/235.ts +11 -0
- package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/server/src/data-access//352/261/260/353/236/230/354/262/230-/354/240/221/352/267/274.ts +12 -0
- package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/server/src/models//352/261/260/353/236/230/354/262/230.ts +8 -0
- package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/spec.md +77 -0
- package/claude/skills/sd-impl/evals/fixtures/case-new/.specs/260514120000_/352/261/260/353/236/230/354/262/230/spec.md +101 -0
- package/claude/skills/sd-impl/evals/fixtures/case-update/.specs/260514120000_/352/261/260/353/236/230/354/262/230/spec.md +101 -0
- package/claude/skills/sd-impl/evals/fixtures/case-update/src//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/250/353/215/270.txt +1 -0
- package/claude/skills/sd-impl/evals/fixtures/case-update/src//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/251/353/241/235.txt +1 -0
- package/claude/skills/sd-impl/evals/golden.jsonl +6 -3
- package/claude/skills/sd-impl/references/spec-cross-check.md +82 -0
- package/claude/skills/sd-skill/SKILL.md +4 -4
- package/claude/skills/sd-skill/evals/golden.jsonl +1 -2
- package/claude/skills/sd-skill/references/eval-authoring.md +31 -0
- package/claude/skills/sd-skill/references/eval-run.md +1 -1
- package/claude/skills/sd-skill/references/skill-authoring.md +8 -5
- package/claude/skills/sd-skill/scripts/run_eval.py +39 -60
- package/claude/skills/sd-spec/SKILL.md +163 -105
- package/claude/skills/sd-spec/references/example-spec.md +585 -0
- package/claude/skills/sd-spec/references/spec-authoring.md +287 -0
- package/claude/skills/sd-spec/references/spec-md-template.md +15 -93
- package/claude/skills/sd-unpack/SKILL.md +7 -1
- package/claude/skills/sd-unpack/scripts/handlers/_common.py +10 -0
- package/claude/skills/sd-unpack/scripts/handlers/eml_handler.py +5 -13
- package/claude/skills/sd-unpack/scripts/handlers/msg_handler.py +3 -12
- package/claude/skills/sd-unpack/scripts/handlers/office_com.py +23 -37
- package/claude/skills/sd-unpack/scripts/handlers/office_worker.py +1 -4
- package/claude/skills/sd-unpack/scripts/handlers/pdf_handler.py +4 -13
- package/claude/skills/sd-unpack/scripts/unpack.py +4 -4
- package/claude/skills/sd-use/SKILL.md +1 -0
- package/claude/skills/sd-wip/SKILL.md +38 -0
- package/claude/skills/sd-wip/evals/fixtures/with-artifact/projects/acct/_wip.md +3 -0
- package/claude/skills/sd-wip/evals/fixtures/with-artifact/projects/acct/spec.md +15 -0
- package/claude/skills/sd-wip/evals/fixtures/with-existing-wip/.wips/260101120000_acct.md +6 -0
- package/claude/skills/sd-wip/evals/fixtures/with-existing-wip-for-compact/.wips/260101120000_acct.md +14 -0
- package/claude/skills/sd-wip/evals/golden.jsonl +4 -0
- package/claude/skills/sd-wip/references/compact.md +79 -0
- package/package.json +1 -1
- package/scripts/sd-entries.mjs +2 -2
- package/claude/references/sd-simplysm14/orm.md +0 -11
- package/claude/skills/sd-demo/evals/fixtures/basic-single-req/.specs/260503143025/REQ-001-/354/236/205/352/263/240/354/247/200/354/213/234/354/204/234/352/270/264/352/270/211/355/221/234/354/213/234/spec.md +0 -27
- package/claude/skills/sd-demo/evals/fixtures/basic-single-req/.specs/260503143025/overview.md +0 -12
- package/claude/skills/sd-demo/evals/fixtures/basic-single-req/src/components/Button.tsx +0 -12
- package/claude/skills/sd-demo/evals/fixtures/basic-single-req/src/components/Input.tsx +0 -27
- package/claude/skills/sd-demo/evals/fixtures/mock-data-policy/.specs/260503143025/REQ-001-/352/261/260/353/236/230/354/262/230/353/252/251/353/241/235/355/231/224/353/251/264/spec.md +0 -25
- package/claude/skills/sd-demo/evals/fixtures/mock-data-policy/.specs/260503143025/overview.md +0 -12
- package/claude/skills/sd-demo/evals/fixtures/mock-data-policy/src/components/Input.tsx +0 -25
- package/claude/skills/sd-demo/evals/fixtures/mock-data-policy/src/pages/.gitkeep +0 -0
- package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/.specs/260503143025/REQ-001-RTP/354/236/205/353/240/245/355/231/224/353/251/264/spec.md +0 -19
- package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/.specs/260503143025/REQ-002-RTP/354/266/234/353/240/245/355/231/224/353/251/264/spec.md +0 -20
- package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/.specs/260503143025/overview.md +0 -16
- package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/src/components/Button.tsx +0 -6
- package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/src/components/Input.tsx +0 -15
- package/claude/skills/sd-demo/evals/fixtures/multi-req-domain/src/pages/.gitkeep +0 -0
- package/claude/skills/sd-demo/references/demo-md-template.md +0 -92
- package/claude/skills/sd-dev/evals/fixtures/multi-req-stop-after-spec/.docs/20260301_/352/263/240/352/260/235/354/202/254_/354/236/205/352/263/240/354/232/224/354/262/255.eml +0 -5
- package/claude/skills/sd-dev/evals/fixtures/multi-req-stop-after-spec/.docs/20260305_/352/263/240/352/260/235/354/202/254_/354/266/234/352/263/240/354/232/224/354/262/255.eml +0 -6
- package/claude/skills/sd-dev/evals/fixtures/multi-req-stop-after-spec/.docs/20260310_/352/263/240/352/260/235/354/202/254_/352/266/214/355/225/234.eml +0 -6
- package/claude/skills/sd-dev/evals/fixtures/single-req-auto-chain/src/lib/.gitkeep +0 -0
- package/claude/skills/sd-dev/evals/fixtures/start-from-plan/.specs/260503143025/REQ-001-/355/225/240/354/235/270/352/263/204/354/202/260/spec.md +0 -12
- package/claude/skills/sd-dev/evals/fixtures/start-from-plan/src/lib/.gitkeep +0 -0
- package/claude/skills/sd-impl/evals/fixtures/basic-single-r/.specs/260503143025/REQ-001-/354/236/205/352/263/240/354/247/200/354/213/234/354/204/234/352/270/264/352/270/211/355/221/234/354/213/234/plan.md +0 -28
- package/claude/skills/sd-impl/evals/fixtures/basic-single-r/.specs/260503143025/REQ-001-/354/236/205/352/263/240/354/247/200/354/213/234/354/204/234/352/270/264/352/270/211/355/221/234/354/213/234/spec.md +0 -14
- package/claude/skills/sd-impl/evals/fixtures/basic-single-r/src/components/Input.tsx +0 -6
- package/claude/skills/sd-impl/evals/fixtures/basic-single-r/src/pages/.gitkeep +0 -0
- package/claude/skills/sd-impl/evals/fixtures/multi-r/.specs/260503143025/REQ-001-/352/261/260/353/236/230/354/262/230/353/252/251/353/241/235/plan.md +0 -40
- package/claude/skills/sd-impl/evals/fixtures/multi-r/.specs/260503143025/REQ-001-/352/261/260/353/236/230/354/262/230/353/252/251/353/241/235/spec.md +0 -13
- package/claude/skills/sd-impl/evals/fixtures/multi-r/src/components/Input.tsx +0 -25
- package/claude/skills/sd-impl/evals/fixtures/multi-r/src/pages/.gitkeep +0 -0
- package/claude/skills/sd-impl/evals/fixtures/with-test-file/.specs/260503143025/REQ-001-/355/225/240/354/235/270/352/263/204/354/202/260/plan.md +0 -26
- package/claude/skills/sd-impl/evals/fixtures/with-test-file/.specs/260503143025/REQ-001-/355/225/240/354/235/270/352/263/204/354/202/260/spec.md +0 -12
- package/claude/skills/sd-impl/evals/fixtures/with-test-file/src/lib/.gitkeep +0 -0
- package/claude/skills/sd-impl/references/impl-md-template.md +0 -87
- package/claude/skills/sd-impl/references/modes-and-failure.md +0 -65
- package/claude/skills/sd-plan/SKILL.md +0 -130
- package/claude/skills/sd-plan/evals/fixtures/already-implemented/.specs/260503143025/REQ-001-/354/202/254/354/232/251/354/236/220/353/252/251/353/241/235/spec.md +0 -14
- package/claude/skills/sd-plan/evals/fixtures/already-implemented/src/api/user.ts +0 -13
- package/claude/skills/sd-plan/evals/fixtures/already-implemented/src/components/Input.tsx +0 -15
- package/claude/skills/sd-plan/evals/fixtures/already-implemented/src/pages/UserList.tsx +0 -29
- package/claude/skills/sd-plan/evals/fixtures/basic-greenfield/.specs/260503143025/REQ-001-/354/236/205/352/263/240/354/247/200/354/213/234/354/204/234/352/270/264/352/270/211/355/221/234/354/213/234/spec.md +0 -17
- package/claude/skills/sd-plan/evals/fixtures/basic-greenfield/src/components/Input.tsx +0 -6
- package/claude/skills/sd-plan/evals/fixtures/basic-greenfield/src/pages/.gitkeep +0 -0
- package/claude/skills/sd-plan/evals/fixtures/demo-built/.specs/260503143025/DEMO-001-/352/261/260/353/236/230/354/262/230/demo.md +0 -26
- package/claude/skills/sd-plan/evals/fixtures/demo-built/.specs/260503143025/REQ-001-/352/261/260/353/236/230/354/262/230/353/252/251/353/241/235/355/231/224/353/251/264/spec.md +0 -15
- package/claude/skills/sd-plan/evals/fixtures/demo-built/src/components/Input.tsx +0 -25
- package/claude/skills/sd-plan/evals/fixtures/demo-built/src/data/mock-customer.ts +0 -16
- package/claude/skills/sd-plan/evals/fixtures/demo-built/src/pages/CustomerList.tsx +0 -25
- package/claude/skills/sd-plan/evals/golden.jsonl +0 -3
- package/claude/skills/sd-plan/references/plan-md-template.md +0 -138
- package/claude/skills/sd-spec/evals/fixtures/bulk-multi-source/.docs/20260122_/352/263/240/352/260/235/354/202/254_/354/236/205/352/263/240/354/247/200/354/213/234/354/204/234/352/260/234/354/204/240/354/232/224/354/262/255.eml +0 -20
- package/claude/skills/sd-spec/evals/fixtures/bulk-multi-source/.docs/20260205_/352/263/240/352/260/235/354/202/254_/354/266/234/352/263/240/355/231/224/353/251/264/352/264/200/353/240/250.eml +0 -17
- package/claude/skills/sd-spec/evals/fixtures/bulk-multi-source/.docs/20260301_/352/263/240/352/260/235/354/202/254_/352/266/214/355/225/234/354/262/264/352/263/204.eml +0 -18
- package/claude/skills/sd-spec/evals/fixtures/conflict-detection/.docs/20260317_/352/263/240/352/260/235/354/202/254_/352/270/264/352/270/211/354/262/230/353/246/254/353/260/251/354/271/250.eml +0 -17
- package/claude/skills/sd-spec/evals/fixtures/conflict-detection/.docs//355/232/214/354/235/230/353/214/200/353/263/270_20260320.txt +0 -13
- package/claude/skills/sd-spec/evals/fixtures/direct-simple/.gitkeep +0 -0
- package/claude/skills/sd-spec/evals/fixtures/spec-md-input/.specs/260101120000/REQ-001-test/spec.md +0 -19
- package/claude/skills/sd-spec/evals/fixtures/spec-md-input/.specs/260101120000/overview.md +0 -18
- package/claude/skills/sd-spec/evals/golden.jsonl +0 -4
- package/claude/skills/sd-spec/references/overview-md-template.md +0 -89
- package/claude/skills/sd-spec/references/raw-input-handling.md +0 -96
- package/claude/skills/sd-verify/SKILL.md +0 -96
- package/claude/skills/sd-verify/evals/fixtures/all-satisfied/.specs/260503143025/REQ-001-/355/225/240/354/235/270/352/263/204/354/202/260/impl.md +0 -20
- package/claude/skills/sd-verify/evals/fixtures/all-satisfied/.specs/260503143025/REQ-001-/355/225/240/354/235/270/352/263/204/354/202/260/plan.md +0 -14
- package/claude/skills/sd-verify/evals/fixtures/all-satisfied/.specs/260503143025/REQ-001-/355/225/240/354/235/270/352/263/204/354/202/260/spec.md +0 -12
- package/claude/skills/sd-verify/evals/fixtures/all-satisfied/src/lib/discount.test.ts +0 -11
- package/claude/skills/sd-verify/evals/fixtures/all-satisfied/src/lib/discount.ts +0 -7
- package/claude/skills/sd-verify/evals/fixtures/partial-mismatch/.specs/260503143025/REQ-001-/354/202/254/354/232/251/354/236/220/353/252/251/353/241/235/impl.md +0 -21
- package/claude/skills/sd-verify/evals/fixtures/partial-mismatch/.specs/260503143025/REQ-001-/354/202/254/354/232/251/354/236/220/353/252/251/353/241/235/plan.md +0 -21
- package/claude/skills/sd-verify/evals/fixtures/partial-mismatch/.specs/260503143025/REQ-001-/354/202/254/354/232/251/354/236/220/353/252/251/353/241/235/spec.md +0 -12
- package/claude/skills/sd-verify/evals/fixtures/partial-mismatch/src/pages/UserList.tsx +0 -19
- package/claude/skills/sd-verify/evals/fixtures/tdd-only/.specs/260503143025/REQ-001-/352/270/210/354/225/241/352/262/200/354/246/235/impl.md +0 -19
- package/claude/skills/sd-verify/evals/fixtures/tdd-only/.specs/260503143025/REQ-001-/352/270/210/354/225/241/352/262/200/354/246/235/plan.md +0 -14
- package/claude/skills/sd-verify/evals/fixtures/tdd-only/.specs/260503143025/REQ-001-/352/270/210/354/225/241/352/262/200/354/246/235/spec.md +0 -12
- package/claude/skills/sd-verify/evals/fixtures/tdd-only/src/lib/validate-amount.test.ts +0 -10
- package/claude/skills/sd-verify/evals/fixtures/tdd-only/src/lib/validate-amount.ts +0 -7
- package/claude/skills/sd-verify/evals/golden.jsonl +0 -3
- package/claude/skills/sd-verify/references/verify-md-template.md +0 -99
- /package/claude/skills/{sd-demo/evals/fixtures/basic-single-req/src/pages → sd-wip/evals/fixtures/empty}/.gitkeep +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# 도서관 시스템 spec
|
|
2
|
+
|
|
3
|
+
## §1 개요
|
|
4
|
+
|
|
5
|
+
도서관 자동 처리 - 대여 만료 임박 알림 발송.
|
|
6
|
+
|
|
7
|
+
## §5 자동 처리
|
|
8
|
+
|
|
9
|
+
| ID | 이름 | 트리거 |
|
|
10
|
+
| ----- | -------------- | ------------ |
|
|
11
|
+
| §5.1 | 대여 만료 알림 | 매일 00:00 |
|
|
12
|
+
|
|
13
|
+
### §5.1 대여 만료 알림 [확정: 2026-05-01]
|
|
14
|
+
|
|
15
|
+
**트리거**: 매일 00:00 (cron)
|
|
16
|
+
**관련 섹션**: §7.1 대여, §7.2 알림 이력
|
|
17
|
+
|
|
18
|
+
**처리 내용**:
|
|
19
|
+
|
|
20
|
+
1. 반납 예정일이 오늘 이후 3일 이내(오늘 포함)인 미반납 대여 레코드를 모두 조회.
|
|
21
|
+
2. 각 레코드의 사용자에게 이메일로 알림 발송.
|
|
22
|
+
3. 알림 발송 결과를 §7.2 알림 이력에 저장.
|
|
23
|
+
|
|
24
|
+
**알림 내용**:
|
|
25
|
+
|
|
26
|
+
- 제목: `도서 반납 예정 알림`
|
|
27
|
+
- 본문: `대여하신 도서 [도서명] 의 반납 예정일은 [반납예정일] 입니다.` (`[도서명]`·`[반납예정일]` 치환)
|
|
28
|
+
|
|
29
|
+
**중복 발송 방지**:
|
|
30
|
+
|
|
31
|
+
- 같은 대여 레코드에 대해 같은 날짜에 알림이 이미 발송됐으면 (§7.2 에서 매칭) 재발송하지 않음.
|
|
32
|
+
|
|
33
|
+
## §7 도메인 모델
|
|
34
|
+
|
|
35
|
+
### §7.1 대여 [확정: 2026-05-01]
|
|
36
|
+
|
|
37
|
+
| 필드 | 타입 | 제약 | 기본값 |
|
|
38
|
+
| ----------- | ------------- | ------------------------------------- | ----------------- |
|
|
39
|
+
| id | string (UUID) | PK | 자동 생성 |
|
|
40
|
+
| bookId | string (UUID) | NOT NULL, FK→Book.id | - |
|
|
41
|
+
| userId | string (UUID) | NOT NULL, FK→User.id | - |
|
|
42
|
+
| borrowedAt | datetime | NOT NULL | 현재 시각 |
|
|
43
|
+
| dueAt | datetime | NOT NULL | borrowedAt + 14일 |
|
|
44
|
+
| returnedAt | datetime | nullable | NULL |
|
|
45
|
+
|
|
46
|
+
### §7.2 알림 이력 [확정: 2026-05-01]
|
|
47
|
+
|
|
48
|
+
| 필드 | 타입 | 제약 | 기본값 |
|
|
49
|
+
| ------ | ------------- | ----------------------------------- | ------------ |
|
|
50
|
+
| id | string (UUID) | PK | 자동 생성 |
|
|
51
|
+
| userId | string (UUID) | NOT NULL, FK→User.id | - |
|
|
52
|
+
| rentalId | string (UUID) | NOT NULL, FK→Rental.id | - |
|
|
53
|
+
| type | enum | `RENTAL_DUE_REMINDER` | - |
|
|
54
|
+
| sentAt | datetime | NOT NULL | 현재 시각 |
|
|
55
|
+
| payload | json | - | `{}` |
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// 기존 구현 - 카테고리 필드 없음 상태
|
|
2
|
+
export interface Book {
|
|
3
|
+
id: string;
|
|
4
|
+
title: string;
|
|
5
|
+
author: string;
|
|
6
|
+
publishedAt: Date;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export async function loadBooks(): Promise<Book[]> {
|
|
10
|
+
// 출판일 내림차순 로드
|
|
11
|
+
throw new Error("stub - 테스트 환경 전용");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function searchBooks(keyword: string, books: Book[]): Book[] {
|
|
15
|
+
// 제목·저자 부분일치 (대소문자 무시)
|
|
16
|
+
const lower = keyword.toLowerCase();
|
|
17
|
+
return books.filter(
|
|
18
|
+
(b) =>
|
|
19
|
+
b.title.toLowerCase().includes(lower) ||
|
|
20
|
+
b.author.toLowerCase().includes(lower)
|
|
21
|
+
);
|
|
22
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# 도서 관리 시스템 spec
|
|
2
|
+
|
|
3
|
+
## §1 개요
|
|
4
|
+
|
|
5
|
+
도서관 내부 시스템. 사서가 도서를 등록·조회.
|
|
6
|
+
|
|
7
|
+
## §4 화면
|
|
8
|
+
|
|
9
|
+
| ID | 이름 | Actor | 장치 |
|
|
10
|
+
| ----- | -------- | ----- | ---- |
|
|
11
|
+
| §4.1 | 도서 목록 | 사서 | PC |
|
|
12
|
+
|
|
13
|
+
### §4.1 도서 목록 [확정: 2026-05-15]
|
|
14
|
+
|
|
15
|
+
**Actor**: 사서
|
|
16
|
+
**관련 섹션**: §7.1 도서
|
|
17
|
+
**장치**: PC 웹
|
|
18
|
+
|
|
19
|
+
**기능 개요**:
|
|
20
|
+
- 등록된 도서 전체 목록 표시.
|
|
21
|
+
- 제목·저자·**카테고리**로 부분일치 검색 (대소문자 무시).
|
|
22
|
+
|
|
23
|
+
**와이어프레임**:
|
|
24
|
+
```
|
|
25
|
+
[검색창: 제목/저자/카테고리] [등록]
|
|
26
|
+
+----------+----------+-----------+-----------+
|
|
27
|
+
| 제목 | 저자 | 카테고리 | 출판일 |
|
|
28
|
+
+----------+----------+-----------+-----------+
|
|
29
|
+
| ... | ... | ... | ... |
|
|
30
|
+
+----------+----------+-----------+-----------+
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**항목표**:
|
|
34
|
+
|
|
35
|
+
| 항목 | 타입 | 비고 |
|
|
36
|
+
| -------- | ------ | --------------------------------- |
|
|
37
|
+
| 제목 | text | §7.1.title |
|
|
38
|
+
| 저자 | text | §7.1.author |
|
|
39
|
+
| 카테고리 | text | §7.1.category |
|
|
40
|
+
| 출판일 | date | §7.1.publishedAt, YYYY-MM-DD 형식 |
|
|
41
|
+
|
|
42
|
+
**동작**:
|
|
43
|
+
- 진입 시 도서 전체를 출판일 내림차순으로 로드.
|
|
44
|
+
- 검색창 입력 시 제목·저자·카테고리 부분일치 필터링 (대소문자 무시).
|
|
45
|
+
- "등록" 클릭 시 등록 화면 (본 spec 범위 외).
|
|
46
|
+
|
|
47
|
+
## §7 도메인 모델
|
|
48
|
+
|
|
49
|
+
### §7.1 도서 [확정: 2026-05-15]
|
|
50
|
+
|
|
51
|
+
| 필드 | 타입 | 제약 | 기본값 |
|
|
52
|
+
| ----------- | ------------- | --------------------- | --------- |
|
|
53
|
+
| id | string (UUID) | PK | 자동 생성 |
|
|
54
|
+
| title | string | NOT NULL, 최대 200자 | - |
|
|
55
|
+
| author | string | NOT NULL, 최대 100자 | - |
|
|
56
|
+
| category | string | NOT NULL, 최대 50자 | `기타` |
|
|
57
|
+
| publishedAt | date | NOT NULL | - |
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 도서 대여 spec
|
|
2
|
+
|
|
3
|
+
## §1 개요
|
|
4
|
+
|
|
5
|
+
도서관 시스템 - 도서 대여 처리.
|
|
6
|
+
|
|
7
|
+
## §4 화면
|
|
8
|
+
|
|
9
|
+
| ID | 이름 | Actor |
|
|
10
|
+
| ----- | -------------- | ----- |
|
|
11
|
+
| §4.1 | 도서 대여 처리 | 사서 |
|
|
12
|
+
|
|
13
|
+
### §4.1 도서 대여 처리 [확정: 2026-05-15]
|
|
14
|
+
|
|
15
|
+
**Actor**: 사서
|
|
16
|
+
**관련 섹션**: §7.1 도서, §7.2 대여
|
|
17
|
+
**장치**: PC 웹
|
|
18
|
+
|
|
19
|
+
**기능 개요**:
|
|
20
|
+
- 도서 검색 후 사용자 지정해 대여 등록.
|
|
21
|
+
|
|
22
|
+
**와이어프레임**:
|
|
23
|
+
```
|
|
24
|
+
[도서 검색] [선택]
|
|
25
|
+
[사용자 ID 입력] [대여]
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**항목표**:
|
|
29
|
+
|
|
30
|
+
| 항목 | 타입 | 비고 |
|
|
31
|
+
| ------------ | ------ | ---------------- |
|
|
32
|
+
| 도서 검색 | text | 제목·저자 검색 |
|
|
33
|
+
| 사용자 ID | text | - |
|
|
34
|
+
|
|
35
|
+
**동작**:
|
|
36
|
+
- 도서 검색 후 1건 선택.
|
|
37
|
+
- 사용자 ID 입력.
|
|
38
|
+
- "대여" 클릭 시 §7.2 대여 레코드 생성.
|
|
39
|
+
- **재고 부족 시 처리.**
|
|
40
|
+
|
|
41
|
+
## §7 도메인 모델
|
|
42
|
+
|
|
43
|
+
### §7.1 도서 [확정: 2026-05-15]
|
|
44
|
+
|
|
45
|
+
| 필드 | 타입 | 제약 |
|
|
46
|
+
| ---------- | ------------- | ------------- |
|
|
47
|
+
| id | string (UUID) | PK |
|
|
48
|
+
| title | string | NOT NULL |
|
|
49
|
+
| stockCount | int | NOT NULL, ≥ 0 |
|
|
50
|
+
|
|
51
|
+
### §7.2 대여 [확정: 2026-05-15]
|
|
52
|
+
|
|
53
|
+
| 필드 | 타입 | 제약 |
|
|
54
|
+
| ---------- | ------------- | --------------------- |
|
|
55
|
+
| id | string (UUID) | PK |
|
|
56
|
+
| bookId | string (UUID) | NOT NULL, FK→Book.id |
|
|
57
|
+
| userId | string (UUID) | NOT NULL |
|
|
58
|
+
| borrowedAt | datetime | NOT NULL |
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# 도서 관리 spec
|
|
2
|
+
|
|
3
|
+
## §1 개요
|
|
4
|
+
|
|
5
|
+
도서관 시스템 minimal.
|
|
6
|
+
|
|
7
|
+
## §4 화면
|
|
8
|
+
|
|
9
|
+
| ID | 이름 | Actor |
|
|
10
|
+
| ----- | -------- | ----- |
|
|
11
|
+
| §4.1 | 도서 목록 | 사서 |
|
|
12
|
+
| §4.2 | 도서 등록 | 사서 |
|
|
13
|
+
|
|
14
|
+
### §4.1 도서 목록 [확정: 2026-05-01]
|
|
15
|
+
|
|
16
|
+
**Actor**: 사서
|
|
17
|
+
|
|
18
|
+
**기능 개요**: 등록된 도서 전체 목록 표시.
|
|
19
|
+
|
|
20
|
+
**항목표**:
|
|
21
|
+
|
|
22
|
+
| 항목 | 타입 | 비고 |
|
|
23
|
+
| ------ | ---- | ----------- |
|
|
24
|
+
| 제목 | text | §7.1.title |
|
|
25
|
+
| 저자 | text | §7.1.author |
|
|
26
|
+
|
|
27
|
+
**동작**: 진입 시 전체 목록 로드.
|
|
28
|
+
|
|
29
|
+
### §4.2 도서 등록 [확정: 2026-05-01]
|
|
30
|
+
|
|
31
|
+
**Actor**: 사서
|
|
32
|
+
|
|
33
|
+
**기능 개요**: 신규 도서 등록 폼.
|
|
34
|
+
|
|
35
|
+
**항목표**:
|
|
36
|
+
|
|
37
|
+
| 항목 | 타입 | 비고 |
|
|
38
|
+
| ---- | ---- | ----------- |
|
|
39
|
+
| 제목 | text | §7.1.title |
|
|
40
|
+
| 저자 | text | §7.1.author |
|
|
41
|
+
|
|
42
|
+
**동작**: 입력 후 "저장" 클릭 시 §7.1 레코드 생성.
|
|
43
|
+
|
|
44
|
+
## §7 도메인 모델
|
|
45
|
+
|
|
46
|
+
### §7.1 도서 [확정: 2026-05-01]
|
|
47
|
+
|
|
48
|
+
| 필드 | 타입 | 제약 |
|
|
49
|
+
| ------ | ------------- | -------- |
|
|
50
|
+
| id | string (UUID) | PK |
|
|
51
|
+
| title | string | NOT NULL |
|
|
52
|
+
| author | string | NOT NULL |
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { CustomerListPage } from "./거래처-목록";
|
|
3
|
+
|
|
4
|
+
describe("거래처 목록", () => {
|
|
5
|
+
it("진입 시 거래처 전체를 로드", async () => {
|
|
6
|
+
const page = new CustomerListPage();
|
|
7
|
+
await page.onInit();
|
|
8
|
+
expect(page.customers).toBeDefined();
|
|
9
|
+
});
|
|
10
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// §4.1 거래처 목록 (이미 풀구현)
|
|
2
|
+
import type { Customer } from "../../../../server/src/models/거래처";
|
|
3
|
+
import { loadCustomers } from "../../../../server/src/data-access/거래처-접근";
|
|
4
|
+
|
|
5
|
+
export class CustomerListPage {
|
|
6
|
+
customers: Customer[] = [];
|
|
7
|
+
|
|
8
|
+
async onInit() {
|
|
9
|
+
this.customers = await loadCustomers();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Customer } from "../models/거래처";
|
|
2
|
+
|
|
3
|
+
export async function loadCustomers(): Promise<Customer[]> {
|
|
4
|
+
// 등록일 내림차순
|
|
5
|
+
return [];
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export async function insertCustomer(
|
|
9
|
+
input: Omit<Customer, "id" | "createdAt">,
|
|
10
|
+
): Promise<Customer> {
|
|
11
|
+
throw new Error("stub");
|
|
12
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# 거래처 관리 시스템 spec
|
|
2
|
+
|
|
3
|
+
## §1 개요
|
|
4
|
+
|
|
5
|
+
영업담당이 거래처를 등록·조회한다.
|
|
6
|
+
|
|
7
|
+
## §4 화면
|
|
8
|
+
|
|
9
|
+
| ID | 이름 | Actor | 장치 |
|
|
10
|
+
| ----- | ----------- | -------- | ---- |
|
|
11
|
+
| §4.1 | 거래처 목록 | 영업담당 | PC |
|
|
12
|
+
| §4.2 | 거래처 등록 | 영업담당 | PC |
|
|
13
|
+
|
|
14
|
+
### §4.1 거래처 목록 [확정: 2026-05-01, 구현: 2026-05-10]
|
|
15
|
+
|
|
16
|
+
**Actor**: 영업담당
|
|
17
|
+
**관련 섹션**: §7.1 거래처
|
|
18
|
+
**장치**: PC 웹
|
|
19
|
+
|
|
20
|
+
**기능 개요**:
|
|
21
|
+
|
|
22
|
+
- 등록된 거래처 전체 목록 표시.
|
|
23
|
+
|
|
24
|
+
**동작**:
|
|
25
|
+
|
|
26
|
+
- 진입 시 거래처 전체를 등록일 내림차순 로드.
|
|
27
|
+
|
|
28
|
+
### §4.2 거래처 등록 [확정: 2026-05-15]
|
|
29
|
+
|
|
30
|
+
**Actor**: 영업담당
|
|
31
|
+
**관련 섹션**: §7.1 거래처
|
|
32
|
+
**장치**: PC 웹
|
|
33
|
+
|
|
34
|
+
**기능 개요**:
|
|
35
|
+
|
|
36
|
+
- 신규 거래처 등록 폼.
|
|
37
|
+
|
|
38
|
+
**와이어프레임**:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
+----------------------------+
|
|
42
|
+
| 거래처명 (필수) |
|
|
43
|
+
| 사업자번호 |
|
|
44
|
+
| 담당자 |
|
|
45
|
+
| 연락처 |
|
|
46
|
+
| |
|
|
47
|
+
| [등록] [취소] |
|
|
48
|
+
+----------------------------+
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**항목표**:
|
|
52
|
+
|
|
53
|
+
| 항목 | 타입 | 비고 |
|
|
54
|
+
| ---------- | ---- | --------------------- |
|
|
55
|
+
| 거래처명 | text | §7.1.name, NOT NULL |
|
|
56
|
+
| 사업자번호 | text | §7.1.businessNumber |
|
|
57
|
+
| 담당자 | text | §7.1.manager |
|
|
58
|
+
| 연락처 | text | §7.1.contact |
|
|
59
|
+
|
|
60
|
+
**동작**:
|
|
61
|
+
|
|
62
|
+
- "등록" 클릭 시 §7.1 거래처 저장 (`createdAt` 자동 = 현재 시각).
|
|
63
|
+
- 거래처명 미입력 시 등록 차단.
|
|
64
|
+
- "취소" 클릭 시 입력 폐기 후 §4.1 거래처 목록으로 이동.
|
|
65
|
+
|
|
66
|
+
## §7 도메인 모델
|
|
67
|
+
|
|
68
|
+
### §7.1 거래처 [확정: 2026-05-01]
|
|
69
|
+
|
|
70
|
+
| 필드 | 타입 | 제약 | 기본값 |
|
|
71
|
+
| -------------- | ------------- | --------------------- | --------- |
|
|
72
|
+
| id | string (UUID) | PK | 자동 생성 |
|
|
73
|
+
| name | string | NOT NULL, 최대 100자 | - |
|
|
74
|
+
| businessNumber | string | 10자리 숫자 | - |
|
|
75
|
+
| manager | string | 최대 50자 | - |
|
|
76
|
+
| contact | string | 최대 30자 | - |
|
|
77
|
+
| createdAt | datetime | NOT NULL | 현재 시각 |
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# 거래처 관리 요구 분석서
|
|
2
|
+
|
|
3
|
+
## 1. 개요
|
|
4
|
+
|
|
5
|
+
### 1.1 핵심 목적 [확정: 2026-05-14]
|
|
6
|
+
|
|
7
|
+
거래처 정보 조회·검색.
|
|
8
|
+
|
|
9
|
+
### 1.2 주요 목표 [확정: 2026-05-14]
|
|
10
|
+
|
|
11
|
+
- 거래처 목록 조회·검색
|
|
12
|
+
|
|
13
|
+
### 1.3 최종 사용자/이해관계자 [확정: 2026-05-14]
|
|
14
|
+
|
|
15
|
+
- 영업 담당자: 거래처 정보를 조회하는 사람
|
|
16
|
+
|
|
17
|
+
### 1.4 환경/장치 [확정: 2026-05-14]
|
|
18
|
+
|
|
19
|
+
PC — Windows 11, Chrome 최신, 1920 x 1080
|
|
20
|
+
|
|
21
|
+
## 2. 업무 프로세스
|
|
22
|
+
|
|
23
|
+
### 2.1 거래처 조회 [확정: 2026-05-14]
|
|
24
|
+
|
|
25
|
+
영업 담당자가 거래처 목록을 검색·조회한다.
|
|
26
|
+
|
|
27
|
+
관련 섹션: [화면.거래처 목록]
|
|
28
|
+
|
|
29
|
+
## 3. 기타 요구사항
|
|
30
|
+
|
|
31
|
+
없음.
|
|
32
|
+
|
|
33
|
+
## 4. 화면
|
|
34
|
+
|
|
35
|
+
| § | 분류 | 화면 | 유형 | 장치 |
|
|
36
|
+
| --- | -------- | ----------- | ------ | ---- |
|
|
37
|
+
| 4.1 | 기준정보 | 거래처 목록 | 마스터 | PC |
|
|
38
|
+
|
|
39
|
+
### 4.1 거래처 목록 (PC) [확정: 2026-05-14]
|
|
40
|
+
|
|
41
|
+
Actor: 영업 담당자
|
|
42
|
+
관련 섹션: [프로세스.거래처 조회]
|
|
43
|
+
|
|
44
|
+
기능 개요:
|
|
45
|
+
|
|
46
|
+
- 거래처 목록 표시
|
|
47
|
+
- 거래처명·사업자번호로 검색
|
|
48
|
+
|
|
49
|
+
와이어프레임:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
┌──────────────────────────────────────────────────┐
|
|
53
|
+
│ 검색어: [_______________] [조회] │
|
|
54
|
+
├────┬───────────┬──────────────┬──────────────────┤
|
|
55
|
+
│ # │ 거래처명 │ 사업자번호 │ 연락처 │
|
|
56
|
+
├────┼───────────┼──────────────┼──────────────────┤
|
|
57
|
+
│ 1 │ ABC상사 │ 123-45-67890 │ 02-1234-5678 │
|
|
58
|
+
│ 2 │ XYZ유통 │ 234-56-78901 │ 02-2345-6789 │
|
|
59
|
+
└────┴───────────┴──────────────┴──────────────────┘
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
항목:
|
|
63
|
+
|
|
64
|
+
| 항목 | 타입 | 비고 |
|
|
65
|
+
| ---------- | ------ | ------------------ |
|
|
66
|
+
| 거래처명 | 문자열 | 필수 |
|
|
67
|
+
| 사업자번호 | 문자열 | 10자리 하이픈 포함 |
|
|
68
|
+
| 연락처 | 문자열 | 선택 |
|
|
69
|
+
|
|
70
|
+
동작:
|
|
71
|
+
|
|
72
|
+
- [조회] 클릭 → 검색어로 필터된 목록 갱신.
|
|
73
|
+
|
|
74
|
+
## 5. 자동 처리
|
|
75
|
+
|
|
76
|
+
없음.
|
|
77
|
+
|
|
78
|
+
## 6. 공통 정의
|
|
79
|
+
|
|
80
|
+
없음.
|
|
81
|
+
|
|
82
|
+
## 7. 도메인 모델
|
|
83
|
+
|
|
84
|
+
### 7.1 거래처 [확정: 2026-05-14]
|
|
85
|
+
|
|
86
|
+
- id: 식별자
|
|
87
|
+
- 거래처명: 문자열, 필수
|
|
88
|
+
- 사업자번호: 문자열, 10자리 하이픈 포함
|
|
89
|
+
- 연락처: 문자열, 선택
|
|
90
|
+
|
|
91
|
+
## 8. 외부 인터페이스
|
|
92
|
+
|
|
93
|
+
없음.
|
|
94
|
+
|
|
95
|
+
## 9. 본문 외 결정사항
|
|
96
|
+
|
|
97
|
+
없음.
|
|
98
|
+
|
|
99
|
+
## 10. 변경 이력
|
|
100
|
+
|
|
101
|
+
- 2026-05-14: 초안 작성
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# 거래처 관리 요구 분석서
|
|
2
|
+
|
|
3
|
+
## 1. 개요
|
|
4
|
+
|
|
5
|
+
### 1.1 핵심 목적 [확정: 2026-05-14]
|
|
6
|
+
|
|
7
|
+
거래처 정보 조회·검색.
|
|
8
|
+
|
|
9
|
+
### 1.2 주요 목표 [확정: 2026-05-14]
|
|
10
|
+
|
|
11
|
+
- 거래처 목록 조회·검색
|
|
12
|
+
|
|
13
|
+
### 1.3 최종 사용자/이해관계자 [확정: 2026-05-14]
|
|
14
|
+
|
|
15
|
+
- 영업 담당자: 거래처 정보를 조회하는 사람
|
|
16
|
+
|
|
17
|
+
### 1.4 환경/장치 [확정: 2026-05-14]
|
|
18
|
+
|
|
19
|
+
PC — Windows 11, Chrome 최신, 1920 x 1080
|
|
20
|
+
|
|
21
|
+
## 2. 업무 프로세스
|
|
22
|
+
|
|
23
|
+
### 2.1 거래처 조회 [확정: 2026-05-14]
|
|
24
|
+
|
|
25
|
+
영업 담당자가 거래처 목록을 검색·조회한다.
|
|
26
|
+
|
|
27
|
+
관련 섹션: [화면.거래처 목록]
|
|
28
|
+
|
|
29
|
+
## 3. 기타 요구사항
|
|
30
|
+
|
|
31
|
+
없음.
|
|
32
|
+
|
|
33
|
+
## 4. 화면
|
|
34
|
+
|
|
35
|
+
| § | 분류 | 화면 | 유형 | 장치 |
|
|
36
|
+
| --- | -------- | ----------- | ------ | ---- |
|
|
37
|
+
| 4.1 | 기준정보 | 거래처 목록 | 마스터 | PC |
|
|
38
|
+
|
|
39
|
+
### 4.1 거래처 목록 (PC) [확정: 2026-05-14]
|
|
40
|
+
|
|
41
|
+
Actor: 영업 담당자
|
|
42
|
+
관련 섹션: [프로세스.거래처 조회]
|
|
43
|
+
|
|
44
|
+
기능 개요:
|
|
45
|
+
|
|
46
|
+
- 거래처 목록 표시
|
|
47
|
+
- 거래처명·사업자번호로 검색
|
|
48
|
+
|
|
49
|
+
와이어프레임:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
┌──────────────────────────────────────────────────┐
|
|
53
|
+
│ 검색어: [_______________] [조회] │
|
|
54
|
+
├────┬───────────┬──────────────┬──────────────────┤
|
|
55
|
+
│ # │ 거래처명 │ 사업자번호 │ 연락처 │
|
|
56
|
+
├────┼───────────┼──────────────┼──────────────────┤
|
|
57
|
+
│ 1 │ ABC상사 │ 123-45-67890 │ 02-1234-5678 │
|
|
58
|
+
│ 2 │ XYZ유통 │ 234-56-78901 │ 02-2345-6789 │
|
|
59
|
+
└────┴───────────┴──────────────┴──────────────────┘
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
항목:
|
|
63
|
+
|
|
64
|
+
| 항목 | 타입 | 비고 |
|
|
65
|
+
| ---------- | ------ | ------------------ |
|
|
66
|
+
| 거래처명 | 문자열 | 필수 |
|
|
67
|
+
| 사업자번호 | 문자열 | 10자리 하이픈 포함 |
|
|
68
|
+
| 연락처 | 문자열 | 선택 |
|
|
69
|
+
|
|
70
|
+
동작:
|
|
71
|
+
|
|
72
|
+
- [조회] 클릭 → 검색어로 필터된 목록 갱신.
|
|
73
|
+
|
|
74
|
+
## 5. 자동 처리
|
|
75
|
+
|
|
76
|
+
없음.
|
|
77
|
+
|
|
78
|
+
## 6. 공통 정의
|
|
79
|
+
|
|
80
|
+
없음.
|
|
81
|
+
|
|
82
|
+
## 7. 도메인 모델
|
|
83
|
+
|
|
84
|
+
### 7.1 거래처 [확정: 2026-05-14]
|
|
85
|
+
|
|
86
|
+
- id: 식별자
|
|
87
|
+
- 거래처명: 문자열, 필수
|
|
88
|
+
- 사업자번호: 문자열, 10자리 하이픈 포함
|
|
89
|
+
- 연락처: 문자열, 선택
|
|
90
|
+
|
|
91
|
+
## 8. 외부 인터페이스
|
|
92
|
+
|
|
93
|
+
없음.
|
|
94
|
+
|
|
95
|
+
## 9. 본문 외 결정사항
|
|
96
|
+
|
|
97
|
+
없음.
|
|
98
|
+
|
|
99
|
+
## 10. 변경 이력
|
|
100
|
+
|
|
101
|
+
- 2026-05-14: 초안 작성
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
거래처 도메인 모델 placeholder (eval fixture 더미)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
거래처 목록 화면 placeholder (eval fixture 더미)
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
{"id": "
|
|
2
|
-
{"id": "
|
|
3
|
-
{"id": "
|
|
1
|
+
{"id": "case-001-new-screen", "input": "/sd-impl spec.md §4.1 (평가 환경: 4단계 분해 표·6단계 subagent 대조 호출·9단계 완료 보고만 수행. 5단계 작업 사이클·7단계 코드 정리·8단계 시연은 스킵. dev 서버·외부 프로세스 자체 실행 금지.)", "fixture": "case-001-new-screen", "rubric": ["assistant 응답에 spec 항목들을 분해한 표가 마크다운 표 형식으로 출력되었고 컬럼이 5개 이상이며 데이터 행이 1개 이상 채워졌는가", "assistant 응답에 4계층 어휘 (도메인 모델·데이터 접근·본체·테스트 또는 한국어 동의어 모델·DB접근·UI/화면·테스트 등) 중 최소 3종 이상이 등장하는가", "events 에 코드베이스 탐색 흔적 (Glob·Grep 호출 또는 Bash 의 ls/find/dir 등 동등 명령) 이 1회 이상 발생했는가", "events 에 Agent 도구 호출이 1회 이상 발생했는가 (sd-impl 6단계 subagent 위탁)", "subagent 호출 이후 assistant 응답에 spec 대조 결과 (차이 항목 분류 또는 '차이 없음' 류 통과 표기) 가 등장하는가", "최종 tree 에 spec.md 파일이 손실되지 않고 보존되는가"]}
|
|
2
|
+
{"id": "case-002-auto-process", "input": "/sd-impl spec.md §5.1 (평가 환경: 4단계 분해 표·6단계 subagent 대조 호출·9단계 완료 보고만 수행. 5단계 작업 사이클·7단계 코드 정리·8단계 시연은 스킵. dev 서버·외부 프로세스 자체 실행 금지.)", "fixture": "case-002-auto-process", "rubric": ["assistant 응답에 spec 항목들을 분해한 표가 마크다운 표 형식으로 출력되었고 컬럼이 5개 이상이며 데이터 행이 1개 이상 채워졌는가", "분해 표에 §5.1 의 핵심 요소 (트리거·처리 단계·알림 내용·중복 발송 방지) 중 최소 2종 이상이 항목으로 분해되어 들어갔는가", "assistant 응답에 4계층 어휘 (도메인 모델·데이터 접근·본체·테스트 또는 한국어 동의어 모델·DB접근·처리 로직·테스트 등) 중 최소 3종 이상이 등장하는가", "events 에 코드베이스 탐색 흔적 (Glob·Grep 호출 또는 Bash 의 ls/find/dir 등 동등 명령) 이 1회 이상 발생했는가", "events 에 Agent 도구 호출이 1회 이상 발생했는가 (sd-impl 6단계 subagent 위탁)"]}
|
|
3
|
+
{"id": "case-003-update-screen", "input": "/sd-impl spec.md §4.1 (평가 환경: 4단계 분해 표·6단계 subagent 대조 호출·9단계 완료 보고만 수행. 5단계 작업 사이클·7단계 코드 정리·8단계 시연은 스킵. dev 서버·외부 프로세스 자체 실행 금지.)", "fixture": "case-003-update-screen", "rubric": ["assistant 응답의 분해 표 '현재 코드 상태' 또는 동등 컬럼 (코드 상태·기존 코드 등) 이 비어있지 않고 기존 stub 의 존재가 인지된 사실 진술로 채워졌는가 (모두 '없음·미구현' 류로만 채워지면 FAIL)", "분해 표 또는 판정 결과에 카테고리(category) 필드가 현재 코드에 없거나 불일치하는 변경 대상으로 식별되었는가", "최종 tree 에 기존 stub 파일 packages/client/src/pages/book-list.ts 가 존재하는가 (보존 또는 갱신, 삭제 X)"]}
|
|
4
|
+
{"id": "case-004-ambiguous-spec", "input": "/sd-impl spec.md §4.1 (평가 환경: 8단계 시연 스킵, 9단계 완료 보고로 종료. dev 서버·외부 프로세스 자체 실행 금지. spec 모호/미정의 발견 시 임의 채움 절대 금지 — spec 본문에 [OPEN] 마커만 박고 보고 후 즉시 종료.)", "fixture": "case-004-ambiguous-spec", "rubric": ["최종 tree 의 spec.md 본문에 '재고' 또는 'stock' 관련 모호 항목에 [OPEN] 마커가 박혀있는가 (input 지시 준수)", "spec.md 본문에 '재고 부족 시 차단/에러/대기열/알림' 등의 구체 처리 방식이 자동답변으로 임의 추가되지 않았는가 (input 의 임의 채움 금지 지시 준수)"]}
|
|
5
|
+
{"id": "case-005-id-mismatch", "input": "/sd-impl spec.md §4.99 (평가 환경: 8단계 시연 스킵, 9단계 완료 보고로 종료. dev 서버·외부 프로세스 자체 실행 금지.)", "fixture": "case-005-id-mismatch", "rubric": ["assistant 응답에 spec.md 의 §4 화면 목록 후보가 사용자에게 제시되었는가 (표 또는 목록 형태)", "사용자에게 식별자 확정을 요청하는 질문 표현이 응답에 등장하는가"]}
|
|
6
|
+
{"id": "case-006-with-reference-units", "input": "/sd-impl spec.md §4.2 (평가 환경: 4단계 분해 표·6단계 subagent 대조 호출·9단계 완료 보고만 수행. 5단계 작업 사이클·7단계 코드 정리·8단계 시연은 스킵. dev 서버·외부 프로세스 자체 실행 금지.)", "fixture": "case-006-with-reference-units", "rubric": ["assistant 응답에 spec 항목들을 분해한 표가 마크다운 표 형식으로 출력되었고 컬럼이 5개 이상이며 데이터 행이 1개 이상 채워졌는가", "assistant 응답에 4계층 어휘 (도메인 모델·데이터 접근·본체·테스트 또는 한국어 동의어 모델·DB접근·UI/화면·테스트 등) 중 최소 3종 이상이 등장하는가", "assistant 응답 또는 events 에 §4.1 거래처 목록 또는 packages/client/src/pages/거래처 경로가 기준 단위 후보로 식별·언급되는 흐름이 등장하는가", "events 에 packages/client/src/pages/거래처/ 또는 packages/server/src/ 하위 풀구현 stub 파일 중 1개 이상에 대한 읽기 흔적 (Read 호출 또는 Bash 의 cat 등 동등 명령) 이 발생했는가", "최종 tree 에 spec.md 및 풀구현 stub 4종 (거래처-목록.ts, 거래처-목록.test.ts, 거래처.ts, 거래처-접근.ts) 이 손실 없이 보존되었는가"]}
|