@dev-workflow/skill 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +80 -0
  3. package/bin/cli.mjs +9 -0
  4. package/package.json +39 -0
  5. package/skills/artifact/README.md +23 -0
  6. package/skills/execution/devFlow/SKILL.md +341 -0
  7. package/skills/execution/devFlow/agents/openai.yaml +7 -0
  8. package/skills/execution/devFlow/domains/backend/references/api-tech.md +173 -0
  9. package/skills/execution/devFlow/domains/backend/scripts/check_api_tech_doc.mjs +170 -0
  10. package/skills/execution/devFlow/domains/backend/scripts/check_api_tech_doc.test.mjs +89 -0
  11. package/skills/execution/devFlow/domains/backend/templates/api-tech.md +164 -0
  12. package/skills/execution/devFlow/domains/frontend/references/contract-check.md +270 -0
  13. package/skills/execution/devFlow/domains/frontend/references/foundation-freeze.md +92 -0
  14. package/skills/execution/devFlow/domains/frontend/references/lightweight-flow.md +55 -0
  15. package/skills/execution/devFlow/domains/frontend/references/page-build.md +268 -0
  16. package/skills/execution/devFlow/domains/frontend/references/page-tech.md +414 -0
  17. package/skills/execution/devFlow/domains/frontend/references/product-design-specs/field-common.md +69 -0
  18. package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-complex.md +105 -0
  19. package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-id-code.md +44 -0
  20. package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-number-date.md +106 -0
  21. package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-relation.md +144 -0
  22. package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-selectors.md +102 -0
  23. package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-text.md +130 -0
  24. package/skills/execution/devFlow/domains/frontend/references/product-design-specs/index.md +42 -0
  25. package/skills/execution/devFlow/domains/frontend/references/product-design-specs/interaction.md +61 -0
  26. package/skills/execution/devFlow/domains/frontend/scripts/check_page_tech_doc.mjs +82 -0
  27. package/skills/execution/devFlow/domains/frontend/scripts/contract_check_static.mjs +145 -0
  28. package/skills/execution/devFlow/domains/frontend/scripts/generate_foundation_summary.mjs +224 -0
  29. package/skills/execution/devFlow/domains/frontend/templates/contract-report.md +66 -0
  30. package/skills/execution/devFlow/domains/frontend/templates/mini-plan-l0.md +7 -0
  31. package/skills/execution/devFlow/domains/frontend/templates/mini-plan-l1.md +9 -0
  32. package/skills/execution/devFlow/domains/frontend/templates/page-build/component.tsx.tpl +8 -0
  33. package/skills/execution/devFlow/domains/frontend/templates/page-build/constants.ts.tpl +5 -0
  34. package/skills/execution/devFlow/domains/frontend/templates/page-build/index.ts.tpl +1 -0
  35. package/skills/execution/devFlow/domains/frontend/templates/page-build/route.tsx.tpl +11 -0
  36. package/skills/execution/devFlow/domains/frontend/templates/page-build/service.ts.tpl +17 -0
  37. package/skills/execution/devFlow/domains/frontend/templates/page-build/types.ts.tpl +11 -0
  38. package/skills/execution/devFlow/domains/frontend/templates/page-tech.md +103 -0
  39. package/skills/execution/devFlow/domains/requirement/references/prd-review.md +129 -0
  40. package/skills/execution/devFlow/domains/requirement/templates/prd-review.md +57 -0
  41. package/skills/execution/figmaSync/SKILL.md +349 -0
  42. package/skills/execution/figmaSync/chapters/apply.md +177 -0
  43. package/skills/execution/figmaSync/chapters/plan.md +359 -0
  44. package/skills/execution/figmaSync/chapters/prepare.md +47 -0
  45. package/skills/execution/figmaSync/examples/native-css.md +129 -0
  46. package/skills/execution/figmaSync/examples/plan-doc-sample.md +39 -0
  47. package/skills/execution/figmaSync/scripts/_shared/session-log.mjs +82 -0
  48. package/skills/execution/figmaSync/scripts/_shared/token-resolver.mjs +132 -0
  49. package/skills/execution/figmaSync/scripts/_shared/token-source.mjs +145 -0
  50. package/skills/execution/figmaSync/scripts/figma-sync-report.mjs +448 -0
  51. package/skills/execution/figmaSync/scripts/icon-inventory.mjs +165 -0
  52. package/skills/execution/figmaSync/scripts/lookup-var.mjs +184 -0
  53. package/skills/execution/figmaSync/scripts/match-token.mjs +210 -0
  54. package/skills/execution/figmaSync/scripts/prepare-check.mjs +290 -0
  55. package/skills/execution/figmaSync/scripts/verify-plan.mjs +458 -0
  56. package/skills/execution/figmaSync/snapshots/README.md +13 -0
  57. package/skills/execution/figmaSync/snapshots/last-sync.md +1538 -0
  58. package/skills/execution/figmaSync/templates/PLAN.md.tpl +227 -0
  59. package/skills/review/consistency-checker/SKILL.md +112 -0
  60. package/skills/review/consistency-checker/rules/README.md +16 -0
  61. package/src/cli/agents.mjs +16 -0
  62. package/src/cli/copy.mjs +95 -0
  63. package/src/cli/install.mjs +131 -0
  64. package/src/cli/prompts.mjs +66 -0
  65. package/tools/lark/README.md +78 -0
  66. package/tools/lark/references/lark-doc.md +156 -0
  67. package/tools/lark/references/lark-read.md +235 -0
  68. package/tools/lark/references/prepare.md +147 -0
  69. package/tools/lark/scripts/lark_api.mjs +404 -0
  70. package/tools/lark/scripts/lark_api.test.mjs +63 -0
  71. package/tools/lark/scripts/lark_check_permissions.mjs +52 -0
  72. package/tools/lark/scripts/lark_publish_doc.mjs +299 -0
  73. package/tools/lark/scripts/lark_read_docx.mjs +328 -0
  74. package/tools/lark/scripts/markdown_to_lark_blocks.mjs +397 -0
