agentic-dev 0.2.3 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/.agent/prd.json +1 -1
  2. package/.agent/prompt.md +1 -1
  3. package/.claude/CLAUDE.md +1 -1
  4. package/.claude/agents/db-dev.md +1 -1
  5. package/.claude/agents/frontend-dev.md +1 -1
  6. package/.claude/agents/test-dev.md +1 -1
  7. package/.claude/skills/sdd/SKILL.md +9 -9
  8. package/.claude/skills/sdd/references/section-map.md +5 -5
  9. package/.codex/skills/sdd/SKILL.md +9 -9
  10. package/.codex/skills/sdd/references/section-map.md +5 -5
  11. package/.env.example +2 -2
  12. package/AGENTS.md +4 -4
  13. package/README.md +48 -15
  14. package/SDD_SKILL.md +7 -7
  15. package/bin/agentic-dev.mjs +53 -18
  16. package/client/admin/scripts/ui-parity-admin-adapter.mjs +1 -1
  17. package/client/landing/scripts/ui-parity-landing-adapter.mjs +1 -1
  18. package/client/mobile/scripts/ui-parity-mobile-adapter.mjs +1 -1
  19. package/client/{platform → web}/Dockerfile +3 -3
  20. package/client/web/Dockerfile.dev +18 -0
  21. package/client/{platform → web}/README.md +3 -3
  22. package/client/{platform → web}/index.html +1 -1
  23. package/client/{platform → web}/package.json +7 -7
  24. package/client/{platform/scripts/ui-parity-platform-adapter.mjs → web/scripts/ui-parity-web-adapter.mjs} +8 -8
  25. package/client/{platform → web}/src/auth/AuthProvider.tsx +1 -1
  26. package/compose.yml +6 -6
  27. package/infra/compose/.env.dev.example +3 -3
  28. package/infra/compose/.env.prod.example +3 -3
  29. package/infra/compose/README.md +1 -1
  30. package/infra/compose/dev.yml +5 -5
  31. package/infra/compose/prod.yml +6 -6
  32. package/infra/terraform/openstack/dev/terraform.tfvars.example +3 -3
  33. package/infra/terraform/openstack/prod/terraform.tfvars.example +3 -3
  34. package/lib/scaffold.mjs +254 -279
  35. package/package.json +2 -2
  36. package/scripts/dev/audit_sdd_build_ast.py +9 -9
  37. package/sdd/01_planning/01_feature/auth_feature_spec.md +2 -2
  38. package/sdd/01_planning/01_feature/catalog_feature_spec.md +3 -3
  39. package/sdd/01_planning/01_feature/order_feature_spec.md +11 -11
  40. package/sdd/01_planning/02_screen/INDEX.md +2 -2
  41. package/sdd/01_planning/02_screen/README.md +2 -2
  42. package/sdd/01_planning/03_architecture/templates_system_architecture.md +3 -3
  43. package/sdd/01_planning/05_api/templates_api_contract.md +3 -3
  44. package/sdd/01_planning/06_iac/templates_runtime_and_cicd_baseline.md +1 -1
  45. package/sdd/01_planning/07_integration/templates_frontend_api_integration.md +3 -3
  46. package/sdd/01_planning/10_test/templates_test_strategy.md +2 -2
  47. package/sdd/01_planning/INDEX.md +1 -1
  48. package/sdd/02_plan/02_screen/INDEX.md +1 -1
  49. package/sdd/02_plan/02_screen/README.md +1 -1
  50. package/sdd/02_plan/03_architecture/build_ast_runtime_tree_governance.md +1 -1
  51. package/sdd/02_plan/03_architecture/repository_governance.md +2 -2
  52. package/sdd/02_plan/03_architecture/runtime_and_structure_governance.md +1 -1
  53. package/sdd/02_plan/03_architecture/toolchain_governance.md +2 -2
  54. package/sdd/02_plan/06_iac/dev_runtime_delivery.md +1 -1
  55. package/sdd/02_plan/07_integration/frontend_live_integration.md +3 -3
  56. package/sdd/02_plan/10_test/regression_verification.md +2 -2
  57. package/sdd/02_plan/10_test/templates/{ui_parity_platform_contract.template.yaml → ui_parity_web_contract.template.yaml} +2 -2
  58. package/sdd/02_plan/10_test/verification_strategy.md +2 -2
  59. package/sdd/03_build/01_feature/domain/account_and_access.md +1 -1
  60. package/sdd/03_build/01_feature/domain/catalog_and_inventory.md +1 -1
  61. package/sdd/03_build/01_feature/domain/ordering_and_fulfillment.md +1 -1
  62. package/sdd/03_build/01_feature/service/README.md +1 -1
  63. package/sdd/03_build/01_feature/service/{platform_surface.md → web_surface.md} +3 -3
  64. package/sdd/03_build/02_screen/README.md +1 -1
  65. package/sdd/03_build/02_screen/web/README.md +5 -0
  66. package/sdd/03_build/03_architecture/toolchain_governance.md +1 -1
  67. package/sdd/03_build/06_iac/template_runtime_delivery.md +1 -1
  68. package/sdd/03_build/07_integration/frontend_live_integration.md +1 -1
  69. package/sdd/{04_verify → 03_verify}/01_feature/service_verification.md +3 -3
  70. package/sdd/{04_verify → 03_verify}/02_screen/README.md +1 -1
  71. package/sdd/03_verify/02_screen/web/README.md +4 -0
  72. package/sdd/{04_verify → 03_verify}/03_architecture/toolchain_governance.md +2 -2
  73. package/sdd/{04_verify → 03_verify}/06_iac/dev_runtime_delivery.md +1 -1
  74. package/sdd/{04_verify → 03_verify}/06_iac/template_runtime_delivery.md +4 -4
  75. package/sdd/{04_verify → 03_verify}/README.md +3 -3
  76. package/sdd/99_toolchain/01_automation/README.md +2 -2
  77. package/sdd/99_toolchain/01_automation/agentic-dev/assets/repo-contract.template.json +15 -15
  78. package/sdd/99_toolchain/01_automation/agentic-dev/bootstrap_frontend_parity.sh +1 -1
  79. package/sdd/99_toolchain/01_automation/agentic-dev/repo-contract.json +16 -16
  80. package/sdd/99_toolchain/01_automation/agentic-parity-harness-design.md +9 -9
  81. package/sdd/99_toolchain/01_automation/capture_screen_assets.mjs +4 -4
  82. package/sdd/99_toolchain/01_automation/harness-layout.md +2 -2
  83. package/sdd/99_toolchain/01_automation/parity-execution-tooling-design.md +7 -7
  84. package/sdd/99_toolchain/01_automation/screen_spec_manifest.py +17 -17
  85. package/sdd/99_toolchain/01_automation/ui-parity/README.md +10 -10
  86. package/sdd/99_toolchain/01_automation/ui-parity/cli/materialize-reference-assets.mjs +1 -1
  87. package/sdd/99_toolchain/01_automation/ui-parity/cli/scaffold-contract.mjs +2 -2
  88. package/sdd/99_toolchain/01_automation/ui-parity/core/proof-runner.mjs +1 -1
  89. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-artifact-layout.md +2 -2
  90. package/sdd/99_toolchain/01_automation/ui-parity/interfaces/ui-parity-route-gap-interface.md +2 -2
  91. package/sdd/99_toolchain/02_policies/build-ast-governance-policy.md +2 -2
  92. package/sdd/99_toolchain/02_policies/compose-runtime-baseline-policy.md +2 -2
  93. package/sdd/99_toolchain/02_policies/regression-verification-policy.md +1 -1
  94. package/sdd/99_toolchain/03_templates/playwright_exactness_manifest.example.py +1 -1
  95. package/sdd/99_toolchain/README.md +1 -1
  96. package/sdd/README.md +1 -1
  97. package/server/data/README.md +1 -1
  98. package/client/platform/Dockerfile.dev +0 -18
  99. package/sdd/03_build/02_screen/platform/README.md +0 -5
  100. package/sdd/04_verify/02_screen/platform/README.md +0 -4
  101. /package/client/{platform → web}/.dockerignore +0 -0
  102. /package/client/{platform → web}/.env.example +0 -0
  103. /package/client/{platform → web}/postcss.config.js +0 -0
  104. /package/client/{platform → web}/src/api/client.ts +0 -0
  105. /package/client/{platform → web}/src/api/orders.ts +0 -0
  106. /package/client/{platform → web}/src/app/App.tsx +0 -0
  107. /package/client/{platform → web}/src/auth/ProtectedRoute.tsx +0 -0
  108. /package/client/{platform → web}/src/auth/auth-client.ts +0 -0
  109. /package/client/{platform → web}/src/auth/types.ts +0 -0
  110. /package/client/{platform → web}/src/components/AppShell.tsx +0 -0
  111. /package/client/{platform → web}/src/components/ui/button.tsx +0 -0
  112. /package/client/{platform → web}/src/components/ui/card.tsx +0 -0
  113. /package/client/{platform → web}/src/components/ui/input.tsx +0 -0
  114. /package/client/{platform → web}/src/lib/cn.ts +0 -0
  115. /package/client/{platform → web}/src/lib/specRouteCatalog.json +0 -0
  116. /package/client/{platform → web}/src/lib/specScreens.json +0 -0
  117. /package/client/{platform → web}/src/main.tsx +0 -0
  118. /package/client/{platform → web}/src/pages/DashboardPage.tsx +0 -0
  119. /package/client/{platform → web}/src/pages/LoginPage.tsx +0 -0
  120. /package/client/{platform → web}/src/pages/OrdersPage.tsx +0 -0
  121. /package/client/{platform → web}/src/styles/globals.css +0 -0
  122. /package/client/{platform → web}/src/theme-vars.ts +0 -0
  123. /package/client/{platform → web}/src/theme.ts +0 -0
  124. /package/client/{platform → web}/src/vite-env.d.ts +0 -0
  125. /package/client/{platform → web}/tailwind.config.js +0 -0
  126. /package/client/{platform → web}/tsconfig.json +0 -0
  127. /package/client/{platform → web}/vite.config.ts +0 -0
  128. /package/sdd/01_planning/02_screen/{platform_screen_spec.pdf → web_screen_spec.pdf} +0 -0
  129. /package/sdd/{04_verify → 03_verify}/01_feature/README.md +0 -0
  130. /package/sdd/{04_verify → 03_verify}/01_feature/domain_verification.md +0 -0
  131. /package/sdd/{04_verify → 03_verify}/02_screen/_screen_verify_template.md +0 -0
  132. /package/sdd/{04_verify → 03_verify}/02_screen/admin/README.md +0 -0
  133. /package/sdd/{04_verify → 03_verify}/02_screen/landing/README.md +0 -0
  134. /package/sdd/{04_verify → 03_verify}/02_screen/mobile/README.md +0 -0
  135. /package/sdd/{04_verify → 03_verify}/03_architecture/README.md +0 -0
  136. /package/sdd/{04_verify → 03_verify}/03_architecture/architecture_document_governance.md +0 -0
  137. /package/sdd/{04_verify → 03_verify}/03_architecture/build_ast_runtime_tree_governance.md +0 -0
  138. /package/sdd/{04_verify → 03_verify}/03_architecture/repository_governance.md +0 -0
  139. /package/sdd/{04_verify → 03_verify}/06_iac/README.md +0 -0
  140. /package/sdd/{04_verify → 03_verify}/07_integration/README.md +0 -0
  141. /package/sdd/{04_verify → 03_verify}/07_integration/frontend_live_integration.md +0 -0
  142. /package/sdd/{04_verify → 03_verify}/08_nonfunctional/README.md +0 -0
  143. /package/sdd/{04_verify → 03_verify}/08_nonfunctional/repository_hygiene.md +0 -0
  144. /package/sdd/{04_verify → 03_verify}/10_test/README.md +0 -0
  145. /package/sdd/{04_verify → 03_verify}/10_test/regression_verification.md +0 -0
  146. /package/sdd/{04_verify → 03_verify}/10_test/ui_parity/README.md +0 -0
  147. /package/sdd/{04_verify → 03_verify}/10_test/ui_parity/loop_runs/.gitkeep +0 -0
  148. /package/sdd/{04_verify → 03_verify}/10_test/ui_parity/reference/.gitkeep +0 -0
  149. /package/sdd/{04_verify → 03_verify}/10_test/ui_parity/staged_runs/.gitkeep +0 -0
  150. /package/sdd/{04_verify → 03_verify}/10_test/verification_harness.md +0 -0
  151. /package/sdd/99_toolchain/01_automation/assets/{platform_screen_capture → web_screen_capture}/dashboard.png +0 -0
  152. /package/sdd/99_toolchain/01_automation/assets/{platform_screen_capture → web_screen_capture}/login.png +0 -0
  153. /package/sdd/99_toolchain/01_automation/assets/{platform_screen_capture → web_screen_capture}/orders.png +0 -0
