@pzy560117/codex-harness 0.1.3 → 0.1.5

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 (386) hide show
  1. package/README.md +164 -27
  2. package/bin/harness.js +7 -7
  3. package/lib/commands/doctor.js +12 -12
  4. package/lib/commands/init.js +105 -105
  5. package/lib/commands/run.js +22 -22
  6. package/lib/commands/verify.js +12 -12
  7. package/lib/main.js +62 -62
  8. package/lib/powershell/find-powershell.js +20 -20
  9. package/lib/powershell/invoke-script.js +34 -34
  10. package/lib/project/assert-initialized.js +20 -20
  11. package/lib/project/detect-project-root.js +5 -5
  12. package/lib/release/cache-layout.js +34 -34
  13. package/lib/release/download-release.js +25 -25
  14. package/lib/release/package-source-layout.js +13 -13
  15. package/lib/release/release-config.js +6 -6
  16. package/lib/release/release-manifest.js +76 -76
  17. package/lib/release/resolve-package-source.js +21 -21
  18. package/lib/release/resolve-version.js +26 -26
  19. package/lib/release/unpack-zip.js +25 -25
  20. package/lib/release/verify-sha256.js +16 -16
  21. package/package-source/AGENTS.md +48 -57
  22. package/package-source/PACKAGE.md +7 -7
  23. package/package-source/README.md +85 -81
  24. package/package-source/docs/codex-harness-engineering/templates/AGENTS.md +51 -0
  25. package/package-source/docs/codex-harness-engineering/templates/README.md +21 -20
  26. package/package-source/docs/codex-harness-engineering/templates/bootstrap-codex-harness.ps1 +144 -110
  27. package/package-source/docs/codex-harness-engineering/templates/ci/AGENTS.md +15 -0
  28. package/package-source/docs/codex-harness-engineering/templates/ci/github-action-codex-review.yml +110 -110
  29. package/package-source/docs/codex-harness-engineering/templates/config/AGENTS.md +19 -0
  30. package/package-source/docs/codex-harness-engineering/templates/config/agents/architect.toml +18 -17
  31. package/package-source/docs/codex-harness-engineering/templates/config/agents/backend-worker.toml +15 -14
  32. package/package-source/docs/codex-harness-engineering/templates/config/agents/docs-researcher.toml +13 -12
  33. package/package-source/docs/codex-harness-engineering/templates/config/agents/docs-worker.toml +16 -15
  34. package/package-source/docs/codex-harness-engineering/templates/config/agents/explorer.toml +15 -14
  35. package/package-source/docs/codex-harness-engineering/templates/config/agents/failure-triage.toml +19 -18
  36. package/package-source/docs/codex-harness-engineering/templates/config/agents/frontend-worker.toml +15 -14
  37. package/package-source/docs/codex-harness-engineering/templates/config/agents/harness-writer.toml +16 -15
  38. package/package-source/docs/codex-harness-engineering/templates/config/agents/planner.toml +16 -15
  39. package/package-source/docs/codex-harness-engineering/templates/config/agents/readonly-research.toml +14 -13
  40. package/package-source/docs/codex-harness-engineering/templates/config/agents/reviewer.toml +13 -12
  41. package/package-source/docs/codex-harness-engineering/templates/config/agents/security-reviewer.toml +16 -15
  42. package/package-source/docs/codex-harness-engineering/templates/config/agents/stage1-reviewer.toml +15 -14
  43. package/package-source/docs/codex-harness-engineering/templates/config/agents/stage2-reviewer.toml +16 -15
  44. package/package-source/docs/codex-harness-engineering/templates/config/agents/test-planner.toml +18 -17
  45. package/package-source/docs/codex-harness-engineering/templates/config/agents/test-runner.toml +15 -14
  46. package/package-source/docs/codex-harness-engineering/templates/config/agents/visual-reviewer.toml +16 -15
  47. package/package-source/docs/codex-harness-engineering/templates/config/codex-agent-roles.md +24 -24
  48. package/package-source/docs/codex-harness-engineering/templates/config/codex-config.toml +12 -12
  49. package/package-source/docs/codex-harness-engineering/templates/config/codex-readme.md +6 -6
  50. package/package-source/docs/codex-harness-engineering/templates/config/env-check.ps1 +44 -40
  51. package/package-source/docs/codex-harness-engineering/templates/config/env.example +13 -12
  52. package/package-source/docs/codex-harness-engineering/templates/config/global-AGENTS.md +40 -40
  53. package/package-source/docs/codex-harness-engineering/templates/config/global-config.toml +19 -19
  54. package/package-source/docs/codex-harness-engineering/templates/config/rules/agents.md +118 -115
  55. package/package-source/docs/codex-harness-engineering/templates/config/rules/coding-style.md +57 -74
  56. package/package-source/docs/codex-harness-engineering/templates/config/rules/constitution.md +4 -4
  57. package/package-source/docs/codex-harness-engineering/templates/config/rules/git.rules +41 -41
  58. package/package-source/docs/codex-harness-engineering/templates/config/rules/harness.rules +29 -29
  59. package/package-source/docs/codex-harness-engineering/templates/config/rules/safety.rules +35 -35
  60. package/package-source/docs/codex-harness-engineering/templates/context/AGENTS.md +19 -0
  61. package/package-source/docs/codex-harness-engineering/templates/context/API_MAP.md +18 -0
  62. package/package-source/docs/codex-harness-engineering/templates/context/CHANGELOG_AI.md +11 -0
  63. package/package-source/docs/codex-harness-engineering/templates/context/CURRENT_TASK.md +114 -0
  64. package/package-source/docs/codex-harness-engineering/templates/context/DB_SCHEMA.md +14 -0
  65. package/package-source/docs/codex-harness-engineering/templates/context/DECISIONS.md +12 -0
  66. package/package-source/docs/codex-harness-engineering/templates/context/KNOWN_ISSUES.md +12 -0
  67. package/package-source/docs/codex-harness-engineering/templates/context/PROJECT_CONTEXT.md +14 -0
  68. package/package-source/docs/codex-harness-engineering/templates/context/architecture-brief.md +58 -58
  69. package/package-source/docs/codex-harness-engineering/templates/context/dev-plan.md +89 -83
  70. package/package-source/docs/codex-harness-engineering/templates/context/feature-pack.md +101 -101
  71. package/package-source/docs/codex-harness-engineering/templates/context/repo-map.md +102 -78
  72. package/package-source/docs/codex-harness-engineering/templates/context/service-dependency-matrix.yaml +25 -25
  73. package/package-source/docs/codex-harness-engineering/templates/contracts/AGENTS.md +17 -0
  74. package/package-source/docs/codex-harness-engineering/templates/contracts/README.md +24 -16
  75. package/package-source/docs/codex-harness-engineering/templates/contracts/openapi.yaml +182 -182
  76. package/package-source/docs/codex-harness-engineering/templates/contracts/orval.config.ts +20 -20
  77. package/package-source/docs/codex-harness-engineering/templates/contracts/prism-usage.md +41 -34
  78. package/package-source/docs/codex-harness-engineering/templates/design/AGENTS.md +21 -0
  79. package/package-source/docs/codex-harness-engineering/templates/design/ai-image-brief.md +122 -122
  80. package/package-source/docs/codex-harness-engineering/templates/design/component-map.md +45 -31
  81. package/package-source/docs/codex-harness-engineering/templates/design/design-brief.md +183 -178
  82. package/package-source/docs/codex-harness-engineering/templates/design/design-tokens.json +88 -88
  83. package/package-source/docs/codex-harness-engineering/templates/design/frontend-architecture.md +164 -146
  84. package/package-source/docs/codex-harness-engineering/templates/design/image-to-frontend-spec.md +64 -52
  85. package/package-source/docs/codex-harness-engineering/templates/design/screen-states.md +157 -122
  86. package/package-source/docs/codex-harness-engineering/templates/design/visual-parity-review.md +21 -21
  87. package/package-source/docs/codex-harness-engineering/templates/docs/AGENTS.md +19 -0
  88. package/package-source/docs/codex-harness-engineering/templates/docs/architecture-constraints.md +97 -83
  89. package/package-source/docs/codex-harness-engineering/templates/docs/code-semantics-and-navigation.md +54 -0
  90. package/package-source/docs/codex-harness-engineering/templates/docs/code-style-and-naming.md +116 -0
  91. package/package-source/docs/codex-harness-engineering/templates/docs/directory-structure-template.md +88 -0
  92. package/package-source/docs/codex-harness-engineering/templates/docs/env-and-deployment-template.md +60 -0
  93. package/package-source/docs/codex-harness-engineering/templates/docs/frontend-quality-rules.md +165 -138
  94. package/package-source/docs/codex-harness-engineering/templates/docs/governance-auto-repair.md +82 -80
  95. package/package-source/docs/codex-harness-engineering/templates/docs/harness-architecture.md +78 -78
  96. package/package-source/docs/codex-harness-engineering/templates/docs/install-manifest-governance.md +16 -16
  97. package/package-source/docs/codex-harness-engineering/templates/docs/knowledge-architecture.md +241 -219
  98. package/package-source/docs/codex-harness-engineering/templates/docs/knowledge-import.md +108 -108
  99. package/package-source/docs/codex-harness-engineering/templates/docs/knowledge-lint.md +98 -98
  100. package/package-source/docs/codex-harness-engineering/templates/docs/mcp-knowledge-governance.md +24 -0
  101. package/package-source/docs/codex-harness-engineering/templates/docs/new-project-checklist.md +7 -7
  102. package/package-source/docs/codex-harness-engineering/templates/docs/new-project-usage.md +107 -43
  103. package/package-source/docs/codex-harness-engineering/templates/docs/project-agents-template.md +211 -154
  104. package/package-source/docs/codex-harness-engineering/templates/docs/prompt-knowledge-integration.md +100 -89
  105. package/package-source/docs/codex-harness-engineering/templates/docs/regression-rules.md +47 -45
  106. package/package-source/docs/codex-harness-engineering/templates/docs/requirement-prep-kit/README.md +3 -3
  107. package/package-source/docs/codex-harness-engineering/templates/docs/rule-governance.md +98 -98
  108. package/package-source/docs/codex-harness-engineering/templates/docs/service-dependency-matrix.md +70 -55
  109. package/package-source/docs/codex-harness-engineering/templates/docs/task-session-strategy.md +133 -116
  110. package/package-source/docs/codex-harness-engineering/templates/docs/team-knowledge-sync.md +187 -187
  111. package/package-source/docs/codex-harness-engineering/templates/docs/trace-format.md +44 -32
  112. package/package-source/docs/codex-harness-engineering/templates/governance/AGENTS.md +18 -0
  113. package/package-source/docs/codex-harness-engineering/templates/governance/branch-protection-checklist.md +50 -50
  114. package/package-source/docs/codex-harness-engineering/templates/governance/feedback-evolution-loop.md +55 -55
  115. package/package-source/docs/codex-harness-engineering/templates/governance/retry-budget.yaml +30 -30
  116. package/package-source/docs/codex-harness-engineering/templates/governance/risk-levels.yaml +53 -53
  117. package/package-source/docs/codex-harness-engineering/templates/governance/sandbox-policy.md +13 -13
  118. package/package-source/docs/codex-harness-engineering/templates/hooks/AGENTS.md +15 -0
  119. package/package-source/docs/codex-harness-engineering/templates/hooks/hook-stop-verify.ps1 +171 -118
  120. package/package-source/docs/codex-harness-engineering/templates/hooks/hooks.json +40 -40
  121. package/package-source/docs/codex-harness-engineering/templates/knowledge/AGENTS.md +16 -0
  122. package/package-source/docs/codex-harness-engineering/templates/knowledge/catalog.md +6 -6
  123. package/package-source/docs/codex-harness-engineering/templates/knowledge/decisions/DECISION-HARNESS-001.md +39 -39
  124. package/package-source/docs/codex-harness-engineering/templates/knowledge/guidelines/GUIDELINE-RULES-001.md +30 -30
  125. package/package-source/docs/codex-harness-engineering/templates/knowledge/knowledge-catalog.md +41 -41
  126. package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/templates/plan-template.md +252 -252
  127. package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/templates/spec-template.md +145 -145
  128. package/package-source/docs/codex-harness-engineering/templates/package-assets/.specify/templates/tasks-template.md +47 -47
  129. package/package-source/docs/codex-harness-engineering/templates/package-assets/AGENTS.md +19 -0
  130. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/AGENTS.md +25 -0
  131. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/README.md +118 -42
  132. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/START-HERE.md +66 -53
  133. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/agent-ecosystem-practices.md +140 -140
  134. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/best-practices.md +9 -9
  135. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/codex-global-rules-example.md +48 -48
  136. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/AGENTS.md +14 -0
  137. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/goal-templates.md +380 -380
  138. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/AGENTS.md +14 -0
  139. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/README.md +64 -64
  140. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/contracts/openapi.yaml +25 -25
  141. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/contracts/orval.config.ts +20 -20
  142. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/ai-image-brief.md +44 -44
  143. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/component-map.md +17 -17
  144. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/design-brief.md +58 -58
  145. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/frontend-architecture.md +106 -106
  146. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/image-to-frontend-spec.md +72 -72
  147. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/screen-states.md +25 -25
  148. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/design/ui-image-review.md +38 -38
  149. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/difficulty-research.md +39 -39
  150. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/page-inventory.md +5 -5
  151. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/prd-lite.md +41 -41
  152. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/requirement-interface-matrix.md +32 -32
  153. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/docs/product/state-matrix.yaml +14 -14
  154. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/packages/api-client/generated/model/Ticket.ts +6 -6
  155. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/packages/api-client/generated/ticket-api.ts +35 -35
  156. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/packages/api-client/http-client.ts +8 -8
  157. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/packages/ui/TicketFilterBar.tsx +72 -72
  158. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/plans/features/ticket-filter.dev-plan.md +48 -48
  159. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/progress.txt +1 -1
  160. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/stories/TicketFilterBar.stories.tsx +33 -33
  161. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/task.json +54 -54
  162. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/examples/ticket-filter-demo/verify.ps1 +42 -42
  163. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/global-rules-and-bootstrap.md +157 -157
  164. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/goal-harness-integration-guide.md +364 -364
  165. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/implementation-flow.md +7 -5
  166. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/implementation-guide.md +25 -25
  167. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/knowledge-surface-map.md +186 -0
  168. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/mode-matrix.md +57 -57
  169. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/new-project-usage.md +176 -0
  170. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/project-agents-template.md +168 -154
  171. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/superpowers-codex-solo-builder-playbook.md +676 -676
  172. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/AGENTS.md +22 -0
  173. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/context/AGENTS.md +14 -0
  174. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/context/API_MAP.md +18 -0
  175. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/context/CURRENT_TASK.md +89 -0
  176. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/context/dev-plan.md +166 -0
  177. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/contracts/AGENTS.md +14 -0
  178. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/contracts/README.md +24 -0
  179. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/contracts/prism-usage.md +41 -0
  180. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/AGENTS.md +14 -0
  181. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/component-map.md +45 -31
  182. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/design-brief.md +183 -178
  183. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/design-tokens.json +88 -88
  184. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/frontend-architecture.md +164 -146
  185. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/image-to-frontend-spec.md +64 -52
  186. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/screen-states.md +157 -122
  187. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/design/visual-parity-review.md +21 -21
  188. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/docs/AGENTS.md +14 -0
  189. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/docs/env-and-deployment-template.md +60 -0
  190. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/docs/frontend-quality-rules.md +161 -138
  191. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/docs/regression-rules.md +47 -0
  192. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/docs/trace-format.md +86 -0
  193. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/product/AGENTS.md +14 -0
  194. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/product/prd-lite.md +166 -0
  195. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/product/state-matrix.yaml +116 -0
  196. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/prompts/AGENTS.md +14 -0
  197. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/prompts/implement-one-task.md +150 -0
  198. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/prompts/repair-one-finding.md +70 -0
  199. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/spec/11-security-design.md +43 -0
  200. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/spec/AGENTS.md +14 -0
  201. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/AGENTS.md +14 -0
  202. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/EVIDENCE_PROTOCOL.md +54 -0
  203. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/NATURAL_LANGUAGE_TEST_CASES.md +690 -0
  204. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/REGRESSION_PLAN.md +28 -0
  205. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/TEST_STRATEGY.md +98 -0
  206. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/TRACEABILITY_MATRIX.md +23 -0
  207. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/codex-harness-engineering/templates/testing/verify-matrix.md +51 -0
  208. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/README.md +10 -10
  209. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/ecc-zh-CN/commands/e2e.md +30 -30
  210. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/README.md +60 -60
  211. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/app/Mobile_App_Production_Readiness_Framework_/347/247/273/345/212/250/347/253/257/345/205/250/345/271/263/345/217/260/347/224/237/344/272/247/345/217/257/344/270/212/347/272/277/350/247/204/350/214/203.md +2457 -2457
  212. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/app/catalog.md +33 -33
  213. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/architecture.md +358 -358
  214. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/common/AI_Coding_Production_Control_Framework_AI/345/206/231/345/256/214/347/232/204/344/273/243/347/240/201/345/246/202/344/275/225/344/270/215/345/244/261/346/216/247.md +2055 -2055
  215. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/common/catalog.md +34 -34
  216. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/initial-content.md +296 -296
  217. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/external-knowledge/integration-roadmap.md +221 -221
  218. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/architecture-constraints.md +95 -83
  219. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/code-semantics-and-navigation.md +17 -0
  220. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/code-style-and-naming.md +116 -0
  221. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/frontend-quality-rules.md +138 -138
  222. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/governance-auto-repair.md +82 -80
  223. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/mcp-knowledge-governance.md +24 -0
  224. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/service-dependency-matrix.md +55 -55
  225. package/package-source/docs/codex-harness-engineering/templates/package-assets/docs/harness/speckit-requirements-gate.md +124 -124
  226. package/package-source/docs/codex-harness-engineering/templates/package-assets/root/PACKAGE.md +7 -7
  227. package/package-source/docs/codex-harness-engineering/templates/package-assets/root/README.md +52 -52
  228. package/package-source/docs/codex-harness-engineering/templates/package-assets/root/install-agent-here.ps1 +57 -57
  229. package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/agents.md +115 -115
  230. package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/coding-style.md +57 -74
  231. package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/constitution.md +4 -4
  232. package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/git.rules +41 -41
  233. package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/harness.rules +29 -29
  234. package/package-source/docs/codex-harness-engineering/templates/package-assets/rules/safety.rules +35 -35
  235. package/package-source/docs/codex-harness-engineering/templates/package-assets/scripts/ai-workflow/check-ai-sync-drift.ps1 +205 -205
  236. package/package-source/docs/codex-harness-engineering/templates/package-assets/scripts/ai-workflow/sync-ai-config-to-targets.ps1 +826 -826
  237. package/package-source/docs/codex-harness-engineering/templates/package-assets/scripts/ai-workflow/sync-targets.example.json +35 -35
  238. package/package-source/docs/codex-harness-engineering/templates/package-assets/scripts/harness/harness-governance-check.ps1 +864 -366
  239. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/HOW_TO_USE_SKILLS.md +79 -79
  240. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/academic-mermaid-diagrams/SKILL.md +172 -172
  241. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ai-config-git-sync/SKILL.md +152 -152
  242. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/ai-config-git-sync/references/command-recipes.md +92 -92
  243. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/auto-commit/SKILL.md +324 -322
  244. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/better-icons/SKILL.md +3 -3
  245. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/claude-openrouter-clash-debug/SKILL.md +100 -100
  246. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/claude-openrouter-clash-debug/references/windows-openrouter-clash-playbook.md +94 -94
  247. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/claude-openrouter-clash-debug/scripts/diagnose-openrouter-route.ps1 +282 -282
  248. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/claude-openrouter-clash-debug/scripts/ensure-openrouter-rule.ps1 +101 -101
  249. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/fixing-metadata/SKILL.md +6 -6
  250. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/frontend-design/SKILL.md +37 -37
  251. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/git-xianyu-analyzer/SKILL.md +3 -3
  252. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/harness-surface-sync/SKILL.md +204 -188
  253. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/harness-surface-sync/references/current-repo-sync-matrix.md +150 -110
  254. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/harness-surface-sync/references/stale-patterns.md +65 -65
  255. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/init-autopilot/SKILL.md +17 -15
  256. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/log-analysis-optimization/SKILL.md +5 -5
  257. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/prd-writer-skill/SKILL.md +28 -28
  258. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qa-e2e-planner/SKILL.md +11 -11
  259. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qa-e2e-runner/SKILL.md +6 -6
  260. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qa-mock-cleaner/SKILL.md +4 -4
  261. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qoder-codex-api-config/SKILL.md +67 -67
  262. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qoder-codex-api-config/agents/openai.yaml +7 -7
  263. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/qoder-codex-api-config/scripts/configure-qoder-codex-api.ps1 +278 -278
  264. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/requirements-design-template/SKILL.md +87 -87
  265. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/skills-index.md +12 -12
  266. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-analyze/SKILL.md +34 -34
  267. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-checklist/SKILL.md +8 -8
  268. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-clarify/SKILL.md +28 -28
  269. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-e2e-tasks/SKILL.md +12 -12
  270. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-implement/SKILL.md +37 -37
  271. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-plan/SKILL.md +140 -138
  272. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-specify/SKILL.md +100 -100
  273. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-tasks/SKILL.md +86 -86
  274. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/speckit-verify/SKILL.md +144 -142
  275. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/sync-project-root-docs/SKILL.md +145 -143
  276. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/sync-project-root-docs/references/current-repo-notes.md +42 -41
  277. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/sync-project-root-docs/references/github-samples.md +33 -33
  278. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/sync-project-root-docs/scripts/collect-root-doc-facts.ps1 +174 -145
  279. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/ai-integrity-and-originality.md +191 -191
  280. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/citation-templates.md +99 -99
  281. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/final-checklist.md +60 -60
  282. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/photographer-booking-paper.md +85 -85
  283. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/test-result-templates.md +22 -22
  284. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/thesis-writing/references/thesis-analysis-template.md +63 -63
  285. package/package-source/docs/codex-harness-engineering/templates/package-assets/skills/update-codemaps/SKILL.md +31 -31
  286. package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/README.md +15 -15
  287. package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.analyze.md +60 -60
  288. package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.checklist.md +8 -8
  289. package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.clarify.md +28 -28
  290. package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.e2e-testing.md +10 -10
  291. package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.implement.md +56 -56
  292. package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.plan.md +137 -134
  293. package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.specify.md +100 -100
  294. package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.tasks.md +86 -86
  295. package/package-source/docs/codex-harness-engineering/templates/package-assets/workflows/speckit.verify.md +130 -130
  296. package/package-source/docs/codex-harness-engineering/templates/product/AGENTS.md +19 -0
  297. package/package-source/docs/codex-harness-engineering/templates/product/acceptance-criteria.md +47 -47
  298. package/package-source/docs/codex-harness-engineering/templates/product/difficulty-research.md +47 -47
  299. package/package-source/docs/codex-harness-engineering/templates/product/page-inventory.md +21 -21
  300. package/package-source/docs/codex-harness-engineering/templates/product/prd-lite.md +166 -158
  301. package/package-source/docs/codex-harness-engineering/templates/product/requirement-interface-matrix.md +37 -37
  302. package/package-source/docs/codex-harness-engineering/templates/product/state-matrix.yaml +116 -105
  303. package/package-source/docs/codex-harness-engineering/templates/prompts/AGENTS.md +15 -0
  304. package/package-source/docs/codex-harness-engineering/templates/prompts/controller-loop.md +88 -88
  305. package/package-source/docs/codex-harness-engineering/templates/prompts/failure-triage.md +71 -69
  306. package/package-source/docs/codex-harness-engineering/templates/prompts/harness-audit.md +54 -52
  307. package/package-source/docs/codex-harness-engineering/templates/prompts/implement-one-task.md +150 -148
  308. package/package-source/docs/codex-harness-engineering/templates/prompts/repair-one-finding.md +70 -67
  309. package/package-source/docs/codex-harness-engineering/templates/prompts/review-one-task.md +45 -43
  310. package/package-source/docs/codex-harness-engineering/templates/prompts/review-stage1-spec.md +111 -109
  311. package/package-source/docs/codex-harness-engineering/templates/prompts/review-stage2-quality.md +82 -80
  312. package/package-source/docs/codex-harness-engineering/templates/prompts/visual-evaluator.md +80 -78
  313. package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/backend-worker.md +41 -41
  314. package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/docs-worker.md +28 -28
  315. package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/frontend-worker.md +46 -46
  316. package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/harness-writer.md +40 -40
  317. package/package-source/docs/codex-harness-engineering/templates/prompts/worker-role/test-runner.md +27 -27
  318. package/package-source/docs/codex-harness-engineering/templates/runtime/AGENTS.md +66 -50
  319. package/package-source/docs/codex-harness-engineering/templates/runtime/codex-loop.ps1 +2129 -231
  320. package/package-source/docs/codex-harness-engineering/templates/runtime/doctor.ps1 +224 -224
  321. package/package-source/docs/codex-harness-engineering/templates/runtime/project-task-template.json +42 -39
  322. package/package-source/docs/codex-harness-engineering/templates/runtime/scripts/test-install-modes.ps1 +2 -2
  323. package/package-source/docs/codex-harness-engineering/templates/runtime/smoke-task.json +52 -52
  324. package/package-source/docs/codex-harness-engineering/templates/runtime/task-run-profile.json +86 -86
  325. package/package-source/docs/codex-harness-engineering/templates/runtime/task.json +11 -8
  326. package/package-source/docs/codex-harness-engineering/templates/runtime/verify.ps1 +21 -21
  327. package/package-source/docs/codex-harness-engineering/templates/scripts/AGENTS.md +15 -0
  328. package/package-source/docs/codex-harness-engineering/templates/scripts/ai-workflow/check-ai-sync-drift.ps1 +205 -205
  329. package/package-source/docs/codex-harness-engineering/templates/scripts/harness/harness-governance-check.ps1 +864 -366
  330. package/package-source/docs/codex-harness-engineering/templates/spec/10-data-model.md +23 -7
  331. package/package-source/docs/codex-harness-engineering/templates/spec/11-security-design.md +30 -13
  332. package/package-source/docs/codex-harness-engineering/templates/spec/AGENTS.md +15 -0
  333. package/package-source/docs/codex-harness-engineering/templates/testing/ACCEPTANCE_CRITERIA.md +39 -39
  334. package/package-source/docs/codex-harness-engineering/templates/testing/ACCEPTANCE_EXAMPLES.md +37 -37
  335. package/package-source/docs/codex-harness-engineering/templates/testing/AGENTS.md +19 -0
  336. package/package-source/docs/codex-harness-engineering/templates/testing/EVIDENCE_PROTOCOL.md +54 -48
  337. package/package-source/docs/codex-harness-engineering/templates/testing/NATURAL_LANGUAGE_TEST_CASES.md +5 -4
  338. package/package-source/docs/codex-harness-engineering/templates/testing/REGRESSION_PLAN.md +28 -20
  339. package/package-source/docs/codex-harness-engineering/templates/testing/RISK_BASED_TEST_PLAN.md +16 -16
  340. package/package-source/docs/codex-harness-engineering/templates/testing/TEST_STRATEGY.md +98 -97
  341. package/package-source/docs/codex-harness-engineering/templates/testing/TRACEABILITY_MATRIX.md +6 -5
  342. package/package-source/docs/codex-harness-engineering/templates/testing/coverage-policy.md +25 -25
  343. package/package-source/docs/codex-harness-engineering/templates/testing/e2e-plan.md +139 -139
  344. package/package-source/docs/codex-harness-engineering/templates/testing/failure-findings.example.json +3 -3
  345. package/package-source/docs/codex-harness-engineering/templates/testing/failure-triage.md +62 -62
  346. package/package-source/docs/codex-harness-engineering/templates/testing/test-data-plan.md +36 -36
  347. package/package-source/docs/codex-harness-engineering/templates/testing/test-report.md +85 -41
  348. package/package-source/docs/codex-harness-engineering/templates/testing/verify-matrix.md +15 -5
  349. package/package-source/docs/codex-harness-engineering/templates/tools/AGENTS.md +14 -0
  350. package/package-source/docs/codex-harness-engineering/templates/tools/harness/acceptance-lint.ps1 +37 -0
  351. package/package-source/docs/codex-harness-engineering/templates/tools/harness/architecture-lint.ps1 +150 -0
  352. package/package-source/docs/codex-harness-engineering/templates/tools/harness/backend-lint.ps1 +137 -0
  353. package/package-source/docs/codex-harness-engineering/templates/tools/harness/business-lint.ps1 +148 -0
  354. package/package-source/docs/codex-harness-engineering/templates/tools/harness/component-lint.ps1 +148 -0
  355. package/package-source/docs/codex-harness-engineering/templates/tools/harness/config-lint.ps1 +159 -0
  356. package/package-source/docs/codex-harness-engineering/templates/tools/harness/context-lint.ps1 +187 -0
  357. package/package-source/docs/codex-harness-engineering/templates/tools/harness/contract-lint.ps1 +148 -0
  358. package/package-source/docs/codex-harness-engineering/templates/tools/harness/data-lint.ps1 +37 -0
  359. package/package-source/docs/codex-harness-engineering/templates/tools/harness/directory-lint.ps1 +152 -0
  360. package/package-source/docs/codex-harness-engineering/templates/tools/harness/docs-lint.ps1 +40 -0
  361. package/package-source/docs/codex-harness-engineering/templates/tools/harness/impact-lint.ps1 +148 -0
  362. package/package-source/docs/codex-harness-engineering/templates/tools/harness/integration-lint.ps1 +37 -0
  363. package/package-source/docs/codex-harness-engineering/templates/tools/harness/mobile-lint.ps1 +37 -0
  364. package/package-source/docs/codex-harness-engineering/templates/tools/harness/observability-lint.ps1 +137 -0
  365. package/package-source/docs/codex-harness-engineering/templates/tools/harness/performance-lint.ps1 +148 -0
  366. package/package-source/docs/codex-harness-engineering/templates/tools/harness/refactor-lint.ps1 +137 -0
  367. package/package-source/docs/codex-harness-engineering/templates/tools/harness/security-lint.ps1 +159 -0
  368. package/package-source/docs/codex-harness-engineering/templates/tools/harness/session-lint.ps1 +126 -0
  369. package/package-source/docs/codex-harness-engineering/templates/tools/harness/spec-lint.ps1 +285 -0
  370. package/package-source/docs/codex-harness-engineering/templates/tools/harness/state-lint.ps1 +137 -0
  371. package/package-source/docs/codex-harness-engineering/templates/tools/harness/style-lint.ps1 +155 -0
  372. package/package-source/docs/codex-harness-engineering/templates/tools/harness/testing-lint.ps1 +192 -0
  373. package/package-source/docs/codex-harness-engineering/templates/tools/harness/ui-lint.ps1 +148 -0
  374. package/package-source/docs/codex-harness-engineering/templates/trace/AGENTS.md +16 -0
  375. package/package-source/docs/codex-harness-engineering/templates/trace/eval-case.yaml +24 -24
  376. package/package-source/docs/codex-harness-engineering/templates/trace/trace.schema.json +101 -101
  377. package/package-source/install-manifest.json +149 -79
  378. package/package-source/tools/install/ai-workflow/check-ai-sync-drift.ps1 +205 -205
  379. package/package-source/tools/install/ai-workflow/sync-ai-config-to-targets.ps1 +826 -826
  380. package/package-source/tools/install/ai-workflow/sync-targets.example.json +35 -35
  381. package/package-source/tools/install/bootstrap-codex-harness.ps1 +145 -129
  382. package/package-source/tools/install/env-check.ps1 +40 -40
  383. package/package-source/tools/install/init-project.ps1 +1 -1
  384. package/package-source/tools/install/install-agent-here.ps1 +57 -57
  385. package/package-source/tools/install/install-agent.ps1 +33 -31
  386. package/package.json +23 -23
