agentic-dev 0.1.0 → 0.2.0
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/.agent/prd.json +29 -0
- package/.agent/progress.txt +1 -0
- package/.agent/prompt.md +21 -0
- package/.agent/ralph-loop-state.json +13 -0
- package/.agent/ralph-supervisor-state.json +12 -0
- package/.agent/ralph-supervisor.sh +238 -0
- package/.agent/ralph.sh +305 -0
- package/.agent/runs/README.md +7 -0
- package/.agent/sdd-build-ast-audit.json +13 -0
- package/.claude/CLAUDE.md +44 -0
- package/.claude/agentic-dev.json +3 -0
- package/.claude/agents/ai-dev.md +27 -0
- package/.claude/agents/backend-dev.md +26 -0
- package/.claude/agents/db-dev.md +26 -0
- package/.claude/agents/devops.md +27 -0
- package/.claude/agents/frontend-dev.md +25 -0
- package/.claude/agents/github-ops.md +25 -0
- package/.claude/agents/test-dev.md +26 -0
- package/.claude/agents/uiux-designer.md +25 -0
- package/.claude/settings.json +49 -0
- package/.claude/settings.local.json +8 -0
- package/.claude/skills/commit/SKILL.md +37 -0
- package/.claude/skills/dev-browser/SKILL.md +30 -0
- package/.claude/skills/otro/SKILL.md +43 -0
- package/.claude/skills/planning-with-files/SKILL.md +37 -0
- package/.claude/skills/prd/SKILL.md +27 -0
- package/.claude/skills/ralph-loop/SKILL.md +42 -0
- package/.claude/skills/sdd/SKILL.md +13 -0
- package/.claude/skills/sdd-dev/SKILL.md +71 -0
- package/.claude/skills/sdd-development/SKILL.md +13 -0
- package/.claude/workspace-config.json +3 -0
- package/.codex/agentic-dev.json +3 -0
- package/.codex/agents/README.md +22 -0
- package/.codex/agents/api.toml +11 -0
- package/.codex/agents/architecture.toml +11 -0
- package/.codex/agents/ci.toml +11 -0
- package/.codex/agents/gitops.toml +11 -0
- package/.codex/agents/orchestrator.toml +11 -0
- package/.codex/agents/quality.toml +11 -0
- package/.codex/agents/runtime.toml +11 -0
- package/.codex/agents/security.toml +11 -0
- package/.codex/agents/specs.toml +11 -0
- package/.codex/agents/ui.toml +11 -0
- package/.codex/config.toml +46 -0
- package/.codex/skills/SKILL.md +13 -0
- package/.codex/skills/agents/openai.yaml +4 -0
- package/.codex/skills/commit/SKILL.md +219 -0
- package/.codex/skills/commit/references/commit_examples.md +292 -0
- package/.codex/skills/dev-browser/SKILL.md +211 -0
- package/.codex/skills/dev-browser/bun.lock +443 -0
- package/.codex/skills/dev-browser/package-lock.json +2988 -0
- package/.codex/skills/dev-browser/package.json +31 -0
- package/.codex/skills/dev-browser/references/scraping.md +155 -0
- package/.codex/skills/dev-browser/scripts/start-relay.ts +32 -0
- package/.codex/skills/dev-browser/scripts/start-server.ts +117 -0
- package/.codex/skills/dev-browser/server.sh +24 -0
- package/.codex/skills/dev-browser/src/client.ts +474 -0
- package/.codex/skills/dev-browser/src/index.ts +287 -0
- package/.codex/skills/dev-browser/src/relay.ts +731 -0
- package/.codex/skills/dev-browser/src/snapshot/__tests__/snapshot.test.ts +223 -0
- package/.codex/skills/dev-browser/src/snapshot/browser-script.ts +877 -0
- package/.codex/skills/dev-browser/src/snapshot/index.ts +14 -0
- package/.codex/skills/dev-browser/src/snapshot/inject.ts +13 -0
- package/.codex/skills/dev-browser/src/types.ts +34 -0
- package/.codex/skills/dev-browser/tsconfig.json +36 -0
- package/.codex/skills/dev-browser/vitest.config.ts +12 -0
- package/.codex/skills/otro/SKILL.md +74 -0
- package/.codex/skills/otro/agents/openai.yaml +4 -0
- package/.codex/skills/otro/references/agent-prompts.md +61 -0
- package/.codex/skills/otro/references/contracts.md +146 -0
- package/.codex/skills/otro/references/orchestration-loop.md +51 -0
- package/.codex/skills/otro/references/runtime.md +79 -0
- package/.codex/skills/otro/runs/README.md +11 -0
- package/.codex/skills/otro/schemas/step_plan.schema.json +289 -0
- package/.codex/skills/otro/schemas/task_result.schema.json +142 -0
- package/.codex/skills/otro/schemas/wave_plan.schema.json +4 -0
- package/.codex/skills/otro/scripts/README.md +38 -0
- package/.codex/skills/otro/scripts/bump_validation_header.py +179 -0
- package/.codex/skills/otro/scripts/check_validation_header.py +84 -0
- package/.codex/skills/otro/scripts/common.py +303 -0
- package/.codex/skills/otro/scripts/init_run.sh +68 -0
- package/.codex/skills/otro/scripts/plan_loop.py +8 -0
- package/.codex/skills/otro/scripts/plan_step.py +367 -0
- package/.codex/skills/otro/scripts/plan_wave.py +8 -0
- package/.codex/skills/otro/scripts/reconcile_loop.py +8 -0
- package/.codex/skills/otro/scripts/reconcile_step.py +37 -0
- package/.codex/skills/otro/scripts/reconcile_wave.py +8 -0
- package/.codex/skills/otro/scripts/run_loop.py +300 -0
- package/.codex/skills/otro/scripts/run_loop_step.py +8 -0
- package/.codex/skills/otro/scripts/run_step.py +246 -0
- package/.codex/skills/otro/scripts/run_wave.py +8 -0
- package/.codex/skills/otro/validation/validation.md +15 -0
- package/.codex/skills/planning-with-files/SKILL.md +42 -0
- package/.codex/skills/planning-with-files/agents/openai.yaml +4 -0
- package/.codex/skills/planning-with-files/assets/plan-template.md +37 -0
- package/.codex/skills/planning-with-files/references/plan-rules.md +35 -0
- package/.codex/skills/planning-with-files/scripts/new_plan.sh +65 -0
- package/.codex/skills/prd/SKILL.md +235 -0
- package/.codex/skills/ralph-loop/SKILL.md +46 -0
- package/.codex/skills/ralph-loop/agents/openai.yaml +4 -0
- package/.codex/skills/ralph-loop/references/failure-triage.md +32 -0
- package/.codex/skills/ralph-loop/scripts/loop_until_success.sh +97 -0
- package/.codex/skills/sdd/SKILL.md +184 -0
- package/.codex/skills/sdd/agents/openai.yaml +4 -0
- package/.codex/skills/sdd/references/section-map.md +67 -0
- package/.dockerignore +8 -0
- package/.env.example +50 -0
- package/.gitignore +16 -0
- package/AGENTS.md +78 -0
- package/README.md +83 -47
- package/SDD_SKILL.md +589 -0
- package/bin/agentic-dev.mjs +97 -0
- package/client/admin/.dockerignore +3 -0
- package/client/admin/.env.example +1 -0
- package/client/admin/Dockerfile +16 -0
- package/client/admin/Dockerfile.dev +18 -0
- package/client/admin/README.md +20 -0
- package/client/admin/index.html +12 -0
- package/client/admin/package.json +41 -0
- package/client/admin/postcss.config.js +6 -0
- package/client/admin/scripts/ui-parity-admin-adapter.mjs +65 -0
- package/client/admin/src/api/alerts.ts +33 -0
- package/client/admin/src/api/client.ts +71 -0
- package/client/admin/src/api/orders.ts +33 -0
- package/client/admin/src/api/support.ts +11 -0
- package/client/admin/src/app/App.tsx +23 -0
- package/client/admin/src/auth/AuthProvider.tsx +122 -0
- package/client/admin/src/auth/ProtectedRoute.tsx +22 -0
- package/client/admin/src/auth/auth-client.ts +38 -0
- package/client/admin/src/auth/types.ts +18 -0
- package/client/admin/src/components/AdminNotificationsDrawer.tsx +162 -0
- package/client/admin/src/components/AdminShell.tsx +76 -0
- package/client/admin/src/components/ui/button.tsx +34 -0
- package/client/admin/src/components/ui/input.tsx +21 -0
- package/client/admin/src/lib/cn.ts +6 -0
- package/client/admin/src/lib/specRouteCatalog.json +30 -0
- package/client/admin/src/lib/specScreens.json +22 -0
- package/client/admin/src/main.tsx +17 -0
- package/client/admin/src/pages/AdminDashboardPage.tsx +171 -0
- package/client/admin/src/pages/AdminLoginPage.tsx +75 -0
- package/client/admin/src/pages/AdminQueuePage.tsx +107 -0
- package/client/admin/src/pages/AdminSupportPage.tsx +61 -0
- package/client/admin/src/styles/globals.css +17 -0
- package/client/admin/src/theme-vars.ts +18 -0
- package/client/admin/src/theme.ts +25 -0
- package/client/admin/src/vite-env.d.ts +1 -0
- package/client/admin/tailwind.config.js +8 -0
- package/client/admin/tsconfig.json +25 -0
- package/client/admin/vite.config.ts +12 -0
- package/client/landing/.dockerignore +3 -0
- package/client/landing/.env.example +1 -0
- package/client/landing/Dockerfile +16 -0
- package/client/landing/Dockerfile.dev +18 -0
- package/client/landing/README.md +18 -0
- package/client/landing/index.html +12 -0
- package/client/landing/package.json +41 -0
- package/client/landing/postcss.config.js +6 -0
- package/client/landing/scripts/ui-parity-landing-adapter.mjs +65 -0
- package/client/landing/src/App.tsx +21 -0
- package/client/landing/src/api/catalog.ts +30 -0
- package/client/landing/src/api/client.ts +30 -0
- package/client/landing/src/auth/AuthProvider.tsx +122 -0
- package/client/landing/src/auth/ProtectedRoute.tsx +22 -0
- package/client/landing/src/auth/auth-client.ts +38 -0
- package/client/landing/src/auth/types.ts +18 -0
- package/client/landing/src/components/LandingShell.tsx +34 -0
- package/client/landing/src/lib/specRouteCatalog.json +23 -0
- package/client/landing/src/lib/specScreens.json +17 -0
- package/client/landing/src/main.tsx +17 -0
- package/client/landing/src/pages/LandingHomePage.tsx +215 -0
- package/client/landing/src/pages/LandingLoginPage.tsx +90 -0
- package/client/landing/src/pages/LandingWorkspacePage.tsx +126 -0
- package/client/landing/src/styles/globals.css +17 -0
- package/client/landing/src/theme-vars.ts +16 -0
- package/client/landing/src/theme.ts +21 -0
- package/client/landing/src/vite-env.d.ts +1 -0
- package/client/landing/tailwind.config.js +8 -0
- package/client/landing/tsconfig.json +25 -0
- package/client/landing/vite.config.ts +12 -0
- package/client/mobile/.dockerignore +2 -0
- package/client/mobile/.env.example +1 -0
- package/client/mobile/Dockerfile +16 -0
- package/client/mobile/Dockerfile.dev +18 -0
- package/client/mobile/README.md +19 -0
- package/client/mobile/index.html +12 -0
- package/client/mobile/package.json +42 -0
- package/client/mobile/postcss.config.js +6 -0
- package/client/mobile/scripts/ui-parity-mobile-adapter.mjs +67 -0
- package/client/mobile/src/App.tsx +1 -0
- package/client/mobile/src/api/client.ts +62 -0
- package/client/mobile/src/api/fulfillment.ts +55 -0
- package/client/mobile/src/api/shipping.ts +56 -0
- package/client/mobile/src/app/App.tsx +23 -0
- package/client/mobile/src/auth/AuthProvider.tsx +122 -0
- package/client/mobile/src/auth/ProtectedRoute.tsx +27 -0
- package/client/mobile/src/auth/auth-client.ts +38 -0
- package/client/mobile/src/auth/types.ts +18 -0
- package/client/mobile/src/components/InShell.tsx +74 -0
- package/client/mobile/src/components/ui/button.tsx +35 -0
- package/client/mobile/src/components/ui/card.tsx +15 -0
- package/client/mobile/src/components/ui/input.tsx +21 -0
- package/client/mobile/src/lib/cn.ts +6 -0
- package/client/mobile/src/lib/specRouteCatalog.json +26 -0
- package/client/mobile/src/lib/specScreens.json +22 -0
- package/client/mobile/src/lib/useSpeechRecognitionInput.ts +271 -0
- package/client/mobile/src/main.tsx +17 -0
- package/client/mobile/src/pages/DashboardPage.tsx +172 -0
- package/client/mobile/src/pages/FulfillmentPage.tsx +138 -0
- package/client/mobile/src/pages/LoginPage.tsx +74 -0
- package/client/mobile/src/pages/ShippingPage.tsx +338 -0
- package/client/mobile/src/styles/globals.css +23 -0
- package/client/mobile/src/theme-vars.ts +16 -0
- package/client/mobile/src/theme.ts +21 -0
- package/client/mobile/src/vite-env.d.ts +1 -0
- package/client/mobile/tailwind.config.js +8 -0
- package/client/mobile/tsconfig.json +25 -0
- package/client/mobile/vite.config.ts +12 -0
- package/client/platform/.dockerignore +3 -0
- package/client/platform/.env.example +1 -0
- package/client/platform/Dockerfile +16 -0
- package/client/platform/Dockerfile.dev +18 -0
- package/client/platform/README.md +47 -0
- package/client/platform/index.html +12 -0
- package/client/platform/package.json +42 -0
- package/client/platform/postcss.config.js +6 -0
- package/client/platform/scripts/ui-parity-platform-adapter.mjs +66 -0
- package/client/platform/src/api/client.ts +30 -0
- package/client/platform/src/api/orders.ts +42 -0
- package/client/platform/src/app/App.tsx +21 -0
- package/client/platform/src/auth/AuthProvider.tsx +122 -0
- package/client/platform/src/auth/ProtectedRoute.tsx +22 -0
- package/client/platform/src/auth/auth-client.ts +38 -0
- package/client/platform/src/auth/types.ts +18 -0
- package/client/platform/src/components/AppShell.tsx +59 -0
- package/client/platform/src/components/ui/button.tsx +35 -0
- package/client/platform/src/components/ui/card.tsx +7 -0
- package/client/platform/src/components/ui/input.tsx +21 -0
- package/client/platform/src/lib/cn.ts +6 -0
- package/client/platform/src/lib/specRouteCatalog.json +23 -0
- package/client/platform/src/lib/specScreens.json +17 -0
- package/client/platform/src/main.tsx +17 -0
- package/client/platform/src/pages/DashboardPage.tsx +158 -0
- package/client/platform/src/pages/LoginPage.tsx +72 -0
- package/client/platform/src/pages/OrdersPage.tsx +123 -0
- package/client/platform/src/styles/globals.css +17 -0
- package/client/platform/src/theme-vars.ts +18 -0
- package/client/platform/src/theme.ts +25 -0
- package/client/platform/src/vite-env.d.ts +1 -0
- package/client/platform/tailwind.config.js +8 -0
- package/client/platform/tsconfig.json +25 -0
- package/client/platform/vite.config.ts +12 -0
- package/compose.yml +206 -0
- package/infra/compose/.env.dev.example +28 -0
- package/infra/compose/.env.prod.example +29 -0
- package/infra/compose/README.md +35 -0
- package/infra/compose/dev.yml +125 -0
- package/infra/compose/prod.yml +126 -0
- package/infra/terraform/README.md +34 -0
- package/infra/terraform/aws/data/.terraform.lock.hcl +25 -0
- package/infra/terraform/aws/data/README.md +18 -0
- package/infra/terraform/aws/data/main.tf +147 -0
- package/infra/terraform/aws/data/outputs.tf +14 -0
- package/infra/terraform/aws/data/variables.tf +57 -0
- package/infra/terraform/aws/data/versions.tf +10 -0
- package/infra/terraform/aws/domain/.terraform.lock.hcl +25 -0
- package/infra/terraform/aws/domain/README.md +20 -0
- package/infra/terraform/aws/domain/env/dev.tfvars.example +6 -0
- package/infra/terraform/aws/domain/env/prod.tfvars.example +7 -0
- package/infra/terraform/aws/domain/main.tf +149 -0
- package/infra/terraform/aws/domain/outputs.tf +29 -0
- package/infra/terraform/aws/domain/variables.tf +58 -0
- package/infra/terraform/aws/domain/versions.tf +10 -0
- package/infra/terraform/openstack/README.md +38 -0
- package/infra/terraform/openstack/dev/.terraform.lock.hcl +24 -0
- package/infra/terraform/openstack/dev/README.md +18 -0
- package/infra/terraform/openstack/dev/main.tf +49 -0
- package/infra/terraform/openstack/dev/providers.tf +15 -0
- package/infra/terraform/openstack/dev/terraform.tfvars.example +54 -0
- package/infra/terraform/openstack/dev/variables.tf +210 -0
- package/infra/terraform/openstack/dev/versions.tf +10 -0
- package/infra/terraform/openstack/modules/environment_host/main.tf +143 -0
- package/infra/terraform/openstack/modules/environment_host/outputs.tf +25 -0
- package/infra/terraform/openstack/modules/environment_host/templates/docker-host-user-data.sh.tftpl +40 -0
- package/infra/terraform/openstack/modules/environment_host/variables.tf +145 -0
- package/infra/terraform/openstack/modules/environment_host/versions.tf +7 -0
- package/infra/terraform/openstack/prod/.terraform.lock.hcl +24 -0
- package/infra/terraform/openstack/prod/README.md +18 -0
- package/infra/terraform/openstack/prod/main.tf +49 -0
- package/infra/terraform/openstack/prod/providers.tf +15 -0
- package/infra/terraform/openstack/prod/terraform.tfvars.example +55 -0
- package/infra/terraform/openstack/prod/variables.tf +210 -0
- package/infra/terraform/openstack/prod/versions.tf +10 -0
- package/infra/terraform/openstack/server/.terraform.lock.hcl +45 -0
- package/infra/terraform/openstack/server/README.md +47 -0
- package/infra/terraform/openstack/server/main.tf +161 -0
- package/infra/terraform/openstack/server/outputs.tf +30 -0
- package/infra/terraform/openstack/server/providers.tf +30 -0
- package/infra/terraform/openstack/server/templates/server-user-data.sh.tftpl +50 -0
- package/infra/terraform/openstack/server/variables.tf +233 -0
- package/infra/terraform/openstack/server/zz_aspace.auto.tfvars.example.json +29 -0
- package/lib/scaffold.mjs +373 -0
- package/package.json +33 -12
- package/pnpm-workspace.yaml +2 -0
- package/scripts/dev/audit_sdd_build_ast.py +277 -0
- package/sdd/01_planning/01_feature/INDEX.md +16 -0
- package/sdd/01_planning/01_feature/README.md +76 -0
- package/sdd/01_planning/01_feature/alerts_feature_spec.md +55 -0
- package/sdd/01_planning/01_feature/auth_feature_spec.md +57 -0
- package/sdd/01_planning/01_feature/catalog_feature_spec.md +61 -0
- package/sdd/01_planning/01_feature/fulfillment_feature_spec.md +58 -0
- package/sdd/01_planning/01_feature/health_feature_spec.md +52 -0
- package/sdd/01_planning/01_feature/inventory_feature_spec.md +60 -0
- package/sdd/01_planning/01_feature/order_feature_spec.md +63 -0
- package/sdd/01_planning/01_feature/shipping_feature_spec.md +55 -0
- package/sdd/01_planning/01_feature/support_feature_spec.md +53 -0
- package/sdd/01_planning/01_feature/user_feature_spec.md +54 -0
- package/sdd/01_planning/02_screen/INDEX.md +13 -0
- package/sdd/01_planning/02_screen/README.md +41 -0
- package/sdd/01_planning/02_screen/admin_screen_spec.pdf +0 -0
- package/sdd/01_planning/02_screen/assets/README.md +16 -0
- package/sdd/01_planning/02_screen/assets/example/README.md +13 -0
- package/sdd/01_planning/02_screen/landing_screen_spec.pdf +0 -0
- package/sdd/01_planning/02_screen/mobile_screen_spec.pdf +0 -0
- package/sdd/01_planning/02_screen/platform_screen_spec.pdf +0 -0
- package/sdd/01_planning/03_architecture/INDEX.md +9 -0
- package/sdd/01_planning/03_architecture/README.md +25 -0
- package/sdd/01_planning/03_architecture/architecture_document_structure.md +77 -0
- package/sdd/01_planning/03_architecture/backend/README.md +10 -0
- package/sdd/01_planning/03_architecture/frontend/README.md +12 -0
- package/sdd/01_planning/03_architecture/infra/README.md +10 -0
- package/sdd/01_planning/03_architecture/tech-research/README.md +4 -0
- package/sdd/01_planning/03_architecture/templates_system_architecture.md +84 -0
- package/sdd/01_planning/04_data/INDEX.md +4 -0
- package/sdd/01_planning/04_data/README.md +10 -0
- package/sdd/01_planning/04_data/templates_data_modeling.md +119 -0
- package/sdd/01_planning/05_api/README.md +12 -0
- package/sdd/01_planning/05_api/templates_api_contract.md +90 -0
- package/sdd/01_planning/06_iac/README.md +11 -0
- package/sdd/01_planning/06_iac/templates_runtime_and_cicd_baseline.md +46 -0
- package/sdd/01_planning/07_integration/README.md +11 -0
- package/sdd/01_planning/07_integration/templates_frontend_api_integration.md +46 -0
- package/sdd/01_planning/08_nonfunctional/README.md +7 -0
- package/sdd/01_planning/09_security/README.md +7 -0
- package/sdd/01_planning/10_test/README.md +12 -0
- package/sdd/01_planning/10_test/templates_test_strategy.md +60 -0
- package/sdd/01_planning/INDEX.md +19 -0
- package/sdd/01_planning/README.md +17 -0
- package/sdd/02_plan/01_feature/README.md +34 -0
- package/sdd/02_plan/01_feature/_feature_todo_template.md +29 -0
- package/sdd/02_plan/02_screen/INDEX.md +19 -0
- package/sdd/02_plan/02_screen/README.md +39 -0
- package/sdd/02_plan/02_screen/_screen_todo_template.md +60 -0
- package/sdd/02_plan/03_architecture/README.md +23 -0
- package/sdd/02_plan/03_architecture/architecture_document_governance.md +40 -0
- package/sdd/02_plan/03_architecture/build_ast_runtime_tree_governance.md +53 -0
- package/sdd/02_plan/03_architecture/repository_governance.md +39 -0
- package/sdd/02_plan/03_architecture/runtime_and_structure_governance.md +38 -0
- package/sdd/02_plan/03_architecture/templates-hexagonal-template-architecture.md +9 -0
- package/sdd/02_plan/03_architecture/toolchain_governance.md +98 -0
- package/sdd/02_plan/04_data/README.md +5 -0
- package/sdd/02_plan/05_api/README.md +5 -0
- package/sdd/02_plan/06_iac/README.md +11 -0
- package/sdd/02_plan/06_iac/dev_runtime_delivery.md +36 -0
- package/sdd/02_plan/06_iac/template_runtime_delivery.md +50 -0
- package/sdd/02_plan/07_integration/README.md +5 -0
- package/sdd/02_plan/07_integration/frontend_live_integration.md +31 -0
- package/sdd/02_plan/08_nonfunctional/README.md +5 -0
- package/sdd/02_plan/08_nonfunctional/repository_hygiene.md +26 -0
- package/sdd/02_plan/09_security/README.md +5 -0
- package/sdd/02_plan/10_test/README.md +11 -0
- package/sdd/02_plan/10_test/regression_verification.md +39 -0
- package/sdd/02_plan/10_test/templates/README.md +8 -0
- package/sdd/02_plan/10_test/templates/ui_parity_platform_contract.template.yaml +23 -0
- package/sdd/02_plan/10_test/verification_strategy.md +43 -0
- package/sdd/02_plan/99_generated/from_planning/ui_parity/.gitkeep +1 -0
- package/sdd/02_plan/README.md +40 -0
- package/sdd/03_build/01_feature/README.md +20 -0
- package/sdd/03_build/01_feature/domain/README.md +3 -0
- package/sdd/03_build/01_feature/domain/account_and_access.md +20 -0
- package/sdd/03_build/01_feature/domain/catalog_and_inventory.md +20 -0
- package/sdd/03_build/01_feature/domain/ordering_and_fulfillment.md +21 -0
- package/sdd/03_build/01_feature/domain/support_and_observability.md +21 -0
- package/sdd/03_build/01_feature/domain_surfaces.md +28 -0
- package/sdd/03_build/01_feature/service/README.md +3 -0
- package/sdd/03_build/01_feature/service/admin_surface.md +15 -0
- package/sdd/03_build/01_feature/service/landing_surface.md +13 -0
- package/sdd/03_build/01_feature/service/mobile_surface.md +14 -0
- package/sdd/03_build/01_feature/service/platform_surface.md +14 -0
- package/sdd/03_build/02_screen/README.md +25 -0
- package/sdd/03_build/02_screen/_screen_build_template.md +26 -0
- package/sdd/03_build/02_screen/admin/README.md +5 -0
- package/sdd/03_build/02_screen/landing/README.md +5 -0
- package/sdd/03_build/02_screen/mobile/README.md +5 -0
- package/sdd/03_build/02_screen/platform/README.md +5 -0
- package/sdd/03_build/03_architecture/README.md +10 -0
- package/sdd/03_build/03_architecture/architecture_document_governance.md +30 -0
- package/sdd/03_build/03_architecture/build_ast_runtime_tree_governance.md +24 -0
- package/sdd/03_build/03_architecture/repository_governance.md +18 -0
- package/sdd/03_build/03_architecture/toolchain_governance.md +36 -0
- package/sdd/03_build/06_iac/README.md +3 -0
- package/sdd/03_build/06_iac/dev_runtime_delivery.md +10 -0
- package/sdd/03_build/06_iac/template_runtime_delivery.md +49 -0
- package/sdd/03_build/07_integration/README.md +3 -0
- package/sdd/03_build/07_integration/frontend_live_integration.md +11 -0
- package/sdd/03_build/08_nonfunctional/README.md +3 -0
- package/sdd/03_build/08_nonfunctional/repository_hygiene.md +10 -0
- package/sdd/03_build/10_test/README.md +9 -0
- package/sdd/03_build/10_test/regression_verification.md +16 -0
- package/sdd/03_build/10_test/verification_harness.md +11 -0
- package/sdd/03_build/README.md +35 -0
- package/sdd/04_verify/01_feature/README.md +5 -0
- package/sdd/04_verify/01_feature/domain_verification.md +14 -0
- package/sdd/04_verify/01_feature/service_verification.md +22 -0
- package/sdd/04_verify/02_screen/README.md +6 -0
- package/sdd/04_verify/02_screen/_screen_verify_template.md +20 -0
- package/sdd/04_verify/02_screen/admin/README.md +4 -0
- package/sdd/04_verify/02_screen/landing/README.md +4 -0
- package/sdd/04_verify/02_screen/mobile/README.md +4 -0
- package/sdd/04_verify/02_screen/platform/README.md +4 -0
- package/sdd/04_verify/03_architecture/README.md +10 -0
- package/sdd/04_verify/03_architecture/architecture_document_governance.md +15 -0
- package/sdd/04_verify/03_architecture/build_ast_runtime_tree_governance.md +28 -0
- package/sdd/04_verify/03_architecture/repository_governance.md +16 -0
- package/sdd/04_verify/03_architecture/toolchain_governance.md +58 -0
- package/sdd/04_verify/06_iac/README.md +3 -0
- package/sdd/04_verify/06_iac/dev_runtime_delivery.md +10 -0
- package/sdd/04_verify/06_iac/template_runtime_delivery.md +42 -0
- package/sdd/04_verify/07_integration/README.md +3 -0
- package/sdd/04_verify/07_integration/frontend_live_integration.md +16 -0
- package/sdd/04_verify/08_nonfunctional/README.md +3 -0
- package/sdd/04_verify/08_nonfunctional/repository_hygiene.md +14 -0
- package/sdd/04_verify/10_test/README.md +9 -0
- package/sdd/04_verify/10_test/regression_verification.md +16 -0
- package/sdd/04_verify/10_test/ui_parity/README.md +4 -0
- package/sdd/04_verify/10_test/ui_parity/loop_runs/.gitkeep +0 -0
- package/sdd/04_verify/10_test/ui_parity/reference/.gitkeep +0 -0
- package/sdd/04_verify/10_test/ui_parity/staged_runs/.gitkeep +0 -0
- package/sdd/04_verify/10_test/verification_harness.md +17 -0
- package/sdd/04_verify/README.md +22 -0
- package/sdd/05_operate/01_runbooks/.gitkeep +1 -0
- package/sdd/05_operate/01_runbooks/README.md +4 -0
- package/sdd/05_operate/02_delivery_status/README.md +4 -0
- package/sdd/05_operate/02_delivery_status/service_status.md +16 -0
- package/sdd/05_operate/README.md +12 -0
- package/sdd/99_toolchain/01_automation/.gitkeep +1 -0
- package/sdd/99_toolchain/01_automation/README.md +76 -0
- package/sdd/99_toolchain/01_automation/agentic-dev/analyze_proof_results.py +132 -0
- package/sdd/99_toolchain/01_automation/agentic-dev/analyze_route_gap.py +85 -0
- package/sdd/99_toolchain/01_automation/agentic-dev/assets/repo-contract.template.json +75 -0
- package/sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh +84 -0
- package/sdd/99_toolchain/01_automation/agentic-dev/init_frontend_parity.sh +33 -0
- package/sdd/99_toolchain/01_automation/agentic-dev/init_repo_contract.sh +51 -0
- package/sdd/99_toolchain/01_automation/agentic-dev/repo-contract.json +76 -0
- package/sdd/99_toolchain/01_automation/agentic-dev/resolve_frontend_target.py +52 -0
- package/sdd/99_toolchain/01_automation/agentic-dev/resolve_repo_contract.py +56 -0
- package/sdd/99_toolchain/01_automation/agentic-dev/run_frontend_target.sh +100 -0
- package/sdd/99_toolchain/01_automation/agentic-dev/run_repo_phase.sh +140 -0
- package/sdd/99_toolchain/01_automation/agentic-dev/validate_json_schema.py +39 -0
- package/sdd/99_toolchain/01_automation/agentic-parity-harness-design.md +291 -0
- package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/dashboard.png +0 -0
- package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/login.png +0 -0
- package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/queue.png +0 -0
- package/sdd/99_toolchain/01_automation/assets/admin_screen_capture/support.png +0 -0
- package/sdd/99_toolchain/01_automation/assets/landing_screen_capture/home.png +0 -0
- package/sdd/99_toolchain/01_automation/assets/landing_screen_capture/login.png +0 -0
- package/sdd/99_toolchain/01_automation/assets/landing_screen_capture/workspace.png +0 -0
- package/sdd/99_toolchain/01_automation/assets/mobile_screen_capture/dashboard.png +0 -0
- package/sdd/99_toolchain/01_automation/assets/mobile_screen_capture/fulfillment.png +0 -0
- package/sdd/99_toolchain/01_automation/assets/mobile_screen_capture/login.png +0 -0
- package/sdd/99_toolchain/01_automation/assets/platform_screen_capture/dashboard.png +0 -0
- package/sdd/99_toolchain/01_automation/assets/platform_screen_capture/login.png +0 -0
- package/sdd/99_toolchain/01_automation/assets/platform_screen_capture/orders.png +0 -0
- package/sdd/99_toolchain/01_automation/build_asset_recipes.py +10 -0
- package/sdd/99_toolchain/01_automation/build_screen_spec_pdf.py +427 -0
- package/sdd/99_toolchain/01_automation/capture_screen_assets.mjs +148 -0
- package/sdd/99_toolchain/01_automation/harness-layout.md +34 -0
- package/sdd/99_toolchain/01_automation/parity-execution-tooling-design.md +319 -0
- package/sdd/99_toolchain/01_automation/playwright_exactness_manifest.py +21 -0
- package/sdd/99_toolchain/01_automation/run_playwright_exactness.py +87 -0
- package/sdd/99_toolchain/01_automation/screen_spec_manifest.py +321 -0
- package/sdd/99_toolchain/01_automation/spec_asset_builder.py +274 -0
- package/sdd/99_toolchain/01_automation/ui-contract-projection.md +79 -0
- package/sdd/99_toolchain/01_automation/ui-parity/README.md +60 -0
- package/sdd/99_toolchain/01_automation/ui-parity/cli/extract-reference-pages.mjs +2 -0
- package/sdd/99_toolchain/01_automation/ui-parity/cli/materialize-reference-assets.mjs +58 -0
- package/sdd/99_toolchain/01_automation/ui-parity/cli/normalize-reference-assets.mjs +2 -0
- package/sdd/99_toolchain/01_automation/ui-parity/cli/route-gap-report.mjs +187 -0
- package/sdd/99_toolchain/01_automation/ui-parity/cli/run-proof.mjs +50 -0
- package/sdd/99_toolchain/01_automation/ui-parity/cli/scaffold-contract.mjs +62 -0
- package/sdd/99_toolchain/01_automation/ui-parity/cli/upload-parity1.mjs +2 -0
- package/sdd/99_toolchain/01_automation/ui-parity/contracts/collector-metadata.schema.json +33 -0
- package/sdd/99_toolchain/01_automation/ui-parity/contracts/proof-result.schema.json +76 -0
- package/sdd/99_toolchain/01_automation/ui-parity/contracts/route-gap-report.schema.json +95 -0
- package/sdd/99_toolchain/01_automation/ui-parity/core/capture-runner.mjs +55 -0
- package/sdd/99_toolchain/01_automation/ui-parity/core/load-adapter.mjs +25 -0
- package/sdd/99_toolchain/01_automation/ui-parity/core/load-contract.mjs +81 -0
- package/sdd/99_toolchain/01_automation/ui-parity/core/paths.mjs +23 -0
- package/sdd/99_toolchain/01_automation/ui-parity/core/proof-runner.mjs +255 -0
- package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-artifact-layout.md +23 -0
- package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-proof-interface.md +60 -0
- package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-route-gap-interface.md +82 -0
- package/sdd/99_toolchain/01_automation/ui-parity/runtime/playwright-runtime.mjs +16 -0
- package/sdd/99_toolchain/01_automation/ui-parity/runtime/static-runtime.mjs +6 -0
- package/sdd/99_toolchain/02_policies/.gitkeep +1 -0
- package/sdd/99_toolchain/02_policies/build-ast-governance-policy.md +22 -0
- package/sdd/99_toolchain/02_policies/compose-runtime-baseline-policy.md +24 -0
- package/sdd/99_toolchain/02_policies/convention-storage-policy.md +26 -0
- package/sdd/99_toolchain/02_policies/main-push-before-dev-deploy-policy.md +27 -0
- package/sdd/99_toolchain/02_policies/otro-orchestration-policy.md +30 -0
- package/sdd/99_toolchain/02_policies/regression-verification-policy.md +22 -0
- package/sdd/99_toolchain/03_templates/.gitkeep +1 -0
- package/sdd/99_toolchain/03_templates/asset_recipe_manifest.example.py +38 -0
- package/sdd/99_toolchain/03_templates/generated_assets/README.md +11 -0
- package/sdd/99_toolchain/03_templates/generated_assets/example-brand-lockup.svg +3 -0
- package/sdd/99_toolchain/03_templates/generated_assets/example-brand-mark.svg +3 -0
- package/sdd/99_toolchain/03_templates/generated_assets/example-brand-wordmark.svg +3 -0
- package/sdd/99_toolchain/03_templates/playwright_exactness_manifest.example.py +21 -0
- package/sdd/99_toolchain/README.md +23 -0
- package/sdd/README.md +21 -0
- package/server/.dockerignore +4 -0
- package/server/.env.example +19 -0
- package/server/Dockerfile +22 -0
- package/server/Dockerfile.dev +19 -0
- package/server/README.md +33 -0
- package/server/__init__.py +0 -0
- package/server/api/__init__.py +1 -0
- package/server/api/http/__init__.py +4 -0
- package/server/api/http/app.py +53 -0
- package/server/api/http/router.py +24 -0
- package/server/config.py +52 -0
- package/server/contexts/__init__.py +12 -0
- package/server/contexts/alerts/__init__.py +1 -0
- package/server/contexts/alerts/application/__init__.py +13 -0
- package/server/contexts/alerts/application/services.py +41 -0
- package/server/contexts/alerts/contracts/__init__.py +3 -0
- package/server/contexts/alerts/contracts/http/__init__.py +3 -0
- package/server/contexts/alerts/contracts/http/router.py +37 -0
- package/server/contexts/alerts/domain/__init__.py +15 -0
- package/server/contexts/alerts/domain/models.py +29 -0
- package/server/contexts/alerts/infrastructure/__init__.py +11 -0
- package/server/contexts/alerts/infrastructure/repository.py +41 -0
- package/server/contexts/auth/__init__.py +1 -0
- package/server/contexts/auth/application/__init__.py +3 -0
- package/server/contexts/auth/application/ports.py +10 -0
- package/server/contexts/auth/application/services.py +64 -0
- package/server/contexts/auth/contracts/__init__.py +4 -0
- package/server/contexts/auth/contracts/http/__init__.py +4 -0
- package/server/contexts/auth/contracts/http/dependencies.py +37 -0
- package/server/contexts/auth/contracts/http/router.py +19 -0
- package/server/contexts/auth/domain/__init__.py +3 -0
- package/server/contexts/auth/domain/models.py +24 -0
- package/server/contexts/auth/infrastructure/__init__.py +4 -0
- package/server/contexts/auth/infrastructure/adapters/memory.py +19 -0
- package/server/contexts/auth/infrastructure/adapters/mongodb.py +24 -0
- package/server/contexts/auth/infrastructure/adapters/sqlalchemy.py +74 -0
- package/server/contexts/auth/infrastructure/repository.py +28 -0
- package/server/contexts/catalog/__init__.py +1 -0
- package/server/contexts/catalog/application/__init__.py +28 -0
- package/server/contexts/catalog/application/ports.py +15 -0
- package/server/contexts/catalog/application/services.py +154 -0
- package/server/contexts/catalog/contracts/__init__.py +3 -0
- package/server/contexts/catalog/contracts/http/__init__.py +3 -0
- package/server/contexts/catalog/contracts/http/router.py +60 -0
- package/server/contexts/catalog/domain/__init__.py +45 -0
- package/server/contexts/catalog/domain/models.py +113 -0
- package/server/contexts/catalog/infrastructure/__init__.py +4 -0
- package/server/contexts/catalog/infrastructure/adapters/memory.py +62 -0
- package/server/contexts/catalog/infrastructure/repository.py +8 -0
- package/server/contexts/fulfillment/__init__.py +1 -0
- package/server/contexts/fulfillment/application/__init__.py +13 -0
- package/server/contexts/fulfillment/application/ports.py +20 -0
- package/server/contexts/fulfillment/application/services.py +85 -0
- package/server/contexts/fulfillment/contracts/__init__.py +3 -0
- package/server/contexts/fulfillment/contracts/http/__init__.py +3 -0
- package/server/contexts/fulfillment/contracts/http/router.py +40 -0
- package/server/contexts/fulfillment/domain/__init__.py +25 -0
- package/server/contexts/fulfillment/domain/models.py +73 -0
- package/server/contexts/fulfillment/infrastructure/__init__.py +13 -0
- package/server/contexts/fulfillment/infrastructure/adapters/memory.py +43 -0
- package/server/contexts/fulfillment/infrastructure/repository.py +97 -0
- package/server/contexts/health/__init__.py +1 -0
- package/server/contexts/health/application/__init__.py +3 -0
- package/server/contexts/health/application/services.py +2 -0
- package/server/contexts/health/contracts/__init__.py +3 -0
- package/server/contexts/health/contracts/http/__init__.py +3 -0
- package/server/contexts/health/contracts/http/router.py +10 -0
- package/server/contexts/inventory/__init__.py +1 -0
- package/server/contexts/inventory/application/__init__.py +28 -0
- package/server/contexts/inventory/application/ports.py +11 -0
- package/server/contexts/inventory/application/services.py +214 -0
- package/server/contexts/inventory/contracts/__init__.py +3 -0
- package/server/contexts/inventory/contracts/http/__init__.py +3 -0
- package/server/contexts/inventory/contracts/http/router.py +82 -0
- package/server/contexts/inventory/domain/__init__.py +33 -0
- package/server/contexts/inventory/domain/models.py +93 -0
- package/server/contexts/inventory/infrastructure/__init__.py +4 -0
- package/server/contexts/inventory/infrastructure/adapters/memory.py +24 -0
- package/server/contexts/inventory/infrastructure/repository.py +8 -0
- package/server/contexts/orders/__init__.py +1 -0
- package/server/contexts/orders/application/__init__.py +19 -0
- package/server/contexts/orders/application/services.py +127 -0
- package/server/contexts/orders/contracts/__init__.py +3 -0
- package/server/contexts/orders/contracts/http/__init__.py +3 -0
- package/server/contexts/orders/contracts/http/router.py +82 -0
- package/server/contexts/orders/domain/__init__.py +29 -0
- package/server/contexts/orders/domain/models.py +95 -0
- package/server/contexts/orders/infrastructure/__init__.py +7 -0
- package/server/contexts/orders/infrastructure/repository.py +104 -0
- package/server/contexts/shipping/__init__.py +1 -0
- package/server/contexts/shipping/application/__init__.py +13 -0
- package/server/contexts/shipping/application/services.py +92 -0
- package/server/contexts/shipping/contracts/__init__.py +3 -0
- package/server/contexts/shipping/contracts/http/__init__.py +3 -0
- package/server/contexts/shipping/contracts/http/router.py +40 -0
- package/server/contexts/shipping/domain/__init__.py +19 -0
- package/server/contexts/shipping/domain/models.py +48 -0
- package/server/contexts/shipping/infrastructure/__init__.py +9 -0
- package/server/contexts/shipping/infrastructure/repository.py +50 -0
- package/server/contexts/support/__init__.py +1 -0
- package/server/contexts/support/application/__init__.py +13 -0
- package/server/contexts/support/application/services.py +29 -0
- package/server/contexts/support/contracts/__init__.py +3 -0
- package/server/contexts/support/contracts/http/__init__.py +3 -0
- package/server/contexts/support/contracts/http/router.py +40 -0
- package/server/contexts/support/domain/__init__.py +13 -0
- package/server/contexts/support/domain/models.py +27 -0
- package/server/contexts/support/infrastructure/__init__.py +11 -0
- package/server/contexts/support/infrastructure/repository.py +70 -0
- package/server/contexts/user/__init__.py +1 -0
- package/server/contexts/user/application/__init__.py +3 -0
- package/server/contexts/user/application/ports.py +11 -0
- package/server/contexts/user/application/services.py +44 -0
- package/server/contexts/user/contracts/__init__.py +3 -0
- package/server/contexts/user/contracts/http/__init__.py +3 -0
- package/server/contexts/user/contracts/http/router.py +26 -0
- package/server/contexts/user/domain/__init__.py +3 -0
- package/server/contexts/user/domain/models.py +22 -0
- package/server/contexts/user/infrastructure/__init__.py +3 -0
- package/server/contexts/user/infrastructure/adapters/memory.py +27 -0
- package/server/contexts/user/infrastructure/adapters/mongodb.py +41 -0
- package/server/contexts/user/infrastructure/adapters/sqlalchemy.py +94 -0
- package/server/contexts/user/infrastructure/factory.py +28 -0
- package/server/data/README.md +24 -0
- package/server/data/bootstrap/alerts.json +38 -0
- package/server/data/bootstrap/auth_accounts.json +18 -0
- package/server/data/bootstrap/catalog_products.json +179 -0
- package/server/data/bootstrap/fulfillment_events.json +5 -0
- package/server/data/bootstrap/fulfillment_notes.json +5 -0
- package/server/data/bootstrap/fulfillment_tasks.json +50 -0
- package/server/data/bootstrap/inventory_levels.json +80 -0
- package/server/data/bootstrap/orders.json +62 -0
- package/server/data/bootstrap/shipping_shipments.json +50 -0
- package/server/data/bootstrap/support_faqs.json +26 -0
- package/server/data/bootstrap/users.json +20 -0
- package/server/data/bootstrap_loader.py +15 -0
- package/server/docker-entrypoint.sh +56 -0
- package/server/main.py +3 -0
- package/server/pyproject.toml +36 -0
- package/server/shared/__init__.py +1 -0
- package/server/shared/application/__init__.py +3 -0
- package/server/shared/application/health.py +2 -0
- package/server/shared/infrastructure/__init__.py +10 -0
- package/server/shared/infrastructure/runtime.py +6 -0
- package/server/shared/infrastructure/security.py +33 -0
- package/server/tests/e2e/test_domain_feature_flows.py +483 -0
- package/server/tests/test_health.py +49 -0
- package/server/uv.lock +1169 -0
- package/bin/agentic-dev.js +0 -9
- package/src/cli.js +0 -37
- package/src/init-command.js +0 -230
- package/src/lib/command.js +0 -14
- package/src/lib/fs.js +0 -92
- package/src/lib/git.js +0 -57
- package/src/lib/github.js +0 -77
- package/src/lib/prompt.js +0 -52
- package/src/lib/system.js +0 -15
- package/src/lib/template.js +0 -143
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# templates data modeling
|
|
2
|
+
|
|
3
|
+
- 작성 버전: 1.0.0
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
현재 구현된 backend domain model과 저장 관점을 entity 수준으로 요약한다.
|
|
8
|
+
|
|
9
|
+
## 1. Auth Account
|
|
10
|
+
|
|
11
|
+
| Field | Type | Meaning |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| `id` | `str` | 인증 계정 식별자 |
|
|
14
|
+
| `name` | `str` | 표시 이름 |
|
|
15
|
+
| `email` | `EmailStr` | 로그인 이메일 |
|
|
16
|
+
| `role` | `str` | `admin`, `operator` 등 인증 역할 |
|
|
17
|
+
| `status` | `str` | 인증 가능 상태 |
|
|
18
|
+
| `password_hash` | `str` | credential hash |
|
|
19
|
+
|
|
20
|
+
## 2. User Profile
|
|
21
|
+
|
|
22
|
+
| Field | Type | Meaning |
|
|
23
|
+
| --- | --- | --- |
|
|
24
|
+
| `id` | `str` | 사용자 식별자 |
|
|
25
|
+
| `name` | `str` | 사용자 이름 |
|
|
26
|
+
| `email` | `EmailStr` | 연락/표시 이메일 |
|
|
27
|
+
| `role` | `str` | 운영 역할 |
|
|
28
|
+
| `status` | `str` | 활성 상태 |
|
|
29
|
+
| `timezone` | `str` | 지역/표시용 timezone |
|
|
30
|
+
| `last_login_at` | `str` | 최근 로그인 시각 |
|
|
31
|
+
|
|
32
|
+
## 3. Catalog Product
|
|
33
|
+
|
|
34
|
+
| Field | Type | Meaning |
|
|
35
|
+
| --- | --- | --- |
|
|
36
|
+
| `id` | `str` | 상품 식별자 |
|
|
37
|
+
| `slug` | `str` | URL/업무용 유니크 slug |
|
|
38
|
+
| `name` | `str` | 상품명 |
|
|
39
|
+
| `brand` | `str` | 브랜드명 |
|
|
40
|
+
| `category` | `str` | 카테고리 |
|
|
41
|
+
| `status` | `draft|active|archived` | 카탈로그 노출 상태 |
|
|
42
|
+
| `short_description` | `str` | 카드용 요약 문구 |
|
|
43
|
+
| `description` | `str` | 상세 설명 |
|
|
44
|
+
| `hero_image` | `MediaAsset` | 대표 이미지 |
|
|
45
|
+
| `gallery` | `list[MediaAsset]` | 추가 이미지 |
|
|
46
|
+
| `price` | `Money` | 판매가 |
|
|
47
|
+
| `compare_at_price` | `Money?` | 비교가 |
|
|
48
|
+
| `tags` | `list[str]` | 태그 |
|
|
49
|
+
| `attributes` | `list[ProductAttribute]` | 속성 리스트 |
|
|
50
|
+
| `variants` | `list[ProductVariant]` | SKU variant 리스트 |
|
|
51
|
+
| `created_at` | `str` | 생성 시각 |
|
|
52
|
+
| `updated_at` | `str` | 수정 시각 |
|
|
53
|
+
|
|
54
|
+
## 4. Inventory Level
|
|
55
|
+
|
|
56
|
+
| Field | Type | Meaning |
|
|
57
|
+
| --- | --- | --- |
|
|
58
|
+
| `sku` | `str` | 재고 식별 단위 |
|
|
59
|
+
| `product_id` | `str` | catalog product 참조 |
|
|
60
|
+
| `product_name` | `str` | 표시용 상품명 |
|
|
61
|
+
| `variant_name` | `str` | variant 이름 |
|
|
62
|
+
| `location_id` | `str` | 물류 거점 식별자 |
|
|
63
|
+
| `location_name` | `str` | 거점 이름 |
|
|
64
|
+
| `on_hand` | `int` | 실재고 |
|
|
65
|
+
| `reserved` | `int` | 선점 재고 |
|
|
66
|
+
| `safety_stock` | `int` | 안전 재고 |
|
|
67
|
+
| `reorder_point` | `int` | 재주문 기준점 |
|
|
68
|
+
| `updated_at` | `str` | 수정 시각 |
|
|
69
|
+
|
|
70
|
+
## 5. Order
|
|
71
|
+
|
|
72
|
+
| Field | Type | Meaning |
|
|
73
|
+
| --- | --- | --- |
|
|
74
|
+
| `id` | `str` | 주문 식별자 |
|
|
75
|
+
| `product_id` | `str` | 상품 참조 |
|
|
76
|
+
| `product_name` | `str` | 표시용 상품명 |
|
|
77
|
+
| `customer_name` | `str` | 고객명 |
|
|
78
|
+
| `seller_name` | `str` | 판매자/셀러명 |
|
|
79
|
+
| `status` | `str` | 결제/주문 상태 |
|
|
80
|
+
| `fulfillment_status` | `str` | 이행 상태 |
|
|
81
|
+
| `created_at` | `str` | 생성 시각 |
|
|
82
|
+
| `amount_krw` | `int` | 주문 금액 |
|
|
83
|
+
| `risk` | `str` | 운영 위험도 |
|
|
84
|
+
| `stage` | `str` | 운영 단계 |
|
|
85
|
+
| `sla` | `str` | SLA 표시 |
|
|
86
|
+
| `is_new_today` | `bool` | 당일 신규 여부 |
|
|
87
|
+
|
|
88
|
+
## 6. Fulfillment Task
|
|
89
|
+
|
|
90
|
+
| Field | Type | Meaning |
|
|
91
|
+
| --- | --- | --- |
|
|
92
|
+
| `id` | `str` | task 식별자 |
|
|
93
|
+
| `order_id` | `str` | 주문 참조 |
|
|
94
|
+
| `title` | `str` | 작업 제목 |
|
|
95
|
+
| `assignee` | `str` | 담당자 |
|
|
96
|
+
| `stage` | `str` | 이행 단계 |
|
|
97
|
+
| `status` | `str` | task 상태 |
|
|
98
|
+
| `priority` | `str` | 우선순위 |
|
|
99
|
+
| `channel` | `str` | 유입 채널 |
|
|
100
|
+
| `sla_minutes` | `int` | SLA 분 단위 |
|
|
101
|
+
| `units` | `int` | 처리 수량 |
|
|
102
|
+
|
|
103
|
+
## 7. Support FAQ
|
|
104
|
+
|
|
105
|
+
| Field | Type | Meaning |
|
|
106
|
+
| --- | --- | --- |
|
|
107
|
+
| `id` | `str` | FAQ 식별자 |
|
|
108
|
+
| `question` | `str` | 질문 |
|
|
109
|
+
| `answer` | `str` | 답변 |
|
|
110
|
+
| `category` | `str` | FAQ 카테고리 |
|
|
111
|
+
| `visibility` | `str` | 노출 여부 |
|
|
112
|
+
| `updated_at` | `str` | 수정 시각 |
|
|
113
|
+
|
|
114
|
+
## 8. Key Policy
|
|
115
|
+
|
|
116
|
+
- 현재 템플릿은 string id를 사용한다.
|
|
117
|
+
- 실제 서비스 구현 시 time-ordered UUID v7을 기본 식별자로 채택한다.
|
|
118
|
+
- legacy numeric id는 새 이커머스 baseline에서 사용하지 않는다.
|
|
119
|
+
- `auth`와 `user`는 같은 사람을 표현하더라도 저장 목적이 다르므로 독립 레코드로 유지한다.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# templates server contract
|
|
2
|
+
|
|
3
|
+
- 작성 버전: 1.0.0
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
현재 server runtime이 제공하는 HTTP contract를 구현 기준으로 정리한다.
|
|
8
|
+
|
|
9
|
+
## 1. HTTP Endpoint Matrix
|
|
10
|
+
|
|
11
|
+
| Method | Path | Domain | Purpose | Response |
|
|
12
|
+
| --- | --- | --- | --- | --- |
|
|
13
|
+
| `GET` | `/health` | health | root health probe | `{"status":"ok"}` |
|
|
14
|
+
| `GET` | `/api/v1/status` | health | API health/status probe | `{"service":"template-server","status":"healthy"}` |
|
|
15
|
+
| `POST` | `/api/v1/auth/login` | auth | credential 로그인과 token 발급 | `AuthToken` |
|
|
16
|
+
| `GET` | `/api/v1/auth/me` | auth | bearer token 기반 현재 사용자 조회 | `AuthenticatedUser` |
|
|
17
|
+
| `GET` | `/api/v1/users` | user | 사용자 summary 목록 조회 | `list[UserSummary]` |
|
|
18
|
+
| `GET` | `/api/v1/users/{user_id}` | user | 단일 사용자 상세 조회 | `UserDetail` |
|
|
19
|
+
| `PATCH` | `/api/v1/users/{user_id}/status` | user | 사용자 상태 변경 | `UserDetail` |
|
|
20
|
+
| `GET` | `/api/v1/catalog/products` | catalog | 공개/운영 상품 목록 조회 | `list[ProductSummary]` |
|
|
21
|
+
| `GET` | `/api/v1/catalog/products/{product_id}` | catalog | 단일 상품 상세 조회 | `ProductDetail` |
|
|
22
|
+
| `POST` | `/api/v1/catalog/products` | catalog | 상품 생성 | `ProductDetail` |
|
|
23
|
+
| `PUT` | `/api/v1/catalog/products/{product_id}` | catalog | 상품 수정 | `ProductDetail` |
|
|
24
|
+
| `PATCH` | `/api/v1/catalog/products/{product_id}/status` | catalog | 상품 상태 변경 | `ProductDetail` |
|
|
25
|
+
| `GET` | `/api/v1/inventory/levels` | inventory | 재고 레벨 목록 조회 | `list[InventoryLevel]` |
|
|
26
|
+
| `GET` | `/api/v1/inventory/levels/{sku}/{location_id}` | inventory | 단일 재고 레벨 조회 | `InventoryLevel` |
|
|
27
|
+
| `POST` | `/api/v1/inventory/levels/{sku}/{location_id}/adjustments` | inventory | 재고 증감 조정 | `InventoryMutationReceipt` |
|
|
28
|
+
| `POST` | `/api/v1/inventory/levels/{sku}/{location_id}/reservations` | inventory | 재고 선점 | `InventoryMutationReceipt` |
|
|
29
|
+
| `POST` | `/api/v1/inventory/levels/{sku}/{location_id}/releases` | inventory | 재고 선점 해제 | `InventoryMutationReceipt` |
|
|
30
|
+
| `PUT` | `/api/v1/inventory/levels/{sku}/{location_id}` | inventory | 재고 절대값 재설정 | `InventoryMutationReceipt` |
|
|
31
|
+
| `GET` | `/api/v1/orders/overview` | orders | platform dashboard overview 조회 | `OrderOverview` |
|
|
32
|
+
| `GET` | `/api/v1/orders` | orders | platform order table row 조회 | `list[OrderSummary]` |
|
|
33
|
+
| `POST` | `/api/v1/orders` | orders | 주문 생성 | `OrderRecord` |
|
|
34
|
+
| `PATCH` | `/api/v1/orders/{order_id}/status` | orders | 주문 상태 전이 | `OrderStatusTransition` |
|
|
35
|
+
| `GET` | `/api/v1/orders/admin/overview` | orders | admin dashboard 운영 overview 조회 | `AdminOrderOverview` |
|
|
36
|
+
| `GET` | `/api/v1/orders/admin/queue` | orders | admin queue table row 조회 | `list[AdminQueueItem]` |
|
|
37
|
+
| `GET` | `/api/v1/shipping/overview` | shipping | mobile 배송 overview 조회 | `ShippingOverview` |
|
|
38
|
+
| `GET` | `/api/v1/shipping/shipments` | shipping | shipment 목록 조회 | `list[ShipmentSummary]` |
|
|
39
|
+
| `PATCH` | `/api/v1/shipping/shipments/{shipment_id}/status` | shipping | 배송 상태 전이 | `ShipmentStatusTransition` |
|
|
40
|
+
| `GET` | `/api/v1/alerts` | alerts | admin 운영 알람 feed 조회 | `AlertsPayload` |
|
|
41
|
+
| `POST` | `/api/v1/alerts/{alert_id}/read` | alerts | 운영 알람 1건 읽음 처리 | `AlertReadResult` |
|
|
42
|
+
| `POST` | `/api/v1/alerts/read-all` | alerts | 운영 알람 전체 읽음 처리 | `AlertsReadAllResult` |
|
|
43
|
+
| `GET` | `/api/v1/support/faqs` | support | admin FAQ 목록 조회 | `list[SupportFaq]` |
|
|
44
|
+
| `POST` | `/api/v1/support/faqs` | support | FAQ 생성 | `SupportFaqRecord` |
|
|
45
|
+
| `PATCH` | `/api/v1/support/faqs/{faq_id}/visibility` | support | FAQ visibility 변경 | `SupportFaqRecord` |
|
|
46
|
+
| `GET` | `/api/v1/fulfillment/overview` | fulfillment | mobile dashboard 운영 overview 조회 | `FulfillmentOverview` |
|
|
47
|
+
| `GET` | `/api/v1/fulfillment/board` | fulfillment | mobile fulfillment board 조회 | `FulfillmentBoardPayload` |
|
|
48
|
+
| `PATCH` | `/api/v1/fulfillment/tasks/{task_id}/status` | fulfillment | fulfillment task 상태 전이 | `FulfillmentTaskStatusTransition` |
|
|
49
|
+
|
|
50
|
+
## 2. Auth Contract
|
|
51
|
+
|
|
52
|
+
- 인증 방식: `Authorization: Bearer <token>`
|
|
53
|
+
- login 입력: `email`, `password`
|
|
54
|
+
- login 성공 시 `access_token`, `token_type`, `user_id` 반환
|
|
55
|
+
- `auth/me`는 유효 token subject를 `AuthenticatedUser`로 해석
|
|
56
|
+
- `users`, `catalog` command, `inventory`, `orders`, `shipping`, `alerts`, `support`, `fulfillment`는 보호된 contract다
|
|
57
|
+
|
|
58
|
+
## 3. Error Baseline
|
|
59
|
+
|
|
60
|
+
- invalid credential: `401 Invalid credentials`
|
|
61
|
+
- invalid token: `401 Invalid token`
|
|
62
|
+
- forbidden role: `403 Forbidden`
|
|
63
|
+
- missing resource:
|
|
64
|
+
- HTTP: `404 ... not found`
|
|
65
|
+
- conflict:
|
|
66
|
+
- duplicate catalog slug: `409 Catalog product slug already exists`
|
|
67
|
+
- invalid inventory mutation: `409 ...`
|
|
68
|
+
|
|
69
|
+
## 4. Frontend Binding Notes
|
|
70
|
+
|
|
71
|
+
- `client/platform`
|
|
72
|
+
- `/`는 `GET /api/v1/orders/overview`를 소비한다.
|
|
73
|
+
- `/orders`는 `GET /api/v1/orders`를 소비한다.
|
|
74
|
+
- `client/admin`
|
|
75
|
+
- `/`는 `GET /api/v1/orders/admin/overview`를 소비한다.
|
|
76
|
+
- admin shell과 dashboard는 `GET /api/v1/alerts`를 운영 알람 source로 사용한다.
|
|
77
|
+
- `/queue`는 `GET /api/v1/orders/admin/queue`를 소비한다.
|
|
78
|
+
- `/support`는 `GET /api/v1/support/faqs`를 소비한다.
|
|
79
|
+
- `client/mobile`
|
|
80
|
+
- `/`는 `GET /api/v1/fulfillment/overview`를 소비한다.
|
|
81
|
+
- `/fulfillment`는 `GET /api/v1/fulfillment/board`를 소비한다.
|
|
82
|
+
- `/shipping`은 `GET /api/v1/shipping/overview`, `GET /api/v1/shipping/shipments`를 소비한다.
|
|
83
|
+
- `client/landing`
|
|
84
|
+
- `/`와 `/workspace`는 `GET /api/v1/catalog/products`를 live catalog surface로 사용한다.
|
|
85
|
+
- auth flow는 네 app 모두 `POST /api/v1/auth/login`과 `GET /api/v1/auth/me`를 유지한다.
|
|
86
|
+
|
|
87
|
+
## 5. Stack Notes
|
|
88
|
+
|
|
89
|
+
- HTTP: `FastAPI 0.116.x + Uvicorn 0.35.x`
|
|
90
|
+
- Compose runtime: `server`
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# templates runtime and cicd baseline
|
|
2
|
+
|
|
3
|
+
- 작성 버전: 1.0.0
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
템플릿 저장소의 root compose runtime baseline과 CI baseline을 정리한다.
|
|
8
|
+
|
|
9
|
+
## 1. Compose Runtime Baseline
|
|
10
|
+
|
|
11
|
+
| Surface | Default Port |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| landing | `3000` |
|
|
14
|
+
| platform | `3001` |
|
|
15
|
+
| mobile | `3002` |
|
|
16
|
+
| admin | `4000` |
|
|
17
|
+
| api | `8000` |
|
|
18
|
+
|
|
19
|
+
## 2. Compose Rule
|
|
20
|
+
|
|
21
|
+
- root `compose.yml`이 canonical dev-focused runtime baseline이다.
|
|
22
|
+
- dedicated host용 DEV(개발계)/PROD overlay는 `infra/compose/dev.yml`, `infra/compose/prod.yml`을 사용한다.
|
|
23
|
+
- 환경변수 contract는 `.env.example`을 source-of-truth로 유지한다.
|
|
24
|
+
|
|
25
|
+
## 3. CI/CD Rule
|
|
26
|
+
|
|
27
|
+
- 이 레포는 템플릿 저장소이므로 실제 배포를 수행하지 않는다.
|
|
28
|
+
- `.github/workflows`는 다음만 책임진다.
|
|
29
|
+
- root compose/overlay config validation
|
|
30
|
+
- backend test
|
|
31
|
+
- frontend build matrix
|
|
32
|
+
- AST build audit와 parity target resolution
|
|
33
|
+
- canonical Terraform skeleton validate
|
|
34
|
+
|
|
35
|
+
## 4. Delivery Note
|
|
36
|
+
|
|
37
|
+
- 실제 서비스 레포로 clone된 뒤 DEV/PROD deploy workflow를 추가한다.
|
|
38
|
+
- template repo의 workflow는 `검증용 CI`만 유지한다.
|
|
39
|
+
|
|
40
|
+
## 5. Remote Infra Template Layout
|
|
41
|
+
|
|
42
|
+
- canonical Terraform split은 `infra/terraform/aws/data`, `infra/terraform/aws/domain`, `infra/terraform/openstack/server`다.
|
|
43
|
+
- `infra/terraform/openstack/dev`, `infra/terraform/openstack/prod`는 lower-level starter root로 유지한다.
|
|
44
|
+
- 공통 OpenStack host/network/security group 로직은 `infra/terraform/openstack/modules/environment_host`에 둔다.
|
|
45
|
+
- DEV(개발계)와 PROD는 별도 Terraform state를 사용한다.
|
|
46
|
+
- cloud-init compose 자동 기동은 각 환경 root의 `compose_env_content`와 `deploy_compose_on_boot`로 제어한다.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# templates frontend api integration
|
|
2
|
+
|
|
3
|
+
- 작성 버전: 1.0.0
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
현재 frontend와 backend의 실제 연결 지점을 정리한다.
|
|
8
|
+
|
|
9
|
+
## 1. Shared Integration Rule
|
|
10
|
+
|
|
11
|
+
- 네 개의 frontend 모두 공통 `auth` contract를 사용한다.
|
|
12
|
+
- `POST /api/v1/auth/login`으로 access token을 발급받고 로컬 storage에 저장한다.
|
|
13
|
+
- `GET /api/v1/auth/me`로 초기 세션을 복원한다.
|
|
14
|
+
|
|
15
|
+
## 2. Service Coupling Summary
|
|
16
|
+
|
|
17
|
+
| Service | Real Backend Coupling | Note |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| platform | `auth`, `orders` | dashboard overview와 orders table을 live contract에 연결 |
|
|
20
|
+
| admin | `auth`, `orders`, `alerts`, `support` | overview/queue/support surface와 alerts drawer를 live contract에 연결 |
|
|
21
|
+
| mobile | `auth`, `fulfillment`, `shipping` | dashboard overview와 fulfillment/shipping surface를 live contract에 연결 |
|
|
22
|
+
| landing | `auth`, `catalog` | home/workspace에서 catalog products를 읽어 public/protected surface를 구성 |
|
|
23
|
+
|
|
24
|
+
## 3. Coupling Detail
|
|
25
|
+
|
|
26
|
+
- platform
|
|
27
|
+
- bearer session은 기존 `AuthProvider`가 유지한다.
|
|
28
|
+
- page load 시 `orders/overview`, `orders`를 fetch하고 search는 client-side filter로 처리한다.
|
|
29
|
+
- admin
|
|
30
|
+
- protected route는 그대로 유지한다.
|
|
31
|
+
- dashboard는 `orders/admin/overview`와 `alerts`를 병렬 fetch한다.
|
|
32
|
+
- queue, support, alerts drawer는 개별 page-level effect로 fetch한다.
|
|
33
|
+
- mobile
|
|
34
|
+
- overview와 board payload는 mobile shell 진입 후 fetch한다.
|
|
35
|
+
- status/tone badge는 response의 string field를 frontend palette에 매핑한다.
|
|
36
|
+
- board route는 `/fulfillment`다.
|
|
37
|
+
- shipping route는 `/shipping`이고 shipment status feed를 별도 fetch한다.
|
|
38
|
+
- landing
|
|
39
|
+
- public home에서도 `catalog/products`를 읽어 live catalog proof를 보여준다.
|
|
40
|
+
- protected workspace는 auth user summary와 catalog product grid를 함께 노출한다.
|
|
41
|
+
|
|
42
|
+
## 4. Known Gaps
|
|
43
|
+
|
|
44
|
+
- platform/admin은 아직 catalog/inventory command surface를 직접 소비하지 않는다.
|
|
45
|
+
- order 생성, fulfillment 전이, shipping 전이, support create/update, alerts read는 backend contract로 존재하지만 frontend action UI는 baseline 최소 액션 중심이다.
|
|
46
|
+
- landing은 catalog read를 public/protected दोनों surface에 재사용하지만 category/detail 분해까지는 아직 없다.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# templates test strategy
|
|
2
|
+
|
|
3
|
+
- 작성 버전: 1.0.0
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
template baseline을 유지하기 위한 테스트 전략을 정의한다.
|
|
8
|
+
|
|
9
|
+
## 1. Backend
|
|
10
|
+
|
|
11
|
+
- `server/tests/e2e/test_domain_feature_flows.py`
|
|
12
|
+
- `AUT-F001`
|
|
13
|
+
- `AUT-F002`
|
|
14
|
+
- `USR-F001`
|
|
15
|
+
- `USR-F002`
|
|
16
|
+
- `USR-F003`
|
|
17
|
+
- `CAT-F001`
|
|
18
|
+
- `CAT-F003`
|
|
19
|
+
- `CAT-F004`
|
|
20
|
+
- `CAT-F005`
|
|
21
|
+
- `INV-F001`
|
|
22
|
+
- `INV-F002`
|
|
23
|
+
- `INV-F003`
|
|
24
|
+
- `INV-F004`
|
|
25
|
+
- `INV-F005`
|
|
26
|
+
- `INV-F006`
|
|
27
|
+
- `ORD-F001`
|
|
28
|
+
- `ORD-F002`
|
|
29
|
+
- `ORD-F003`
|
|
30
|
+
- `ORD-F004`
|
|
31
|
+
- `ORD-F005`
|
|
32
|
+
- `ORD-F006`
|
|
33
|
+
- `SHP-F001`
|
|
34
|
+
- `SHP-F002`
|
|
35
|
+
- `SHP-F003`
|
|
36
|
+
- `ALR-F001`
|
|
37
|
+
- `ALR-F002`
|
|
38
|
+
- `ALR-F003`
|
|
39
|
+
- `SUP-F001`
|
|
40
|
+
- `SUP-F002`
|
|
41
|
+
- `SUP-F003`
|
|
42
|
+
- `FUL-F001`
|
|
43
|
+
- `FUL-F002`
|
|
44
|
+
- `FUL-F003`
|
|
45
|
+
- `server/tests/test_health.py`
|
|
46
|
+
- `HLT-F001`
|
|
47
|
+
- `HLT-F002`
|
|
48
|
+
- auth/user smoke
|
|
49
|
+
|
|
50
|
+
## 2. Frontend
|
|
51
|
+
|
|
52
|
+
- `platform`, `admin`, `mobile`, `landing`는 각 서비스별 production build를 통과해야 한다.
|
|
53
|
+
- screen spec은 `PLT-S001`, `ADM-S001`, `MOB-S001`, `LND-S001` 규칙으로 구현 route와 관련 feature를 함께 검증한다.
|
|
54
|
+
- parity harness가 활성화되면 route-gap과 proof artifact를 추가 검증한다.
|
|
55
|
+
|
|
56
|
+
## 3. CI Gate
|
|
57
|
+
|
|
58
|
+
- backend: `./.venv/bin/python -m pytest -q` 또는 CI 환경의 `uv run pytest -q`
|
|
59
|
+
- frontend: `pnpm build` matrix
|
|
60
|
+
- toolchain: `build_screen_spec_pdf.py`, `capture_screen_assets.mjs`, `new_plan.sh` shell validation
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Planning Index
|
|
2
|
+
|
|
3
|
+
- [01_feature/INDEX.md](./01_feature/INDEX.md)
|
|
4
|
+
- [02_screen/INDEX.md](./02_screen/INDEX.md)
|
|
5
|
+
- [03_architecture/INDEX.md](./03_architecture/INDEX.md)
|
|
6
|
+
- [04_data/INDEX.md](./04_data/INDEX.md)
|
|
7
|
+
- [05_api/README.md](./05_api/README.md)
|
|
8
|
+
- [06_iac/README.md](./06_iac/README.md)
|
|
9
|
+
- [07_integration/README.md](./07_integration/README.md)
|
|
10
|
+
- [08_nonfunctional/README.md](./08_nonfunctional/README.md)
|
|
11
|
+
- [09_security/README.md](./09_security/README.md)
|
|
12
|
+
- [10_test/README.md](./10_test/README.md)
|
|
13
|
+
|
|
14
|
+
## Structure Rule
|
|
15
|
+
|
|
16
|
+
- `01_feature`, `02_screen`는 실제 서비스 표면(`platform`, `mobile`, `admin`, `landing`) 기준으로 유지한다.
|
|
17
|
+
- `03_architecture` 이후는 서비스별 실산출물이 없으면 common-first로 유지한다.
|
|
18
|
+
- `03_architecture`는 공통 문서를 먼저 두고 필요 시 `frontend/`, `backend/`, `infra/`, `tech-research/`로 세분화한다.
|
|
19
|
+
- 데이터 모델링은 `04_data`에서 다루고 architecture 문서에는 중복 기록하지 않는다.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Planning Governance
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
- `sdd/01_planning/`은 현재 구현과 검수의 기준이 되는 canonical spec을 유지한다.
|
|
6
|
+
- feature, screen, architecture, data, API, IAC, integration, nonfunctional, security, test planning 모두 현재 기준만 남긴다.
|
|
7
|
+
|
|
8
|
+
## Final-Only Rule
|
|
9
|
+
|
|
10
|
+
- planning도 날짜별 작업 메모나 히스토리성 보조 문서를 쌓지 않는다.
|
|
11
|
+
- 계속 참고할 가치가 있는 리서치만 현재형 문서로 유지한다.
|
|
12
|
+
- source reference가 필요하면 현재 canonical source만 남기고, raw capture log나 일회성 추출 로그는 두지 않는다.
|
|
13
|
+
|
|
14
|
+
## Structure Rule
|
|
15
|
+
|
|
16
|
+
- `01_feature`, `02_screen`는 실제 서비스 표면 기준으로 유지한다.
|
|
17
|
+
- `03_architecture` 이후 planning 폴더는 서비스별 실산출물이 없으면 common-first 구조로 유지한다.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Feature TODO Rule
|
|
2
|
+
|
|
3
|
+
## Common Rule
|
|
4
|
+
|
|
5
|
+
- 이 폴더는 `sdd/02_plan` 아래에서 에이전트의 현재 개발 계획을 관리한다.
|
|
6
|
+
- 다른 `02_plan` 폴더와 동일하게 `README.md + durable TODO 파일`만 유지하고, dated plan history는 두지 않는다.
|
|
7
|
+
|
|
8
|
+
## Canonical Rule
|
|
9
|
+
|
|
10
|
+
- 기능 계획은 domain별 durable TODO 파일로 관리한다.
|
|
11
|
+
- 신규 작업이 생겨도 날짜별 파일을 추가하지 않는다.
|
|
12
|
+
- 같은 domain 파일 안에서는 canonical 기능코드 기준 표만 계속 갱신한다.
|
|
13
|
+
- service feature spec은 source reference로만 사용하고, active TODO는 domain 파일만 유지한다.
|
|
14
|
+
|
|
15
|
+
## Naming
|
|
16
|
+
|
|
17
|
+
- 파일명은 날짜 prefix를 쓰지 않는다.
|
|
18
|
+
- 권장 형식: `{domain}_todos.md`
|
|
19
|
+
|
|
20
|
+
## Location
|
|
21
|
+
|
|
22
|
+
- active feature TODO는 `sdd/02_plan/01_feature/` root에 둔다.
|
|
23
|
+
|
|
24
|
+
## Minimum Sections
|
|
25
|
+
|
|
26
|
+
- domain summary
|
|
27
|
+
- feature items
|
|
28
|
+
- acceptance criteria
|
|
29
|
+
- current notes
|
|
30
|
+
- latest verification
|
|
31
|
+
|
|
32
|
+
## Template
|
|
33
|
+
|
|
34
|
+
- [`_feature_todo_template.md`](_feature_todo_template.md)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# {domain code} {domain name}
|
|
2
|
+
|
|
3
|
+
- Owner: Codex
|
|
4
|
+
- Status: active
|
|
5
|
+
|
|
6
|
+
## Domain Summary
|
|
7
|
+
|
|
8
|
+
- domain code:
|
|
9
|
+
- canonical source:
|
|
10
|
+
- update rule: 이 파일 안에서 feature code 기준으로 계속 갱신한다.
|
|
11
|
+
|
|
12
|
+
## Feature Items
|
|
13
|
+
|
|
14
|
+
| Feature Code | Use Case | Status | Current Notes |
|
|
15
|
+
| --- | --- | --- | --- |
|
|
16
|
+
| `{DOMAIN}-F001` | | `planned` | |
|
|
17
|
+
|
|
18
|
+
## Acceptance Criteria
|
|
19
|
+
|
|
20
|
+
- [ ] 이 파일이 해당 domain feature TODO의 single source of truth로 유지된다.
|
|
21
|
+
- [ ] 신규 작업은 해당 feature code row와 current notes만 갱신한다.
|
|
22
|
+
|
|
23
|
+
## Current Notes
|
|
24
|
+
|
|
25
|
+
- TODO는 canonical domain feature code 기준으로만 유지한다.
|
|
26
|
+
|
|
27
|
+
## Latest Verification
|
|
28
|
+
|
|
29
|
+
- current plan normalization reference: `sdd/02_plan/01_feature/<domain>_todos.md`
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Screen TODO Index
|
|
2
|
+
|
|
3
|
+
## Canonical Sources
|
|
4
|
+
|
|
5
|
+
- [mobile_screen_spec.pdf](../../01_planning/02_screen/mobile_screen_spec.pdf)
|
|
6
|
+
- [platform_screen_spec.pdf](../../01_planning/02_screen/platform_screen_spec.pdf)
|
|
7
|
+
- [admin_screen_spec.pdf](../../01_planning/02_screen/admin_screen_spec.pdf)
|
|
8
|
+
- [landing_screen_spec.pdf](../../01_planning/02_screen/landing_screen_spec.pdf)
|
|
9
|
+
|
|
10
|
+
## Current Planning Templates
|
|
11
|
+
|
|
12
|
+
- [README.md](./README.md)
|
|
13
|
+
- [_screen_todo_template.md](./_screen_todo_template.md)
|
|
14
|
+
|
|
15
|
+
## Naming Rule
|
|
16
|
+
|
|
17
|
+
- active screen plan file: `<service>_todos.md`
|
|
18
|
+
- screen section identifier inside file: `{SERVICE}-S{NNN}`
|
|
19
|
+
- mobile legacy source key는 필요할 때만 문서 내부에서 `APP_###` field로 기록한다.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Screen TODO Rule
|
|
2
|
+
|
|
3
|
+
## Common Rule
|
|
4
|
+
|
|
5
|
+
- 이 폴더는 `sdd/02_plan` 아래에서 에이전트의 현재 개발 계획을 관리한다.
|
|
6
|
+
- 다른 `02_plan` 폴더와 동일하게 `README.md + durable TODO 파일`만 유지하고, dated plan history는 두지 않는다.
|
|
7
|
+
- 개발계가 있는 화면 작업은 `구현 -> build -> DEV(개발계) 배포 -> DEV 검수 -> 같은 TODO 파일 갱신`을 기본 루틴으로 둔다.
|
|
8
|
+
|
|
9
|
+
## Canonical Rule
|
|
10
|
+
|
|
11
|
+
- 화면 계획은 service별 durable TODO 파일로 관리한다.
|
|
12
|
+
- `01_feature`와 동일하게 날짜별 작업 문서를 계속 추가하지 않는다.
|
|
13
|
+
- 같은 service 파일 안에서 화면코드 기준으로 계속 갱신한다.
|
|
14
|
+
- mobile source key인 `APP_###`는 파일명이 아니라 문서 내부 field로만 기록한다.
|
|
15
|
+
- 과거 screen plan 문서는 별도 보관하지 않고, 현재 기준 README와 service TODO만 유지한다.
|
|
16
|
+
|
|
17
|
+
## Location
|
|
18
|
+
|
|
19
|
+
- 서비스별 화면 TODO는 `sdd/02_plan/02_screen/` root에 둔다.
|
|
20
|
+
- 예:
|
|
21
|
+
- `sdd/02_plan/02_screen/mobile_todos.md`
|
|
22
|
+
- `sdd/02_plan/02_screen/platform_todos.md`
|
|
23
|
+
|
|
24
|
+
## Naming
|
|
25
|
+
|
|
26
|
+
- 파일명은 날짜 prefix를 쓰지 않는다.
|
|
27
|
+
- 권장 형식: `{service}_todos.md`
|
|
28
|
+
|
|
29
|
+
## Minimum Sections
|
|
30
|
+
|
|
31
|
+
- service summary
|
|
32
|
+
- shared constraints or baseline
|
|
33
|
+
- screen items
|
|
34
|
+
- delivery phases or backlog
|
|
35
|
+
- latest verification references
|
|
36
|
+
|
|
37
|
+
## Template
|
|
38
|
+
|
|
39
|
+
- [`_screen_todo_template.md`](_screen_todo_template.md)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# {service} screen TODO
|
|
2
|
+
|
|
3
|
+
- Owner: Codex
|
|
4
|
+
- Status: active
|
|
5
|
+
|
|
6
|
+
## Service Summary
|
|
7
|
+
|
|
8
|
+
- service:
|
|
9
|
+
- canonical source:
|
|
10
|
+
- update rule: 이 파일 안에서 화면코드 기준으로 계속 갱신한다.
|
|
11
|
+
|
|
12
|
+
## Shared Constraints
|
|
13
|
+
|
|
14
|
+
- source key rule:
|
|
15
|
+
- route baseline:
|
|
16
|
+
- shared API/modeling note:
|
|
17
|
+
|
|
18
|
+
## Screen Items
|
|
19
|
+
|
|
20
|
+
### {screen code} {screen name}
|
|
21
|
+
|
|
22
|
+
#### Screen Summary
|
|
23
|
+
|
|
24
|
+
- source key:
|
|
25
|
+
- route:
|
|
26
|
+
- retained runtime tree:
|
|
27
|
+
- local exactness suite id:
|
|
28
|
+
- canonical runner command: `python3 sdd/99_toolchain/01_automation/run_playwright_exactness.py --suite <suite-id> --base-url <url>`
|
|
29
|
+
|
|
30
|
+
#### Acceptance Criteria
|
|
31
|
+
|
|
32
|
+
- [ ]
|
|
33
|
+
- [ ] relevant builder/design guide baseline is current for this surface
|
|
34
|
+
- [ ] Playwright exactness suite exists or is extended in the same task
|
|
35
|
+
- [ ] verify artifact path (`json/png`) is identified before implementation closes
|
|
36
|
+
|
|
37
|
+
#### Open TODO
|
|
38
|
+
|
|
39
|
+
- [ ]
|
|
40
|
+
|
|
41
|
+
#### Current Notes
|
|
42
|
+
|
|
43
|
+
- current scope/status notes only
|
|
44
|
+
- use Browser Use/manual capture only as supplemental diagnosis when a Playwright suite already exists
|
|
45
|
+
|
|
46
|
+
#### Latest Verification
|
|
47
|
+
|
|
48
|
+
- current build/verify references:
|
|
49
|
+
- latest exactness command:
|
|
50
|
+
- latest exactness artifact:
|
|
51
|
+
|
|
52
|
+
## Delivery Phases
|
|
53
|
+
|
|
54
|
+
- `P0`:
|
|
55
|
+
- `P1`:
|
|
56
|
+
- `P2`:
|
|
57
|
+
|
|
58
|
+
## Current Notes
|
|
59
|
+
|
|
60
|
+
- current service-level notes only
|