@simplysm/sd-claude 14.0.65 → 14.0.66
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} +133 -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 +172 -79
- package/claude/sd-check-bash.py +5 -0
- package/claude/sd-statusline.py +7 -12
- package/claude/skills/sd-commit/SKILL.md +7 -3
- package/claude/skills/sd-demo/SKILL.md +81 -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 +125 -46
- 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 +2 -3
- package/claude/skills/sd-skill/SKILL.md +3 -3
- package/claude/skills/sd-skill/evals/golden.jsonl +0 -1
- package/claude/skills/sd-skill/references/eval-authoring.md +15 -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/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,585 @@
|
|
|
1
|
+
# WMS 요구 분석서 (예시)
|
|
2
|
+
|
|
3
|
+
> sd-spec 스킬이 산출하는 `spec.md` 의 풀 example.
|
|
4
|
+
> 가상의 WMS 시나리오 — 박스 단위 Location 관리 + ERP 단방향 통보.
|
|
5
|
+
> 시나리오 일자 = 2026-04-01 (사용자 확정 시작일 가정).
|
|
6
|
+
|
|
7
|
+
## 1. 개요
|
|
8
|
+
|
|
9
|
+
### 1.1 핵심 목적 [확정: 2026-04-01]
|
|
10
|
+
|
|
11
|
+
박스 단위로 Location 추적, 입출고 발생을 ERP 와 연동하는 WMS
|
|
12
|
+
|
|
13
|
+
### 1.2 주요 목표 [확정: 2026-04-01]
|
|
14
|
+
|
|
15
|
+
- 박스 입고 처리
|
|
16
|
+
- 박스 출고 처리
|
|
17
|
+
- 입출고에 의한 재고 확인
|
|
18
|
+
- 입출고 정보 ERP 동기화
|
|
19
|
+
|
|
20
|
+
### 1.3 최종 사용자/이해관계자 [확정: 2026-04-01]
|
|
21
|
+
|
|
22
|
+
- 창고 작업자: 현장에서 PDA를 들고 실제로 물건을 옮기는 작업을 하는 사람
|
|
23
|
+
- 창고 관리자: 사무실에서 PC로 전반적인 관리나 일상 업무를 하는 사람
|
|
24
|
+
|
|
25
|
+
### 1.4 환경/장치 [확정: 2026-04-01]
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
┌─────────┐ ┌─────────┐
|
|
29
|
+
│ PC │ │ PDA │
|
|
30
|
+
└────┬────┘ └────┬────┘
|
|
31
|
+
│ │
|
|
32
|
+
└───────────┬────────────┘
|
|
33
|
+
▼
|
|
34
|
+
┌───────────┐ 통보(단방향) ┌───────┐
|
|
35
|
+
│ WMS 서버 │ ───────────────► │ ERP │
|
|
36
|
+
└─────┬─────┘ └───────┘
|
|
37
|
+
│
|
|
38
|
+
┌───────┴────────┐
|
|
39
|
+
▼ ▼
|
|
40
|
+
┌───────────┐ ┌───────────────┐
|
|
41
|
+
│ A4 Printer│ │ Label Printer │
|
|
42
|
+
└───────────┘ └───────────────┘
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
- PC — 창고 관리자가 마스터·출고지시서·재고 화면에 사용
|
|
46
|
+
- OS: Windows 11
|
|
47
|
+
- Browser: Chrome 최신
|
|
48
|
+
- 해상도: 1920 x 1080
|
|
49
|
+
- PDA — 창고 작업자가 박스·Location 스캔에 사용
|
|
50
|
+
- Model: DS60S
|
|
51
|
+
- OS: Android 9
|
|
52
|
+
- 해상도: 360 x 568
|
|
53
|
+
- A4 Printer — 출고지시서 출력, Location 바코드 전체 출력(A4 다중)
|
|
54
|
+
- 스펙: 일반 시중의 모든 프린터
|
|
55
|
+
- Label Printer — Location 라벨 1매씩 출력
|
|
56
|
+
- Model: [OPEN]
|
|
57
|
+
|
|
58
|
+
## 2. 업무 프로세스
|
|
59
|
+
|
|
60
|
+
### 2.1 입고 [확정: 2026-04-01]
|
|
61
|
+
|
|
62
|
+
```mermaid
|
|
63
|
+
flowchart LR
|
|
64
|
+
S([물건 도착]) --> T1[창고 작업자: PDA 박스 바코드 스캔]
|
|
65
|
+
T1 --> T2[창고 작업자: PDA Location 바코드 스캔]
|
|
66
|
+
T2 --> E1([입고 등록 완료])
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
- 박스 1개는 단일 품목·단일 Location (1개 박스가 2개 Location 동시 존재 X)
|
|
70
|
+
- 입고 등록 = 박스의 첫 Location 적치 시점 (재입고/이동은 본 프로세스 X)
|
|
71
|
+
- 박스 바코드는 외부에서 이미 부착된 상태로 도착 (창고에서 발급 X)
|
|
72
|
+
- ERP 통보는 박스번호 기준 멱등 (재시도 가능)
|
|
73
|
+
|
|
74
|
+
관련 섹션: [화면.입고 스캔], [화면.품목 관리], [화면.Location 관리], [화면.재고 확인]
|
|
75
|
+
|
|
76
|
+
### 2.2 출고 [OPEN: 2026-04-01]
|
|
77
|
+
|
|
78
|
+
- 자료 위치: 회의록.md L40-50
|
|
79
|
+
- 대화 발췌: 사용자 — "출고 부분은 입고 끝나고 다음 단계에서 보자"
|
|
80
|
+
|
|
81
|
+
## 3. 기타 요구사항
|
|
82
|
+
|
|
83
|
+
### 3.1 과거 재고 조회 [확정: 2026-04-01]
|
|
84
|
+
|
|
85
|
+
특정 일자의 재고 상태를 조회할 수 있어야 함.
|
|
86
|
+
|
|
87
|
+
관련 섹션: [화면.재고 확인], [자동 처리.재고 스냅샷]
|
|
88
|
+
|
|
89
|
+
## 4. 화면
|
|
90
|
+
|
|
91
|
+
| § | 분류 | 화면 | 유형 | 장치 |
|
|
92
|
+
| --- | -------- | ------------------ | -------- | ---- |
|
|
93
|
+
| 4.1 | 기준정보 | 품목 관리 | 마스터 | PC |
|
|
94
|
+
| 4.2 | 기준정보 | 품목 등록·편집 | 마스터 | PC |
|
|
95
|
+
| 4.3 | 기준정보 | Location 관리 | 마스터 | PC |
|
|
96
|
+
| 4.4 | 기준정보 | Location 등록·편집 | 마스터 | PC |
|
|
97
|
+
| 4.5 | 입고 | 입고 스캔 | 트랜잭션 | PDA |
|
|
98
|
+
| 4.6 | 재고 | 재고 확인 | 조회 | PC |
|
|
99
|
+
|
|
100
|
+
### 4.1 품목 관리 (PC) [확정: 2026-04-01, 구현: 2026-04-05]
|
|
101
|
+
|
|
102
|
+
Actor: 창고 관리자
|
|
103
|
+
관련 섹션: [프로세스.입고]
|
|
104
|
+
|
|
105
|
+
기능 개요:
|
|
106
|
+
|
|
107
|
+
- 품목 마스터 CRUD (등록 / 편집 / 삭제·복구 / 엑셀 업·다운로드)
|
|
108
|
+
|
|
109
|
+
와이어프레임:
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
113
|
+
│ 품목 관리 │
|
|
114
|
+
│ [조회] <필터> │
|
|
115
|
+
├──────────────────────────────────────────────────────────────────────────┤
|
|
116
|
+
│ [등록] [선택 삭제] [선택 복구] [엑셀 업로드] [엑셀 다운로드] │
|
|
117
|
+
│ [화주 자료 업로드] │
|
|
118
|
+
│ ──────────────────────────────────────────────────────────────────────── │
|
|
119
|
+
│ <품목 목록 시트> │
|
|
120
|
+
└──────────────────────────────────────────────────────────────────────────┘
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
항목:
|
|
124
|
+
|
|
125
|
+
**필터**
|
|
126
|
+
|
|
127
|
+
| 항목 | 종류 | 필수 | 비고 |
|
|
128
|
+
| ---- | ------ | ---- | ------------------------ |
|
|
129
|
+
| 검색 | 텍스트 | X | 코드 또는 명칭 부분 일치 |
|
|
130
|
+
|
|
131
|
+
**품목 목록 시트** (코드까지 fixed)
|
|
132
|
+
|
|
133
|
+
| 컬럼 | 종류 | 필수 | 도메인 매핑 | 비고 |
|
|
134
|
+
| ----- | ---------------- | ---- | ---------------- | ----------------------------- |
|
|
135
|
+
| `[ ]` | 선택 체크박스 | - | - | |
|
|
136
|
+
| ID | 숫자 + 편집 버튼 | - | [모델.품목.ID] | 클릭 시 편집 모달 |
|
|
137
|
+
| 코드 | 문자 | - | [모델.품목.코드] | |
|
|
138
|
+
| 명칭 | 문자 | - | [모델.품목.명칭] | |
|
|
139
|
+
|
|
140
|
+
동작:
|
|
141
|
+
|
|
142
|
+
- `[조회]` 클릭: 검색 필터 조건으로 목록 갱신
|
|
143
|
+
- `[등록]` 클릭: [화면.품목 등록·편집] 을 빈 폼으로 모달 띄움
|
|
144
|
+
- ID 버튼 클릭: [화면.품목 등록·편집] 을 해당 행 데이터로 모달 띄움
|
|
145
|
+
- `[선택 삭제]` 클릭: 선택된 행들의 활성 여부 false 전환 (입출고 불가)
|
|
146
|
+
- `[선택 복구]` 클릭: 선택된 행들의 활성 여부 true 전환
|
|
147
|
+
- `[엑셀 업로드]` 클릭: 엑셀 파일 선택 → 코드 기준 일괄 등록/수정
|
|
148
|
+
- `[엑셀 다운로드]` 클릭: 현재 검색 필터 적용된 목록을 엑셀로 내보내기
|
|
149
|
+
- `[화주 자료 업로드]` 클릭: [공통 정의.화주 품목 자료] 파일 선택 → 아래 양식 매핑 적용 후 코드 기준 일괄 등록/수정
|
|
150
|
+
|
|
151
|
+
시각 규칙:
|
|
152
|
+
|
|
153
|
+
- 비활성 행: 전체 취소선 + 회색
|
|
154
|
+
|
|
155
|
+
양식 매핑:
|
|
156
|
+
|
|
157
|
+
**업로드 양식** ([공통 정의.화주 품목 자료] → [모델.품목])
|
|
158
|
+
|
|
159
|
+
| 파일 컬럼 | 도메인 모델 | 변환·규칙 |
|
|
160
|
+
| ------------------ | ---------------- | -------------------------------- |
|
|
161
|
+
| `화주코드` + `SEQ` | [모델.품목.코드] | `<화주코드>-<SEQ>` 형식으로 합성 |
|
|
162
|
+
| `품목명` | [모델.품목.명칭] | 1:1 |
|
|
163
|
+
|
|
164
|
+
### 4.2 품목 등록·편집 (PC) [확정: 2026-04-01, 구현: 2026-04-05]
|
|
165
|
+
|
|
166
|
+
Actor: 창고 관리자
|
|
167
|
+
관련 섹션: [프로세스.입고]
|
|
168
|
+
|
|
169
|
+
기능 개요:
|
|
170
|
+
|
|
171
|
+
- 품목 신규 등록 또는 기존 품목 편집 (호출하는 쪽에서 빈 폼/기존 데이터로 모달 띄움)
|
|
172
|
+
|
|
173
|
+
와이어프레임:
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
┌──────────────────────────────────────┐
|
|
177
|
+
│ 품목 등록·편집 │
|
|
178
|
+
├──────────────────────────────────────┤
|
|
179
|
+
│ <입력 폼> │
|
|
180
|
+
├──────────────────────────────────────┤
|
|
181
|
+
│ [저장] [취소] │
|
|
182
|
+
└──────────────────────────────────────┘
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
항목:
|
|
186
|
+
|
|
187
|
+
**입력 폼**
|
|
188
|
+
|
|
189
|
+
| 항목 | 종류 | 필수 | 도메인 매핑 | 비고 |
|
|
190
|
+
| ---- | ----------- | ---- | ----------------- | ---- |
|
|
191
|
+
| 코드 | 텍스트 입력 | O | [모델.품목.코드] | |
|
|
192
|
+
| 명칭 | 텍스트 입력 | O | [모델.품목.명칭] | |
|
|
193
|
+
|
|
194
|
+
동작:
|
|
195
|
+
|
|
196
|
+
- `[저장]` 클릭: 활성 품목 내 코드·명칭 유일성 검증 → 저장 → 모달 닫음
|
|
197
|
+
- `[취소]` 클릭: 변경 사항 폐기 → 모달 닫음
|
|
198
|
+
|
|
199
|
+
### 4.3 Location 관리 (PC) [확정: 2026-04-01]
|
|
200
|
+
|
|
201
|
+
Actor: 창고 관리자
|
|
202
|
+
관련 섹션: [프로세스.입고]
|
|
203
|
+
|
|
204
|
+
기능 개요:
|
|
205
|
+
|
|
206
|
+
- Location 마스터 CRUD (등록 / 편집 / 삭제·복구 / 엑셀 업·다운로드)
|
|
207
|
+
- 두 가지 바코드 출력: A4 다중 + 라벨프린터 1매씩
|
|
208
|
+
|
|
209
|
+
와이어프레임:
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
┌────────────────────────────────────────────────────────────────────────────────────┐
|
|
213
|
+
│ Location 관리 │
|
|
214
|
+
│ [조회] <필터> │
|
|
215
|
+
├────────────────────────────────────────────────────────────────────────────────────┤
|
|
216
|
+
│ [등록] [선택 삭제] [선택 복구] [엑셀 업로드] [엑셀 다운로드] [A4 출력] [선택 라벨 출력]│
|
|
217
|
+
│ ────────────────────────────────────────────────────────────────────────────────── │
|
|
218
|
+
│ <Location 목록 시트> │
|
|
219
|
+
└────────────────────────────────────────────────────────────────────────────────────┘
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
항목:
|
|
223
|
+
|
|
224
|
+
**필터**
|
|
225
|
+
|
|
226
|
+
| 항목 | 종류 | 필수 | 비고 |
|
|
227
|
+
| ---- | ------ | ---- | -------------- |
|
|
228
|
+
| 검색 | 텍스트 | X | 코드 부분 일치 |
|
|
229
|
+
|
|
230
|
+
**Location 목록 시트** (코드까지 fixed)
|
|
231
|
+
|
|
232
|
+
| 컬럼 | 종류 | 필수 | 도메인 매핑 | 비고 |
|
|
233
|
+
| ----- | ---------------- | ---- | -------------------- | ----------------------------- |
|
|
234
|
+
| `[ ]` | 선택 체크박스 | - | - | |
|
|
235
|
+
| ID | 숫자 + 편집 버튼 | - | [모델.Location.ID] | 클릭 시 편집 모달 |
|
|
236
|
+
| 코드 | 문자 | - | [모델.Location.코드] | |
|
|
237
|
+
|
|
238
|
+
동작:
|
|
239
|
+
|
|
240
|
+
- `[조회]` 클릭: 검색 필터 조건으로 목록 갱신
|
|
241
|
+
- `[등록]` 클릭: [화면.Location 등록·편집] 을 빈 폼으로 모달 띄움
|
|
242
|
+
- ID 버튼 클릭: [화면.Location 등록·편집] 을 해당 행 데이터로 모달 띄움
|
|
243
|
+
- `[선택 삭제]` 클릭: 선택된 행들의 활성 여부 false 전환
|
|
244
|
+
- `[선택 복구]` 클릭: 선택된 행들의 활성 여부 true 전환
|
|
245
|
+
- `[엑셀 업로드]` 클릭: 엑셀 파일 선택 → 코드 기준 일괄 등록/수정
|
|
246
|
+
- `[엑셀 다운로드]` 클릭: 현재 필터 적용된 목록을 엑셀로 다운로드
|
|
247
|
+
- `[A4 출력]` 클릭 (A4 다중):
|
|
248
|
+
- 절차:
|
|
249
|
+
1. 선택된 Location 목록을 A4 1매에 그리드로 배치
|
|
250
|
+
2. 각 칸에 [공통 정의.Location 라벨] 의 표시 항목을 인쇄
|
|
251
|
+
3. PDF 다운로드 또는 직접 인쇄
|
|
252
|
+
- [OPEN] A4 1매당 그리드 행/열
|
|
253
|
+
- `[선택 라벨 출력]` 클릭 (라벨프린터):
|
|
254
|
+
- 절차:
|
|
255
|
+
1. 선택된 Location 을 [공통 정의.Location 라벨] 규격으로 라벨프린터 1매씩 출력
|
|
256
|
+
2. 다중 선택 시 선택 수만큼 연속 출력
|
|
257
|
+
|
|
258
|
+
시각 규칙:
|
|
259
|
+
|
|
260
|
+
- 비활성 행: 전체 취소선 + 회색
|
|
261
|
+
|
|
262
|
+
### 4.4 Location 등록·편집 (PC) [확정: 2026-04-01]
|
|
263
|
+
|
|
264
|
+
Actor: 창고 관리자
|
|
265
|
+
관련 섹션: [프로세스.입고]
|
|
266
|
+
|
|
267
|
+
기능 개요:
|
|
268
|
+
|
|
269
|
+
- Location 신규 등록 또는 기존 Location 편집 (호출하는 쪽에서 빈 폼/기존 데이터로 모달 띄움)
|
|
270
|
+
|
|
271
|
+
와이어프레임:
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
┌──────────────────────────────────────┐
|
|
275
|
+
│ Location 등록·편집 │
|
|
276
|
+
├──────────────────────────────────────┤
|
|
277
|
+
│ <입력 폼> │
|
|
278
|
+
├──────────────────────────────────────┤
|
|
279
|
+
│ [저장] [취소] │
|
|
280
|
+
└──────────────────────────────────────┘
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
항목:
|
|
284
|
+
|
|
285
|
+
**입력 폼**
|
|
286
|
+
|
|
287
|
+
| 항목 | 종류 | 필수 | 도메인 매핑 | 비고 |
|
|
288
|
+
| ---- | ----------- | ---- | -------------------- | ----------------------- |
|
|
289
|
+
| 코드 | 텍스트 입력 | O | [모델.Location.코드] | 영문 대문자/숫자/하이픈 |
|
|
290
|
+
|
|
291
|
+
동작:
|
|
292
|
+
|
|
293
|
+
- `[저장]` 클릭: 활성 Location 내 코드 유일성 검증 → 저장 → 모달 닫음
|
|
294
|
+
- `[취소]` 클릭: 변경 사항 폐기 → 모달 닫음
|
|
295
|
+
|
|
296
|
+
### 4.5 입고 스캔 (PDA) [확정: 2026-04-01]
|
|
297
|
+
|
|
298
|
+
Actor: 창고 작업자
|
|
299
|
+
관련 섹션: [프로세스.입고], [외부인터페이스.ERP 입고 통보]
|
|
300
|
+
|
|
301
|
+
기능 개요:
|
|
302
|
+
|
|
303
|
+
- 박스 → Location 순서로 스캔하여 재고 등록
|
|
304
|
+
|
|
305
|
+
와이어프레임:
|
|
306
|
+
|
|
307
|
+
```
|
|
308
|
+
┌────────────────────────┐
|
|
309
|
+
│ 입고 스캔 │
|
|
310
|
+
├────────────────────────┤
|
|
311
|
+
│ <스캔 입력 폼> │
|
|
312
|
+
│ │
|
|
313
|
+
│ [ 등록 ] │
|
|
314
|
+
└────────────────────────┘
|
|
315
|
+
(360 × 568)
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
항목:
|
|
319
|
+
|
|
320
|
+
**스캔 입력 폼**
|
|
321
|
+
|
|
322
|
+
| 항목 | 종류 | 필수 | 도메인 매핑 | 비고 |
|
|
323
|
+
| ----------- | ----------- | ---- | -------------------- | -------------------------------------------------- |
|
|
324
|
+
| 박스 바코드 | 텍스트 입력 | O | - | PDA 스캐너 입력. 파싱 = 품목코드 + 수량 + 박스번호 |
|
|
325
|
+
| Location | 텍스트 입력 | O | [모델.Location.코드] | PDA 스캐너 입력 |
|
|
326
|
+
|
|
327
|
+
동작:
|
|
328
|
+
|
|
329
|
+
- `[등록]` 클릭:
|
|
330
|
+
- 절차:
|
|
331
|
+
1. 박스 바코드 파싱 (품목코드 / 수량 / 박스번호)
|
|
332
|
+
2. 모델 존재 검증 (품목 활성 / Location 활성 / 박스번호 미중복)
|
|
333
|
+
3. [모델.재고] 생성
|
|
334
|
+
4. [외부인터페이스.ERP 입고 통보] 호출
|
|
335
|
+
|
|
336
|
+
### 4.6 재고 확인 (PC) [확정: 2026-04-01]
|
|
337
|
+
|
|
338
|
+
Actor: 창고 관리자
|
|
339
|
+
관련 섹션: [프로세스.입고], [기타.과거 재고 조회], [자동 처리.재고 스냅샷]
|
|
340
|
+
|
|
341
|
+
기능 개요:
|
|
342
|
+
|
|
343
|
+
- 현재 재고: Location 별 적치된 박스 + 품목·수량 조회
|
|
344
|
+
- 과거 시점 재고: 특정 날짜의 스냅샷 조회
|
|
345
|
+
|
|
346
|
+
와이어프레임:
|
|
347
|
+
|
|
348
|
+
```
|
|
349
|
+
┌──────────────────────────────────────────────────────────────────────────┐
|
|
350
|
+
│ 재고 확인 │
|
|
351
|
+
│ [조회] <필터> │
|
|
352
|
+
├──────────────────────────────────────────────────────────────────────────┤
|
|
353
|
+
│ [엑셀 다운로드] │
|
|
354
|
+
│ ──────────────────────────────────────────────────────────────────────── │
|
|
355
|
+
│ <재고 시트> │
|
|
356
|
+
└──────────────────────────────────────────────────────────────────────────┘
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
항목:
|
|
360
|
+
|
|
361
|
+
**필터**
|
|
362
|
+
|
|
363
|
+
| 항목 | 종류 | 필수 | 비고 |
|
|
364
|
+
| ------------- | ------ | ---- | -------------------------------------------- |
|
|
365
|
+
| 기준일 | 날짜 | X | 비우면 현재. 과거 일자 입력 시 스냅샷 조회 |
|
|
366
|
+
| 품목 필터 | 텍스트 | X | 코드 부분 일치 |
|
|
367
|
+
| Location 필터 | 텍스트 | X | 코드 부분 일치 |
|
|
368
|
+
|
|
369
|
+
**재고 시트**
|
|
370
|
+
|
|
371
|
+
| 컬럼 | 종류 | 필수 | 도메인 매핑 | 비고 |
|
|
372
|
+
| -------- | ---- | ---- | -------------------------- | -------------- |
|
|
373
|
+
| Location | 문자 | - | [모델.재고.Location.코드] | |
|
|
374
|
+
| 박스번호 | 문자 | - | [모델.재고.박스.박스번호] | |
|
|
375
|
+
| 품목 | 문자 | - | [모델.재고.박스.품목.코드] | 품목 코드 표시 |
|
|
376
|
+
| 수량 | 숫자 | - | [모델.재고.박스.수량] | |
|
|
377
|
+
|
|
378
|
+
동작:
|
|
379
|
+
|
|
380
|
+
- `[조회]` 클릭:
|
|
381
|
+
- 기준일 비어있음: 현재 [모델.재고] 조회
|
|
382
|
+
- 기준일 입력됨: [모델.재고 스냅샷] 에서 해당 날짜 분 조회
|
|
383
|
+
- 필터 조건 적용 → 결과 표시
|
|
384
|
+
- `[엑셀 다운로드]` 클릭: 현재 조회 결과를 엑셀로 다운로드
|
|
385
|
+
|
|
386
|
+
## 5. 자동 처리
|
|
387
|
+
|
|
388
|
+
### 5.1 재고 스냅샷 [확정: 2026-04-01]
|
|
389
|
+
|
|
390
|
+
```mermaid
|
|
391
|
+
flowchart LR
|
|
392
|
+
S([매일 0시]) --> T1[현재 재고 전체 조회]
|
|
393
|
+
T1 --> T2[스냅샷 테이블에 날짜별 저장]
|
|
394
|
+
T2 --> E1([완료])
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
목적:
|
|
398
|
+
|
|
399
|
+
- 과거 시점 재고 조회 지원
|
|
400
|
+
|
|
401
|
+
트리거:
|
|
402
|
+
|
|
403
|
+
- 매일 0시 정각
|
|
404
|
+
|
|
405
|
+
처리:
|
|
406
|
+
|
|
407
|
+
- [모델.재고] 전체를 [모델.재고 스냅샷] 에 날짜별로 저장
|
|
408
|
+
|
|
409
|
+
예외 처리:
|
|
410
|
+
|
|
411
|
+
- 스냅샷 생성 실패 시:
|
|
412
|
+
- 위험: 당일 분 누락 시 해당 날짜의 과거 시점 조회 불가
|
|
413
|
+
- 대처: 관리자 알림. 동일 일자 재실행 시 (날짜, 박스) 유일성 검증으로 중복 생성 방지
|
|
414
|
+
- 재시도 한계: 별도 재시도 없음 (다음 날 0시 정상 동작)
|
|
415
|
+
|
|
416
|
+
관련 섹션: [기타.과거 재고 조회], [화면.재고 확인]
|
|
417
|
+
|
|
418
|
+
## 6. 공통 정의
|
|
419
|
+
|
|
420
|
+
### 6.1 용어 사전 [확정: 2026-04-01]
|
|
421
|
+
|
|
422
|
+
- 박스: 외부에서 이미 바코드(품목+수량+박스번호)가 부착된 입고 단위
|
|
423
|
+
- Location: 창고 내 적치 위치 ([공통 정의.Location 라벨])
|
|
424
|
+
- ERP 통보: 입출고 발생 시 WMS → ERP 단방향 알림
|
|
425
|
+
- 활성 여부: 마스터 데이터의 소프트 삭제 플래그 (true = 정상, false = 삭제 처리됨). UI 의 "삭제/복구" 액션과 매핑. 마스터에 완전 삭제(DB 레코드 제거) 없음.
|
|
426
|
+
|
|
427
|
+
### 6.2 박스 바코드 형식 [OPEN: 2026-04-01]
|
|
428
|
+
|
|
429
|
+
- 자료 위치: 첨부B.pdf p.5 "박스 코드 체계" — 외부 송장 시스템 규격 명세
|
|
430
|
+
- 자료 연결 메모: 박스 코드는 외부 규격이지만 [모델.박스] 식별 키 구조와 직결 — §7 박스 확정과 함께 검토
|
|
431
|
+
|
|
432
|
+
### 6.3 Location 라벨 [확정: 2026-04-01]
|
|
433
|
+
|
|
434
|
+
```
|
|
435
|
+
┌────────────────────────────────┐
|
|
436
|
+
│ │
|
|
437
|
+
│ [Code128 바코드: A-01-03] │
|
|
438
|
+
│ │
|
|
439
|
+
│ A-01-03 │
|
|
440
|
+
│ │
|
|
441
|
+
└────────────────────────────────┘
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
- 표시 항목: 바코드 + Location 코드 텍스트
|
|
445
|
+
- 심볼로지: Code128
|
|
446
|
+
- 라벨 크기: 100 × 50 mm
|
|
447
|
+
- 라벨 재질: 유포지, 흰색 무지
|
|
448
|
+
|
|
449
|
+
### 6.4 화주 품목 자료 [확정: 2026-04-01]
|
|
450
|
+
|
|
451
|
+
화주(품목을 본 WMS 에 보관 위탁한 거래처)가 자기 ERP 에서 수시로 다운로드해 화주별 별도 파일로 전달한다. 신규 화주 등록 또는 화주 측 품목 마스터 변경 시점에 본 WMS 에 1회 일괄 업로드한다. 식별 키는 `화주코드 + SEQ` 2컬럼 합성.
|
|
452
|
+
|
|
453
|
+
| 컬럼 | 필수 | 설명 |
|
|
454
|
+
| -------- | ---- | --------------------------------------------------- |
|
|
455
|
+
| 화주코드 | O | 화주 ERP 의 품목 코드. 영문 대문자 + 숫자, 최대 8자 |
|
|
456
|
+
| SEQ | O | 같은 화주코드 내 revision 일련번호. 숫자 3자리 |
|
|
457
|
+
| 품목명 | O | 화주 측 명칭 |
|
|
458
|
+
| 단위 | X | `EA` / `BOX` 등 |
|
|
459
|
+
|
|
460
|
+
## 7. 도메인 모델
|
|
461
|
+
|
|
462
|
+
### 7.1 품목 [확정: 2026-04-01]
|
|
463
|
+
|
|
464
|
+
필드:
|
|
465
|
+
|
|
466
|
+
| 필드 | 타입 | 필수 | 비고 |
|
|
467
|
+
| --------- | ------- | ---- | ---------------- |
|
|
468
|
+
| ID | 숫자 | O | 자동 부여 |
|
|
469
|
+
| 코드 | 문자 | O | 자유 형식, 수정 가능 |
|
|
470
|
+
| 명칭 | 문자 | O | |
|
|
471
|
+
| 활성 여부 | boolean | O | |
|
|
472
|
+
|
|
473
|
+
키/제약:
|
|
474
|
+
|
|
475
|
+
- 식별 키: ID (자동 부여)
|
|
476
|
+
- 비즈니스 키: 코드 (사용자 부여, 수정 가능)
|
|
477
|
+
- 유일성: 활성 품목 내 코드, 명칭 각각 유일
|
|
478
|
+
|
|
479
|
+
### 7.2 박스 [확정: 2026-04-01]
|
|
480
|
+
|
|
481
|
+
필드:
|
|
482
|
+
|
|
483
|
+
| 필드 | 타입 | 필수 | 비고 |
|
|
484
|
+
| -------- | ----------- | ---- | ------------------------------------- |
|
|
485
|
+
| ID | 숫자 | O | 자동 부여 |
|
|
486
|
+
| 박스번호 | 문자 | O | [공통 정의.박스 바코드 형식] 형식 따름 |
|
|
487
|
+
| 품목 | 참조 - 품목 | O | |
|
|
488
|
+
| 수량 | 숫자 | O | |
|
|
489
|
+
|
|
490
|
+
키/제약:
|
|
491
|
+
|
|
492
|
+
- 식별 키: ID (자동 부여)
|
|
493
|
+
- 비즈니스 키: 박스번호
|
|
494
|
+
- 박스 1개 = 단일 품목
|
|
495
|
+
- 유일성: 박스번호 유일
|
|
496
|
+
|
|
497
|
+
### 7.3 Location [확정: 2026-04-01]
|
|
498
|
+
|
|
499
|
+
필드:
|
|
500
|
+
|
|
501
|
+
| 필드 | 타입 | 필수 | 비고 |
|
|
502
|
+
| --------- | ------- | ---- | ------------------------------------------------------------------- |
|
|
503
|
+
| ID | 숫자 | O | 자동 부여 |
|
|
504
|
+
| 코드 | 문자 | O | 영문 대문자/숫자/하이픈. 수정 가능. 예 `A-01-03`, `ZONE1-RACK7-LV2` |
|
|
505
|
+
| 활성 여부 | boolean | O | |
|
|
506
|
+
|
|
507
|
+
키/제약:
|
|
508
|
+
|
|
509
|
+
- 식별 키: ID (자동 부여)
|
|
510
|
+
- 비즈니스 키: 코드 (사용자 부여, 수정 가능)
|
|
511
|
+
- 유일성: 활성 Location 내 코드 유일
|
|
512
|
+
|
|
513
|
+
### 7.4 재고 [확정: 2026-04-01]
|
|
514
|
+
|
|
515
|
+
필드:
|
|
516
|
+
|
|
517
|
+
| 필드 | 타입 | 필수 | 비고 |
|
|
518
|
+
| -------- | --------------- | ---- | --------- |
|
|
519
|
+
| ID | 숫자 | O | 자동 부여 |
|
|
520
|
+
| 박스 | 참조 - 박스 | O | |
|
|
521
|
+
| Location | 참조 - Location | O | |
|
|
522
|
+
|
|
523
|
+
키/제약:
|
|
524
|
+
|
|
525
|
+
- 식별 키: ID (자동 부여)
|
|
526
|
+
- 박스 1개는 동시에 1개 Location 에만 존재 (= 박스-재고 1:1)
|
|
527
|
+
- Location 1개에 박스 다중 가능
|
|
528
|
+
|
|
529
|
+
### 7.5 재고 스냅샷 [확정: 2026-04-01]
|
|
530
|
+
|
|
531
|
+
필드:
|
|
532
|
+
|
|
533
|
+
| 필드 | 타입 | 필수 | 비고 |
|
|
534
|
+
| -------- | --------------- | ---- | --------- |
|
|
535
|
+
| ID | 숫자 | O | 자동 부여 |
|
|
536
|
+
| 날짜 | 날짜 | O | 스냅샷 일자 |
|
|
537
|
+
| 박스 | 참조 - 박스 | O | |
|
|
538
|
+
| Location | 참조 - Location | O | |
|
|
539
|
+
|
|
540
|
+
키/제약:
|
|
541
|
+
|
|
542
|
+
- 식별 키: ID (자동 부여)
|
|
543
|
+
- 비즈니스 키: (날짜, 박스) 조합 유일
|
|
544
|
+
|
|
545
|
+
## 8. 외부 인터페이스
|
|
546
|
+
|
|
547
|
+
### 8.1 ERP 입고 통보 [확정: 2026-04-01]
|
|
548
|
+
|
|
549
|
+
- 상대 시스템: ERP
|
|
550
|
+
- 방향: WMS → ERP
|
|
551
|
+
- 전송 방식: REST API (POST)
|
|
552
|
+
|
|
553
|
+
자료 매핑:
|
|
554
|
+
|
|
555
|
+
| ERP 필드 | WMS 출처 |
|
|
556
|
+
| -------- | --------------------- |
|
|
557
|
+
| 품목코드 | [모델.박스.품목.코드] |
|
|
558
|
+
| 수량 | [모델.박스.수량] |
|
|
559
|
+
| 박스번호 | [모델.박스.박스번호] |
|
|
560
|
+
| 발생시각 | 입고 등록 시각 |
|
|
561
|
+
|
|
562
|
+
예외 처리:
|
|
563
|
+
|
|
564
|
+
- 호출 실패 (네트워크 오류, ERP 서버 일시 다운 등):
|
|
565
|
+
- 위험: 단순 재시도 시 ERP 에 같은 박스가 2번 입고 등록될 수 있음 (첫 호출이 실제로는 ERP 에 도달했는데 응답만 못 받은 경우 등)
|
|
566
|
+
- 방지 전제: ERP 가 박스번호를 키로 사용해 이미 받은 통보는 무시하도록 구성되어야 함
|
|
567
|
+
- 대처: 위 전제 하에 지수 백오프로 재시도, 최대 5회
|
|
568
|
+
- 재시도 한계 초과: 관리자 알림 (이후 수동 확인 필요)
|
|
569
|
+
|
|
570
|
+
관련 섹션: [화면.입고 스캔]
|
|
571
|
+
|
|
572
|
+
## 9. 본문 외 결정사항
|
|
573
|
+
|
|
574
|
+
### 9.1 분석 제외 항목 [확정: 2026-04-01]
|
|
575
|
+
|
|
576
|
+
- 직원 관리 사원번호 컬럼 추가 — 운영 잔손
|
|
577
|
+
- 재고 확인 화면 정렬 버그 — 운영 잔손
|
|
578
|
+
|
|
579
|
+
## 10. 변경 이력
|
|
580
|
+
|
|
581
|
+
- 2026-04-01: 운영 잔손 분리 — 직원 관리 사원번호 컬럼 추가, 재고 확인 화면 정렬 버그. 분석 제외 항목으로 기록.
|
|
582
|
+
- 2026-04-01: 입고 분석 완료. 출고·박스 바코드 형식 보류.
|
|
583
|
+
- 2026-04-01: 과거 재고 조회 요구 식별 → 재고 스냅샷 모델·자동 처리 추가, 재고 확인 화면에 기준일 필터 반영.
|
|
584
|
+
- 2026-04-01: ERP 입고 통보 식별 → 입고 스캔 등록 후속 동작에서 호출.
|
|
585
|
+
- 2026-04-05: 품목 관리·품목 등록·편집 sd-impl 완료 (구현 마커 부착).
|