@@ -1,107 +1,107 @@
1
- # Frontend Architecture
2
-
3
- ## 1. 基本信息
4
-
5
- - Feature ID: `FEAT-TICKET-FILTER`
6
- - 页面 / 模块: 工单列表筛选与保存视图
7
- - 关联需求: `FR-001`, `FR-002`, `FR-003`
8
- - 关联路由: `/tickets`
9
- - 目标质量等级: P2
10
- - 设计真相源: `docs/design/design-brief.md`, `docs/design/image-to-frontend-spec.md`
11
- - Contract 真相源: `contracts/openapi.yaml`
12
-
13
- ## 2. 架构目标
14
-
15
- - 把筛选、表格、保存视图弹窗拆成可独立实现和验证的 feature 组件。
16
- - 让筛选状态可被 URL 分享、刷新恢复和 E2E 验证。
17
- - 保持通用表格能力和工单业务字段分离,避免把业务枚举写进 UI primitive。
18
- - 覆盖 desktop / tablet / mobile,不把移动端降级为横向滚动表格。
19
-
20
- ## 3. 分层与目录
21
-
22
- | 层级 | 建议路径 | 职责 | 禁止事项 |
23
- | --- | --- | --- | --- |
24
- | Page / Route | `app/tickets/page.tsx` | 组合页面、读取 query、挂载数据查询 | 直接写筛选控件细节 |
25
- | Feature | `features/tickets/` | 工单筛选、表格、保存视图、权限表现 | 放跨业务 primitive |
26
- | UI primitives | `packages/ui/` | button、select、dialog、badge、table shell | 依赖工单状态枚举 |
27
- | Data table | `packages/ui/data-table/` | 分页、列显隐、空态容器、行状态 | 写死 ticket 字段 |
28
- | API client | `packages/api-client/` | `listTickets`, `createTicketView` | 直接操作 React 状态 |
29
- | Model / Schema | `features/tickets/model/` | `TicketFilter`、query schema、优先级枚举 | 写入展示样式 |
30
-
31
- ## 4. 组件树
32
-
33
- ```text
34
- <TicketListPage>
35
- <TicketListShell>
36
- <TicketToolbar />
37
- <TicketFilterBar />
38
- <TicketFilterDrawer />
39
- <TicketTable />
40
- <TicketPagination />
41
- <SavedViewModal />
42
- </TicketListShell>
43
- </TicketListPage>
44
- ```
45
-
46
- | 组件 | 层级 | 职责 | 数据输入 | 事件输出 | 可复用范围 |
47
- | --- | --- | --- | --- | --- | --- |
48
- | `TicketFilterBar` | Feature | 展示 desktop/tablet 筛选控件和 dirty 状态 | `TicketFilter`, `dirty`, `loading`, `canSaveView` | `onChange`, `onReset`, `onSaveView` | feature |
49
- | `TicketFilterDrawer` | Feature | 移动端筛选抽屉 | `TicketFilter`, `open` | `onApply`, `onClose` | feature |
50
- | `SavedViewModal` | Feature | 命名并保存筛选视图 | `TicketFilter`, `saving`, `error` | `onSubmit`, `onCancel` | feature |
51
- | `TicketTable` | Feature | 展示工单结果和错误 / 空态 | `Ticket[]`, `pagination`, `status` | `onRetry`, `onPageChange` | feature |
52
- | `DataTableShell` | Primitive | 表格布局、列显隐、分页容器 | generic rows | generic callbacks | project |
53
-
54
- ## 5. 状态管理
55
-
56
- | 状态 | 所属层级 | 来源 | 持久化方式 | 变化事件 | 测试方式 |
57
- | --- | --- | --- | --- | --- | --- |
58
- | `status`, `priority`, `assigneeId`, `search` | Page / Feature | query string | URL | filter change / reset | e2e |
59
- | tickets remote data | Feature | `GET /tickets` | query cache | filter change / retry | mock + e2e |
60
- | saved view form | Component | user input | local | submit / cancel | story interaction |
61
- | drawer / modal open | Component | user interaction | local | open / close | story |
62
- | permission | Feature | user role | auth context / API | role change | e2e |
63
-
64
- ## 6. 响应式架构
65
-
66
- | 视口 | 结构 | 筛选策略 | 列表 / 表格策略 | 操作区策略 | 必需截图 |
67
- | --- | --- | --- | --- | --- | --- |
68
- | Desktop >= 1200px | Header + inline filters + table | 横向筛选条,chip 回显 | 完整表格,保留分页 | 保存视图按钮在 header | default / empty / error |
69
- | Tablet 768-1199px | Header + wrapping filters + table | 筛选条换行,次要筛选收进菜单 | 隐藏低优先级列 | 操作区折叠为菜单 | default |
70
- | Mobile < 768px | Header + filter drawer + cards | 顶部筛选按钮打开抽屉 | 表格转工单卡片 | 保存视图进更多菜单 | default / mobile |
71
-
72
- ## 7. 动效与可访问性
73
-
74
- | 组件 / 场景 | 动效 | reduced motion 行为 | 焦点 / 键盘规则 | ARIA / 语义 |
75
- | --- | --- | --- | --- | --- |
76
- | `SavedViewModal` | opacity + scale, 160ms | 直接显示 / 隐藏 | 打开聚焦名称输入,Esc 关闭并恢复焦点 | `role=dialog`, `aria-modal=true` |
77
- | `TicketFilterDrawer` | translateX + opacity, 180ms | 直接显示 / 隐藏 | focus trap,关闭后回到筛选按钮 | drawer label |
78
- | filter chips | opacity + slight translate, 120ms | 无位移动画 | 删除按钮可键盘访问 | chip 文案含字段名 |
79
- | table refresh | skeleton + row fade, 160ms | skeleton 不做 shimmer | 重试按钮可聚焦 | loading / error 状态可感知 |
80
-
81
- ## 8. 性能预算
82
-
83
- | 风险 | 阈值 / 预算 | 处理策略 | 验证方式 |
84
- | --- | --- | --- | --- |
85
- | 表格行数 | 单页超过 100 行 | 服务端分页或虚拟滚动 | e2e + performance smoke |
86
- | 筛选请求 | 输入搜索 | debounce 300ms | interaction test |
87
- | 动效 | 表格刷新频繁 | 高频刷新禁用行级动画 | visual / manual |
88
- | 图标 | 操作按钮较多 | 使用 tree-shakeable icon import | bundle check |
89
-
90
- ## 9. Story 与测试矩阵
91
-
92
- | 状态 / 场景 | Story | Interaction | E2E | Visual | A11y | Performance |
93
- | --- | --- | --- | --- | --- | --- | --- |
94
- | default | `TicketListPage/Default` | filters change | `/tickets` query | desktop | smoke | N/A |
95
- | loading | `TicketListPage/Loading` | disabled controls | N/A | desktop | smoke | shimmer off under reduced motion |
96
- | empty | `TicketListPage/Empty` | clear filters | no results | desktop | smoke | N/A |
97
- | error | `TicketListPage/Error` | retry | API failure | desktop | smoke | N/A |
98
- | permission | `TicketListPage/PermissionDenied` | save hidden | role=agent | desktop | smoke | N/A |
99
- | mobile | `TicketListPage/Mobile` | drawer apply | mobile viewport | mobile | focus trap | N/A |
100
-
101
- ## 10. 复用决策
102
-
103
- | 候选组件 / Hook | 复用范围 | 是否抽象 | 原因 | 约束 |
104
- | --- | --- | --- | --- | --- |
105
- | `DataTableShell` | project | Yes | 表格分页、空态和列显隐可跨后台页面复用 | 不写业务字段 |
106
- | `TicketFilterBar` | feature | No | 工单字段和权限语义强 | 留在 tickets feature |
1
+ # Frontend Architecture
2
+
3
+ ## 1. 基本信息
4
+
5
+ - Feature ID: `FEAT-TICKET-FILTER`
6
+ - 页面 / 模块: 工单列表筛选与保存视图
7
+ - 关联需求: `FR-001`, `FR-002`, `FR-003`
8
+ - 关联路由: `/tickets`
9
+ - 目标质量等级: P2
10
+ - 设计真相源: `docs/design/design-brief.md`, `docs/design/image-to-frontend-spec.md`
11
+ - Contract 真相源: `contracts/openapi.yaml`
12
+
13
+ ## 2. 架构目标
14
+
15
+ - 把筛选、表格、保存视图弹窗拆成可独立实现和验证的 feature 组件。
16
+ - 让筛选状态可被 URL 分享、刷新恢复和 E2E 验证。
17
+ - 保持通用表格能力和工单业务字段分离,避免把业务枚举写进 UI primitive。
18
+ - 覆盖 desktop / tablet / mobile,不把移动端降级为横向滚动表格。
19
+
20
+ ## 3. 分层与目录
21
+
22
+ | 层级 | 建议路径 | 职责 | 禁止事项 |
23
+ | --- | --- | --- | --- |
24
+ | Page / Route | `app/tickets/page.tsx` | 组合页面、读取 query、挂载数据查询 | 直接写筛选控件细节 |
25
+ | Feature | `features/tickets/` | 工单筛选、表格、保存视图、权限表现 | 放跨业务 primitive |
26
+ | UI primitives | `packages/ui/` | button、select、dialog、badge、table shell | 依赖工单状态枚举 |
27
+ | Data table | `packages/ui/data-table/` | 分页、列显隐、空态容器、行状态 | 写死 ticket 字段 |
28
+ | API client | `packages/api-client/` | `listTickets`, `createTicketView` | 直接操作 React 状态 |
29
+ | Model / Schema | `features/tickets/model/` | `TicketFilter`、query schema、优先级枚举 | 写入展示样式 |
30
+
31
+ ## 4. 组件树
32
+
33
+ ```text
34
+ <TicketListPage>
35
+ <TicketListShell>
36
+ <TicketToolbar />
37
+ <TicketFilterBar />
38
+ <TicketFilterDrawer />
39
+ <TicketTable />
40
+ <TicketPagination />
41
+ <SavedViewModal />
42
+ </TicketListShell>
43
+ </TicketListPage>
44
+ ```
45
+
46
+ | 组件 | 层级 | 职责 | 数据输入 | 事件输出 | 可复用范围 |
47
+ | --- | --- | --- | --- | --- | --- |
48
+ | `TicketFilterBar` | Feature | 展示 desktop/tablet 筛选控件和 dirty 状态 | `TicketFilter`, `dirty`, `loading`, `canSaveView` | `onChange`, `onReset`, `onSaveView` | feature |
49
+ | `TicketFilterDrawer` | Feature | 移动端筛选抽屉 | `TicketFilter`, `open` | `onApply`, `onClose` | feature |
50
+ | `SavedViewModal` | Feature | 命名并保存筛选视图 | `TicketFilter`, `saving`, `error` | `onSubmit`, `onCancel` | feature |
51
+ | `TicketTable` | Feature | 展示工单结果和错误 / 空态 | `Ticket[]`, `pagination`, `status` | `onRetry`, `onPageChange` | feature |
52
+ | `DataTableShell` | Primitive | 表格布局、列显隐、分页容器 | generic rows | generic callbacks | project |
53
+
54
+ ## 5. 状态管理
55
+
56
+ | 状态 | 所属层级 | 来源 | 持久化方式 | 变化事件 | 测试方式 |
57
+ | --- | --- | --- | --- | --- | --- |
58
+ | `status`, `priority`, `assigneeId`, `search` | Page / Feature | query string | URL | filter change / reset | e2e |
59
+ | tickets remote data | Feature | `GET /tickets` | query cache | filter change / retry | mock + e2e |
60
+ | saved view form | Component | user input | local | submit / cancel | story interaction |
61
+ | drawer / modal open | Component | user interaction | local | open / close | story |
62
+ | permission | Feature | user role | auth context / API | role change | e2e |
63
+
64
+ ## 6. 响应式架构
65
+
66
+ | 视口 | 结构 | 筛选策略 | 列表 / 表格策略 | 操作区策略 | 必需截图 |
67
+ | --- | --- | --- | --- | --- | --- |
68
+ | Desktop >= 1200px | Header + inline filters + table | 横向筛选条,chip 回显 | 完整表格,保留分页 | 保存视图按钮在 header | default / empty / error |
69
+ | Tablet 768-1199px | Header + wrapping filters + table | 筛选条换行,次要筛选收进菜单 | 隐藏低优先级列 | 操作区折叠为菜单 | default |
70
+ | Mobile < 768px | Header + filter drawer + cards | 顶部筛选按钮打开抽屉 | 表格转工单卡片 | 保存视图进更多菜单 | default / mobile |
71
+
72
+ ## 7. 动效与可访问性
73
+
74
+ | 组件 / 场景 | 动效 | reduced motion 行为 | 焦点 / 键盘规则 | ARIA / 语义 |
75
+ | --- | --- | --- | --- | --- |
76
+ | `SavedViewModal` | opacity + scale, 160ms | 直接显示 / 隐藏 | 打开聚焦名称输入,Esc 关闭并恢复焦点 | `role=dialog`, `aria-modal=true` |
77
+ | `TicketFilterDrawer` | translateX + opacity, 180ms | 直接显示 / 隐藏 | focus trap,关闭后回到筛选按钮 | drawer label |
78
+ | filter chips | opacity + slight translate, 120ms | 无位移动画 | 删除按钮可键盘访问 | chip 文案含字段名 |
79
+ | table refresh | skeleton + row fade, 160ms | skeleton 不做 shimmer | 重试按钮可聚焦 | loading / error 状态可感知 |
80
+
81
+ ## 8. 性能预算
82
+
83
+ | 风险 | 阈值 / 预算 | 处理策略 | 验证方式 |
84
+ | --- | --- | --- | --- |
85
+ | 表格行数 | 单页超过 100 行 | 服务端分页或虚拟滚动 | e2e + performance smoke |
86
+ | 筛选请求 | 输入搜索 | debounce 300ms | interaction test |
87
+ | 动效 | 表格刷新频繁 | 高频刷新禁用行级动画 | visual / manual |
88
+ | 图标 | 操作按钮较多 | 使用 tree-shakeable icon import | bundle check |
89
+
90
+ ## 9. Story 与测试矩阵
91
+
92
+ | 状态 / 场景 | Story | Interaction | E2E | Visual | A11y | Performance |
93
+ | --- | --- | --- | --- | --- | --- | --- |
94
+ | default | `TicketListPage/Default` | filters change | `/tickets` query | desktop | smoke | N/A |
95
+ | loading | `TicketListPage/Loading` | disabled controls | N/A | desktop | smoke | shimmer off under reduced motion |
96
+ | empty | `TicketListPage/Empty` | clear filters | no results | desktop | smoke | N/A |
97
+ | error | `TicketListPage/Error` | retry | API failure | desktop | smoke | N/A |
98
+ | permission | `TicketListPage/PermissionDenied` | save hidden | role=agent | desktop | smoke | N/A |
99
+ | mobile | `TicketListPage/Mobile` | drawer apply | mobile viewport | mobile | focus trap | N/A |
100
+
101
+ ## 10. 复用决策
102
+
103
+ | 候选组件 / Hook | 复用范围 | 是否抽象 | 原因 | 约束 |
104
+ | --- | --- | --- | --- | --- |
105
+ | `DataTableShell` | project | Yes | 表格分页、空态和列显隐可跨后台页面复用 | 不写业务字段 |
106
+ | `TicketFilterBar` | feature | No | 工单字段和权限语义强 | 留在 tickets feature |
107
107
  | `SavedViewModal` | feature | No | 视图保存依赖当前 filter schema | 后续第二个业务场景出现再抽象 |