@@ -19,7 +19,7 @@
19
19
 
20
20
  | Actor | Description | Appears In |
21
21
  | --- | --- | --- |
22
- | `Platform User` | platform 서비스에서 주문/운영 기능에 접근하기 위해 인증 세션을 발급받는 사용자다. | `AUT-F001` |
22
+ | `Web User` | web 서비스에서 주문/운영 기능에 접근하기 위해 인증 세션을 발급받는 사용자다. | `AUT-F001` |
23
23
  | `Mobile Operator` | mobile 서비스에서 이행 작업을 수행하기 위해 로그인하는 현장 운영자다. | `AUT-F001` |
24
24
  | `Admin Operator` | admin 서비스에서 카탈로그, 재고, 사용자 운영 명령을 수행하기 위해 관리자 세션을 발급받는 주체다. | `AUT-F001` |
25
25
  | `Landing Member` | landing 서비스에서 회원 전용 자원이나 개인화 동작을 사용하기 위해 로그인하는 사용자다. | `AUT-F001` |
@@ -48,7 +48,7 @@
48
48
 
49
49
  | Feature Code | Use Case | Actor | Bounded Context | Aggregate / Model | Type | Preconditions | Domain Outcome | Invariant / Business Rule |
50
50
  | --- | --- | --- | --- | --- | --- | --- | --- | --- |
51
- | `AUT-F001` | 이메일/비밀번호로 로그인하고 access token을 발급한다 | Platform User, Mobile Operator, Admin Operator, Landing Member | Authentication & Session | `LoginCommand`, `AuthToken`, `AuthAccountRecord` | Command | 이메일과 비밀번호가 전달되고, 인증 계정 저장소에 해당 사용자가 존재해야 한다 | access token과 `user_id`가 발급된다 | credential이 일치하지 않으면 `401 Invalid credentials`를 반환한다 |
51
+ | `AUT-F001` | 이메일/비밀번호로 로그인하고 access token을 발급한다 | Web User, Mobile Operator, Admin Operator, Landing Member | Authentication & Session | `LoginCommand`, `AuthToken`, `AuthAccountRecord` | Command | 이메일과 비밀번호가 전달되고, 인증 계정 저장소에 해당 사용자가 존재해야 한다 | access token과 `user_id`가 발급된다 | credential이 일치하지 않으면 `401 Invalid credentials`를 반환한다 |
52
52
  | `AUT-F002` | bearer token으로 현재 세션 사용자를 해석한다 | Authenticated Client | Authentication & Session | `AuthToken`, `AuthenticatedUser`, `AuthAccountRecord` | Query | 유효한 bearer token이 전달되고 token subject가 인증 계정 저장소에 존재해야 한다 | 현재 사용자 summary를 반환한다 | token이 위조되었거나 subject 사용자가 없으면 `401 Invalid token`을 반환한다 |
