@lark-apaas/coding-miaoda-sandbox-skills 0.1.0-dev.7f786ca → 0.1.0-dev.88fb097
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/miaoda/ai-data-processing/SKILL.md +4 -1
- package/miaoda/charts-skill/SKILL.md +1 -1
- package/miaoda/creative-to-fullstack/SKILL.md +249 -149
- package/miaoda/creative-to-fullstack/references/artifact-signals.md +2 -1
- package/miaoda/creative-to-fullstack/references/ui-to-function.md +5 -69
- package/miaoda/feishu/SKILL.md +4 -4
- package/miaoda/forms-skill/SKILL.md +9 -0
- package/miaoda/lark-apps-db/SKILL.md +23 -28
- package/miaoda/lark-apps-db/references/full-reference.md +126 -6
- package/miaoda/lark-apps-ops/SKILL.md +7 -5
- package/miaoda/lark-apps-ops/references/lark-apps-access-scope-get.md +1 -1
- package/miaoda/lark-apps-ops/references/lark-apps-local-dev.md +3 -2
- package/miaoda/lark-apps-ops/references/lark-apps-mcp.md +26 -0
- package/miaoda/lark-apps-ops/references/lark-apps-release-create.md +1 -1
- package/miaoda/lark-apps-ops/references/lark-apps-user-id-convert.md +63 -0
- package/miaoda/lark-design-prototype/DESIGN.md +603 -0
- package/miaoda/lark-design-prototype/SKILL.md +85 -0
- package/miaoda/lark-design-prototype/references/assets/card-illustration-library.md +113 -0
- package/miaoda/lark-design-prototype/references/case-matching.md +53 -0
- package/miaoda/lark-design-prototype/references/cases/conversational-ai-home.md +27 -0
- package/miaoda/lark-design-prototype/references/cases/data-table.md +30 -0
- package/miaoda/lark-design-prototype/references/cases/official-home.md +26 -0
- package/miaoda/lark-design-prototype/references/cases/workspace-home.md +34 -0
- package/miaoda/lark-design-prototype/references/color-roles.md +163 -0
- package/miaoda/lark-design-prototype/references/component-selection.md +134 -0
- package/miaoda/lark-design-prototype/references/design-quality-checklist.md +156 -0
- package/miaoda/lark-design-prototype/references/form-shell-patterns.md +77 -0
- package/miaoda/lark-design-prototype/references/icon-semantics.md +237 -0
- package/miaoda/lark-design-prototype/references/layout-interaction.md +164 -0
- package/miaoda/lark-design-prototype/references/page-contract.md +281 -0
- package/miaoda/lark-design-prototype/references/product-patterns.md +93 -0
- package/miaoda/lark-design-prototype/references/prompt-expansion.md +107 -0
- package/miaoda/lark-design-prototype/references/restoration-traps.md +113 -0
- package/miaoda/lark-design-prototype/references/token-semantics.md +112 -0
- package/miaoda/lark-design-prototype/references/visual-brief.md +125 -0
- package/miaoda/lark-design-prototype/references/visual-style-prompts.md +61 -0
- package/miaoda/lark-design-prototype/scripts/icon-query.mjs +272 -0
- package/miaoda/lark-design-prototype/scripts/token-query.mjs +76 -0
- package/miaoda/lark-design-prototype/scripts/verify-static-html.mjs +117 -0
- package/miaoda/miaoda-sql/SKILL.md +9 -0
- package/miaoda/semantic-search/SKILL.md +6 -4
- package/miaoda/table-skill/SKILL.md +2 -0
- package/miaoda/testing-guide/SKILL.md +109 -13
- package/miaoda-design/lark-apps-comment/SKILL.md +44 -35
- package/miaoda-modern/charts-skill/SKILL.md +1 -1
- package/miaoda-modern/forms-skill/SKILL.md +33 -3
- package/miaoda-modern/lark-apps-ops/SKILL.md +7 -5
- package/miaoda-modern/lark-apps-ops/references/lark-apps-access-scope-get.md +1 -1
- package/miaoda-modern/lark-apps-ops/references/lark-apps-local-dev.md +3 -2
- package/miaoda-modern/lark-apps-ops/references/lark-apps-mcp.md +26 -0
- package/miaoda-modern/lark-apps-ops/references/lark-apps-release-create.md +1 -1
- package/miaoda-modern/lark-apps-ops/references/lark-apps-user-id-convert.md +63 -0
- package/miaoda-modern/lark-design-prototype/DESIGN.md +603 -0
- package/miaoda-modern/lark-design-prototype/SKILL.md +85 -0
- package/miaoda-modern/lark-design-prototype/references/assets/card-illustration-library.md +113 -0
- package/miaoda-modern/lark-design-prototype/references/case-matching.md +53 -0
- package/miaoda-modern/lark-design-prototype/references/cases/conversational-ai-home.md +27 -0
- package/miaoda-modern/lark-design-prototype/references/cases/data-table.md +30 -0
- package/miaoda-modern/lark-design-prototype/references/cases/official-home.md +26 -0
- package/miaoda-modern/lark-design-prototype/references/cases/workspace-home.md +34 -0
- package/miaoda-modern/lark-design-prototype/references/color-roles.md +163 -0
- package/miaoda-modern/lark-design-prototype/references/component-selection.md +134 -0
- package/miaoda-modern/lark-design-prototype/references/design-quality-checklist.md +156 -0
- package/miaoda-modern/lark-design-prototype/references/form-shell-patterns.md +77 -0
- package/miaoda-modern/lark-design-prototype/references/icon-semantics.md +237 -0
- package/miaoda-modern/lark-design-prototype/references/layout-interaction.md +164 -0
- package/miaoda-modern/lark-design-prototype/references/page-contract.md +281 -0
- package/miaoda-modern/lark-design-prototype/references/product-patterns.md +93 -0
- package/miaoda-modern/lark-design-prototype/references/prompt-expansion.md +107 -0
- package/miaoda-modern/lark-design-prototype/references/restoration-traps.md +113 -0
- package/miaoda-modern/lark-design-prototype/references/token-semantics.md +112 -0
- package/miaoda-modern/lark-design-prototype/references/visual-brief.md +125 -0
- package/miaoda-modern/lark-design-prototype/references/visual-style-prompts.md +61 -0
- package/miaoda-modern/lark-design-prototype/scripts/icon-query.mjs +272 -0
- package/miaoda-modern/lark-design-prototype/scripts/token-query.mjs +76 -0
- package/miaoda-modern/lark-design-prototype/scripts/verify-static-html.mjs +117 -0
- package/miaoda-modern/reviewer-usage/SKILL.md +2 -0
- package/package.json +1 -1
- package/shared/attachment/SKILL.md +5 -1
- package/shared/lark-cli/SKILL.md +4 -4
- package/shared/lark-cli/lark-doc/references/lark-doc-fetch.md +3 -3
- package/shared/lark-cli/lark-drive/README.md +36 -7
- package/shared/lark-cli/lark-drive/references/lark-drive-batch-query-comments.md +44 -0
- package/shared/lark-cli/lark-drive/references/lark-drive-list-replies.md +49 -0
- package/shared/lark-cli/lark-im/README.md +0 -14
- package/shared/lark-cli/lark-sheets/README.md +5 -4
- package/shared/lark-cli/lark-sheets/references/lark-sheets-read-data.md +73 -3
- package/shared/lark-cli/lark-sheets/scripts/lark_detect_subtables.py +593 -0
- package/shared/lark-cli/lark-sheets/scripts/lark_inspect_workbook.py +188 -0
- package/shared/lark-cli/lark-sheets/scripts/lark_profile_table.py +614 -0
- package/shared/lark-cli/lark-sheets/scripts/lark_sheet_range.py +176 -0
- package/shared/lark-cli/lark-sheets/scripts/lark_sheet_read_cli.py +184 -0
- package/shared/lark-cli/lark-sheets/scripts/sheets_df.py +21 -3
- package/shared/lark-cli/lark-slides/README.md +16 -15
- package/shared/lark-cli/lark-slides/references/lark-slides-history.md +32 -20
- package/shared/lark-cli/lark-slides/references/lark-slides-xml-presentation-slide-get.md +2 -2
- package/shared/lark-cli/lark-whiteboard/README.md +1 -2
- package/shared/lark-cli/lark-wiki/references/lark-wiki-node-get.md +11 -0
- package/shared/lark-cli/lark-wiki/references/lark-wiki-node-list.md +1 -1
- package/miaoda-modern/testing-guide/SKILL.md +0 -218
- package/shared/dev-channel-probe/SKILL.md +0 -40
|
@@ -47,6 +47,8 @@ SELECT * FROM rds_ai.list_model();
|
|
|
47
47
|
|
|
48
48
|
按业务需求选定模型,取其 `model_name` 作为第二个参数。
|
|
49
49
|
|
|
50
|
+
⚠️ **模型可用性由租户管理后台管控。** `list_model()` 返回的是平台预置清单;管理员下架或停用其中某个模型后,平台自动在其余可用预置模型中选择,业务 SQL 无需改动。因此除非用户明确要求锁定模型,否则不传 `model_name`;锁定的模型被停用时,加工结果可能出现风格波动。预置模型全部不可用时调用直接失败,处置见「关键注意事项」。
|
|
51
|
+
|
|
50
52
|
## 实现步骤
|
|
51
53
|
|
|
52
54
|
以下 SQL 使用 `tickets` / `priority` 作为示例。Agent 生成实际方案时,必须替换成用户应用里的真实表名、字段名、主键和 `task_kind`。
|
|
@@ -378,10 +380,11 @@ LIMIT 20;
|
|
|
378
380
|
| ❌ 业务事务路径(同步 trigger / 大批量 UPDATE)里直接调 `rds_ai.ai_query` | HTTP 调用会因网络抖动、限流、超时、模型异常抛错,阻塞业务写入、占锁并产生大额模型调用 | trigger 只入队,模型调用统一由 `ai_run_pending_jobs()` 的 EXCEPTION 块兜住;批量场景先小样本验证,再经 `ai_job` 分批处理 |
|
|
379
381
|
| ❌ 422 / `quota_exceeded` 报错后继续重试 | 当前应用 AI 调用额度已用完,重试只会继续报错 | 任务直接置 `failed`、停止入队,续费后批量重跑;提示用户「AI 调用额度已耗尽,请联系应用 Owner 在控制台续费或升级套餐后再试」 |
|
|
380
382
|
| ❌ 429 / `rate_limit_exceeded` 报错后原速重跑 | 调用过于密集触发限流 | 保持重试 + 指数退避;调小 `ai_run_pending_jobs` 单次批量、放慢 worker 节奏;提示用户「AI 调用过于频繁触发了限流,已自动放慢节奏,稍后会继续跑完」 |
|
|
383
|
+
| ❌ 500 / `model_unavailable` 报错后继续重试或继续入队 | 租户预置模型已被全部下架或停用,平台无模型可选,重试不会恢复 | 任务置 `failed` 并停止入队;提示用户「当前租户无可用 AI 模型,请联系租户管理员恢复后再试」;模型恢复后重跑失败任务即可 |
|
|
381
384
|
| ❌ prompt 不约束输出格式 | 解释性文本会作为脏值写回业务表 | 分类任务写清枚举值并在 SQL 函数里校验结果;JSON 抽取写清 JSON schema |
|
|
382
385
|
| ❌ trigger 只靠 `UPDATE OF <col>` 判断变化 | 无关更新会重复入队、重复消耗 | 函数里再用 `IS NOT DISTINCT FROM` 判断源字段变化 |
|
|
383
386
|
|
|
384
|
-
`rds_ai.ai_query` 抛错时,PG 错误信息通常带 HTTP
|
|
387
|
+
`rds_ai.ai_query` 抛错时,PG 错误信息通常带 HTTP 状态码(422 / 429 / 500)或 `quota_exceeded` / `rate_limit_exceeded` / `model_unavailable` 关键字;失败任务停在 `ai_job` 表,错误码可从 `error_message` 字段读出供 UI 展示和告警归类。
|
|
385
388
|
|
|
386
389
|
**禁止**的写法(会阻塞业务写入事务):
|
|
387
390
|
|
|
@@ -5,7 +5,7 @@ description: "shadcn/ui + ReactECharts 图表开发规范。Use when creating or
|
|
|
5
5
|
|
|
6
6
|
## L0 基础配置
|
|
7
7
|
|
|
8
|
-
- **库**: `import ReactECharts from 'echarts-for-react'` (
|
|
8
|
+
- **库**: `import ReactECharts from 'echarts-for-react'` (echarts v6.1.x)
|
|
9
9
|
- **主题**: `theme="ud"`
|
|
10
10
|
- **颜色**: 🚨 只能用 hex(如 `#1890ff`),禁止 hsl/rgb
|
|
11
11
|
- **高度**: ≥300px (`className='h-[300px]'`)
|
|
@@ -6,152 +6,252 @@ workspace-contains:
|
|
|
6
6
|
- source_package/creative/.upgrade-manifest.json
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
`source_package/creative/`
|
|
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
|
-
2.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
- 2.
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
- 2.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
- 2.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
9
|
+
# 把创意设计稿实现为全栈应用
|
|
10
|
+
|
|
11
|
+
`source_package/creative/` 是创意模式设计稿,是本次开发的唯一视觉规格。交付标准:
|
|
12
|
+
|
|
13
|
+
1. **视觉与源稿一致**:每个页面的文案、数值、色值、条目与顺序与设计稿逐字段一致。
|
|
14
|
+
2. **可见功能真实可用**:设计稿上每个可交互组件(可点、可输入、可筛选)都产生真实、闭环的结果。
|
|
15
|
+
3. **数据动态可变**:会随业务数据而变的内容一律由业务事实现场算出——禁止前端写死常量、接口返回字面量、库内预置统计字段或独立统计快照。业务事实变化后,所有相关页面重新查询都得到一致的新结果;算出的值与源稿数字不一致是预期结果,只对齐单位与格式。
|
|
16
|
+
|
|
17
|
+
两条核心规则:**一切视觉内容直接从源稿代码照抄,不经过任何文字转述**;**动手实现前先完成业务设计并写入 `docs/business-design.md`,后续每个阶段以该文件为执行依据**。
|
|
18
|
+
|
|
19
|
+
### 第 1 步:通读源稿
|
|
20
|
+
|
|
21
|
+
读取 `source_package/creative/` 下全部页面源文件(index.html、pages/、components/ 等)。该目录只读,是实现期间反复对照的唯一视觉权威;工程代码不得引用它,也不要修改它。
|
|
22
|
+
|
|
23
|
+
### 第 2 步:业务设计(主 Agent 的核心职责)
|
|
24
|
+
|
|
25
|
+
从源稿可见信息推断应用的业务模型。完成以下四项设计并通过门禁,**写入工程文件 `docs/business-design.md`**,作为第 3/4/5 步的执行依据:
|
|
26
|
+
|
|
27
|
+
**2.1 业务域划分**。按「业务模块闭环拆解规则」(见下方规则章节)从源稿划分业务域,产出各域的名称、覆盖的源稿页面与功能、服务端模块归属。候选业务域包含多个可独立闭环的子业务,或预计单个 Worker 难以一次完整实现时,继续拆为更小的业务域;每个子域仍包含完整的前后端闭环。
|
|
28
|
+
|
|
29
|
+
同时单列「全局 Layout 与跨页面公共组件」清单:登记导航、侧栏、页眉、页脚等全局框架,以及被两个以上页面共同使用或重复出现的组件,并记录源稿文件和使用页面。该清单是共享视觉资产,不是业务域,不纳入任何域任务,在公共视觉层统一实现。
|
|
30
|
+
|
|
31
|
+
**2.2 数据模型**。以 2.1 划定的业务域为单位,先设计合理的业务数据模型,再单独规划初始数据。表结构设计不承担视觉内容分流职责,不得为了复刻某个页面或某组展示值而增删实体和字段。
|
|
32
|
+
|
|
33
|
+
1. **设计表结构**:从业务对象、行为和生命周期识别实体,产出表名、业务含义、字段(含类型与语义)、主键与业务唯一键、表间关系及基数、状态与时间字段、必要约束。按以下不变量建模:
|
|
34
|
+
- 一个实体具有可解释的业务身份或生命周期;页面、卡片、图表不是实体边界,禁止按页面或展示区块机械建表;
|
|
35
|
+
- 字段保存原子业务事实,关系通过稳定标识表达;多值关系、历史记录和状态流转按其业务语义建关系表或历史表,不用展示字符串代替关联;
|
|
36
|
+
- 对业务唯一性、引用完整性、必填、合法枚举、数值范围和不允许重复的关系设置相应约束;索引服务于 2.3 的查询、筛选、排序和关联;
|
|
37
|
+
- 表结构与 2.3 相互校验:每个持久化写操作有承载实体,每个查询条件有明确事实字段,需持久化的插件结果归属到对应业务实体;平台内置服务已管理的数据不重复建表;
|
|
38
|
+
- **派生数据不作为独立真源**:会随业务事实变化的统计值、汇总值、进度、余额、排名、趋势和状态概览,不设冗余字段,不为展示单独建立统计或快照记录,由 2.3 的接口基于事实现场计算。同一业务概念跨页面复用同一事实来源和计算口径;
|
|
39
|
+
- 只有当汇总或快照本身具有独立业务身份、生命周期,并且 2.3 定义了它的真实生成、更新和消费链路时,才作为业务实体建模;“页面需要展示”不构成建表理由。
|
|
40
|
+
|
|
41
|
+
2. **确定建表顺序**:存在引用关系的表,被引用的表先建;该顺序只服务于后续建表和初始数据写入,不改变实体边界。
|
|
42
|
+
|
|
43
|
+
3. **规划初始数据**:表结构确定后,再为需要种子数据的表标注源稿中的业务事实记录位置和字段映射。该部分与表结构分开书写:
|
|
44
|
+
- 只标注源稿文件、区块和字段到表字段的映射;同一实体散落在多个页面时列全位置并按稳定业务标识合并;
|
|
45
|
+
- 源稿展示格式与存储类型不同时,写明格式解析和单位、枚举、时间的转换规则;初始数据写入严格按该规则执行,不自行改变语义;
|
|
46
|
+
- 只使用源稿明确给出的业务事实,不补充源稿没有的字段值、记录或关系;源稿只有汇总数字而没有对应事实时,不将汇总数字作为初始数据,也不编造明细凑数;
|
|
47
|
+
- `docs/business-design.md` 只写来源位置和映射规则,**禁止写实际初始值、示例记录或数据摘要**;实际值由负责初始数据写入的 CodeAct 重新读取源稿后写入。
|
|
48
|
+
|
|
49
|
+
**2.3 可见功能业务模型与 API 设计**。按 2.1 的业务域逐域进行,为每个域产出核心功能清单与接口设计。
|
|
50
|
+
|
|
51
|
+
对每个业务域依次完成:
|
|
52
|
+
|
|
53
|
+
1. **识别核心功能**。以源稿的可点控件为识别依据:每个可点控件必须归入一条核心功能,功能内容取该控件的预期结果。识别前先读 `.agent/skills/creative-to-fullstack/references/ui-to-function.md`,按其中「UI→功能映射表」与「UI→capability 常见信号示例」对照组件类型与功能信号。
|
|
54
|
+
|
|
55
|
+
**按功能族登记,不做逐控件矩阵**:触发语义、输入、结果和状态变化相同,仅作用对象不同的重复控件合并为一条功能;不同页面复用同一能力时也只登记一次,并列出覆盖页面。不同结果、不同状态变化或不同目标页面的控件不得因文案相近而合并。源稿未展示也未暗示的功能不补造。
|
|
56
|
+
|
|
57
|
+
每条功能记录为:「功能名称 + 覆盖页面 + 触发方式与输入 + 用户可见结果 + 状态变化或目标页面」。操作结果需要跳转到另一个页面时一并写明目标页面,目标页面不在源稿里时标注为新增页面,在共享结构骨架中补齐路由与页面壳。业务设计只写功能族;逐个控件的覆盖关系在 2.5 通过源稿反查校验,只有漏项才展开记录。
|
|
58
|
+
|
|
59
|
+
**源稿未画出点击后的页面不构成豁免**:该控件仍识别为核心功能,目标页面按新增页面登记。可点控件是否构成核心功能存疑时,按构成处理。
|
|
60
|
+
|
|
61
|
+
2. **能力选型**。对每条核心功能按以下顺序判定实现方式:
|
|
62
|
+
- 预期结果仅为同一页面内的呈现变化,不涉及库内数据与外部能力 → 随页面视觉还原实现,不设接口,不进第 3 条;
|
|
63
|
+
- 平台内置服务(用户、文件、权限、消息、自动化/定时)可满足 → 直接使用,标注「使用平台内置服务:[服务名]」,禁止自建同等能力;
|
|
64
|
+
- 功能涉及 AI、智能、自动生成、大模型、文本生成、图片生成、飞书、消息通知、群组、机器人等能力 → 判定为插件能力,登记进 2.4 做插件设计;普通前后端能可靠实现的不硬凑插件;
|
|
65
|
+
- 以上都不满足 → 自建服务端 API,进入第 3 条。
|
|
66
|
+
|
|
67
|
+
判定时对照源稿补漏,两种都登记进 2.4:以假逻辑模拟、未以可交互组件呈现的(定时提醒、自动通知);把智能产出画成已完成结果的(已生成的摘要、已提取的条目、带 AI 标记的内容块)。判据是这段内容真实使用中由谁产生——由模型产生就不能当初始数据誊写入库。
|
|
68
|
+
|
|
69
|
+
3. **API 设计**。为自建 API 的功能设计接口:
|
|
70
|
+
- 同一数据实体的操作合并设计:列表查询一个接口,入参覆盖该页全部筛选维度、搜索关键词与分页参数;新建、更新、删除、详情各一个接口;
|
|
71
|
+
- 随业务数据而变的出参必须在接口条目内就地写明「事实来源 + 计算/筛选口径 + 哪类事实写入会使它变化」;共用同一口径的多个出参可合并说明,不另建全量数据血缘矩阵;
|
|
72
|
+
- 派生出参只能从事实表或真实外部能力结果计算,禁止读取为展示而单独预置的统计/快照记录;事实写入成功后,相关查询不得依赖人工同步第二套数据;
|
|
73
|
+
- 每个接口写明:方法与路径、入参与出参、读写的表、支撑的功能;字段类型、业务语义和必要的格式转换与 2.2 保持一致,不另起一套。
|
|
74
|
+
|
|
75
|
+
本节产出是第 4 步各域任务服务端子步骤的实现范围(域任务的 Service/Controller 按 API 清单逐接口实现),也是第 5 步验收目标的选取来源。
|
|
76
|
+
|
|
77
|
+
**2.4 插件设计(条件步骤,仅当 2.3 判定出插件能力时执行)**。先读取 `plugin-guide` skill 了解插件目录与调用规范,然后对 2.3 登记的插件需求逐项设计。
|
|
78
|
+
|
|
79
|
+
设计原则:
|
|
80
|
+
|
|
81
|
+
- **原子化拆分**:一个插件实例只做一件事——不同输出类型(文本/图片/消息)建独立实例,不同业务语义(如标题与正文)建独立实例;
|
|
82
|
+
- **链路完整性**:从用户输入到展示/落库,每一步都有对应插件——链式场景如文档解析→结构化提取需要两个插件;
|
|
83
|
+
- **调用方式选择**:默认前端 capabilityClient 直接调用;以下情形改为服务端调用并说明原因:调用前需验证权限、需记录调用日志、结果需先落库、定时任务或 Webhook 无前端上下文、需聚合多个插件结果。
|
|
84
|
+
|
|
85
|
+
输出格式,每个插件一行:
|
|
86
|
+
|
|
87
|
+
| 插件名称 | 基础插件 | 用途 | 调用方式 | 关联页面/接口 | 输入参数 | 输出类型 |
|
|
88
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
89
|
+
|
|
90
|
+
**2.5 业务设计门禁(主 Agent,进入第 3 步前执行)**。门禁只检查通用不变量,不要求输出逐控件矩阵或全量血缘表。逐条检查并在 `docs/business-design.md` 末尾记录五项结论;通过项只写一句依据,失败项列出具体漏项并修正设计,全部通过前禁止建表或派发实现:
|
|
91
|
+
|
|
92
|
+
1. **交互覆盖**:从全部源稿页面反查 `button`、链接、表单、筛选、Tab、行操作和其他可点外观,每个都能归入 2.3 的某个功能族;重复实例只核对是否复用同一行为,不逐项写入设计文档。不存在因“目标页没画”“接口还没有”而取消的可见功能。
|
|
93
|
+
2. **闭环成立**:每个功能族都有明确输入、用户可见结果、状态变化或目标页面;写操作包含真实写入、反馈和重新读取,失败时有可理解、可恢复的反馈。
|
|
94
|
+
3. **模型合理**:每张表都能说明对应业务实体及生命周期;主键、业务唯一键、关系基数、引用完整性、状态和必要约束齐全,不按页面或展示区块机械建表,不用展示字符串代替实体关系。
|
|
95
|
+
4. **数据可推导**:每个动态出参都在所属接口内写清事实来源、口径和变化触发;不存在仅为页面展示而保存的派生字段、统计表或快照记录,不存在为凑源稿数字而编造的业务事实。
|
|
96
|
+
5. **单一真源**:同一业务概念跨页面、接口和状态流转使用同一事实来源与口径;不存在需要人工双写、定时补齐或前端自行修正才能一致的第二套数据。
|
|
97
|
+
|
|
98
|
+
`docs/business-design.md` 写完后,用 TodoWrite 建执行清单,条目至少覆盖:每个基建项、每个业务域实现任务、**验收任务**(此刻即加入清单)。
|
|
99
|
+
|
|
100
|
+
### 第 3 步:基建
|
|
101
|
+
|
|
102
|
+
共享结构骨架完成后,主 Agent 完成建表并生成 schema,再同批并发派发三项:公共视觉层 Worker、初始数据 CodeAct、插件实例 Worker(2.4 有产出时)。三项全部完成后,派发所有无数据依赖的业务域 Worker 并发开发,验收前必须全部完成。
|
|
103
|
+
|
|
104
|
+
**3.1 共享结构骨架(主 Agent)**。先读取 coding-guide skill 了解项目规范,再依据 `docs/business-design.md` 基于现有工程一次性补齐后续任务共同依赖的最小结构:
|
|
105
|
+
|
|
106
|
+
- 确定页面、业务域及 2.1 共享视觉资产的代码目录归属;为每个源稿页面和 2.3 记录的新增页面补齐语义化路由,复用已有页面壳,只为缺失页面创建最小可渲染页面壳;
|
|
107
|
+
- 配置默认页,以及包含页面内容容器和路由出口的 Layout 骨架;
|
|
108
|
+
- 按 2.2 和 2.3 定义 shared 实体类型及 API 请求/响应契约;
|
|
109
|
+
- 按 2.1 为每个业务域注册空 Module、Service 和 Controller 骨架。
|
|
110
|
+
|
|
111
|
+
完成后确认工程可编译,且每个页面都有路由和目录归属、每项共享视觉资产都有目标目录、每个业务域都有模块边界与 shared 契约。
|
|
112
|
+
|
|
113
|
+
**3.2 建表(主 Agent)**。确认 2.5 五项门禁全部通过后,按 `docs/business-design.md` 2.2 确定的建表顺序逐张建表,被引用的表先建。表结构取自 2.2 设计,不涉及源稿内容誊写。只建真实业务实体和关系表;仅服务于页面展示的派生字段、统计表、排行表、趋势表或快照表不得创建,除非 2.2 已证明它本身是具有真实生成和更新链路的业务实体。建完后跑数据库 schema 代码生成刷新 `server/database/schema.ts`,后续 CodeAct 与业务域 Worker 均以该文件中的真实列名和类型为准。
|
|
114
|
+
|
|
115
|
+
**3.3 全局 Layout 与跨页面公共组件(派发 Worker)**。按共享视觉资产清单读取对应源稿,写入共享结构骨架确定的目标目录,只实现全局视觉框架和跨页面复用的展示组件:
|
|
116
|
+
|
|
117
|
+
- 在 Layout 骨架上实现并装配导航、侧栏、页眉、页脚等全局框架,对齐源稿的结构、固定文案、色值、字体、间距和内容区域约束;导航目标只使用已注册路由;
|
|
118
|
+
- 每个跨页面公共组件只实现一份。固定文案、图标和视觉结构照源稿实现;业务实体、状态和动态值改为由 props 传入,业务操作通过事件回调暴露,不在公共组件内调用业务 API、插件或维护领域状态;
|
|
119
|
+
- 页面专属组件和页面内容不在本步实现,由所属业务域任务完成。
|
|
120
|
+
|
|
121
|
+
完成后确认全局 Layout 已实际挂载、所有路由页面使用同一套全局框架、公共组件可被域任务直接引用且工程可编译;只创建组件文件但未接入应用不算完成。
|
|
122
|
+
|
|
123
|
+
**3.4 初始数据插入(**必须**派 `CodeAct` 执行)**。数据内容**必须**由读到源稿原文的执行者当场写入,读源与写库之间不经过任何交接——**通读阶段读过源稿不算**,隔了若干轮之后凭记忆写出的记录必然是编造的。
|
|
124
|
+
|
|
125
|
+
派发对象:`CodeAct`——它同时具备读文件与执行 SQL 的能力,读完源稿即可落库,报错时源稿仍在上下文中可直接改正。
|
|
126
|
+
|
|
127
|
+
**派发内容**:本次负责的表清单、每张表在 2.2 的源稿位置标注、建表顺序、`server/database/schema.ts` 的路径。
|
|
128
|
+
|
|
129
|
+
**任务要求**:
|
|
130
|
+
|
|
131
|
+
- 按标注打开源稿文件、定位到该区块后再写;区块落在文件后段时读到该区块为止,禁止只凭文件开头写数据;
|
|
132
|
+
- 列名与类型照 `server/database/schema.ts`;`_` 前缀的系统字段与主键不写,由数据库默认值生成;
|
|
133
|
+
- 字段值来自读到的源稿业务事实,**这是映射不是创作**:除 2.2 初始数据规划明确声明的格式与类型转换外,不改写语义、不增删记录、不补充源稿没有的字段值或关系;
|
|
134
|
+
- 只写具有独立业务身份、能参与查询或状态变化的源稿事实记录;KPI、汇总、趋势、占比、排名、进度、余额等派生展示值不作为初始记录写入,源稿事实不足时不得编造明细使其对上;
|
|
135
|
+
- 素材字段写本应用内取得到的地址:源稿的引用指向源应用运行时存储,本应用取不到时,生成替代图后写它的地址;
|
|
136
|
+
- 2.2 初始数据规划标注的业务事实记录全部写入,一条不漏;同一实体在多个页面出现时按稳定业务标识去重并合并已明确的事实字段,不重复插入;
|
|
137
|
+
- 子表外键用 `SELECT` 子查询按业务键(标题、名称等)关联父行,禁止硬编码 UUID。
|
|
138
|
+
|
|
139
|
+
达标标准:2.2 初始数据规划中的每条业务事实均按映射写入,表间关系正确,首次查询可返回且业务语义与源稿一致。禁止把初始数据做成运行时 mock 接口或前端写死;页面视觉是否完整由页面实现与验收单独检查。
|
|
140
|
+
|
|
141
|
+
**3.5 插件实例(条件步骤,2.4 有产出时执行;派发 Worker)**。整份 2.4 清单交给一个 Worker 建实例并确认契约,调用代码由所属业务域任务实现:
|
|
142
|
+
|
|
143
|
+
1. 调用 `plugin_instance` 工具创建插件实例,彼此无依赖的实例在同一批次并发创建,只有输出需作为下一实例入参的链式实例才顺序建;禁止手工修改 `server/capabilities/` 目录;
|
|
144
|
+
2. 获取运行时 schema,逐字段确认 inputSchema 与 outputSchema 的字段名、类型、是否必填;
|
|
145
|
+
3. 回传每个实例的实例名与 schema 摘要(字段名、类型、必填)。主 Agent 把摘要写进该插件所属域的派发指令,供域任务按 schema 编写调用代码。
|
|
146
|
+
|
|
147
|
+
规则:
|
|
148
|
+
|
|
149
|
+
- 禁止只创建实例而不在域任务中安排调用代码——未生成调用代码的插件实例是无效的;
|
|
150
|
+
- 域任务编写调用代码时,入参出参的字段名与类型以运行时 schema 为准,禁止从设计文档推测(设计可能与插件实际 schema 不一致);入参中的动态配置值(接收人、通知模板、阈值等)禁止硬编码,从配置表或平台 API 获取;
|
|
151
|
+
- 插件结果需要持久化时,优先在该域 Service 内调用插件并在同一方法内落库;保持前端调用的,成功后通过已有业务 CRUD 接口保存结果,不为此单独新建 API;
|
|
152
|
+
- 后续任一阶段发现缺插件实例,主 Agent 立即用 `plugin_instance` 工具补建,禁止用 pluginKey 冒充 instanceId 调用或跳过该功能。
|
|
153
|
+
|
|
154
|
+
### 第 4 步:按业务域派发实现(Worker)
|
|
155
|
+
|
|
156
|
+
确认全局 Layout、跨页面公共组件、初始数据和所需插件实例全部完成后,按「业务模块闭环拆解规则」把每个业务域派发为一个 Worker 任务。派发前重读 `docs/business-design.md`,按其中的业务域划分逐域生成任务。
|
|
157
|
+
|
|
158
|
+
**核心原则**
|
|
159
|
+
|
|
160
|
+
- 任务范围是该域的前后端完整实现:Service、Controller、页面内容、页面专属组件与接口集成都在同一个任务内;共享结构骨架、全局 Layout 与跨页面公共组件不在域任务中重复实现;
|
|
161
|
+
- 服务端代码不得摘出来由主 Agent 代写——Worker 跑不了接口测试与运行时日志是预期的,运行时验证统一在第 5 步做;
|
|
162
|
+
- **派发指令不写源稿的具体内容**: 避免实现时没有按照原稿而是按照指令开发。
|
|
163
|
+
|
|
164
|
+
**每个任务必须携带**:
|
|
165
|
+
|
|
166
|
+
- 权威文件位置:该域相关的源稿文件、`docs/business-design.md`、该域的 shared 契约文件与既定路由文件——只给路径,禁止用文字概述替代源文件,由 Worker 自行读取;
|
|
167
|
+
- 双权威声明:视觉结构、固定文案、布局与呈现格式以源稿源码为唯一权威;业务数据以真实接口返回为准;表结构、API、插件调用以 `docs/business-design.md` 该域章节为准;
|
|
168
|
+
- 全局 Layout 与公共组件位置:全局框架已统一接入,域任务只填充页面内容;公共组件直接 import,**禁止在页面内重新实现同名组件**;清单之外且只属于本域的组件才在页面内实现;
|
|
169
|
+
- 一句话验收标准(acceptance),落在真实能力层(如「提交后经真实接口落库且刷新后可回查」),达标即完成,禁止超出标准的冗余自查;
|
|
170
|
+
- 只写任务目标、源稿位置、验收标准,源稿的具体内容由 Worker 按位置自己读;
|
|
171
|
+
- 让 Worker 在开工前感知到「任务内执行顺序」以及「视觉一致性」「功能真实性」两节规则。
|
|
172
|
+
|
|
173
|
+
**任务内执行顺序**
|
|
174
|
+
|
|
175
|
+
1. 读取 coding-guide 及与本域相关的 skill;
|
|
176
|
+
2. 读源稿该域文件,读 `docs/business-design.md` 该域章节(功能清单、表结构、API 清单);
|
|
177
|
+
3. 检查 shared 契约与该域表结构、接口设计一致;按既定目录结构落文件,不另建与之平行的目录;
|
|
178
|
+
4. Service 层:业务编排、落库、插件调用聚合、内置服务调用;服务端调用的插件逐条写明「调用 [实例名],触发条件为 [条件]」;
|
|
179
|
+
5. Controller 层:REST API,按该域 API 清单逐接口实现,避免纯透传接口;
|
|
180
|
+
6. 在已注册路由与页面壳内实现页面,不重新配置全局路由或 Layout;
|
|
181
|
+
7. 页面与组件实现:打开源稿对应区段对照实现,固定文案、色值、条目结构与顺序照源码转写;业务实体、状态和动态值来自本域真实接口,禁止 mock 业务数据;复用公共组件,只在本域实现页面专属组件,组件不拆出独立任务;
|
|
182
|
+
8. 可点元素处置:落在 2.3 功能清单里的全部接上行为。发现清单外的可点元素说明 2.5 门禁漏项,**不得自行去掉交互、补造接口或把它静默留空**;写入 `docs/design-gaps/[域名].md`(文案、页面、预期行为、需要补齐的设计项)并回报主 Agent。主 Agent 更新 2.2/2.3、路由与契约后重新派发;只有源稿本身明确为纯装饰、且不存在可点语义的元素才可保持非交互。该文件是本任务交付物,无则写「无」;
|
|
183
|
+
9. 前端插件集成(2.4 设计为前端调用的插件):获取插件运行时 schema,按 schema 调用 [实例名],字段名与类型以运行时 schema 为准、不从设计文档推测;结果需持久化的,调用成功后通过已有业务接口保存;
|
|
184
|
+
10. 代码级自查:类型一致性、契约覆盖、shared 定义对齐。禁止运行时验证——接口冒烟、起服务联调、读运行时日志、E2E 一概不做,统一在第 5 步由主 Agent 执行。
|
|
185
|
+
|
|
186
|
+
指令里给出的文件路径是**必读下限,不是可读上限**:实现中需要的其他工程文件(既有组件、工具函数、全局配置、路由表)一律按需自行读取。禁止的是重新推导架构:不重新规划目录与路由结构,不反复 glob 全工程。
|
|
187
|
+
|
|
188
|
+
Worker 回传后,主 Agent 至少读一个关键产物文件抽查(页面是否调真实 API、功能链路是否接通);回传中的「已完成、已验证」不作为核验依据。
|
|
189
|
+
|
|
190
|
+
`docs/design-gaps/[域名].md` 非空说明 2.3 或 2.5 漏了元素,主 Agent 逐条补齐功能、接口、页面、表或插件设计后重新派发;禁止把源稿可见功能以“无法实现”或“无目标页”为由降级掉。
|
|
191
|
+
|
|
192
|
+
**自动化任务**:2.3 中选型为平台自动化内置服务的功能(定时触发、数据变更触发),作为独立任务实现,依赖其用到的表与插件:
|
|
193
|
+
|
|
194
|
+
1. 读取 trigger-guide skill 了解触发器配置与代码开发规范;
|
|
195
|
+
2. 创建触发器,实现任务逻辑:触发条件判断、去重、插件调用、状态更新;
|
|
196
|
+
3. 完成后验证代码可编译。
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
### 第 5 步:验收(清单里的任务,不是可选动作)
|
|
200
|
+
|
|
201
|
+
commit 的静态检查只覆盖编译与 lint,证明不了功能可用与视觉一致。验收开始前先读取 testing-guide skill 了解 E2E 验收流程,并重读 `docs/business-design.md`,以其中的 2.3 功能与 API 清单为验收目标来源。按以下结构执行,完成前不得提交收尾:
|
|
202
|
+
|
|
203
|
+
1. **架构与入口检查**:检查路由、页面归属、shared 契约和模块边界,再对照源稿检查全局 Layout 是否挂载以及导航项数、文案、顺序、主题色值和内容区域约束,发现偏离先修对应层再继续。再做三项核对:
|
|
204
|
+
- **链接目标可达**:枚举代码中全部跳转目标(导航项、按钮、卡片、搜索、面包屑)与路由表比对,任一指向未注册路由即未通过;
|
|
205
|
+
- **页面均有入口**:每个已注册页面至少有一个应用内可达入口,只能手输 URL 到达的页面即未通过;
|
|
206
|
+
- 应用入口页面可正常打开,打不开(白屏 / Page not found)则停止验收,只记录阻塞问题。
|
|
207
|
+
2. **功能族覆盖验收**:从 2.3 生成验收目标,不设全应用固定数量上限。每个会写数据或改变业务状态的功能族至少实操一次;纯查询类按不同查询机制(搜索、筛选、排序、分页、切换、跳转)各选一个代表实操,行为相同的重复控件不重复测。每个目标写成「验收对象 —— 应用内点击路径 —— 可判定的通过标准」,必须从应用可见入口开始逐步点击,禁止手输内部 URL 代替可达性验证。通过标准必须包含状态更新、刷新回读、列表/详情变化、真实结果或可恢复错误之一;「页面渲染正常」「控件可见」「按钮可点击」不构成通过标准。派发 E2E agent 实际执行。
|
|
208
|
+
3. **业务闭环验收**:每个独立业务域至少选一条包含起点、过程和业务结果的主链路;若多个域共享同一条跨域链路可合并执行。链路中不得从预置中间态开始来替代创建或触发步骤,源稿未画出的新增页面也必须通过应用内入口到达。
|
|
209
|
+
4. **可降级范围**:AI 内容质量、真实消息送达、复杂批量数据一致性、导出文件内容正确性、低风险视觉细节可降级不阻塞;但被降级能力在应用内的触发、状态与错误反馈仍必须纳入对应功能族验收,不得完全消失。
|
|
210
|
+
5. **初始事实核对**:只对 2.2 建模的业务事实表做 COUNT 与文案抽查,与源稿实体记录对照;条数或文案不符即为未通过。逐个打开源稿画了实体数据的列表与区块,看应用里是否真的渲染出行:**库里有行而页面为空即未通过**。KPI、图表、排行、趋势等派生值不与源稿数字做入库对账。
|
|
211
|
+
6. **动态联动核验**:按 2.3 中不同的「事实来源 + 计算口径 + 变化触发」组合各选一个代表,不按页面或组件重复测试。先记录动态输出,通过应用内真实功能写入或变更一条可唯一识别的事实,刷新并重新查询,确认相关输出按口径变化、跨页面结果一致,且无关输出不被错误改动;再核对数据库只新增或修改事实记录,没有人工同步的统计/快照记录。没有任何可执行写入口能触发变化,说明功能或数据模型未闭环,按未通过处理。
|
|
212
|
+
7. **假实现与派生快照 grep**:命中即未通过——simulate、写死结果的 setTimeout、picsum、假 toast、Math.random 业务值。再 grep 成组出现的业务数值字面量和疑似派生/统计持久化字段或表;不能证明其具有独立业务身份及真实生成更新链路的,改为基于事实的实时计算。
|
|
213
|
+
8. **跨应用素材引用 grep**:在工程代码与初始数据里搜 `/spark/app/`,出现的 appid 不是本应用的即未通过——换成本应用内的地址后重跑。再逐页确认图片真的加载出来(`naturalWidth > 0`),加载失败的按未通过处理。
|
|
214
|
+
9. **公共组件边界与唯一性**:grep 组件定义(`function X(`、`const X = (`、`const X: React.FC`),同名组件在两处及以上定义即未通过——合并到公共组件目录、页面改为 import 后重跑。再检查公共组件不得包含业务数据常量、业务 API 或插件调用、领域状态;命中时把业务逻辑移回所属域,公共组件只保留 props 与事件回调。
|
|
215
|
+
10. **假可点对账(门禁,grep 判不了)**:逐页在浏览器里枚举「有可点外观(`button`、`a`、`role=button`、`role=tab`、`cursor:pointer`)但取不到事件绑定或 `href`」的元素,并反查 2.3 功能族与各域 `docs/design-gaps/*.md`。**存在未归属或未接通的元素即未通过**:先补业务设计,再补接口、页面、插件或行为并重跑;禁止仅为通过验收而撤掉源稿已有的交互外观。功能族数量、浏览器发现的交互实例数、未归属数写进对照表,无需输出逐控件矩阵。
|
|
216
|
+
11. **验收对照表**:列出功能族覆盖、业务主链路、动态推导组合及其通过/失败结果,再列出其余门禁结论。未执行的项写明原因,不得笼统声称“验收通过”;任一必要功能族、主链路或动态推导组合未覆盖,均不得判定完整通过。
|
|
217
|
+
12. **摘除注入标记**:以上各项全部通过后执行 `rm -f source_package/creative/.upgrade-manifest.json`。该文件是本指引的 SessionStart 注入门控,删除后本指引停止注入,后续迭代不再重复进入升级流程;源稿其余文件保留供以后对照。任一项未通过时不得删除——下轮修复仍需本指引在场。
|
|
218
|
+
|
|
219
|
+
## 业务模块闭环拆解规则
|
|
220
|
+
|
|
221
|
+
按业务域(Module)拆分实现任务,每个任务同时覆盖该域的服务端实现(Service + Controller + DTO)与对应前端页面(路由 + 页面 + 组件 + 接口集成),命名为 `[业务模块名]模块开发(含前后端)`。**同一业务域的前后端禁止拆成独立任务**。与通用全栈开发的唯一差异:拆解依据是**创意模式的源稿代码**(页面结构与可见交互组件),而非需求文档。
|
|
222
|
+
|
|
223
|
+
1. **模块边界判定**:任务拆分优先服从代码所有权边界,而非仅按页面归属或功能语义拆分。若多个页面、功能最终落在同一个 server module 中实现,必须合并为同一个模块任务,不得拆成多个并行任务。
|
|
224
|
+
2. **server module 判定口径**:同一个 server module 包括但不限于同一业务目录下的 Service、Controller、DTO、Repository、模块注册文件、聚合导出文件,以及需要共同修改的 shared 契约文件。
|
|
225
|
+
3. **纯展示/即时场景**:若某业务功能已规划在前端使用插件实现,且不需要数据库存储,则该模块任务中无需包含服务端 Service/Controller 子步骤,仅保留前端 + 插件集成。
|
|
226
|
+
4. **需持久化场景**:若插件调用的结果需要保存到数据库,优先在该模块的 Service 中调用插件并落库;或在已有业务 CRUD 接口中扩展字段接收前端传来的插件结果。禁止为"保存插件结果"单独新建模块。
|
|
227
|
+
5. **平台内置服务**:模块内需使用的平台内置服务,在该模块的 Service 部分完成配置与调用。
|
|
228
|
+
6. **入口模块优先**:将承载入口页(列表页/首页)的模块任务置于全部模块任务的第一项。
|
|
229
|
+
7. **并行安全**:模块任务内**禁止包含运行时验证**(接口冒烟测试、启动前后端服务联调、读取服务端/前端运行时错误日志、E2E 测试),统一推迟到第 5 步验收阶段。允许保留的验证限定为代码级静态自查(类型一致性、契约覆盖、shared 定义对齐)。
|
|
230
|
+
8. **启动条件**:结构骨架、schema、公共组件、初始数据和所需插件实例全部就绪后才派发模块任务;模块任务之间无数据依赖时全部可并行,禁止链式依赖。
|
|
231
|
+
9. **公共组件不进域任务**:共享视觉资产清单中的全局 Layout 和跨页面公共组件统一实现,域任务只 import 和传入业务数据、事件,不重写视觉结构;发现清单漏项时先补充清单并完成公共组件实现,不在多个域中各写一份。
|
|
232
|
+
10. **超大域拆分**:命中业务域划分中拆分条件的业务域不得作为单一任务,按子域分别派发;无数据依赖的子域按规则 8 并发执行。
|
|
233
|
+
|
|
234
|
+
## 视觉一致性原则
|
|
235
|
+
|
|
236
|
+
- 布局用 flex/grid 加 gap 直接转写源稿结构,不重新设计。
|
|
237
|
+
- **数据模型与视觉承载分开处理**:不得为了复刻页面而反向增删业务实体和字段。固定文案、导航、区块标题、装饰、图标和样式直接按源稿实现;业务实体字段、状态和动态值经真实接口呈现。
|
|
238
|
+
- 页面固定内容、初始业务事实的呈现、条目结构与顺序、色值、字符图标和选中状态与源稿逐项一致;动态值只对齐单位、格式和排布。
|
|
239
|
+
- 动态获取的内容只对齐源稿的呈现形式(单位、格式、排布),值由真实数据决定。
|
|
240
|
+
- 字符图标保持原字符;源稿已有的 SVG、CSS 渐变复用或等价转写。
|
|
241
|
+
- 源稿素材在本应用内取不到时(如图片指向源应用的运行时存储),不照抄原引用——自行生成替代图并使用,同一位置的图只生成一次;生成不了的报回主 Agent,不留坏链。
|
|
242
|
+
- **公共组件只有一份**:共享视觉资产清单中的全局 Layout 和跨页面公共组件只实现一份;域页面直接 import 并传入业务数据和事件,不在页面内复制视觉结构。只属于单个业务域的页面专属组件才就地实现。
|
|
243
|
+
- 写任何产生页面可见内容的代码之前,重新打开源稿对应位置读取。
|
|
244
|
+
- 确有必要的转换(如固定画布改响应式)需说明转换前后形态,且不改变源稿参考尺寸下的构图。
|
|
245
|
+
|
|
246
|
+
## 功能真实性原则
|
|
247
|
+
|
|
248
|
+
- 写操作必须走完「前端事件 → 接口 → 数据库/插件 → 界面反馈」全链路,写入结果刷新后仍能读到。
|
|
249
|
+
- 搜索、筛选、排序、分页的参数必须传入真实查询;跳转、Tab、弹窗到达正确的路由或状态。
|
|
250
|
+
- **链接目标必须存在**:写任何跳转前先读既定路由文件,目标只能是已注册路由;源稿有可见入口但没有承载页面时,必须先按功能设计补齐新增页面与路由,禁止以缺少目标页为由取消功能或指向未注册路由。
|
|
251
|
+
- 持久化业务结果由服务端校验前提并写入,前端只展示重新读取的事实。
|
|
252
|
+
- 有数据库时禁止用 mock 数据代替真实查询;插件返回值严禁 mock,前端用 capabilityClient 真实调用,或调用集成了插件的真实服务端接口。
|
|
253
|
+
- 自建 HTTP API 不实现 SSE/WebSocket;插件链路的流式输出(outputMode=stream)不受此限。
|
|
254
|
+
- **有可点外观就必须有行为**:行为的目标照 2.3 的功能清单与既定路由文件接;只有源稿明确为纯装饰且不存在交互语义的元素才去掉手型与悬停态,禁止因为实现成本或缺少目标页撤掉源稿已有功能。
|
|
255
|
+
- **随业务数据而变的值一律算出**:在 service 内从业务事实聚合,不落成前端常量、`return` 的字面量、冗余派生字段或独立统计快照;事实变化后相关页面重新查询使用同一口径。算出的值与源稿数字不一致是预期结果,源稿事实不足时不得编造明细凑数。
|
|
256
|
+
- **媒体控件绑真实媒体**:播放、进度、倍速挂在真实媒体元素上,时间由它驱动;无媒体资源时整组去掉可点外观。
|
|
257
|
+
- 禁止:空链接、只切换图标不产生数据变化、写死的"成功"提示。
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
# 创意产物类型信号表与分类型拆分细则
|
|
2
2
|
|
|
3
|
-
创意模式产物是 design-html 技术栈的静态工程:`index.html` 为入口,可能带 `components/` 或 `screens/` 目录(`.jsx` 经 `<script type="text/babel">` 在浏览器内编译)。先读 `index.html` 全文 +
|
|
3
|
+
创意模式产物是 design-html 技术栈的静态工程:`index.html` 为入口,可能带 `components/` 或 `screens/` 目录(`.jsx` 经 `<script type="text/babel">` 在浏览器内编译)。先读 `index.html` 全文 + 目录清单,再按下表判类型。**支持生成的只有三类**:多屏设计稿(artboard)、移动端 mockup、可交互原型;报表 / deck / 图文卡片 / 动画为产品范围外,判中即停止并告知用户(入口层正常会拦截,此为防御兜底)。若会话上下文提供了「当前选中的设计稿文件」路径,判型与拆分优先以该文件为主入口。
|
|
4
4
|
|
|
5
5
|
## 类型判定信号表
|
|
6
6
|
|
|
7
7
|
| 类型 | 判定信号(任一命中) | 实现形态 |
|
|
8
8
|
|------|---------------------|----------|
|
|
9
9
|
| 演示稿(deck) | `<deck-stage>` / 翻页控件 / 每屏是「第 N 页」式幻灯结构 | **范围外,停止并告知** |
|
|
10
|
+
| 图文卡片(social card) | `<card-stage>` / 一组固定竖版 `<section>` 卡片(1080×1440 这类上传规格)+ 每卡独立成图 | **范围外,停止并告知** |
|
|
10
11
|
| 多屏设计稿(artboard) | `<DCArtboard>` / `design-canvas` 缩放壳 / 多画板平铺 + 画板 label | 每画板 → 路由页 |
|
|
11
12
|
| 移动端 mockup | 设备框组件(iOS/Android 壳:`width:390` + 圆角 + 状态栏/灵动岛) + `screens/` 或 `screen-*.jsx` 多屏 | 每屏 → 路由页;框内 tab → 应用导航 |
|
|
12
13
|
| 交互原型 | `useState` / 事件处理驱动页面切换,无画布壳,本身像单页应用 | 按其内部「视图状态」拆路由页 |
|