@@ -1,72 +1,72 @@
1
- # Image To Frontend Spec
2
-
3
- ## 1. 输入图片
4
-
5
- | Image ID | Page ID | State | 图片路径 / 链接 | 评审结论 |
6
- | --- | --- | --- | --- | --- |
7
- | IMG-001 | ticket-list | default | `images/ticket-list-default.png` | PASS |
8
- | IMG-002 | ticket-list | empty | `images/ticket-list-empty.png` | PASS |
9
- | IMG-003 | ticket-list | loading | `images/ticket-list-loading.png` | PASS |
10
- | IMG-004 | ticket-list | error | `images/ticket-list-error.png` | PASS |
11
- | IMG-005 | ticket-list | permission_denied | `images/ticket-list-permission.png` | PASS |
12
-
13
- ## 2. 页面布局规格
14
-
15
- | 区域 | 位置 | 尺寸 / 约束 | 内容 | 响应式行为 |
16
- | --- | --- | --- | --- | --- |
17
- | Header | 顶部 | 高度约 64px | 标题、说明、保存视图按钮 | mobile 保留标题,操作进菜单 |
18
- | Filter Bar | Header 下方 | 横向排列 | 状态、优先级、负责人、搜索 | mobile 折叠为筛选抽屉 |
19
- | Main Table | 主区域 | 宽度自适应 | 工单表格、状态标签、操作 | mobile 转卡片列表 |
20
- | Pagination | 底部 | 右对齐 | 页码、每页数量 | mobile 简化为上一页/下一页 |
21
-
22
- ## 3. 组件实现映射
23
-
24
- | 图片元素 | 前端组件 | 层级 | 复用来源 | Props / 数据 | 事件 | 状态 |
25
- | --- | --- | --- | --- | --- | --- | --- |
26
- | 筛选条 | `TicketFilterBar` | feature | existing business component | `TicketFilter` | `onChange`, `onReset` | default / dirty / mobile |
27
- | 移动端筛选抽屉 | `TicketFilterDrawer` | feature | new business component | `TicketFilter`, `open` | `onApply`, `onClose` | mobile |
28
- | 保存视图弹窗 | `SavedViewModal` | feature | new business component | `CreateTicketViewRequest` | `onSubmit`, `onCancel` | default / validation-error |
29
- | 工单表格 | `TicketTable` | feature | table base component | `Ticket[]`, pagination | `onRetry` | default / empty / loading / error |
30
- | 表格基础容器 | `DataTableShell` | primitive | new reusable component | rows, columns, pagination | generic callbacks | default / empty / loading |
31
-
32
- ## 4. CSS / Token 映射
33
-
34
- | 图片表现 | Token / CSS 变量 | 值 | 备注 |
35
- | --- | --- | --- | --- |
36
- | 页面背景 | `--color-bg-subtle` | `#F6F7F9` | 来自 design tokens |
37
- | 主面板 | `--color-bg-default` | `#FFFFFF` | |
38
- | 高优先级强调 | `--color-status-warning` | `#B45309` | |
39
- | 错误提示 | `--color-status-danger` | `#B91C1C` | |
40
- | 面板圆角 | `--radius-md` | `8px` | |
41
-
42
- ## 5. 状态实现规格
43
-
44
- | State | 数据条件 | UI 行为 | 组件变化 | 动效 | 测试 |
45
- | --- | --- | --- | --- | --- | --- |
46
- | default | `items.length > 0` | 展示表格和分页 | `TicketTable` default | rows fade in 160ms | story / e2e / visual |
47
- | empty | `items.length === 0` | 展示空态和清除筛选 | `TicketTable` empty | opacity 160ms | story / e2e / visual |
48
- | loading | 请求中 | 展示骨架屏并禁用保存 | `TicketTable` loading | skeleton, reduced motion disables shimmer | story / visual |
49
- | error | 请求失败 | 展示错误和重试 | `TicketTable` error | opacity 160ms | story / e2e / visual |
50
- | permission_denied | role=agent | 隐藏保存视图入口 | `TicketFilterBar` permission | none | e2e |
51
- | mobile | viewport < 768px | 筛选进入抽屉,表格转卡片 | `TicketFilterDrawer`, `TicketCardList` | drawer 180ms | story / e2e / visual |
52
-
53
- ## 6. 响应式与动效规格
54
-
55
- | Viewport | 布局 | 筛选策略 | 表格 / 列表策略 | 操作区策略 | 截图要求 |
56
- | --- | --- | --- | --- | --- | --- |
57
- | Desktop 1440x900 | Header + inline filter + table | 横向筛选条和 chip 回显 | 完整表格 | 保存按钮在 header | required |
58
- | Tablet 768x1024 | Header + wrapping filter + table | 筛选条换行,次要筛选进菜单 | 隐藏低优先级列 | 操作进菜单 | optional |
59
- | Mobile 375x812 | Header + filter drawer + cards | 筛选按钮打开抽屉 | 表格转卡片 | 保存视图进更多菜单 | required |
60
-
61
- 动效规则:
62
-
63
- - 弹窗和抽屉必须支持 reduced motion。
64
- - 表格刷新不得造成分页、表头和筛选区位移。
65
- - 筛选 chip 删除按钮必须可键盘访问。
66
-
67
- ## 7. 架构输入
68
-
69
- - 前端质量规则: `docs/harness/frontend-quality-rules.md`
70
- - 前端架构: `docs/design/frontend-architecture.md`
71
- - 通用能力候选: `DataTableShell`
72
- - 业务内保留: `TicketFilterBar`, `TicketFilterDrawer`, `SavedViewModal`, `TicketTable`
1
+ # Image To Frontend Spec
2
+
3
+ ## 1. 输入图片
4
+
5
+ | Image ID | Page ID | State | 图片路径 / 链接 | 评审结论 |
6
+ | --- | --- | --- | --- | --- |
7
+ | IMG-001 | ticket-list | default | `images/ticket-list-default.png` | PASS |
8
+ | IMG-002 | ticket-list | empty | `images/ticket-list-empty.png` | PASS |
9
+ | IMG-003 | ticket-list | loading | `images/ticket-list-loading.png` | PASS |
10
+ | IMG-004 | ticket-list | error | `images/ticket-list-error.png` | PASS |
11
+ | IMG-005 | ticket-list | permission_denied | `images/ticket-list-permission.png` | PASS |
12
+
13
+ ## 2. 页面布局规格
14
+
15
+ | 区域 | 位置 | 尺寸 / 约束 | 内容 | 响应式行为 |
16
+ | --- | --- | --- | --- | --- |
17
+ | Header | 顶部 | 高度约 64px | 标题、说明、保存视图按钮 | mobile 保留标题,操作进菜单 |
18
+ | Filter Bar | Header 下方 | 横向排列 | 状态、优先级、负责人、搜索 | mobile 折叠为筛选抽屉 |
19
+ | Main Table | 主区域 | 宽度自适应 | 工单表格、状态标签、操作 | mobile 转卡片列表 |
20
+ | Pagination | 底部 | 右对齐 | 页码、每页数量 | mobile 简化为上一页/下一页 |
21
+
22
+ ## 3. 组件实现映射
23
+
24
+ | 图片元素 | 前端组件 | 层级 | 复用来源 | Props / 数据 | 事件 | 状态 |
25
+ | --- | --- | --- | --- | --- | --- | --- |
26
+ | 筛选条 | `TicketFilterBar` | feature | existing business component | `TicketFilter` | `onChange`, `onReset` | default / dirty / mobile |
27
+ | 移动端筛选抽屉 | `TicketFilterDrawer` | feature | new business component | `TicketFilter`, `open` | `onApply`, `onClose` | mobile |
28
+ | 保存视图弹窗 | `SavedViewModal` | feature | new business component | `CreateTicketViewRequest` | `onSubmit`, `onCancel` | default / validation-error |
29
+ | 工单表格 | `TicketTable` | feature | table base component | `Ticket[]`, pagination | `onRetry` | default / empty / loading / error |
30
+ | 表格基础容器 | `DataTableShell` | primitive | new reusable component | rows, columns, pagination | generic callbacks | default / empty / loading |
31
+
32
+ ## 4. CSS / Token 映射
33
+
34
+ | 图片表现 | Token / CSS 变量 | 值 | 备注 |
35
+ | --- | --- | --- | --- |
36
+ | 页面背景 | `--color-bg-subtle` | `#F6F7F9` | 来自 design tokens |
37
+ | 主面板 | `--color-bg-default` | `#FFFFFF` | |
38
+ | 高优先级强调 | `--color-status-warning` | `#B45309` | |
39
+ | 错误提示 | `--color-status-danger` | `#B91C1C` | |
40
+ | 面板圆角 | `--radius-md` | `8px` | |
41
+
42
+ ## 5. 状态实现规格
43
+
44
+ | State | 数据条件 | UI 行为 | 组件变化 | 动效 | 测试 |
45
+ | --- | --- | --- | --- | --- | --- |
46
+ | default | `items.length > 0` | 展示表格和分页 | `TicketTable` default | rows fade in 160ms | story / e2e / visual |
47
+ | empty | `items.length === 0` | 展示空态和清除筛选 | `TicketTable` empty | opacity 160ms | story / e2e / visual |
48
+ | loading | 请求中 | 展示骨架屏并禁用保存 | `TicketTable` loading | skeleton, reduced motion disables shimmer | story / visual |
49
+ | error | 请求失败 | 展示错误和重试 | `TicketTable` error | opacity 160ms | story / e2e / visual |
50
+ | permission_denied | role=agent | 隐藏保存视图入口 | `TicketFilterBar` permission | none | e2e |
51
+ | mobile | viewport < 768px | 筛选进入抽屉,表格转卡片 | `TicketFilterDrawer`, `TicketCardList` | drawer 180ms | story / e2e / visual |
52
+
53
+ ## 6. 响应式与动效规格
54
+
55
+ | Viewport | 布局 | 筛选策略 | 表格 / 列表策略 | 操作区策略 | 截图要求 |
56
+ | --- | --- | --- | --- | --- | --- |
57
+ | Desktop 1440x900 | Header + inline filter + table | 横向筛选条和 chip 回显 | 完整表格 | 保存按钮在 header | required |
58
+ | Tablet 768x1024 | Header + wrapping filter + table | 筛选条换行,次要筛选进菜单 | 隐藏低优先级列 | 操作进菜单 | optional |
59
+ | Mobile 375x812 | Header + filter drawer + cards | 筛选按钮打开抽屉 | 表格转卡片 | 保存视图进更多菜单 | required |
60
+
61
+ 动效规则:
62
+
63
+ - 弹窗和抽屉必须支持 reduced motion。
64
+ - 表格刷新不得造成分页、表头和筛选区位移。
65
+ - 筛选 chip 删除按钮必须可键盘访问。
66
+
67
+ ## 7. 架构输入
68
+
69
+ - 前端质量规则: `docs/harness/frontend-quality-rules.md`
70
+ - 前端架构: `docs/design/frontend-architecture.md`
71
+ - 通用能力候选: `DataTableShell`
72
+ - 业务内保留: `TicketFilterBar`, `TicketFilterDrawer`, `SavedViewModal`, `TicketTable`
@@ -1,25 +1,25 @@
1
- # Screen States
2
-
3
- ## 工单列表页
4
-
5
- - `default`: 默认表格 + 筛选条
6
- - `empty`: 空态插图或空态文案 + 清空筛选按钮
7
- - `loading`: 表格骨架屏 + 顶部筛选禁用
8
- - `error`: 顶部提示 + 表格区错误块 + 重试按钮
9
- - `permission_denied`: 保存视图按钮隐藏
10
- - `long_content`: 工单标题两行截断,负责人超长显示 tooltip,状态标签不换行
11
- - `mobile`: 筛选条进入抽屉,表格转卡片列表,分页简化为上一页/下一页
12
- - `reduced_motion`: 弹窗、抽屉、chip 和表格刷新取消位移动效,只保留即时状态变化
13
-
14
- ## 状态到测试映射
15
-
16
- | 状态 | Story | E2E | Visual | A11y |
17
- | --- | --- | --- | --- | --- |
18
- | default | `TicketListPage/Default` | `/tickets` | desktop | smoke |
19
- | empty | `TicketListPage/Empty` | no results | desktop | smoke |
20
- | loading | `TicketListPage/Loading` | N/A | desktop | smoke |
21
- | error | `TicketListPage/Error` | API failure + retry | desktop | smoke |
22
- | permission_denied | `TicketListPage/PermissionDenied` | role=agent | desktop | smoke |
23
- | long_content | `TicketListPage/LongContent` | N/A | desktop | N/A |
24
- | mobile | `TicketListPage/Mobile` | mobile viewport | mobile | focus trap |
25
- | reduced_motion | `TicketListPage/ReducedMotion` | N/A | optional | smoke |
1
+ # Screen States
2
+
3
+ ## 工单列表页
4
+
5
+ - `default`: 默认表格 + 筛选条
6
+ - `empty`: 空态插图或空态文案 + 清空筛选按钮
7
+ - `loading`: 表格骨架屏 + 顶部筛选禁用
8
+ - `error`: 顶部提示 + 表格区错误块 + 重试按钮
9
+ - `permission_denied`: 保存视图按钮隐藏
10
+ - `long_content`: 工单标题两行截断,负责人超长显示 tooltip,状态标签不换行
11
+ - `mobile`: 筛选条进入抽屉,表格转卡片列表,分页简化为上一页/下一页
12
+ - `reduced_motion`: 弹窗、抽屉、chip 和表格刷新取消位移动效,只保留即时状态变化
13
+
14
+ ## 状态到测试映射
15
+
16
+ | 状态 | Story | E2E | Visual | A11y |
17
+ | --- | --- | --- | --- | --- |
18
+ | default | `TicketListPage/Default` | `/tickets` | desktop | smoke |
19
+ | empty | `TicketListPage/Empty` | no results | desktop | smoke |
20
+ | loading | `TicketListPage/Loading` | N/A | desktop | smoke |
21
+ | error | `TicketListPage/Error` | API failure + retry | desktop | smoke |
22
+ | permission_denied | `TicketListPage/PermissionDenied` | role=agent | desktop | smoke |
23
+ | long_content | `TicketListPage/LongContent` | N/A | desktop | N/A |
24
+ | mobile | `TicketListPage/Mobile` | mobile viewport | mobile | focus trap |
25
+ | reduced_motion | `TicketListPage/ReducedMotion` | N/A | optional | smoke |
@@ -1,38 +1,38 @@
1
- # UI Image Review
2
-
3
- ## 1. 评审对象
4
-
5
- | Image ID | Page ID | State | 图片路径 / 链接 | 版本 |
6
- | --- | --- | --- | --- | --- |
7
- | IMG-001 | ticket-list | default | `images/ticket-list-default.png` | v1 |
8
- | IMG-002 | ticket-list | empty | `images/ticket-list-empty.png` | v1 |
9
- | IMG-003 | ticket-list | loading | `images/ticket-list-loading.png` | v1 |
10
- | IMG-004 | ticket-list | error | `images/ticket-list-error.png` | v1 |
11
- | IMG-005 | ticket-list | permission_denied | `images/ticket-list-permission.png` | v1 |
12
- | IMG-006 | ticket-list | mobile | `images/ticket-list-mobile.png` | v1 |
13
-
14
- ## 2. 需求匹配检查
15
-
16
- | Requirement ID | 图片是否体现 | 证据 | 问题 | 结论 |
17
- | --- | --- | --- | --- | --- |
18
- | FR-001 | Yes | 筛选条、表格、分页 | 无 | Pass |
19
- | FR-002 | Yes | 保存视图按钮和弹窗入口 | 无 | Pass |
20
- | FR-003 | Yes | permission 图隐藏保存入口 | 无 | Pass |
21
-
22
- ## 3. 状态覆盖检查
23
-
24
- | Page ID | State | 是否有图 | 是否符合 Screen States | 问题 | 结论 |
25
- | --- | --- | --- | --- | --- | --- |
26
- | ticket-list | default | Yes | Yes | 无 | Pass |
27
- | ticket-list | empty | Yes | Yes | 无 | Pass |
28
- | ticket-list | loading | Yes | Yes | 无 | Pass |
29
- | ticket-list | error | Yes | Yes | 无 | Pass |
30
- | ticket-list | permission_denied | Yes | Yes | 无 | Pass |
31
- | ticket-list | mobile | Yes | Yes | 无 | Pass |
32
-
33
- ## 4. 评审结论
34
-
35
- - Verdict: PASS
36
- - 必须重生成的图片: 无
37
- - 可通过编辑修复的图片: 无
38
- - 通过后进入: `image-to-frontend-spec.md`
1
+ # UI Image Review
2
+
3
+ ## 1. 评审对象
4
+
5
+ | Image ID | Page ID | State | 图片路径 / 链接 | 版本 |
6
+ | --- | --- | --- | --- | --- |
7
+ | IMG-001 | ticket-list | default | `images/ticket-list-default.png` | v1 |
8
+ | IMG-002 | ticket-list | empty | `images/ticket-list-empty.png` | v1 |
9
+ | IMG-003 | ticket-list | loading | `images/ticket-list-loading.png` | v1 |
10
+ | IMG-004 | ticket-list | error | `images/ticket-list-error.png` | v1 |
11
+ | IMG-005 | ticket-list | permission_denied | `images/ticket-list-permission.png` | v1 |
12
+ | IMG-006 | ticket-list | mobile | `images/ticket-list-mobile.png` | v1 |
13
+
14
+ ## 2. 需求匹配检查
15
+
16
+ | Requirement ID | 图片是否体现 | 证据 | 问题 | 结论 |
17
+ | --- | --- | --- | --- | --- |
18
+ | FR-001 | Yes | 筛选条、表格、分页 | 无 | Pass |
19
+ | FR-002 | Yes | 保存视图按钮和弹窗入口 | 无 | Pass |
20
+ | FR-003 | Yes | permission 图隐藏保存入口 | 无 | Pass |
21
+
22
+ ## 3. 状态覆盖检查
23
+
24
+ | Page ID | State | 是否有图 | 是否符合 Screen States | 问题 | 结论 |
25
+ | --- | --- | --- | --- | --- | --- |
26
+ | ticket-list | default | Yes | Yes | 无 | Pass |
27
+ | ticket-list | empty | Yes | Yes | 无 | Pass |
28
+ | ticket-list | loading | Yes | Yes | 无 | Pass |
29
+ | ticket-list | error | Yes | Yes | 无 | Pass |
30
+ | ticket-list | permission_denied | Yes | Yes | 无 | Pass |
31
+ | ticket-list | mobile | Yes | Yes | 无 | Pass |
32
+
33
+ ## 4. 评审结论
34
+
35
+ - Verdict: PASS
36
+ - 必须重生成的图片: 无
37
+ - 可通过编辑修复的图片: 无
38
+ - 通过后进入: `image-to-frontend-spec.md`
@@ -1,39 +1,39 @@
1
- # Difficulty Research
2
-
3
- ## 1. 难点总览
4
-
5
- | Difficulty ID | 难点 / 不确定点 | 来源需求 | 影响页面 / 接口 | 风险等级 | 是否阻塞 | 负责人 | 状态 |
6
- | --- | --- | --- | --- | --- | --- | --- | --- |
7
- | DR-001 | 筛选状态、保存视图和 URL 查询参数如何保持一致 | FR-001, FR-002 | ticket-list / `GET /tickets` | Medium | No | Demo | Closed |
8
- | DR-002 | 普通客服无保存权限时按钮隐藏还是禁用 | FR-003 | ticket-list | Low | No | Demo | Closed |
9
-
10
- ## 2. 研究记录
11
-
12
- ### DR-001: 筛选状态一致性
13
-
14
- - 关联需求: FR-001, FR-002
15
- - 关联界面: ticket-list, saved-view-modal
16
- - 问题描述: 筛选条件需要同时驱动列表查询、保存视图和刷新恢复。
17
- - 为什么现在必须研究: 如果实现阶段才决定状态来源,前端、contract 和 mock 数据会漂移。
18
- - 已知约束: demo 使用 OpenAPI contract 作为 API 真相源。
19
-
20
- | 方案 | 优点 | 缺点 | 风险 | 验证方式 |
21
- | --- | --- | --- | --- | --- |
22
- | URL 查询参数为主 | 可刷新恢复,便于分享当前筛选 | 保存视图时需要序列化 query | 低 | e2e 刷新后检查筛选 |
23
- | 组件本地状态为主 | 实现简单 | 刷新丢失,保存视图易漂移 | 中 | 不采用 |
24
-
25
- **结论**: 以 URL 查询参数和 generated client 参数为主,组件内部只保留临时输入状态。
26
-
27
- **选择理由**: 保证刷新、保存视图、mock 和真实接口使用同一组字段。
28
-
29
- **后续任务影响**: `TicketFilterBar` 的 props 使用 `TicketFilter`,stories 要覆盖 default、empty、error、long_content。
30
-
31
- **仍需确认**: 无。
32
-
33
- ### DR-002: 无权限保存视图
34
-
35
- **结论**: 普通客服隐藏保存视图按钮,不展示不可用入口。
36
-
37
- **选择理由**: 保存视图不是客服核心任务,隐藏能降低误操作。
38
-
39
- **后续任务影响**: permission_denied story 中不渲染保存视图按钮,e2e 验证按钮不存在。
1
+ # Difficulty Research
2
+
3
+ ## 1. 难点总览
4
+
5
+ | Difficulty ID | 难点 / 不确定点 | 来源需求 | 影响页面 / 接口 | 风险等级 | 是否阻塞 | 负责人 | 状态 |
6
+ | --- | --- | --- | --- | --- | --- | --- | --- |
7
+ | DR-001 | 筛选状态、保存视图和 URL 查询参数如何保持一致 | FR-001, FR-002 | ticket-list / `GET /tickets` | Medium | No | Demo | Closed |
8
+ | DR-002 | 普通客服无保存权限时按钮隐藏还是禁用 | FR-003 | ticket-list | Low | No | Demo | Closed |
9
+
10
+ ## 2. 研究记录
11
+
12
+ ### DR-001: 筛选状态一致性
13
+
14
+ - 关联需求: FR-001, FR-002
15
+ - 关联界面: ticket-list, saved-view-modal
16
+ - 问题描述: 筛选条件需要同时驱动列表查询、保存视图和刷新恢复。
17
+ - 为什么现在必须研究: 如果实现阶段才决定状态来源,前端、contract 和 mock 数据会漂移。
18
+ - 已知约束: demo 使用 OpenAPI contract 作为 API 真相源。
19
+
20
+ | 方案 | 优点 | 缺点 | 风险 | 验证方式 |
21
+ | --- | --- | --- | --- | --- |
22
+ | URL 查询参数为主 | 可刷新恢复,便于分享当前筛选 | 保存视图时需要序列化 query | 低 | e2e 刷新后检查筛选 |
23
+ | 组件本地状态为主 | 实现简单 | 刷新丢失,保存视图易漂移 | 中 | 不采用 |
24
+
25
+ **结论**: 以 URL 查询参数和 generated client 参数为主,组件内部只保留临时输入状态。
26
+
27
+ **选择理由**: 保证刷新、保存视图、mock 和真实接口使用同一组字段。
28
+
29
+ **后续任务影响**: `TicketFilterBar` 的 props 使用 `TicketFilter`,stories 要覆盖 default、empty、error、long_content。
30
+
31
+ **仍需确认**: 无。
32
+
33
+ ### DR-002: 无权限保存视图
34
+
35
+ **结论**: 普通客服隐藏保存视图按钮,不展示不可用入口。
36
+
37
+ **选择理由**: 保存视图不是客服核心任务,隐藏能降低误操作。
38
+
39
+ **后续任务影响**: permission_denied story 中不渲染保存视图按钮,e2e 验证按钮不存在。
@@ -1,5 +1,5 @@
1
- # Page Inventory
2
-
3
- | 页面 | 入口 | 目标 | 核心组件 |
4
- | --- | --- | --- | --- |
5
- | 工单列表页 | `/tickets` | 筛选和查看工单 | 筛选条、工单表格、保存视图弹窗 |
1
+ # Page Inventory
2
+
3
+ | 页面 | 入口 | 目标 | 核心组件 |
4
+ | --- | --- | --- | --- |
5
+ | 工单列表页 | `/tickets` | 筛选和查看工单 | 筛选条、工单表格、保存视图弹窗 |