53
53
 
54
54
  ## 7. Notes
@@ -21,7 +21,7 @@
21
21
  | --- | --- | --- |
22
22
  | `Landing Visitor` | 비로그인 상태로 공개 상품 카탈로그와 상품 상세를 탐색하는 방문자다. | `CAT-F001`, `CAT-F002` |
23
23
  | `Landing Member` | 로그인된 landing 회원으로 공개 상품을 둘러보고 구매 전 탐색을 수행하는 사용자다. | `CAT-F001`, `CAT-F002` |
24
- | `Platform User` | platform 서비스에서 주문 생성이나 운영 판단을 위해 상품 정보를 조회하는 내부 사용자다. | `CAT-F001`, `CAT-F002` |
24
+ | `Web User` | web 서비스에서 주문 생성이나 운영 판단을 위해 상품 정보를 조회하는 내부 사용자다. | `CAT-F001`, `CAT-F002` |
25
25
  | `Admin Operator` | admin 서비스에서 상품을 등록, 수정, 상태 변경하는 운영 관리자다. | `CAT-F003`, `CAT-F004`, `CAT-F005` |
26
26
 
27
27
  ## 4. Bounded Context Summary
@@ -49,8 +49,8 @@
49
49
 
50
50
  | Feature Code | Use Case | Actor | Bounded Context | Aggregate / Model | Type | Preconditions | Domain Outcome | Invariant / Business Rule |
51
51
  | --- | --- | --- | --- | --- | --- | --- | --- | --- |
52
- | `CAT-F001` | 상품 카탈로그 목록을 조회한다 | Landing Visitor, Landing Member, Platform User | Product Catalog | `ProductSummary`, `ProductRecord` | Query | 상품 bootstrap 데이터가 존재해야 한다 | 공개 가능한 상품 목록을 필터와 검색 조건에 맞게 반환한다 | `status`, `category`, `q` 조건은 모두 현재 카탈로그 집합 안에서 계산한다 |
53
- | `CAT-F002` | 단일 상품 상세를 조회한다 | Landing Visitor, Landing Member, Platform User | Product Catalog | `ProductDetail`, `ProductRecord` | Query | 요청한 `product_id`가 저장소에 존재해야 한다 | 상세 페이지 구성을 위한 상품 전체 속성을 반환한다 | 존재하지 않는 `product_id`면 `404 Catalog product not found`를 반환한다 |
52
+ | `CAT-F001` | 상품 카탈로그 목록을 조회한다 | Landing Visitor, Landing Member, Web User | Product Catalog | `ProductSummary`, `ProductRecord` | Query | 상품 bootstrap 데이터가 존재해야 한다 | 공개 가능한 상품 목록을 필터와 검색 조건에 맞게 반환한다 | `status`, `category`, `q` 조건은 모두 현재 카탈로그 집합 안에서 계산한다 |
53
+ | `CAT-F002` | 단일 상품 상세를 조회한다 | Landing Visitor, Landing Member, Web User | Product Catalog | `ProductDetail`, `ProductRecord` | Query | 요청한 `product_id`가 저장소에 존재해야 한다 | 상세 페이지 구성을 위한 상품 전체 속성을 반환한다 | 존재하지 않는 `product_id`면 `404 Catalog product not found`를 반환한다 |
54
54
  | `CAT-F003` | 관리자가 새 상품을 등록한다 | Admin Operator | Product Catalog | `CreateProductCommand`, `ProductDetail`, `ProductRecord` | Command | 관리자 토큰이 유효하고 slug, 이름, 가격, variant 정보가 전달되어야 한다 | 새 상품 레코드가 생성되어 카탈로그 목록에 합류한다 | `slug`는 카탈로그 내에서 유일해야 하며 variant는 최소 1개 이상이어야 한다 |
55
55
  | `CAT-F004` | 관리자가 상품 속성을 수정한다 | Admin Operator | Product Catalog | `UpdateProductCommand`, `ProductDetail`, `ProductRecord` | Command | 관리자 토큰이 유효하고 요청한 `product_id`가 존재해야 한다 | 상품 속성이 부분 갱신되고 `updated_at`이 갱신된다 | 빈 수정 요청은 `400 No catalog product fields provided`, 중복 slug는 `409`를 반환한다 |
56
56
  | `CAT-F005` | 관리자가 상품 상태를 변경한다 | Admin Operator | Product Catalog | `UpdateProductStatusCommand`, `ProductDetail`, `ProductRecord` | Command | 관리자 토큰이 유효하고 요청한 `product_id`가 존재해야 한다 | 상품 `status`가 `draft`, `active`, `archived` 중 하나로 전환된다 | 존재하지 않는 `product_id`면 `404 Catalog product not found`를 반환한다 |
@@ -4,12 +4,12 @@
4
4
 
5
5
  ## 1. Purpose
6
6
 
7
- `orders` bounded context가 제공하는 플랫폼 주문 현황과 관리자 운영 큐 기능을 구현 기준으로 정리한다.
7
+ `orders` bounded context가 제공하는 web 주문 현황과 관리자 운영 큐 기능을 구현 기준으로 정리한다.
8
8
 
9
9
  ## 2. Scope
10
10
 
11
11
  - 포함 범위:
12
- - platform 주문 overview/list read model과 주문 생성, 상태 전이 command
12
+ - web 주문 overview/list read model과 주문 생성, 상태 전이 command
13
13
  - admin 주문 overview/queue read model
14
14
  - 제외 범위:
15
15
  - 외부 결제 게이트웨이 정산이나 배송사 연동
@@ -19,7 +19,7 @@
19
19
 
20
20
  | Actor | Description | Appears In |
21
21
  | --- | --- | --- |
22
- | `Platform User` | platform 서비스에서 주문 현황을 조회하고 신규 주문 생성이나 주문 상태 갱신을 수행하는 운영 사용자다. | `ORD-F001`, `ORD-F002`, `ORD-F003`, `ORD-F004` |
22
+ | `Web User` | web 서비스에서 주문 현황을 조회하고 신규 주문 생성이나 주문 상태 갱신을 수행하는 운영 사용자다. | `ORD-F001`, `ORD-F002`, `ORD-F003`, `ORD-F004` |
23
23
  | `Admin Operator` | admin 서비스에서 주문 KPI와 운영 큐를 모니터링하는 관리자다. | `ORD-F005`, `ORD-F006` |
24
24
 
25
25
  ## 4. Bounded Context Summary
@@ -37,8 +37,8 @@
37
37
  | Aggregate / Model | Role |
38
38
  | --- | --- |
39
39
  | `OrderRecord` | bootstrap 기반 주문 원본 |
40
- | `OrderOverview` | 플랫폼 dashboard 요약 읽기 모델 |
41
- | `OrderSummary` | 플랫폼 orders 목록 읽기 모델 |
40
+ | `OrderOverview` | web dashboard 요약 읽기 모델 |
41
+ | `OrderSummary` | web orders 목록 읽기 모델 |
42
42
  | `CreateOrderCommand` | 주문 생성 명령 |
43
43
  | `UpdateOrderStatusCommand` | 주문 상태 전이 명령 |
44
44
  | `OrderStatusTransition` | 주문 상태 전이 결과 |
@@ -49,15 +49,15 @@
49
49
 
50
50
  | Feature Code | Use Case | Actor | Bounded Context | Aggregate / Model | Type | Preconditions | Domain Outcome | Invariant / Business Rule |
51
51
  | --- | --- | --- | --- | --- | --- | --- | --- | --- |