@@ -0,0 +1,414 @@
1
+ # page-tech 子命令
2
+
3
+ `page-tech`
4
+ 用于产出页面级前端落地方案。它不是仓库调研报告、不是项目入门说明、不是开发计划,也不是完整文件改动清单。
5
+
6
+ 执行 admin-fe 页面方案时,必须读取或内化项目根目录
7
+ `ADMIN_FE_WORKFLOW.md`。页面方案不得违反 admin-fe 的路由、请求、状态、Wujie、UI 复用和验证规则。
8
+
9
+ ## 工作流程
10
+
11
+ 1. 识别页面类型:列表页、详情页、表单页、配置页、工作台、弹窗/抽屉页面、混合页面。
12
+ 2. 从用户请求、需求资料、设计稿、接口资料和当前仓库中收集上下文。
13
+ 3. 判断每个章节的上下文是否足够。
14
+ 4. 必需上下文缺失时,向用户确认,或写入“风险与待确认项”。
15
+ 5. 只有在需要确认路径、可复用资源、UI 库用法、状态模式、接口封装、相似页面时,才读取仓库代码。
16
+ 6. 使用 `domains/frontend/templates/page-tech.md` 作为文档骨架。
17
+ 7. 页面不涉及的条件章节写“不涉及”,不要强行展开。
18
+ 8. 判断哪些内容需要配图,先生成 Mermaid 源码;需要飞书落地时交给
19
+ `design-lark-chart` 渲染。
20
+
21
+ 如果用户要求最终发布到飞书,先生成完整 Markdown,再交给
22
+ `scripts/lark_publish_doc.mjs`。不要一边写方案一边拼飞书 blocks。
23
+
24
+ ## 结构化表达规则
25
+
26
+ - 并列内容默认使用无序列表;只有存在明确顺序、流程或优先级时才使用有序列表。
27
+ - “功能列表”和“接口清单”不要重复。页面技术方案必须优先写成“功能与接口映射”表格,在同一行说明功能、PRD 交互项、接口、输入参数、响应数据、展示形式、状态变化、刷新行为和异常反馈。
28
+ - “功能与接口映射”不得用纯 bullet 替代表格,除非页面完全不依赖接口;如果确实不依赖接口,必须在该章节说明原因。
29
+ - “目录结构与产物路径”使用树形代码块,不使用表格。
30
+ - “可复用资源清单”优先使用树形代码块展示真实路径,再用短句补充用途。
31
+ - “组件拆分”优先用 `flowchart LR`
32
+ 图表达。节点内可以写 UI 资源、复用资源和接口资源,但不要把每个资源拆成独立节点。
33
+ - 节点文本控制在 3 行左右;资源较多时用顿号分隔,避免图过宽和分叉过多。
34
+
35
+ ## PRD 交互覆盖规则
36
+
37
+ 如果用户提供 PRD、设计说明、原型说明或飞书需求章节,必须先抽取页面交互清单,再写技术方案。交互清单至少覆盖以下项,PRD 中没有出现的项不要补造,写入“不涉及”或待确认:
38
+
39
+ - 页面入口、Tab、顶部操作、看板、列表、详情、表单、弹窗、抽屉、确认框。
40
+ - 按钮、行操作、批量操作、字段配置、高级筛选、排序、分页、上下翻页、预览、上传、删除。
41
+ - 表单字段、字段权限、默认值、只读、隐藏、必填、格式限制、数量限制、联动带出、清空规则。
42
+ - loading、空数据、失败、无权限、提交中、保存成功、删除成功、取消、中断恢复。
43
+ - 新增、编辑、删除、查询、筛选、排序、tab 切换后的接口调用、状态变化和刷新范围。
44
+
45
+ 写作规则:
46
+
47
+ - `3.1 功能与接口映射` 必须把 PRD 交互项落到表格中,不能只写接口清单。
48
+ - `3.3 关键交互`
49
+ 必须逐项说明触发条件、前端行为、接口或状态影响、用户反馈、待确认项。
50
+ - `6. UI 与体验约束`
51
+ 必须覆盖 PRD 中出现的展示、校验、反馈、弹窗、上传、预览、空状态和错误提示。
52
+ - PRD 与接口文档、仓库代码或产品设计规范冲突时,不得自行取舍;冲突项必须进入
53
+ `10. 风险与待确认项`。
54
+ - PRD 中的交互如果因接口缺失无法实现,必须在对应功能行和待确认项中同时标明,不得省略。
55
+
56
+ ## 上下文规则
57
+
58
+ 上下文分为三类:
59
+
60
+ - **必需上下文**:没有就不能可靠编写该章节,必须确认或标记为“待确认”。
61
+ - **条件上下文**:页面涉及对应能力时才写。
62
+ - **可选上下文**:存在且能提升方案质量时再写。
63
+
64
+ 当前端仓库可用时,以下内容必须基于真实代码:
65
+
66
+ - 目录结构与预期产物路径
67
+ - 可复用项目公共组件
68
+ - 可复用业务组件
69
+ - hooks、utils、constants、services、stores/models 等资源
70
+ - 项目当前实际使用的 UI 库组件
71
+
72
+ admin-fe 必须遵守:
73
+
74
+ - 路由目录是 `src/routes/`。
75
+ - 禁止手动编辑 `src/routeTree.gen.ts`。
76
+ - API 调用统一使用 `src/services/request.ts`。
77
+ - 页面临时状态不使用 Zustand。
78
+ - shell 状态使用 `src/stores/shell-store.ts`。
79
+ - Wujie 逻辑复用 `src/shared/wujie-bridge.ts`。
80
+ - UI 复用顺序:Apex UI -> `src/common` -> 业务局部组件 -> 新建局部组件。
81
+
82
+ 当前端仓库不可用时,不得写具体路径,也不得声称存在某个可复用资源。
83
+
84
+ ## 飞书文档上下文规则
85
+
86
+ 如果用户提供飞书云文档链接作为 PRD、设计说明、接口文档、字段规范或需求来源,必须先使用
87
+ `lark-read` 读取文档,再生成页面技术方案。
88
+
89
+ 规则:
90
+
91
+ 1. 先执行 `lark-read`,读取并结构化飞书文档内容。
92
+ 2. 将 `lark-read` 输出作为 `page-tech` 的输入上下文。
93
+ 3. 不得只根据链接标题、URL 或用户转述猜测文档内容。
94
+ 4. 如果文档读取失败,必须停止依赖该文档的方案生成,并说明失败原因。
95
+ 5. 如果飞书文档内容与仓库代码、接口说明或设计稿冲突,写入“风险与待确认项”。
96
+ 6. 如果飞书文档内容不完整,只能基于已读取内容生成方案,其余部分写入待确认项。
97
+
98
+ 推荐上下文注入顺序:
99
+
100
+ 1. PRD 章节上下文:页面目标、页面结构、字段、交互、非目标范围。
101
+ 2. 接口文档上下文:接口路径、入参、响应、错误、状态联动、副作用。
102
+ 3. 用户补充约束:明确排除项、范围收窄、实现偏好。
103
+ 4. 仓库证据:路由、service、request、UI 库、公共组件、相似页面。
104
+ 5. 产品规范:只读取与当前字段和交互相关的分册。
105
+
106
+ 写方案时必须区分“已确认事实”和“待确认项”,不要把用户明确排除的内容重新写入风险。
107
+
108
+ ## 产品设计规范读取规则
109
+
110
+ 当页面涉及字段、表单、筛选、列表展示、详情展示、上传、选择器、弹窗或操作反馈时,必须读取产品设计规范索引:
111
+
112
+ ```text
113
+ references/product-design-specs/index.md
114
+ ```
115
+
116
+ 读取规则:
117
+
118
+ 1. 先读 `index.md`,根据页面字段类型和交互能力判断要加载哪些规范分册。
119
+ 2. 所有页面字段默认先读取 `field-common.md`。
120
+ 3. 只读取当前页面相关的字段规范,不一次性加载全部规范。
121
+ 4. 写页面技术方案时,只提炼当前页面需要遵守的规则,不整段复制规范正文。
122
+ 5. 如果规范要求明确产品信息,例如小数位数、是否支持负数、数据来源、人员范围、上传格式、行数上限,且上下文缺失,必须写入“风险与待确认项”。
123
+ 6. 如果字段类型无法判断,不要套用可能错误的规范,必须列为待确认。
124
+
125
+ 常见路由:
126
+
127
+ - 文本、手机号、邮箱、身份证号、备注、富文本:读 `fields-text.md`。
128
+ - 金额、数量、比例、日期、时间:读 `fields-number-date.md`。
129
+ - 状态、类别、枚举、数据字典、级联选择:读 `fields-selectors.md`。
130
+ - 合同、项目、供应商、用户、部门等关联选择:读 `fields-relation.md`。
131
+ - 子表单、附件、图片上传:读 `fields-complex.md`。
132
+ - 默认值、空状态、操作反馈、弹窗、文案、中断恢复:读 `interaction.md`。
133
+
134
+ ## 图表使用规则
135
+
136
+ 页面技术方案中的图必须帮助审核者理解方案,不做装饰。优先生成 Mermaid 源码,并在需要飞书交付时调用
137
+ `design-lark-chart` 渲染。
138
+
139
+ ### 必画场景
140
+
141
+ 以下场景必须画图:
142
+
143
+ - 用户流程超过 4 个关键步骤:画用户流程图。
144
+ - 数据来自 2 个及以上接口,或存在接口依赖顺序:画数据流或接口时序图。
145
+ - 页面状态超过 4 类,或状态之间有明确转换:画状态流转图。
146
+ - 提交链路涉及前端校验、接口提交、结果刷新、错误回填:画提交时序图。
147
+ - 权限影响页面入口、按钮、字段展示或操作结果:画权限判断流程图。
148
+ - 页面包含看板、列表、详情、表单和删除等多接口联动时,`5.6 数据流`
149
+ 必须画页面数据流转图。
150
+
151
+ ### 可选画图场景
152
+
153
+ 以下场景有上下文且确实复杂时再画:
154
+
155
+ - 组件层级超过 5 个主要模块:画组件关系图。
156
+ - 异常处理分支较多:画异常处理流程图。
157
+ - 页面与上游/下游页面联动较多:画页面跳转流程图。
158
+ - 数据模型关系复杂:画 ER 图。
159
+
160
+ ### 不画图场景
161
+
162
+ 以下情况不要画图:
163
+
164
+ - 只有简单列表展示,流程少于 4 步。
165
+ - 图只能重复正文,没有增加理解价值。
166
+ - 上下文不足,图只能靠猜。
167
+ - 只是为了让文档看起来丰富。
168
+
169
+ ### Mermaid 类型选择
170
+
171
+ - 用户流程:`flowchart`
172
+ - 页面入口与跳转:`flowchart`
173
+ - 页面结构:`flowchart LR`
174
+ - 数据流:`flowchart`
175
+ - 接口调用链路:`sequenceDiagram`
176
+ - 提交流程:`sequenceDiagram`
177
+ - 页面状态:`stateDiagram-v2`
178
+ - 权限判断:`flowchart`
179
+ - 组件关系:`flowchart LR`
180
+ - 数据实体关系:`erDiagram`
181
+ - 纯概念层级:可选 `mindmap`,但不作为页面结构或组件拆分默认图类型。
182
+
183
+ ### 页面结构图规范
184
+
185
+ 页面结构图默认使用
186
+ `flowchart LR`,将页面作为根节点,一级区域作为右侧节点。区域中的主要内容写在同一节点内,用顿号或
187
+ `<br/>` 分隔。
188
+
189
+ 示例:
190
+
191
+ ```mermaid
192
+ flowchart LR
193
+ A["客户管理页面"] --> B["顶部 Tab<br/>全部客户、我的客户"]
194
+ A --> C["数据看板<br/>客户量、签约量、跟进量、待跟进"]
195
+ A --> D["操作区<br/>添加客户、高级筛选、字段配置"]
196
+ A --> E["客户列表<br/>筛选、排序、分页、行操作"]
197
+ A --> F["客户详情<br/>基本信息、跟进信息、操作记录"]
198
+ ```
199
+
200
+ ### 组件拆分图规范
201
+
202
+ 组件拆分图默认使用
203
+ `flowchart LR`。组件节点中压缩标注 UI 资源、复用资源和接口资源,不拆成独立资源节点。
204
+
205
+ 示例:
206
+
207
+ ```mermaid
208
+ flowchart LR
209
+ A["ClientManagementPage"] --> B["ClientDashboard<br/>UI:Tag、Button<br/>接口:client-dashboard"]
210
+ A --> C["ClientTable<br/>UI:Table、Button、Tag<br/>复用:TableSearch、TableFilter、TableSort、TableFieldControl<br/>接口:client-list"]
211
+ A --> D["ClientDetailDrawer<br/>UI:Drawer、Button<br/>接口:client-detail、client-operation-records"]
212
+ A --> E["ClientFormDrawer<br/>UI:Drawer、Input、Button<br/>接口:create-client、client-edit"]
213
+ ```
214
+
215
+ ### 图放在哪些章节
216
+
217
+ - `2. 页面范围`:页面入口图、页面结构较复杂时的区域关系图。
218
+ - `3. 需求拆解`:用户流程图、关键交互流程图。
219
+ - `4. 数据与接口`:接口调用时序图、数据流图、实体关系图。
220
+ - `5. 前端实现方案`:组件关系图、页面数据流图。
221
+ - `7. 非功能性设计`:权限判断图、性能关键链路图、埋点链路图。
222
+ - `8. 边界场景`:复杂异常处理流程图。
223
+
224
+ ### 飞书落地
225
+
226
+ - 文档中保留 Mermaid 源码,便于后续审核和修改。
227
+ - 如果用户要求同步到飞书、写到飞书文档、生成飞书画板,使用 `design-lark-chart`
228
+ 渲染 Mermaid 图。
229
+ - 渲染前检查 Mermaid 语法是否和图类型匹配。
230
+ - 图标题必须和正文场景对应,例如“用户查询流程图”“保存提交时序图”“页面状态流转图”。
231
+ - 普通飞书文档读写不需要初始化 `lark-cli`;只有 `design-lark-chart`
232
+ 或飞书画板链路明确要求时才初始化。
233
+
234
+ ## 章节规则
235
+
236
+ ### 1. 背景与目标
237
+
238
+ 必需上下文:
239
+
240
+ - 页面名称
241
+ - 所属业务模块或功能域
242
+ - 需求描述、PRD、设计说明或用户给出的页面目标
243
+
244
+ 写作规则:
245
+
246
+ - 只写这个页面要解决的问题和页面级目标。
247
+ - 不写项目背景,不写技术栈。
248
+ - 如果目标只能从设计稿推断,必须标注“根据设计稿推断,需确认”。
249
+
250
+ ### 2. 页面范围
251
+
252
+ 必需上下文:
253
+
254
+ - 页面入口或导航来源
255
+ - 设计稿或需求中的页面区域
256
+ - 页面状态
257
+ - 非目标范围或明确的需求边界
258
+
259
+ 写作规则:
260
+
261
+ - “页面入口”写用户从哪里进入页面,不写路由实现。
262
+ - “页面结构”写用户可见区域,不写组件名称。
263
+ - “页面状态”至少考虑正常、loading、空数据、失败、无权限。
264
+ - “非目标范围”必须存在;如果用户未提供,可以提出建议边界,但必须标记为待确认。
265
+
266
+ ### 3. 需求拆解
267
+
268
+ 必需上下文:
269
+
270
+ - 功能需求
271
+ - 用户操作路径
272
+ - 交互规则
273
+ - 接口路径、入参、响应数据和展示形式,如果页面功能依赖接口。
274
+
275
+ 写作规则:
276
+
277
+ - 功能列表只写页面内功能,并必须优先写成“功能与接口映射”表格。
278
+ - 如果功能依赖接口,在同一行内说明 PRD 交互项、接口、输入参数、响应数据、展示形式、状态变化、成功后的刷新范围和异常反馈。
279
+ - 建议表头为:功能、PRD 交互项、接口、入参、响应数据、页面展示 / 行为、状态变化、成功后刷新、异常反馈。
280
+ - 不再单独重复一份纯接口清单,除非用户明确要求接口评审表。
281
+ - 用户流程写用户动作链路。
282
+ - 关键交互写触发条件、系统行为和反馈结果。
283
+ - 关键交互必须覆盖 PRD 交互清单,不能只写通用查询、保存、删除。
284
+ - 不写开发步骤。
285
+ - 关键交互不明确时,列入待确认,不要补全规则。
286
+
287
+ ### 4. 数据与接口
288
+
289
+ 必需上下文:
290
+
291
+ - 页面展示字段、依赖数据或接口文档
292
+ - 已有 service 文件、mock 数据或后端约定
293
+
294
+ 写作规则:
295
+
296
+ - 只有用户提供或代码中存在时,才写真实接口名称、路径、方法、参数和响应字段。
297
+ - 接口未确认时,可以写预期数据依赖,但接口细节必须标记为“待后端确认”。
298
+ - 不得凭空生成 TypeScript 请求类型或响应类型。
299
+ - 异常处理写页面表现,不写底层请求封装设计。
300
+ - 如果 `3.1 功能与接口映射`
301
+ 已完整覆盖接口,本章只补充公共数据依赖、参数约定、响应约定和异常口径,避免重复。
302
+
303
+ ### 5. 前端实现方案
304
+
305
+ 必需上下文:
306
+
307
+ - 可访问的前端仓库,用于确认路径和可复用资源
308
+ - 页面结构所需的设计或需求上下文
309
+ - 项目当前实际使用的 UI 库
310
+
311
+ 写作规则:
312
+
313
+ - “目录结构与产物路径”只列页面级主要预期产物,不写完整文件改动清单。
314
+ - “目录结构与产物路径”使用树形代码块。
315
+ - “可复用资源清单”必须来自已有代码,可包含组件、hooks、utils、constants、services、stores/models、业务组件。
316
+ - “可复用资源清单”优先使用树形代码块展示路径。
317
+ - “UI 库组件清单”必须匹配项目当前实际使用的 UI 库。
318
+ - “组件拆分”基于页面区域和复用资源,不要过度拆分。
319
+ - “组件拆分”涉及多个区域时,优先提供 `flowchart LR`
320
+ 组件关系图,并在组件节点内压缩标注 UI 库资源、复用资源、接口资源。
321
+ - “状态设计”按需覆盖请求状态、页面状态、选中状态、表单状态、业务状态。
322
+ - “数据流”描述数据从入口参数、接口、用户操作到 UI 和提交的流转。
323
+ - 数据来自 2 个及以上接口,或存在创建 / 编辑 / 删除后刷新多个查询的联动时,“数据流”必须包含 Mermaid 数据流转图。
324
+ - 如果提交链路包含前端校验、接口提交、结果刷新和错误回填,必须在“数据流”或“提交表单与校验”中补充提交流程时序图。
325
+ - “提交表单与校验”是条件章节;纯展示页、列表页、只读详情页写“不涉及”。
326
+
327
+ ### 6. UI 与体验约束
328
+
329
+ 必需上下文:
330
+
331
+ - 设计稿来源或明确 UI 要求
332
+ - 终端范围,例如只支持桌面端或需要响应式
333
+
334
+ 写作规则:
335
+
336
+ - 明确设计信息来源。
337
+ - 涉及异步数据的页面,必须写 loading、空状态和错误反馈。
338
+ - 没有响应式要求时,遵循项目既有适配方式,不新增断点假设。
339
+ - 不写笼统的视觉形容词。
340
+
341
+ ### 7. 非功能性设计
342
+
343
+ 必写:
344
+
345
+ - 性能设计
346
+ - 权限与安全
347
+ - 可维护性
348
+ - 可测试性
349
+
350
+ 条件写:
351
+
352
+ - 可访问性:项目或页面有明确要求时写。
353
+ - 埋点与监控:存在埋点、日志、监控或分析上下文时写。
354
+
355
+ 写作规则:
356
+
357
+ - 只写和当前页面相关的内容。
358
+ - 不得臆想性能指标、埋点事件名、监控面板或权限码。
359
+ - 性能设计重点关注分页、防重复请求、缓存、懒加载、大列表渲染、避免高成本重复渲染。
360
+ - 权限与安全重点关注页面访问权限、操作权限、敏感字段、危险操作确认和错误信息暴露。
361
+
362
+ ### 8. 边界场景
363
+
364
+ 必需上下文:
365
+
366
+ - 需求和数据行为
367
+ - 已知接口与权限行为
368
+
369
+ 写作规则:
370
+
371
+ - 覆盖真实可能发生的页面边界:空数据、请求失败、无权限、重复提交、字段缺失、长文本、数据过期、部分数据缺失。
372
+ - 不写和页面无关的理论异常。
373
+
374
+ ### 9. 完成标准
375
+
376
+ 必需上下文:
377
+
378
+ - 页面目标
379
+ - 功能范围
380
+ - 设计和接口预期
381
+
382
+ 写作规则:
383
+
384
+ - 保持简短。
385
+ - 说明页面做到什么程度算完成。
386
+ - 不写详细测试用例,不写 coding 排期。
387
+
388
+ ### 10. 风险与待确认项
389
+
390
+ 必写。
391
+
392
+ 写作规则:
393
+
394
+ - 收敛前面所有不确定信息。
395
+ - 单独收敛 PRD / 接口 / 仓库代码 / 产品设计规范之间的冲突项。
396
+ - 每个问题都要具体到可以直接问产品、设计、后端或前端负责人。
397
+ - 如果没有不确定项,只有在确认全文没有臆想内容后,才写“暂无明确待确认项”。
398
+
399
+ ## 交付前自检
400
+
401
+ 生成页面技术方案后,必须执行一次人工自检;如果已经落地为 Markdown 文件,优先运行:
402
+
403
+ ```bash
404
+ node .agent/skills/devFlow/domains/frontend/scripts/check_page_tech_doc.mjs <markdown-file>
405
+ ```
406
+
407
+ 自检重点:
408
+
409
+ - `3.1 功能与接口映射`
410
+ 是否为表格,且包含 PRD 交互项、接口、入参、响应、展示、状态变化、刷新、异常反馈。
411
+ - PRD 中的交互项是否在 `3.3 关键交互` 或相关章节逐项覆盖。
412
+ - 多接口页面的 `5.6 数据流` 是否包含 Mermaid 数据流转图。
413
+ - 提交链路是否说明校验、提交、成功刷新和失败反馈。
414
+ - PRD、接口、仓库代码、规范冲突是否进入风险与待确认项。
@@ -0,0 +1,69 @@
1
+ # 字段通用规范
2
+
3
+ 适用于所有字段、表单、详情、列表展示和筛选场景。
4
+
5
+ ## 布局
6
+
7
+ - 标签统一采用上下结构:字段名称在上,字段值在下。
8
+ - 栅格根据内容长短选择:
9
+ - 整行:内容较长,例如地址。
10
+ - `1/2`:内容适中。
11
+ - `1/4`:内容需要精简填写。
12
+ - 未特殊说明时,统一按 `1/2` 处理。
13
+
14
+ ## 必填标识
15
+
16
+ - 创建和编辑页:必填字段标题右侧加 `*`。
17
+ - 详情页:不显示必填标识。
18
+
19
+ ## 校验触发
20
+
21
+ - 必填字段:失焦时校验,提交时最终校验。
22
+ - 选填字段:先判断是否为空;为空则通过,不为空再执行格式校验。
23
+
24
+ ## 错误提示
25
+
26
+ - 错误文案显示在组件下方,红色展示。
27
+ - 组件边框变为红色。
28
+ - 必填校验:提示文本 + 字段名,例如“请输入客户名称”“请选择客户等级”。
29
+ - 格式校验:字段名 + 格式不正确。
30
+ - 范围校验:`XX不得低于XX`、`XX不得高于XX`。
31
+ - 唯一性校验:`XX已存在`。
32
+ - 业务校验:说明具体业务原因,例如“合同金额不得超过预算余额XX.XX元”。
33
+
34
+ ## 字段说明
35
+
36
+ - 提示文本:输入框内占位文本,适用于轻提示且文本较短的场景。
37
+ - 帮助文本:字段标题右侧或组件底部灰色文案,适用于强提示。
38
+ - 字段摘要:鼠标悬浮字段标题右侧问号图标时显示,适用于较长说明,例如字段计算逻辑、枚举含义解释。
39
+
40
+ ## 只读状态
41
+
42
+ - 样式:文本灰色、背景浅灰色、无边框。
43
+ - 输入框:显示纯文本,无边框。
44
+ - 选择器:显示选中值文本,无选择操作图标。
45
+ - 交互:内容可选但不可编辑,无光标变化。
46
+ - 如只读字段存在自动写入值,提示文本需说明“选择XX后自动带出”。
47
+
48
+ ## 分组分页
49
+
50
+ - 按信息层级进行 Tab 拆分。
51
+ - 同一信息层级内按业务含义分组。
52
+ - 各分组内布局支持动态布局。
53
+
54
+ ## 空值排序
55
+
56
+ - 空值统一排列在末尾,不区分升序或降序。
57
+
58
+ ## 列表字段显隐
59
+
60
+ - 核心标识:显示、固定列、无法隐藏。
61
+ - 业务字段:高频优先,控制在 10 个以内。
62
+ - 系统字段:创建人员、归属人员、创建时间默认隐藏,可手动切换显示。
63
+
64
+ ## 列表操作
65
+
66
+ - 快速浏览为主、详情简单:操作列显示,详情页不显示。
67
+ - 专注任务为主、详情复杂:操作列不显示,详情页显示。
68
+ - 当勾选不是高频操作时,默认数据行选中打开详情。
69
+ - 按需设置详情页是否支持上下翻阅。
@@ -0,0 +1,105 @@
1
+ # 复杂字段规范
2
+
3
+ ## 子表单
4
+
5
+ ### 适用范围
6
+
7
+ - 开票明细、结算明细等。
8
+
9
+ ### 录入方式
10
+
11
+ - 表格内直接编辑。
12
+ - 支持新增行、删除行、拖拽排序。
13
+ - 子表字段类型遵循各字段组件规范。
14
+ - 默认值:空表格,或按规则预填充。
15
+ - 无特殊说明时,默认不超过 200 行。
16
+
17
+ ### 字段说明
18
+
19
+ - 表头即字段名称。
20
+ - 必填列标题加 `*`。
21
+ - 提示文本和帮助文本遵循对应字段组件规范。
22
+
23
+ ### 字段校验
24
+
25
+ - 行级校验:每行独立校验必填、格式、范围。
26
+ - 表级校验:按需设置。
27
+ - 错误定位:校验失败时高亮具体单元格或数据行,并显示错误文案。
28
+
29
+ ### 列表显示
30
+
31
+ - 不在父表列表中显示。
32
+ - 仅在详情页或编辑页内展示。
33
+
34
+ ### 产品要点
35
+
36
+ - 必须明确子表字段清单及各字段类型。
37
+ - 必须明确行数上限。
38
+ - 必须明确是否支持行排序、行复制。
39
+ - 必须明确是否存在跨行计算,例如合计行。
40
+
41
+ ### UI 与体验要点
42
+
43
+ - 新增行:点击“添加一行”,默认追加至末尾;如需追加至开头需明确说明。
44
+ - 删除行:操作列显示删除按钮。
45
+ - 子表单必填且只有 1 行数据时,删除按钮隐藏。
46
+ - 删除一般即时删除;单行字段较多时需要二次确认。
47
+ - 存在金额或数量列时,表格底部固定显示合计行。
48
+ - 超过 10 行时表格内部滚动,表头固定,支持分页。
49
+ - Tab 键支持在单元格间快速跳转。
50
+
51
+ ### 研发要点
52
+
53
+ - 子表数据随父表一同提交,接口结构为嵌套 JSON。
54
+ - 编辑时需对比原数据,区分新增行、修改行、删除行,并按差量提交。
55
+ - 大数据量场景,超过 50 行建议使用虚拟滚动渲染。
56
+
57
+ ## 文件上传
58
+
59
+ ### 适用范围
60
+
61
+ - 附件、图片等。
62
+
63
+ ### 录入方式
64
+
65
+ - 点击上传、拖拽上传、快捷键上传,例如 `ctrl+V`、`command+V`。
66
+ - 无特殊说明时,图片仅限 jpg、jpeg、png、gif。
67
+ - 无特殊说明时,文档仅限 pdf、doc、xlsx。
68
+ - 无特殊说明时,单文件不超过 20MB。
69
+ - 无特殊说明时,图片或附件不超过 10 条。
70
+
71
+ ### 字段说明
72
+
73
+ - 提示文本:无。
74
+ - 帮助文本:一般显示格式要求。
75
+
76
+ ### 字段校验
77
+
78
+ - 前端校验文件格式、大小和数量。
79
+ - 后端需要二次校验。
80
+
81
+ ### 列表显示
82
+
83
+ - 一般不显示。
84
+ - 单文件场景,为便于浏览可考虑在列表呈现。
85
+ - 不支持筛选。
86
+ - 不支持高级筛选。
87
+ - 不支持排序。
88
+
89
+ ### 产品要点
90
+
91
+ - 有特殊格式需要明确说明。
92
+ - 需要明确上传规范,例如提供图片示例、附件示例、附件模版。
93
+
94
+ ### UI 与体验要点
95
+
96
+ - 显示上传进度、文件名、大小。
97
+ - 支持预览、删除、重试。
98
+ - 不同格式文件需要有明确缩略图。
99
+ - 异常需显示:格式不支持、文件异常、大小超限、数量超限。
100
+
101
+ ### 研发要点
102
+
103
+ - 图片需要前端压缩。
104
+ - 大文件大于等于 50MB 时使用分片上传。
105
+ - 需要病毒扫描。
@@ -0,0 +1,44 @@
1
+ # ID / 流水号 / 编码规范
2
+
3
+ ## 适用范围
4
+
5
+ - ID:合同ID、补充协议ID。
6
+ - 流水号:订单号、交易流水、凭证号。
7
+ - 编码:服务编码、员工工号、地区代码、国家代码。
8
+
9
+ ## 录入方式
10
+
11
+ - 系统自动生成,不可编辑。
12
+ - 无特殊说明时,在数据提交时生成。
13
+ - 生成格式需要引用编码规则。
14
+
15
+ ## 字段说明
16
+
17
+ - 提示文本:系统自动生成。
18
+ - 帮助文本:简单描述生成格式和示例。
19
+
20
+ ## 字段校验
21
+
22
+ - 无前端字段校验。
23
+
24
+ ## 列表显示
25
+
26
+ - 默认隐藏,按需显示。
27
+ - 筛选:模糊查询。
28
+ - 高级筛选:等于、不等于、包含、不包含、为空、不为空。
29
+ - 排序:升序或降序;字母部分按文本排序,数字部分按数值大小排序。
30
+
31
+ ## 产品要点
32
+
33
+ - 必须说明生成格式和示例。
34
+ - 如需前端显示,必须特别说明显示位置。
35
+
36
+ ## UI 与体验要点
37
+
38
+ - 如果前端可见,列表和详情页内需要支持一键复制,并有复制成功反馈。
39
+
40
+ ## 研发要点
41
+
42
+ - ID 冲突时自动加 1,需要重试机制,确保唯一。
43
+ - 流水号冲突时自动加 1,需要重试机制,确保唯一。
44
+ - 编码需要重试机制,确保生成成功,并支持重置。