@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.
- package/LICENSE +21 -0
- package/README.md +80 -0
- package/bin/cli.mjs +9 -0
- package/package.json +39 -0
- package/skills/artifact/README.md +23 -0
- package/skills/execution/devFlow/SKILL.md +341 -0
- package/skills/execution/devFlow/agents/openai.yaml +7 -0
- package/skills/execution/devFlow/domains/backend/references/api-tech.md +173 -0
- package/skills/execution/devFlow/domains/backend/scripts/check_api_tech_doc.mjs +170 -0
- package/skills/execution/devFlow/domains/backend/scripts/check_api_tech_doc.test.mjs +89 -0
- package/skills/execution/devFlow/domains/backend/templates/api-tech.md +164 -0
- package/skills/execution/devFlow/domains/frontend/references/contract-check.md +270 -0
- package/skills/execution/devFlow/domains/frontend/references/foundation-freeze.md +92 -0
- package/skills/execution/devFlow/domains/frontend/references/lightweight-flow.md +55 -0
- package/skills/execution/devFlow/domains/frontend/references/page-build.md +268 -0
- package/skills/execution/devFlow/domains/frontend/references/page-tech.md +414 -0
- package/skills/execution/devFlow/domains/frontend/references/product-design-specs/field-common.md +69 -0
- package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-complex.md +105 -0
- package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-id-code.md +44 -0
- package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-number-date.md +106 -0
- package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-relation.md +144 -0
- package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-selectors.md +102 -0
- package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-text.md +130 -0
- package/skills/execution/devFlow/domains/frontend/references/product-design-specs/index.md +42 -0
- package/skills/execution/devFlow/domains/frontend/references/product-design-specs/interaction.md +61 -0
- package/skills/execution/devFlow/domains/frontend/scripts/check_page_tech_doc.mjs +82 -0
- package/skills/execution/devFlow/domains/frontend/scripts/contract_check_static.mjs +145 -0
- package/skills/execution/devFlow/domains/frontend/scripts/generate_foundation_summary.mjs +224 -0
- package/skills/execution/devFlow/domains/frontend/templates/contract-report.md +66 -0
- package/skills/execution/devFlow/domains/frontend/templates/mini-plan-l0.md +7 -0
- package/skills/execution/devFlow/domains/frontend/templates/mini-plan-l1.md +9 -0
- package/skills/execution/devFlow/domains/frontend/templates/page-build/component.tsx.tpl +8 -0
- package/skills/execution/devFlow/domains/frontend/templates/page-build/constants.ts.tpl +5 -0
- package/skills/execution/devFlow/domains/frontend/templates/page-build/index.ts.tpl +1 -0
- package/skills/execution/devFlow/domains/frontend/templates/page-build/route.tsx.tpl +11 -0
- package/skills/execution/devFlow/domains/frontend/templates/page-build/service.ts.tpl +17 -0
- package/skills/execution/devFlow/domains/frontend/templates/page-build/types.ts.tpl +11 -0
- package/skills/execution/devFlow/domains/frontend/templates/page-tech.md +103 -0
- package/skills/execution/devFlow/domains/requirement/references/prd-review.md +129 -0
- package/skills/execution/devFlow/domains/requirement/templates/prd-review.md +57 -0
- package/skills/execution/figmaSync/SKILL.md +349 -0
- package/skills/execution/figmaSync/chapters/apply.md +177 -0
- package/skills/execution/figmaSync/chapters/plan.md +359 -0
- package/skills/execution/figmaSync/chapters/prepare.md +47 -0
- package/skills/execution/figmaSync/examples/native-css.md +129 -0
- package/skills/execution/figmaSync/examples/plan-doc-sample.md +39 -0
- package/skills/execution/figmaSync/scripts/_shared/session-log.mjs +82 -0
- package/skills/execution/figmaSync/scripts/_shared/token-resolver.mjs +132 -0
- package/skills/execution/figmaSync/scripts/_shared/token-source.mjs +145 -0
- package/skills/execution/figmaSync/scripts/figma-sync-report.mjs +448 -0
- package/skills/execution/figmaSync/scripts/icon-inventory.mjs +165 -0
- package/skills/execution/figmaSync/scripts/lookup-var.mjs +184 -0
- package/skills/execution/figmaSync/scripts/match-token.mjs +210 -0
- package/skills/execution/figmaSync/scripts/prepare-check.mjs +290 -0
- package/skills/execution/figmaSync/scripts/verify-plan.mjs +458 -0
- package/skills/execution/figmaSync/snapshots/README.md +13 -0
- package/skills/execution/figmaSync/snapshots/last-sync.md +1538 -0
- package/skills/execution/figmaSync/templates/PLAN.md.tpl +227 -0
- package/skills/review/consistency-checker/SKILL.md +112 -0
- package/skills/review/consistency-checker/rules/README.md +16 -0
- package/src/cli/agents.mjs +16 -0
- package/src/cli/copy.mjs +95 -0
- package/src/cli/install.mjs +131 -0
- package/src/cli/prompts.mjs +66 -0
- package/tools/lark/README.md +78 -0
- package/tools/lark/references/lark-doc.md +156 -0
- package/tools/lark/references/lark-read.md +235 -0
- package/tools/lark/references/prepare.md +147 -0
- package/tools/lark/scripts/lark_api.mjs +404 -0
- package/tools/lark/scripts/lark_api.test.mjs +63 -0
- package/tools/lark/scripts/lark_check_permissions.mjs +52 -0
- package/tools/lark/scripts/lark_publish_doc.mjs +299 -0
- package/tools/lark/scripts/lark_read_docx.mjs +328 -0
- package/tools/lark/scripts/markdown_to_lark_blocks.mjs +397 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# 数字、金额、时间、日期字段规范
|
|
2
|
+
|
|
3
|
+
## 数字 / 金额
|
|
4
|
+
|
|
5
|
+
### 适用范围
|
|
6
|
+
|
|
7
|
+
- 金额、数量、利润率、税率、百分比、单价、合计等。
|
|
8
|
+
|
|
9
|
+
### 录入方式
|
|
10
|
+
|
|
11
|
+
- 手动输入。
|
|
12
|
+
- 自动计算且可修改。
|
|
13
|
+
- 默认值:无,或按规则自动计算。
|
|
14
|
+
- 字符限制:仅支持数字字符、小数点 `.`、负号 `-`。
|
|
15
|
+
- 大小限制:如有范围限制,超出范围的数值禁止输入,或处理成最大值/最小值。
|
|
16
|
+
- 负数:未特殊说明时,一般不支持输入负数。
|
|
17
|
+
|
|
18
|
+
### 格式化
|
|
19
|
+
|
|
20
|
+
- 金额:一般保留 2 位小数,显示千分符,例如 `123,123,123.12`。
|
|
21
|
+
- 税率:一般保留 2 位小数,显示百分比,例如 `6%`。
|
|
22
|
+
- 其他率:一般保留 4 位小数,显示百分比,例如 `23.12%`。
|
|
23
|
+
- 小数位数一般不超过 6 位。
|
|
24
|
+
- 千分符和百分比按需开启。
|
|
25
|
+
- 录入时自动进行格式化处理。
|
|
26
|
+
- 可带单位,例如元、%、次。
|
|
27
|
+
|
|
28
|
+
### 字段说明
|
|
29
|
+
|
|
30
|
+
- 提示文本:请输入。
|
|
31
|
+
- 自动计算字段可按需说明计算规则。
|
|
32
|
+
|
|
33
|
+
### 字段校验
|
|
34
|
+
|
|
35
|
+
- 范围校验:按需设定字段范围,超出显示错误提示。
|
|
36
|
+
- 格式校验:禁止多个 0 开头。
|
|
37
|
+
|
|
38
|
+
### 列表显示
|
|
39
|
+
|
|
40
|
+
- 按需显示。
|
|
41
|
+
- 筛选:区间筛选。
|
|
42
|
+
- 高级筛选:等于、不等于、介于、为空、不为空。
|
|
43
|
+
- 排序:按数值大小正序或倒序。
|
|
44
|
+
|
|
45
|
+
### 产品要点
|
|
46
|
+
|
|
47
|
+
- 必须明确小数位数。
|
|
48
|
+
- 必须明确是否支持负数。
|
|
49
|
+
- 必须明确是否需要千分符。
|
|
50
|
+
- 必须明确是否自动计算及计算公式。
|
|
51
|
+
- 退款、冲销、调整等场景如果需要负数,必须明确说明。
|
|
52
|
+
|
|
53
|
+
### UI 与体验要点
|
|
54
|
+
|
|
55
|
+
- 自动计算可修改时,应显性显示自动计算结果,提示用户当前值与计算值存在差异。
|
|
56
|
+
|
|
57
|
+
### 研发要点
|
|
58
|
+
|
|
59
|
+
- 千分符和百分比不影响实际存储值。例如前端显示 `15%`,后端存储 `0.15`。
|
|
60
|
+
- 使用 decimal 类型存储,避免浮点误差。
|
|
61
|
+
- 金额计算使用高精度库,禁止使用 float/double。
|
|
62
|
+
|
|
63
|
+
## 时间 / 日期
|
|
64
|
+
|
|
65
|
+
### 适用范围
|
|
66
|
+
|
|
67
|
+
- 立项日期、结项日期、创建时间等。
|
|
68
|
+
|
|
69
|
+
### 录入方式
|
|
70
|
+
|
|
71
|
+
- 日期选择器:日期、日期范围、时间、时间范围。
|
|
72
|
+
- 日期选择器按需支持快捷选项。
|
|
73
|
+
- 日期选择器按需限制可选范围。
|
|
74
|
+
- 默认值:填报当天、提交时间、自动计算。
|
|
75
|
+
- 支持格式化处理,例如输入 `2026/01/12` 可处理成 `2026-01-12`。
|
|
76
|
+
|
|
77
|
+
### 字段说明
|
|
78
|
+
|
|
79
|
+
- 提示文本:请选择。
|
|
80
|
+
- 自动计算字段可按需说明计算规则。
|
|
81
|
+
|
|
82
|
+
### 字段校验
|
|
83
|
+
|
|
84
|
+
- 逻辑校验:结束日期不得早于开始日期。
|
|
85
|
+
|
|
86
|
+
### 列表显示
|
|
87
|
+
|
|
88
|
+
- 按需显示。
|
|
89
|
+
- 筛选:区间筛选。
|
|
90
|
+
- 高级筛选:等于、不等于、介于、为空、不为空。
|
|
91
|
+
- 排序:按时间正序或倒序。
|
|
92
|
+
|
|
93
|
+
### 产品要点
|
|
94
|
+
|
|
95
|
+
- 必须明确显示精度:年、年月、年月日、年月日时分、年月日时分秒。
|
|
96
|
+
- 必须明确筛选精度。
|
|
97
|
+
|
|
98
|
+
### UI 与体验要点
|
|
99
|
+
|
|
100
|
+
- 创建时如果填写的是日期范围或时间范围,列表呈现时需拆分为开始时间、结束时间两列,便于筛选。
|
|
101
|
+
|
|
102
|
+
### 研发要点
|
|
103
|
+
|
|
104
|
+
- 存储统一使用 UTC 时间戳或 ISO 8601 格式。
|
|
105
|
+
- 前端按用户时区展示。
|
|
106
|
+
- 日期比较需要统一精度后再比较。
|
package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-relation.md
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# 关联选择字段规范
|
|
2
|
+
|
|
3
|
+
## 跨表选取
|
|
4
|
+
|
|
5
|
+
### 适用范围
|
|
6
|
+
|
|
7
|
+
- 项目、合同、供应商、收款账户、付款账户等。
|
|
8
|
+
|
|
9
|
+
### 录入方式
|
|
10
|
+
|
|
11
|
+
- 下拉单选、弹窗单选、下拉多选、弹窗多选、快捷操作直接写入。
|
|
12
|
+
- 默认值:无,或按规则自动计算。
|
|
13
|
+
- 输入限制:按需设置是否支持输入。
|
|
14
|
+
|
|
15
|
+
### 字段说明
|
|
16
|
+
|
|
17
|
+
- 仅选取:提示文本为“请选择”。
|
|
18
|
+
- 支持输入:提示文本为“请选择/输入”。
|
|
19
|
+
- 自动计算:提示文本为“选择XX后自动带出”。
|
|
20
|
+
- 帮助文本:一般无帮助文本,如有要求按需说明。
|
|
21
|
+
|
|
22
|
+
### 列表显示
|
|
23
|
+
|
|
24
|
+
- 按需显示。
|
|
25
|
+
- 筛选:模糊查询。
|
|
26
|
+
- 高级筛选:等于、不等于、包含、不包含、为空、不为空。
|
|
27
|
+
- 排序:按字母升序或降序。
|
|
28
|
+
|
|
29
|
+
### 产品要点
|
|
30
|
+
|
|
31
|
+
- 必须明确单选或多选。
|
|
32
|
+
- 选择关键信息时,需要明确辅助信息,尤其在关键信息可能重复时,例如重名用户增加工号、部门、岗位。
|
|
33
|
+
- 必须明确选项是否全量显示。
|
|
34
|
+
- 必须明确选项数据范围,以及是否与用户数据权限关联。
|
|
35
|
+
- 必须明确来源数据值变更后,本表数据如何处理:实时更新或快照冻结。
|
|
36
|
+
|
|
37
|
+
### UI 与体验要点
|
|
38
|
+
|
|
39
|
+
- 辅助信息较少或选项较少时,优先使用下拉选取。
|
|
40
|
+
- 辅助信息较多或来源数据量较大时,优先使用弹窗选取。
|
|
41
|
+
- 一般单选场景回显选项值即可。
|
|
42
|
+
- 多选且信息简单时,以 Tag 形式回显。
|
|
43
|
+
- 多选且信息复杂时,以表格形式呈现。
|
|
44
|
+
- 选项较多时,支持关键词检索。
|
|
45
|
+
- 不支持输入时,输入信息仅用于关键词模糊查询,失焦后清空输入框。
|
|
46
|
+
- 多选时,已选项支持删除,全部选项支持清空。
|
|
47
|
+
|
|
48
|
+
### 研发要点
|
|
49
|
+
|
|
50
|
+
- 选项列表返回结构需要包含关键字段及辅助信息。
|
|
51
|
+
- 存储选项 ID,而不是选项值。
|
|
52
|
+
- 大数据量场景需要支持分页加载或虚拟滚动。
|
|
53
|
+
|
|
54
|
+
## 用户选择
|
|
55
|
+
|
|
56
|
+
### 适用范围
|
|
57
|
+
|
|
58
|
+
- 项目经理、销售人员等。
|
|
59
|
+
|
|
60
|
+
### 录入方式
|
|
61
|
+
|
|
62
|
+
- 用户选择器,支持单选或多选。
|
|
63
|
+
- 选项范围按需设置条件,例如仅在职用户、仅业务销售部用户。
|
|
64
|
+
- 默认值:无、当前用户、按规则自动计算。
|
|
65
|
+
|
|
66
|
+
### 字段说明
|
|
67
|
+
|
|
68
|
+
- 提示文本:请选择。
|
|
69
|
+
- 帮助文本:一般无帮助文本。
|
|
70
|
+
|
|
71
|
+
### 字段校验
|
|
72
|
+
|
|
73
|
+
- 无。
|
|
74
|
+
|
|
75
|
+
### 列表显示
|
|
76
|
+
|
|
77
|
+
- 按需显示,一般显示用户头像和用户名。
|
|
78
|
+
- 筛选:下拉多选。
|
|
79
|
+
- 高级筛选:等于、不等于、包含任意一个、不包含、同时包含、为空、不为空。
|
|
80
|
+
- 排序:按用户名拼音升序或降序。
|
|
81
|
+
|
|
82
|
+
### 产品要点
|
|
83
|
+
|
|
84
|
+
- 必须明确人员范围:全公司、本部门、指定部门、指定角色。
|
|
85
|
+
- 必须明确是否支持选择已离职人员。
|
|
86
|
+
- 必须明确人员变更后历史数据处理方式:保留原值或同步更新。
|
|
87
|
+
|
|
88
|
+
### UI 与体验要点
|
|
89
|
+
|
|
90
|
+
- 显示用户姓名和头像。
|
|
91
|
+
- 悬浮显示部门、岗位等辅助信息。
|
|
92
|
+
- 支持关键词检索。
|
|
93
|
+
- 多选时采用穿梭框,可见已选项。
|
|
94
|
+
- 多选回显使用 Tag,支持逐个删除和一键清空。
|
|
95
|
+
- 已离职人员需有明确标识,例如灰色或标签。
|
|
96
|
+
|
|
97
|
+
### 研发要点
|
|
98
|
+
|
|
99
|
+
- 存储用户 ID,显示时关联查询用户姓名等信息。
|
|
100
|
+
- 需要支持根据角色、部门、岗位过滤可选人员列表。
|
|
101
|
+
|
|
102
|
+
## 部门选择
|
|
103
|
+
|
|
104
|
+
### 适用范围
|
|
105
|
+
|
|
106
|
+
- 所属部门、归属组织、成本中心等。
|
|
107
|
+
|
|
108
|
+
### 录入方式
|
|
109
|
+
|
|
110
|
+
- 部门选择器,支持单选或多选。
|
|
111
|
+
- 选项范围按需设置。
|
|
112
|
+
- 默认值:无、当前用户所属部门、按规则自动计算。
|
|
113
|
+
|
|
114
|
+
### 字段说明
|
|
115
|
+
|
|
116
|
+
- 提示文本:请选择。
|
|
117
|
+
- 帮助文本:一般无帮助文本。
|
|
118
|
+
|
|
119
|
+
### 字段校验
|
|
120
|
+
|
|
121
|
+
- 无。
|
|
122
|
+
|
|
123
|
+
### 列表显示
|
|
124
|
+
|
|
125
|
+
- 按需显示。
|
|
126
|
+
- 筛选:下拉多选。
|
|
127
|
+
- 高级筛选:等于、不等于、包含任意一个、不包含、同时包含、为空、不为空。
|
|
128
|
+
- 排序:按部门编码或部门名称拼音升序/降序。
|
|
129
|
+
|
|
130
|
+
### 产品要点
|
|
131
|
+
|
|
132
|
+
- 必须明确选择范围。
|
|
133
|
+
- 必须明确部门变更后历史数据处理方式:保留原值或同步更新。
|
|
134
|
+
|
|
135
|
+
### UI 与体验要点
|
|
136
|
+
|
|
137
|
+
- 支持关键词检索。
|
|
138
|
+
- 多选时采用穿梭框,可见已选项。
|
|
139
|
+
- 多选回显使用 Tag,支持逐个删除和一键清空。
|
|
140
|
+
- 已撤销部门需有明确标识,例如灰色或标签。
|
|
141
|
+
|
|
142
|
+
### 研发要点
|
|
143
|
+
|
|
144
|
+
- 存储部门 ID,显示时关联查询部门名称。
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# 选择器字段规范
|
|
2
|
+
|
|
3
|
+
## 下拉选择
|
|
4
|
+
|
|
5
|
+
### 适用范围
|
|
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
|
+
- 必须明确数据来源、是否多选、选项是否可扩展。
|
|
37
|
+
- 选项扩展交互需要明确:
|
|
38
|
+
- 选择其他,填写其他信息,存储为其他。
|
|
39
|
+
- 选择其他,填写其他信息后,存储为填写的值。
|
|
40
|
+
|
|
41
|
+
### UI 与体验要点
|
|
42
|
+
|
|
43
|
+
- 状态等关键信息选项需要按不同颜色显示。
|
|
44
|
+
- 同个业务字段在不同页面的颜色需要保持一致。
|
|
45
|
+
- 选项大于等于 10 个时,一般不区分颜色,避免干扰。
|
|
46
|
+
- 选项大于等于 10 个时,需要支持选项搜索、全选、已选列表。
|
|
47
|
+
|
|
48
|
+
### 研发要点
|
|
49
|
+
|
|
50
|
+
- 枚举值存储选项值即可。
|
|
51
|
+
- 数据字典类需要存储选项编码和选项值。
|
|
52
|
+
- 字典数据建议前端缓存,避免重复请求。
|
|
53
|
+
|
|
54
|
+
## 级联选择
|
|
55
|
+
|
|
56
|
+
### 适用范围
|
|
57
|
+
|
|
58
|
+
- 省/市/区、多级分类。
|
|
59
|
+
|
|
60
|
+
### 录入方式
|
|
61
|
+
|
|
62
|
+
- 级联选择器,支持单选或多选,逐级展开子选项。
|
|
63
|
+
- 默认值:无,或按规则自动带出。
|
|
64
|
+
- 数据来源:树形数据字典。
|
|
65
|
+
|
|
66
|
+
### 字段说明
|
|
67
|
+
|
|
68
|
+
- 提示文本:请选择 / 请选择至末级。
|
|
69
|
+
- 帮助文本:按需说明各选项含义。
|
|
70
|
+
|
|
71
|
+
### 字段校验
|
|
72
|
+
|
|
73
|
+
- 如果要求必须选至末级,需要校验所选节点是否为叶子节点。
|
|
74
|
+
|
|
75
|
+
### 列表显示
|
|
76
|
+
|
|
77
|
+
- 按需显示。
|
|
78
|
+
- 可显示完整路径,或仅显示末级。
|
|
79
|
+
- 筛选:树形下拉多选。
|
|
80
|
+
- 选中父级时,筛选包含其所有子级的数据。
|
|
81
|
+
- 高级筛选:等于、不等于、包含任意一个、不包含、为空、不为空。
|
|
82
|
+
- 排序:按选项编码或选项排序排列。
|
|
83
|
+
|
|
84
|
+
### 产品要点
|
|
85
|
+
|
|
86
|
+
- 必须明确层级数量。
|
|
87
|
+
- 必须明确是否必须选到末级。
|
|
88
|
+
- 必须明确层级数据维护方式:系统预置或管理员配置。
|
|
89
|
+
|
|
90
|
+
### UI 与体验要点
|
|
91
|
+
|
|
92
|
+
- 逐级展开,每级面板宽度一致。
|
|
93
|
+
- 支持关键词搜索,搜索结果显示完整路径。
|
|
94
|
+
- 选中后输入框显示完整路径,以 `/` 分隔。
|
|
95
|
+
- 数据量较大时,每级支持滚动加载。
|
|
96
|
+
|
|
97
|
+
### 研发要点
|
|
98
|
+
|
|
99
|
+
- 存储末级节点 ID。
|
|
100
|
+
- 查询时通过路径字段还原完整层级。
|
|
101
|
+
- 层级数据建议前端缓存,按需懒加载子级。
|
|
102
|
+
- 需要支持根据父级 ID 查询子级列表的接口。
|
package/skills/execution/devFlow/domains/frontend/references/product-design-specs/fields-text.md
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# 文本字段规范
|
|
2
|
+
|
|
3
|
+
## 短文本
|
|
4
|
+
|
|
5
|
+
### 适用范围
|
|
6
|
+
|
|
7
|
+
- 标题、名称、身份证号、邮箱号码、手机号码、固定电话等。
|
|
8
|
+
|
|
9
|
+
### 录入方式
|
|
10
|
+
|
|
11
|
+
- 文本输入、扫码输入、语音输入。
|
|
12
|
+
- 默认值:无、自动计算、固定文本。
|
|
13
|
+
- 通用输入限制:
|
|
14
|
+
- 禁止空格、换行。
|
|
15
|
+
- 长度限制:20 或 100 字符,具体按需求确认。
|
|
16
|
+
- 特殊输入限制:
|
|
17
|
+
- 手机号码(中国大陆):等于 11 位,仅允许数字字符。
|
|
18
|
+
- 固定电话:不含分机符号部分不超过 15 位;仅允许数字字符、连字符、分机标识 `#`
|
|
19
|
+
或 `ext`。
|
|
20
|
+
- 手机号(全球):仅过滤明显非法字符,例如字母、表情符号。
|
|
21
|
+
- 邮箱:小于等于 100 字符。
|
|
22
|
+
- 身份证号(中国大陆):等于 18 位,仅允许数字字符和 `X`。
|
|
23
|
+
- 统一社会信用代码:`^[159]\d[0-9]{6}[0-9A-Z]{9}[0-9A-Z]$`
|
|
24
|
+
- 组织机构代码:`^[0-9A-HJ-NP-RT-UW-Y]{8}[0-9X]$`
|
|
25
|
+
|
|
26
|
+
### 字段说明
|
|
27
|
+
|
|
28
|
+
- 提示文本:请输入。
|
|
29
|
+
- 帮助文本:一般无帮助文本,如有要求按需说明。
|
|
30
|
+
|
|
31
|
+
### 字段校验
|
|
32
|
+
|
|
33
|
+
- 手机号码(中国大陆):`^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$`
|
|
34
|
+
- 固定电话:`^0\d{2,3}-?\d{7,8}(#\d{1,6})?$`
|
|
35
|
+
- 身份证号(中国大陆):`^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$`
|
|
36
|
+
- 身份证号(中国大陆)必须实现 GB 11643-1999 校验码验证,不能只靠正则。
|
|
37
|
+
|
|
38
|
+
### 列表显示
|
|
39
|
+
|
|
40
|
+
- 显示:按需显示。
|
|
41
|
+
- 筛选:模糊查询。
|
|
42
|
+
- 高级筛选:等于、不等于、包含、不包含、为空、不为空。
|
|
43
|
+
- 排序:按字母升序或降序。
|
|
44
|
+
|
|
45
|
+
### UI 与体验要点
|
|
46
|
+
|
|
47
|
+
- 邮箱号码可支持自动补全常用域名。
|
|
48
|
+
- 手机号(全球)支持国际区号下拉选择,默认 `+86`,或根据 IP、浏览器语言推荐。
|
|
49
|
+
|
|
50
|
+
## 长文本
|
|
51
|
+
|
|
52
|
+
### 适用范围
|
|
53
|
+
|
|
54
|
+
- 备注、说明、简介等。
|
|
55
|
+
|
|
56
|
+
### 录入方式
|
|
57
|
+
|
|
58
|
+
- 手动输入,支持空格、换行。
|
|
59
|
+
- 支持语音输入。
|
|
60
|
+
- 默认值:无。
|
|
61
|
+
- 无特殊说明时,默认限制 200 或 2000 字符,超出禁止输入。
|
|
62
|
+
|
|
63
|
+
### 字段说明
|
|
64
|
+
|
|
65
|
+
- 提示文本:请输入。
|
|
66
|
+
- 帮助文本:一般无帮助文本,如有要求按需说明。
|
|
67
|
+
|
|
68
|
+
### 字段校验
|
|
69
|
+
|
|
70
|
+
- 无。
|
|
71
|
+
|
|
72
|
+
### 列表显示
|
|
73
|
+
|
|
74
|
+
- 一般不支持显示,如有需求需特殊说明。
|
|
75
|
+
- 一般不支持筛选。
|
|
76
|
+
- 高级筛选:不支持。
|
|
77
|
+
- 排序:不支持。
|
|
78
|
+
|
|
79
|
+
### UI 与体验要点
|
|
80
|
+
|
|
81
|
+
- 编辑态默认 5 行,超出可滚动。
|
|
82
|
+
- 底部显示已输入字数和总字数。
|
|
83
|
+
- 详情态按内容高度自适应。
|
|
84
|
+
|
|
85
|
+
### 研发要点
|
|
86
|
+
|
|
87
|
+
- 存储时保留换行符。
|
|
88
|
+
- 展示时转义。
|
|
89
|
+
- 需要防范 XSS 注入。
|
|
90
|
+
|
|
91
|
+
## 富文本
|
|
92
|
+
|
|
93
|
+
### 适用范围
|
|
94
|
+
|
|
95
|
+
- 公告、通知、详情描述、邮件内容等。
|
|
96
|
+
|
|
97
|
+
### 录入方式
|
|
98
|
+
|
|
99
|
+
- 富文本编辑器。
|
|
100
|
+
- 基础能力:缩进、对齐、加粗、斜体、下划线、有序列表、无序列表、图片、超链接。
|
|
101
|
+
- 高级能力:表格、清除格式、全屏、快捷键。
|
|
102
|
+
- 默认值:无;如有模版规范,可按需设置模版。
|
|
103
|
+
|
|
104
|
+
### 字段说明
|
|
105
|
+
|
|
106
|
+
- 无。
|
|
107
|
+
|
|
108
|
+
### 字段校验
|
|
109
|
+
|
|
110
|
+
- 无。
|
|
111
|
+
|
|
112
|
+
### 列表显示
|
|
113
|
+
|
|
114
|
+
- 不支持显示。
|
|
115
|
+
|
|
116
|
+
### 产品要点
|
|
117
|
+
|
|
118
|
+
- 需要明确是否支持模版。
|
|
119
|
+
- 需要明确是否需要 @ 人员。
|
|
120
|
+
- 需要明确是否支持附件插入。
|
|
121
|
+
|
|
122
|
+
### UI 与体验要点
|
|
123
|
+
|
|
124
|
+
- 工具栏保持简洁,默认收起部分高级功能。
|
|
125
|
+
|
|
126
|
+
### 研发要点
|
|
127
|
+
|
|
128
|
+
- 输出 HTML 或 JSON 格式。
|
|
129
|
+
- 需要做 XSS 过滤。
|
|
130
|
+
- 图片上传需要支持压缩与附件存储。
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# 产品设计规范索引
|
|
2
|
+
|
|
3
|
+
本目录用于存放产品给出的字段、校验、展示和交互规范。使用时先读本索引,再根据页面涉及的字段类型读取对应分册。不要一次性加载全部规范。
|
|
4
|
+
|
|
5
|
+
## 读取流程
|
|
6
|
+
|
|
7
|
+
1. 先识别页面中涉及的字段类型、列表能力、详情展示、表单提交、筛选、上传、选择器、弹窗和操作反馈。
|
|
8
|
+
2. 先读取
|
|
9
|
+
`field-common.md`,它是字段布局、必填、校验、错误提示、只读、列表展示的通用规范。
|
|
10
|
+
3. 根据字段类型读取对应分册。
|
|
11
|
+
4. 页面涉及默认值、空状态、操作反馈、弹窗、文案或中断恢复时,读取
|
|
12
|
+
`interaction.md`。
|
|
13
|
+
5. 如果字段类型无法判断,不要套用规范,写入待确认项。
|
|
14
|
+
|
|
15
|
+
## 字段类型路由
|
|
16
|
+
|
|
17
|
+
| 页面字段 / 能力 | 读取文件 |
|
|
18
|
+
| -------------------------------------------------------------------------------------------------------------- | ----------------------- |
|
|
19
|
+
| 任意字段、表单、详情、列表展示 | `field-common.md` |
|
|
20
|
+
| ID、合同ID、补充协议ID、订单号、交易流水、凭证号、服务编码、员工工号、地区代码、国家代码 | `fields-id-code.md` |
|
|
21
|
+
| 标题、名称、身份证号、邮箱、手机号、固定电话、统一社会信用代码、组织机构代码 | `fields-text.md` |
|
|
22
|
+
| 备注、说明、简介 | `fields-text.md` |
|
|
23
|
+
| 公告、通知、详情描述、邮件内容、富文本编辑器 | `fields-text.md` |
|
|
24
|
+
| 金额、数量、利润率、税率、百分比、单价、合计 | `fields-number-date.md` |
|
|
25
|
+
| 日期、时间、日期范围、时间范围、创建时间、立项日期、结项日期 | `fields-number-date.md` |
|
|
26
|
+
| 类别、状态、枚举、数据字典、单选、多选 | `fields-selectors.md` |
|
|
27
|
+
| 省市区、多级分类、树形字典 | `fields-selectors.md` |
|
|
28
|
+
| 项目、合同、供应商、账户、外部对象选择 | `fields-relation.md` |
|
|
29
|
+
| 项目经理、销售人员、用户选择 | `fields-relation.md` |
|
|
30
|
+
| 所属部门、归属组织、成本中心、部门选择 | `fields-relation.md` |
|
|
31
|
+
| 开票明细、结算明细、可编辑表格、子表 | `fields-complex.md` |
|
|
32
|
+
| 附件、图片、文件上传 | `fields-complex.md` |
|
|
33
|
+
| 默认值、空状态、查询、筛选、编辑、保存、删除、通过、驳回、撤回、注销、清空、弹窗、按钮文案、错误文案、中断恢复 | `interaction.md` |
|
|
34
|
+
|
|
35
|
+
## 输出要求
|
|
36
|
+
|
|
37
|
+
在页面技术方案中引用这些规范时:
|
|
38
|
+
|
|
39
|
+
- 不要整段复制规范正文。
|
|
40
|
+
- 只提炼和当前页面相关的约束。
|
|
41
|
+
- 如果页面字段与规范冲突,优先写入“风险与待确认项”。
|
|
42
|
+
- 如果规范要求产品确认某项内容,例如小数位数、数据来源、人员范围,应明确列为待确认问题。
|
package/skills/execution/devFlow/domains/frontend/references/product-design-specs/interaction.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# 交互规范
|
|
2
|
+
|
|
3
|
+
## 默认值设计
|
|
4
|
+
|
|
5
|
+
- 需要考虑首次使用。
|
|
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
|
+
|
|
37
|
+
## 操作反馈
|
|
38
|
+
|
|
39
|
+
- 成功反馈。
|
|
40
|
+
- 失败反馈。
|
|
41
|
+
- 等待反馈。
|
|
42
|
+
|
|
43
|
+
## 弹窗规范
|
|
44
|
+
|
|
45
|
+
弹窗类型包括:
|
|
46
|
+
|
|
47
|
+
- 提示弹窗
|
|
48
|
+
- 确认弹窗
|
|
49
|
+
- 表单弹窗
|
|
50
|
+
- 详情弹窗
|
|
51
|
+
|
|
52
|
+
## 文案规范
|
|
53
|
+
|
|
54
|
+
- 按钮文案:动词 + 名称。
|
|
55
|
+
- 错误提示:发生了什么 + 原因 + 建议。
|
|
56
|
+
|
|
57
|
+
## 中断恢复
|
|
58
|
+
|
|
59
|
+
- 页面关闭:考虑草稿保存。
|
|
60
|
+
- 浏览器崩溃:考虑自动恢复。
|
|
61
|
+
- 网络异常:考虑重试机制。
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from 'node:fs'
|
|
4
|
+
|
|
5
|
+
const filePath = process.argv[2]
|
|
6
|
+
|
|
7
|
+
if (!filePath) {
|
|
8
|
+
console.error('Usage: node check_page_tech_doc.mjs <markdown-file>')
|
|
9
|
+
process.exit(2)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const markdown = fs.readFileSync(filePath, 'utf8')
|
|
13
|
+
const issues = []
|
|
14
|
+
|
|
15
|
+
function hasSection(title) {
|
|
16
|
+
return new RegExp(`^#{2,4}\\s+${escapeRegExp(title)}\\s*$`, 'm').test(markdown)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function getSection(title) {
|
|
20
|
+
const pattern = new RegExp(`^#{2,4}\\s+${escapeRegExp(title)}\\s*$`, 'm')
|
|
21
|
+
const match = pattern.exec(markdown)
|
|
22
|
+
if (!match) return ''
|
|
23
|
+
|
|
24
|
+
const start = match.index + match[0].length
|
|
25
|
+
const rest = markdown.slice(start)
|
|
26
|
+
const next = /^#{2,4}\s+/m.exec(rest)
|
|
27
|
+
return next ? rest.slice(0, next.index) : rest
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function escapeRegExp(value) {
|
|
31
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function countApiMentions() {
|
|
35
|
+
const matches = markdown.match(/\b(GET|POST|PUT|PATCH|DELETE)\s+[\w./:-]+|\bapi\/[\w./:-]+/g)
|
|
36
|
+
return matches ? matches.length : 0
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function hasMarkdownTable(section) {
|
|
40
|
+
return /\|.+\|\s*\n\|[\s:-]+\|/.test(section)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function hasMermaid(section) {
|
|
44
|
+
return /```mermaid[\s\S]*?```/.test(section)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const mappingSection = getSection('3.1 功能与接口映射')
|
|
48
|
+
if (!mappingSection) {
|
|
49
|
+
issues.push('缺少 3.1 功能与接口映射章节')
|
|
50
|
+
} else if (!hasMarkdownTable(mappingSection)) {
|
|
51
|
+
issues.push('3.1 功能与接口映射必须使用 Markdown 表格')
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const interactionSection = getSection('3.3 关键交互')
|
|
55
|
+
if (!interactionSection) {
|
|
56
|
+
issues.push('缺少 3.3 关键交互章节')
|
|
57
|
+
} else if (!hasMarkdownTable(interactionSection) && interactionSection.trim().length < 80) {
|
|
58
|
+
issues.push('3.3 关键交互内容不足,需逐项覆盖 PRD 交互')
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const dataFlowSection = getSection('5.6 数据流')
|
|
62
|
+
const apiCount = countApiMentions()
|
|
63
|
+
if (!dataFlowSection) {
|
|
64
|
+
issues.push('缺少 5.6 数据流章节')
|
|
65
|
+
} else if (apiCount >= 2 && !hasMermaid(dataFlowSection)) {
|
|
66
|
+
issues.push('检测到多个接口,但 5.6 数据流缺少 Mermaid 数据流转图')
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (!hasSection('10. 风险与待确认项')) {
|
|
70
|
+
issues.push('缺少 10. 风险与待确认项章节')
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (!/PRD|prd/.test(markdown)) {
|
|
74
|
+
issues.push('正文未出现 PRD 标识,请确认是否已对齐需求来源和交互项')
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (issues.length > 0) {
|
|
78
|
+
console.error(JSON.stringify({ ok: false, issues }, null, 2))
|
|
79
|
+
process.exit(1)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
console.log(JSON.stringify({ ok: true, issues: [] }, null, 2))
|