52
- | `ORD-F001` | 플랫폼 주문 overview를 조회한다 | Platform User | Order Operations | `OrderOverview`, `OrderRecord` | Query | 인증 토큰이 유효하고 주문 bootstrap 데이터가 존재해야 한다 | 주문 카드, 최근 활동, 선택 주문 상세를 함께 반환한다 | overview는 최근 활동 3건과 선택 주문 1건을 항상 포함한다 |
53
- | `ORD-F002` | 플랫폼 주문 목록을 조회한다 | Platform User | Order Operations | `OrderSummary`, `OrderRecord` | Query | 인증 토큰이 유효하고 주문 bootstrap 데이터가 존재해야 한다 | 주문 목록을 반환한다 | 목록 행은 `id`, `product_name`, `customer_name`, `status`를 유지한다 |
54
- | `ORD-F003` | 신규 주문을 생성한다 | Platform User | Order Operations | `CreateOrderCommand`, `OrderRecord` | Command | 인증 토큰이 유효하고 제품, 고객, 판매자, 금액 정보가 전달되어야 한다 | 새 `OrderRecord`가 생성되어 목록과 overview에 반영된다 | 새 주문은 문자열 ID를 부여받고 `Pending`과 `Queued`를 기본 상태로 사용한다 |
55
- | `ORD-F004` | 주문의 결제/이행 상태를 변경한다 | Platform User | Order Operations | `UpdateOrderStatusCommand`, `OrderStatusTransition`, `OrderRecord` | Command | 인증 토큰이 유효하고 요청한 `order_id`가 존재해야 한다 | 주문의 `status`, `fulfillment_status`, `stage`가 변경된다 | 존재하지 않는 `order_id`면 `404`를 반환한다 |
56
- | `ORD-F005` | 관리자용 주문 overview를 조회한다 | Admin Operator | Order Operations | `AdminOrderOverview`, `OrderRecord` | Query | 관리자 토큰이 유효하고 주문 bootstrap 데이터가 존재해야 한다 | 관리자 KPI와 stage 현황을 반환한다 | admin surface는 platform surface와 다른 운영형 read model을 사용한다 |
52
+ | `ORD-F001` | web 주문 overview를 조회한다 | Web User | Order Operations | `OrderOverview`, `OrderRecord` | Query | 인증 토큰이 유효하고 주문 bootstrap 데이터가 존재해야 한다 | 주문 카드, 최근 활동, 선택 주문 상세를 함께 반환한다 | overview는 최근 활동 3건과 선택 주문 1건을 항상 포함한다 |
53
+ | `ORD-F002` | web 주문 목록을 조회한다 | Web User | Order Operations | `OrderSummary`, `OrderRecord` | Query | 인증 토큰이 유효하고 주문 bootstrap 데이터가 존재해야 한다 | 주문 목록을 반환한다 | 목록 행은 `id`, `product_name`, `customer_name`, `status`를 유지한다 |
54
+ | `ORD-F003` | 신규 주문을 생성한다 | Web User | Order Operations | `CreateOrderCommand`, `OrderRecord` | Command | 인증 토큰이 유효하고 제품, 고객, 판매자, 금액 정보가 전달되어야 한다 | 새 `OrderRecord`가 생성되어 목록과 overview에 반영된다 | 새 주문은 문자열 ID를 부여받고 `Pending`과 `Queued`를 기본 상태로 사용한다 |
55
+ | `ORD-F004` | 주문의 결제/이행 상태를 변경한다 | Web User | Order Operations | `UpdateOrderStatusCommand`, `OrderStatusTransition`, `OrderRecord` | Command | 인증 토큰이 유효하고 요청한 `order_id`가 존재해야 한다 | 주문의 `status`, `fulfillment_status`, `stage`가 변경된다 | 존재하지 않는 `order_id`면 `404`를 반환한다 |
56
+ | `ORD-F005` | 관리자용 주문 overview를 조회한다 | Admin Operator | Order Operations | `AdminOrderOverview`, `OrderRecord` | Query | 관리자 토큰이 유효하고 주문 bootstrap 데이터가 존재해야 한다 | 관리자 KPI와 stage 현황을 반환한다 | admin surface는 web surface와 다른 운영형 read model을 사용한다 |
57
57
  | `ORD-F006` | 관리자용 거래 큐를 조회한다 | Admin Operator | Order Operations | `AdminQueueItem`, `OrderRecord` | Query | 관리자 토큰이 유효하고 주문 bootstrap 데이터가 존재해야 한다 | 주문별 운영 큐 행을 반환한다 | 큐 행은 `order_id`, `product_name`, `customer_name`, `status`, `sla`를 유지한다 |
58
58
 
59
59
  ## 7. Notes
60
60
 
61
- - `orders`는 platform surface와 admin surface에 서로 다른 read model을 제공한다.
61
+ - `orders`는 web surface와 admin surface에 서로 다른 read model을 제공한다.
62
62
  - 운영 알람 feed는 별도 `alerts` context가 소유하고, `orders`는 주문 자체 read/write 모델만 유지한다.
63
63
  - template baseline의 주문 상태 전이는 내부 mutation semantics까지만 다루며 외부 결제/이벤트 연동은 포함하지 않는다.
@@ -1,9 +1,9 @@
1
1
  # Screen Planning
2
2
 
3
3
  - screen code format: `{SERVICE}-S{NNN}`
4
- - canonical service code: `PLT`, `ADM`, `MOB`, `LND`
4
+ - canonical service code: `WEB`, `ADM`, `MOB`, `LND`
5
5
 
6
- - [platform_screen_spec.pdf](./platform_screen_spec.pdf)
6
+ - [web_screen_spec.pdf](./web_screen_spec.pdf)
7
7
  - [admin_screen_spec.pdf](./admin_screen_spec.pdf)
8
8
  - [mobile_screen_spec.pdf](./mobile_screen_spec.pdf)
9
9
  - [landing_screen_spec.pdf](./landing_screen_spec.pdf)
@@ -13,13 +13,13 @@
13
13
 
14
14
  | Segment | Rule | Example |
15
15
  | --- | --- | --- |
16
- | `SERVICE` | 3-letter uppercase service code | `PLT`, `ADM`, `MOB`, `LND` |
16
+ | `SERVICE` | 3-letter uppercase service code | `WEB`, `ADM`, `MOB`, `LND` |
17
17
  | `TYPE` | screen 식별자 고정값 | `S` |
18
18
  | `NNN` | 3-digit sequence | `001`, `002` |
19
19
 
20
20
  ## Canonical Output
21
21
 
22
- - [platform_screen_spec.pdf](./platform_screen_spec.pdf)
22
+ - [web_screen_spec.pdf](./web_screen_spec.pdf)
23
23
  - [admin_screen_spec.pdf](./admin_screen_spec.pdf)
24
24
  - [mobile_screen_spec.pdf](./mobile_screen_spec.pdf)
25
25
  - [landing_screen_spec.pdf](./landing_screen_spec.pdf)
@@ -16,7 +16,7 @@
16
16
  | Layer | Owner | Responsibility |
17
17
  | --- | --- | --- |
18
18
  | `server` | HTTP backend | auth, user, catalog, inventory, orders, fulfillment, shipping, alerts, support, health를 HTTP API surface로 제공 |
19
- | `client/platform` | React + Vite frontend | 보호된 플랫폼 shell과 dashboard/orders surface |
19
+ | `client/web` | React + Vite frontend | 보호된 web shell과 dashboard/orders surface |
20
20
  | `client/admin` | React + Vite frontend | 보호된 관리자 shell과 overview/queue/support surface |
21
21
  | `client/mobile` | React + Vite frontend | 보호된 모바일 shell과 dashboard/fulfillment surface |
22
22
  | `client/landing` | React + Vite frontend | public landing + protected workspace surface |
@@ -36,7 +36,7 @@
36
36
  | User Directory | `server/contexts/user` | 사용자 profile 목록/상세/상태 관리 |
37
37
  | Product Catalog | `server/contexts/catalog` | public catalog read와 admin catalog write |
38
38
  | Inventory Availability | `server/contexts/inventory` | SKU/거점 재고 조회와 운영 mutation |
39
- | Order Operations | `server/contexts/orders` | platform/admin 주문 overview, 목록, 생성, 상태 전이 |
39
+ | Order Operations | `server/contexts/orders` | web/admin 주문 overview, 목록, 생성, 상태 전이 |
40
40
  | Fulfillment Operations | `server/contexts/fulfillment` | mobile overview, board, task 상태 전이 |
41
41
  | Shipping Operations | `server/contexts/shipping` | mobile 배송 overview, shipment 목록, 배송 상태 전이 |
42
42
  | Alert Center | `server/contexts/alerts` | admin 운영 알람 feed, 읽음 처리 |
@@ -49,7 +49,7 @@
49
49
  - `user`는 profile directory만 소유하고 credential hash를 저장하지 않는다.
50
50
  - `catalog`는 landing/public read와 admin write surface를 함께 소유한다.
51
51
  - `inventory`는 현재 admin 운영 surface를 통해 직접 조정되고, `orders`와 `fulfillment`의 참조 도메인으로 연결된다.
52
- - `orders`는 platform read model과 admin read model을 동시에 노출한다.
52
+ - `orders`는 web read model과 admin read model을 동시에 노출한다.
53
53
  - `fulfillment`는 mobile 서비스의 canonical backend surface다.
54
54
  - `shipping`은 `fulfillment`의 downstream delivery 상태를 분리해 mobile/operator surface에 제공한다.
55
55
  - `alerts`는 admin이 소비하는 운영 알람 표현과 읽음 상태를 별도 context로 소유한다.
@@ -28,8 +28,8 @@
28
28
  | `POST` | `/api/v1/inventory/levels/{sku}/{location_id}/reservations` | inventory | 재고 선점 | `InventoryMutationReceipt` |
29
29
  | `POST` | `/api/v1/inventory/levels/{sku}/{location_id}/releases` | inventory | 재고 선점 해제 | `InventoryMutationReceipt` |
30
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]` |
31
+ | `GET` | `/api/v1/orders/overview` | orders | web dashboard overview 조회 | `OrderOverview` |
32
+ | `GET` | `/api/v1/orders` | orders | web order table row 조회 | `list[OrderSummary]` |
33
33
  | `POST` | `/api/v1/orders` | orders | 주문 생성 | `OrderRecord` |
34
34
  | `PATCH` | `/api/v1/orders/{order_id}/status` | orders | 주문 상태 전이 | `OrderStatusTransition` |
35
35
  | `GET` | `/api/v1/orders/admin/overview` | orders | admin dashboard 운영 overview 조회 | `AdminOrderOverview` |
@@ -68,7 +68,7 @@
68
68
 
69
69
  ## 4. Frontend Binding Notes
70
70
 
71
- - `client/platform`
71
+ - `client/web`
72
72
  - `/`는 `GET /api/v1/orders/overview`를 소비한다.
73
73
  - `/orders`는 `GET /api/v1/orders`를 소비한다.
74
74
  - `client/admin`
@@ -11,7 +11,7 @@
11
11
  | Surface | Default Port |
12
12
  | --- | --- |
13
13
  | landing | `3000` |
14
- | platform | `3001` |
14
+ | web | `3001` |
15
15
  | mobile | `3002` |
16
16
  | admin | `4000` |
17
17
  | api | `8000` |
@@ -16,14 +16,14 @@
16
16
 
17
17
  | Service | Real Backend Coupling | Note |
18
18
  | --- | --- | --- |
19
- | platform | `auth`, `orders` | dashboard overview와 orders table을 live contract에 연결 |
19
+ | web | `auth`, `orders` | dashboard overview와 orders table을 live contract에 연결 |
20
20
  | admin | `auth`, `orders`, `alerts`, `support` | overview/queue/support surface와 alerts drawer를 live contract에 연결 |
21
21
  | mobile | `auth`, `fulfillment`, `shipping` | dashboard overview와 fulfillment/shipping surface를 live contract에 연결 |
22
22
  | landing | `auth`, `catalog` | home/workspace에서 catalog products를 읽어 public/protected surface를 구성 |
23
23
 
24
24
  ## 3. Coupling Detail
25
25
 
26
- - platform
26
+ - web
27
27
  - bearer session은 기존 `AuthProvider`가 유지한다.
28
28
  - page load 시 `orders/overview`, `orders`를 fetch하고 search는 client-side filter로 처리한다.
29
29
  - admin
@@ -41,6 +41,6 @@
41
41
 
42
42
  ## 4. Known Gaps
43
43
 
44
- - platform/admin은 아직 catalog/inventory command surface를 직접 소비하지 않는다.
44
+ - web/admin은 아직 catalog/inventory command surface를 직접 소비하지 않는다.
45
45
  - order 생성, fulfillment 전이, shipping 전이, support create/update, alerts read는 backend contract로 존재하지만 frontend action UI는 baseline 최소 액션 중심이다.
46
46
  - landing은 catalog read를 public/protected दोनों surface에 재사용하지만 category/detail 분해까지는 아직 없다.
@@ -49,8 +49,8 @@ template baseline을 유지하기 위한 테스트 전략을 정의한다.
49
49
 
50
50
  ## 2. Frontend
51
51
 
52
- - `platform`, `admin`, `mobile`, `landing`는 각 서비스별 production build를 통과해야 한다.
53
- - screen spec은 `PLT-S001`, `ADM-S001`, `MOB-S001`, `LND-S001` 규칙으로 구현 route와 관련 feature를 함께 검증한다.
52
+ - `web`, `admin`, `mobile`, `landing`는 각 서비스별 production build를 통과해야 한다.
53
+ - screen spec은 `WEB-S001`, `ADM-S001`, `MOB-S001`, `LND-S001` 규칙으로 구현 route와 관련 feature를 함께 검증한다.
54
54
  - parity harness가 활성화되면 route-gap과 proof artifact를 추가 검증한다.
55
55
 
56
56
  ## 3. CI Gate
@@ -13,7 +13,7 @@
13
13
 
14
14
  ## Structure Rule
15
15
 
16
- - `01_feature`, `02_screen`는 실제 서비스 표면(`platform`, `mobile`, `admin`, `landing`) 기준으로 유지한다.
16
+ - `01_feature`, `02_screen`는 실제 서비스 표면(`web`, `mobile`, `admin`, `landing`) 기준으로 유지한다.
17
17
  - `03_architecture` 이후는 서비스별 실산출물이 없으면 common-first로 유지한다.
18
18
  - `03_architecture`는 공통 문서를 먼저 두고 필요 시 `frontend/`, `backend/`, `infra/`, `tech-research/`로 세분화한다.
19
19
  - 데이터 모델링은 `04_data`에서 다루고 architecture 문서에는 중복 기록하지 않는다.
@@ -3,7 +3,7 @@
3
3
  ## Canonical Sources
4
4
 
5
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)
6
+ - [web_screen_spec.pdf](../../01_planning/02_screen/web_screen_spec.pdf)
7
7
  - [admin_screen_spec.pdf](../../01_planning/02_screen/admin_screen_spec.pdf)
8
8
  - [landing_screen_spec.pdf](../../01_planning/02_screen/landing_screen_spec.pdf)
9
9
 
@@ -19,7 +19,7 @@
19
19
  - 서비스별 화면 TODO는 `sdd/02_plan/02_screen/` root에 둔다.
20
20
  - 예:
21
21
  - `sdd/02_plan/02_screen/mobile_todos.md`
22
- - `sdd/02_plan/02_screen/platform_todos.md`
22
+ - `sdd/02_plan/02_screen/web_todos.md`
23
23
 
24
24
  ## Naming
25
25
 
@@ -23,7 +23,7 @@
23
23
  ## Acceptance Criteria
24
24
 
25
25
  - [x] `scripts/dev/audit_sdd_build_ast.py`가 `ast_similarity=10`, `implementation_traceability=10`, `human_agent_readability=10`을 반환한다.
26
- - [x] `mobile`, `platform`, `admin`, `landing` service summary가 실제 `main.tsx -> AuthProvider -> BrowserRouter -> App -> ProtectedRoute/shell -> route leaf` 체인을 반영한다.
26
+ - [x] `mobile`, `web`, `admin`, `landing` service summary가 실제 `main.tsx -> AuthProvider -> BrowserRouter -> App -> ProtectedRoute/shell -> route leaf` 체인을 반영한다.
27
27
  - [x] `README`, `AGENTS`, `CLAUDE`, toolchain policy가 `.agent`, role agent, skill alias, AST current-state 규칙을 같이 설명한다.
28
28
  - [x] template infra 문서는 provider-first baseline(`aws/data`, `aws/domain`, `openstack/server`)을 current canonical split으로 설명한다.
29
29
 
@@ -27,7 +27,7 @@
27
27
  ## Current Notes
28
28
 
29
29
  - `main`을 canonical branch로 유지하는 규칙을 사용한다.
30
- - 템플릿 frontend 경로는 `client/platform`, `client/admin`, `client/mobile`, `client/landing` 기준이다.
30
+ - 템플릿 frontend 경로는 `client/web`, `client/admin`, `client/mobile`, `client/landing` 기준이다.
31
31
  - SDD는 최종 일관성 문서만 유지하고, raw 운영 로그는 runtime logging system에 남긴다.
32
32
  - data modeling 계획 루트는 `sdd/01_planning/04_data`와 `sdd/02_plan/04_data`를 기준으로 유지한다.
33
33
 
@@ -36,4 +36,4 @@
36
36
  - current references:
37
37
  - `AGENTS.md`
38
38
  - `sdd/03_build/03_architecture/repository_governance.md`
39
- - `sdd/04_verify/03_architecture/repository_governance.md`
39
+ - `sdd/03_verify/03_architecture/repository_governance.md`
@@ -35,4 +35,4 @@
35
35
  - current references:
36
36
  - `sdd/01_planning/README.md`
37
37
  - `sdd/03_build/03_architecture/repository_governance.md`
38
- - `sdd/04_verify/03_architecture/repository_governance.md`
38
+ - `sdd/03_verify/03_architecture/repository_governance.md`
@@ -61,7 +61,7 @@
61
61
  - toolchain은 `sdd/99_toolchain/01_automation`, `02_policies`, `03_templates` current split을 따른다.
62
62
  - Playwright local exactness는 `run_playwright_exactness.py`와 `playwright_exactness_manifest.py`를 canonical entrypoint로 사용한다.
63
63
  - screen 작업은 가능하면 `npx playwright test ...`를 직접 쓰지 않고 toolchain runner를 통해 suite id 기준으로 실행한다.
64
- - proof artifact는 `sdd/04_verify/10_test/ui_parity/` current path를 기준으로 관리한다.
64
+ - proof artifact는 `sdd/03_verify/10_test/ui_parity/` current path를 기준으로 관리한다.
65
65
  - toolchain 정책 문서의 정본은 `sdd/99_toolchain/02_policies`에 둔다.
66
66
  - skill/tooling 사용 여부는 개별 dated memo가 아니라 현재 workflow rule로만 유지한다.
67
67
  - 화면명세서의 icon/image/logo 등 재사용 가능한 정적 자산은 `spec_asset_builder.py` 또는 wrapper를 먼저 사용해 추출하고, 수동 재작성은 builder가 표현하지 못하는 경우에만 예외로 허용한다.
@@ -93,6 +93,6 @@
93
93
  - `sdd/99_toolchain/01_automation/playwright_exactness_manifest.py`
94
94
  - `sdd/99_toolchain/01_automation/run_playwright_exactness.py`
95
95
  - `sdd/02_plan/10_test/verification_strategy.md`
96
- - `sdd/04_verify/10_test/verification_harness.md`
96
+ - `sdd/03_verify/10_test/verification_harness.md`
97
97
  - `sdd/99_toolchain/02_policies/regression-verification-policy.md`
98
98
  - `sdd/02_plan/10_test/regression_verification.md`
@@ -33,4 +33,4 @@
33
33
 
34
34
  - current references:
35
35
  - `sdd/03_build/06_iac/dev_runtime_delivery.md`
36
- - `sdd/04_verify/06_iac/dev_runtime_delivery.md`
36
+ - `sdd/03_verify/06_iac/dev_runtime_delivery.md`
@@ -6,7 +6,7 @@
6
6
  ## Scope
7
7
 
8
8
  - In scope:
9
- - platform/admin/mobile/landing과 backend domain contract 연결 기준
9
+ - web/admin/mobile/landing과 backend domain contract 연결 기준
10
10
  - typed API helper와 current live wiring baseline
11
11
 
12
12
  ## Acceptance Criteria
@@ -16,7 +16,7 @@
16
16
 
17
17
  ## Current Notes
18
18
 
19
- - `platform`은 catalog/orders/support 중심 operator surface를 사용한다.
19
+ - `web`은 catalog/orders/support 중심 operator surface를 사용한다.
20
20
  - `admin`은 alerts, catalog, orders 관리 surface를 사용한다.
21
21
  - `mobile`은 fulfillment, shipping 중심 surface를 사용한다.
22
22
  - `landing`은 catalog/public read surface를 사용한다.
@@ -25,7 +25,7 @@
25
25
  ## Validation
26
26
 
27
27
  - current references:
28
- - `client/platform/src`
28
+ - `client/web/src`
29
29
  - `client/admin/src`
30
30
  - `client/mobile/src`
31
31
  - `client/landing/src`
@@ -15,7 +15,7 @@
15
15
  ## Acceptance Criteria
16
16
 
17
17
  - [x] 회귀 검수는 direct target-only로 끝내지 않는다.
18
- - [x] selected regression surface는 `sdd/02_plan`, `sdd/03_build`, `sdd/04_verify`에 current-state로 이어진다.
18
+ - [x] selected regression surface는 `sdd/02_plan`, `sdd/03_build`, `sdd/03_verify`에 current-state로 이어진다.
19
19
  - [x] automation gap은 scope 축소가 아니라 residual risk로 기록한다.
20
20
 
21
21
  ## Execution Checklist
@@ -36,4 +36,4 @@
36
36
  - `AGENTS.md`
37
37
  - `.codex/skills/sdd/SKILL.md`
38
38
  - `sdd/99_toolchain/01_automation/README.md`
39
- - `sdd/04_verify/10_test/verification_harness.md`
39
+ - `sdd/03_verify/10_test/verification_harness.md`
@@ -5,11 +5,11 @@ metadata:
5
5
  generated_by: sdd/99_toolchain/01_automation/ui-parity/cli/scaffold-contract.mjs
6
6
  spec:
7
7
  target_base_url: http://127.0.0.1:4301
8
- adapter_path: client/platform/scripts/ui-parity-platform-adapter.mjs
8
+ adapter_path: client/web/scripts/ui-parity-web-adapter.mjs
9
9
  screens:
10
10
  - id: TMP_001
11
11
  route: /
12
- reference_image: sdd/04_verify/10_test/ui_parity/reference/TMP_001.png
12
+ reference_image: sdd/03_verify/10_test/ui_parity/reference/TMP_001.png
13
13
  max_diff_ratio: 0
14
14
  allow_resize: false
15
15
  pixelmatch_threshold: 0.1
@@ -38,6 +38,6 @@
38
38
  ## Validation
39
39
 
40
40
  - current references:
41
- - `sdd/04_verify/README.md`
42
- - `sdd/04_verify/10_test/verification_harness.md`
41
+ - `sdd/03_verify/README.md`
42
+ - `sdd/03_verify/10_test/verification_harness.md`
43
43
  - `sdd/02_plan/10_test/regression_verification.md`
@@ -13,7 +13,7 @@
13
13
  ## Implementation Shape
14
14
 
15
15
  - backend owner는 `server/contexts/auth`, `server/contexts/user`다.
16
- - frontend surface는 `client/platform`, `client/admin`, `client/mobile`에서 공통 auth/session contract를 소비한다.
16
+ - frontend surface는 `client/web`, `client/admin`, `client/mobile`에서 공통 auth/session contract를 소비한다.
17
17
 
18
18
  ## Current Behavior
19
19
 
@@ -8,7 +8,7 @@
8
8
  ## Implemented Scope
9
9
 
10
10
  - 상품/카탈로그와 재고 baseline은 `catalog`, `inventory` context로 분리되어 있다.
11
- - landing/platform surface는 catalog read model을, admin surface는 catalog/inventory 관리 contract를 사용한다.
11
+ - landing/web surface는 catalog read model을, admin surface는 catalog/inventory 관리 contract를 사용한다.
12
12
 
13
13
  ## Implementation Shape
14
14
 
@@ -9,7 +9,7 @@
9
9
  ## Implemented Scope
10
10
 
11
11
  - 주문, 처리, 배송 baseline은 `orders`, `fulfillment`, `shipping` context로 분리되어 있다.
12
- - mobile/operator surface는 fulfillment/shipping read model을 사용하고, admin/platform은 order overview contract를 사용한다.
12
+ - mobile/operator surface는 fulfillment/shipping read model을 사용하고, admin/web은 order overview contract를 사용한다.
13
13
 
14
14
  ## Implementation Shape
15
15
 
@@ -1,3 +1,3 @@
1
1
  # Service Build Summaries
2
2
 
3
- - platform, admin, mobile, landing current implementation을 service baseline 기준으로 설명한다.
3
+ - web, admin, mobile, landing current implementation을 service baseline 기준으로 설명한다.
@@ -1,4 +1,4 @@
1
- # Platform Surface
1
+ # Web Surface
2
2
 
3
3
  ## Covered Planning Artifacts
4
4
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  ## Implemented Scope
10
10
 
11
- - runtime root는 `client/platform/src/main.tsx -> AuthProvider -> BrowserRouter -> client/platform/src/app/App.tsx` 순서로 조립된다.
11
+ - runtime root는 `client/web/src/main.tsx -> AuthProvider -> BrowserRouter -> client/web/src/app/App.tsx` 순서로 조립된다.
12
12
  - public leaf는 `LoginPage`이며, gated branch는 `ProtectedRoute -> AppShell` 뒤에 `/`와 `/orders` route leaf를 둔다.
13
13
  - route leaf는 `DashboardPage`, `OrdersPage`로 끝나고 backend leaf는 `server/main.py -> server/api/http/app.py -> server/api/http/router.py -> contexts/auth/contracts/http/router.py`, `contexts/catalog/contracts/http/router.py`, `contexts/orders/contracts/http/router.py` 체인으로 이어진다.
14
- - platform surface는 인증, catalog, orders baseline을 current runtime tree로 제공한다.
14
+ - web surface는 인증, catalog, orders baseline을 current runtime tree로 제공한다.
@@ -10,7 +10,7 @@
10
10
 
11
11
  - 예:
12
12
  - `sdd/03_build/02_screen/mobile/MOB-S001_example.md`
13
- - `sdd/03_build/02_screen/platform/PLT-S001_example.md`
13
+ - `sdd/03_build/02_screen/web/WEB-S001_example.md`
14
14
 
15
15
  ## Recommended Sections
16
16
 
@@ -0,0 +1,5 @@
1
+ # Web Screen Build Summaries
2
+
3
+ - current source: `sdd/01_planning/02_screen/web_screen_spec.pdf`
4
+ - 이 폴더는 web screen별 build summary를 유지한다.
5
+ - 현재 web baseline은 dashboard, catalog, orders surface를 기준으로 해석한다.
@@ -10,7 +10,7 @@
10
10
  - Playwright exactness runner/manifest를 local screen exactness의 canonical toolchain entrypoint로 추가했다.
11
11
  - `AGENTS.md`, `.codex/skills/sdd/SKILL.md`, `sdd/99_toolchain/01_automation/README.md`가 같은 회귀 검수 기준을 공유한다.
12
12
  - reusable asset planning root를 `sdd/01_planning/02_screen/assets/`로 정리하고, local Codex/Claude `sdd` skill에 같은 path를 반영했다.
13
- - `sdd/02_plan/10_test`, `sdd/03_build/10_test`, `sdd/04_verify/10_test`에 regression verification current-state 문서를 추가했다.
13
+ - `sdd/02_plan/10_test`, `sdd/03_build/10_test`, `sdd/03_verify/10_test`에 regression verification current-state 문서를 추가했다.
14
14
  - `.claude/skills/sdd-dev/SKILL.md`의 stale Codex canonical path를 현재 `.codex/skills/sdd/` 구조로 교체했다.
15
15
  - `.codex/skills/sdd/SKILL.md`와 `.claude/skills/sdd-dev/SKILL.md`에서 DEV/PROD rollout gate를 explicit deployment scope 조건으로 제한했다.
16
16
  - 디자인 가이드 builder 안내는 고정 file path 대신 `sdd/99_toolchain/01_automation/README.md`와 실제 존재하는 builder inventory 기준으로 정리했다.
@@ -34,7 +34,7 @@
34
34
  - `server/Dockerfile.dev`
35
35
  - `server/docker-entrypoint.sh`
36
36
  - `client/landing/Dockerfile.dev`
37
- - `client/platform/Dockerfile.dev`
37
+ - `client/web/Dockerfile.dev`
38
38
  - `client/mobile/Dockerfile.dev`
39
39
  - `client/admin/Dockerfile.dev`
40
40
  - `infra/compose/dev.yml`
@@ -7,5 +7,5 @@
7
7
  ## Implemented Scope
8
8
 
9
9
  - service app은 backend domain contract와 typed API helper를 통해 연결된다.
10
- - landing/catalog, mobile/fulfillment-shipping, admin/alerts-orders, platform/catalog-orders-support 흐름을 current baseline으로 유지한다.
10
+ - landing/catalog, mobile/fulfillment-shipping, admin/alerts-orders, web/catalog-orders-support 흐름을 current baseline으로 유지한다.
11
11
  - mobile template shared lib에 `useSpeechRecognitionInput.ts`를 추가해 browser Web Speech API 입력을 consumer screen에서 재사용할 수 있게 했다.
@@ -2,11 +2,11 @@
2
2
 
3
3
  ## Scope
4
4
 
5
- - platform, admin, mobile, landing 서비스 surface의 현재 retained verification을 요약한다.
5
+ - web, admin, mobile, landing 서비스 surface의 현재 retained verification을 요약한다.
6
6
 
7
7
  ## Current Status
8
8
 
9
- - `platform`: pass
9
+ - `web`: pass
10
10
  - `admin`: pass
11
11
  - `mobile`: pass
12
12
  - `landing`: pass
@@ -15,7 +15,7 @@
15
15
 
16
16
  - service별 frontend build가 current baseline 검증 surface다.
17
17
  - typed API contract와 backend domain contract 정합성은 domain verification을 상속한다.
18
- - screen surface 상세는 `04_verify/02_screen/` 기준으로 읽는다.
18
+ - screen surface 상세는 `03_verify/02_screen/` 기준으로 읽는다.
19
19
 
20
20
  ## Residual Risk
21
21
 
@@ -1,6 +1,6 @@
1
1
  # Screen Verification
2
2
 
3
3
  - 이 폴더는 screen별 현재 retained verification 상태를 유지한다.
4
- - service split을 따라 `04_verify/02_screen/<service>/` 아래에 둔다.
4
+ - service split을 따라 `03_verify/02_screen/<service>/` 아래에 둔다.
5
5
  - dated gate/test log를 쌓지 않고, current retained checks와 residual risk만 남긴다.
6
6
  - 새 verify section을 추가할 때는 `_screen_verify_template.md`를 기준으로 runtime tree, Playwright suite id, canonical runner command, artifact path를 함께 남긴다.
@@ -0,0 +1,4 @@
1
+ # Web Screen Verification
2
+
3
+ - current source: `sdd/01_planning/02_screen/web_screen_spec.pdf`
4
+ - 이 폴더는 web screen별 retained verification summary를 유지한다.
@@ -36,12 +36,12 @@
36
36
  - `rg -n "brand_assets|brand asset|Brand Asset|브랜드 자산|브랜드 에셋|build_mobile_brand_assets|mobile_brand_asset_manifest|BRAND_ASSET_RECIPES" sdd/01_planning/02_screen sdd/02_plan/03_architecture sdd/03_build/03_architecture sdd/99_toolchain .codex/skills/sdd .claude/skills/sdd`
37
37
  - pass
38
38
  - template repo planning/toolchain/local skill에서 legacy brand asset naming이 제거됐다
39
- - `git diff --check -- SDD_SKILL.md sdd/02_plan/03_architecture/toolchain_governance.md sdd/03_build/03_architecture/toolchain_governance.md sdd/04_verify/03_architecture/toolchain_governance.md .codex/skills/sdd/SKILL.md .claude/skills/sdd-dev/SKILL.md`
39
+ - `git diff --check -- SDD_SKILL.md sdd/02_plan/03_architecture/toolchain_governance.md sdd/03_build/03_architecture/toolchain_governance.md sdd/03_verify/03_architecture/toolchain_governance.md .codex/skills/sdd/SKILL.md .claude/skills/sdd-dev/SKILL.md`
40
40
  - pass
41
41
  - `sdd/99_toolchain/02_policies/regression-verification-policy.md`가 회귀 검수 규칙의 정본으로 추가됐다.
42
42
  - `AGENTS.md`, `.codex/skills/sdd/SKILL.md`, `sdd/99_toolchain/01_automation/README.md`가 direct-only verification 금지와 selected regression surface 기록 규칙을 함께 설명한다.
43
43
  - `sdd/01_planning/02_screen/assets/README.md`, `.codex/skills/sdd/SKILL.md`, `.claude/skills/sdd/SKILL.md`, `sdd/99_toolchain/01_automation/README.md`가 reusable asset planning root를 `assets/`로 일치시킨다.
44
- - `sdd/02_plan/10_test/regression_verification.md`, `sdd/03_build/10_test/regression_verification.md`, `sdd/04_verify/10_test/regression_verification.md`가 current-state trail을 이룬다.
44
+ - `sdd/02_plan/10_test/regression_verification.md`, `sdd/03_build/10_test/regression_verification.md`, `sdd/03_verify/10_test/regression_verification.md`가 current-state trail을 이룬다.
45
45
  - `.claude/skills/sdd-dev/SKILL.md`가 현재 Codex canonical path와 section map path를 직접 가리킨다.
46
46
  - `.codex/skills/sdd/SKILL.md`는 rollout scope를 `sdd/05_operate` 존재 여부가 아니라 explicit deployment scope 또는 completion policy로 해석한다.
47
47
  - `.codex/skills/sdd/SKILL.md`, `sdd/99_toolchain/01_automation/README.md`, `sdd/99_toolchain/02_policies/regression-verification-policy.md`가 Playwright exactness wrapper/manifest를 canonical local gate로 함께 설명한다.
@@ -7,4 +7,4 @@
7
7
  ## Retained Checks
8
8
 
9
9
  - current delivery baseline은 frontend build, backend test, screen capture/PDF generation 조합으로 유지된다.
10
- - proof/output path는 current `sdd/04_verify/10_test/ui_parity/` 구조를 따른다.
10
+ - proof/output path는 current `sdd/03_verify/10_test/ui_parity/` 구조를 따른다.
@@ -18,15 +18,15 @@
18
18
  - pass
19
19
  - `docker compose --env-file infra/compose/.env.prod.example -f infra/compose/prod.yml config`
20
20
  - pass
21
- - `docker compose --env-file .env.example -f compose.yml build server client-landing client-platform client-mobile client-admin`
21
+ - `docker compose --env-file .env.example -f compose.yml build server client-landing client-web client-mobile client-admin`
22
22
  - pass
23
- - `SERVER_HTTP_PORT=38080 CLIENT_LANDING_PORT=33000 CLIENT_PLATFORM_PORT=33001 CLIENT_MOBILE_PORT=33002 CLIENT_ADMIN_PORT=34000 docker compose --env-file .env.example -f compose.yml up -d postgres server client-landing client-platform client-mobile client-admin`
23
+ - `SERVER_HTTP_PORT=38080 CLIENT_LANDING_PORT=33000 CLIENT_WEB_PORT=33001 CLIENT_MOBILE_PORT=33002 CLIENT_ADMIN_PORT=34000 docker compose --env-file .env.example -f compose.yml up -d postgres server client-landing client-web client-mobile client-admin`
24
24
  - pass
25
25
  - root compose baseline이 high-port override에서도 `postgres + server + 4 clients`를 모두 기동했다.
26
26
  - `curl -sf http://127.0.0.1:38080/health`
27
27
  - pass
28
28
  - backend health 응답은 `{"status":"ok"}`였다.
29
- - `SERVER_HTTP_PORT=38080 CLIENT_LANDING_PORT=33000 CLIENT_PLATFORM_PORT=33001 CLIENT_MOBILE_PORT=33002 CLIENT_ADMIN_PORT=34000 docker compose --env-file .env.example -f compose.yml down`
29
+ - `SERVER_HTTP_PORT=38080 CLIENT_LANDING_PORT=33000 CLIENT_WEB_PORT=33001 CLIENT_MOBILE_PORT=33002 CLIENT_ADMIN_PORT=34000 docker compose --env-file .env.example -f compose.yml down`
30
30
  - pass
31
31
  - `terraform -chdir=infra/terraform/aws/data init -backend=false && terraform -chdir=infra/terraform/aws/data validate`
32
32
  - pass
@@ -34,7 +34,7 @@
34
34
  - pass
35
35
  - `terraform -chdir=infra/terraform/openstack/server init -backend=false && terraform -chdir=infra/terraform/openstack/server validate`
36
36
  - pass
37
- - `git diff --check -- README.md infra/compose/README.md sdd/02_plan/06_iac/template_runtime_delivery.md sdd/03_build/06_iac/template_runtime_delivery.md sdd/04_verify/06_iac/template_runtime_delivery.md sdd/99_toolchain/README.md sdd/99_toolchain/02_policies/compose-runtime-baseline-policy.md sdd/99_toolchain/02_policies/convention-storage-policy.md`
37
+ - `git diff --check -- README.md infra/compose/README.md sdd/02_plan/06_iac/template_runtime_delivery.md sdd/03_build/06_iac/template_runtime_delivery.md sdd/03_verify/06_iac/template_runtime_delivery.md sdd/99_toolchain/README.md sdd/99_toolchain/02_policies/compose-runtime-baseline-policy.md sdd/99_toolchain/02_policies/convention-storage-policy.md`
38
38
  - pass
39
39
 
40
40
  ## Residual Risk
@@ -2,14 +2,14 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- - `sdd/04_verify/`는 현재 구현 상태에 대한 retained verification을 durable 문서로 유지하는 루트다.
5
+ - `sdd/03_verify/`는 현재 구현 상태에 대한 retained verification을 durable 문서로 유지하는 루트다.
6
6
  - 날짜별 gate/test log를 쌓지 않고, 현재 기준의 pass/fail 상태와 residual risk만 남긴다.
7
7
 
8
8
  ## Canonical Rule
9
9
 
10
- - `04_verify`는 `02_plan`, `03_build`와 같은 section 축을 따른다.
10
+ - `03_verify`는 `02_plan`, `03_build`와 같은 section 축을 따른다.
11
11
  - feature, screen, architecture, IAC, test surface별 verification summary를 같은 파일에서 갱신한다.
12
- - history성 gate/test 로그는 `04_verify`에 두지 않는다.
12
+ - history성 gate/test 로그는 `03_verify`에 두지 않는다.
13
13
 
14
14
  ## Sections
15
15