draftgo-cli 2.0.3 → 2.0.9

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.
@@ -13,9 +13,9 @@ version: 1.0.0
13
13
  ## 总则:四档开发流程
14
14
 
15
15
  ```
16
- 小修 直接定位 → 改 → check → push
17
- 轻功能 范围复述 → 直接做 → 主路径验证 → push
18
- 标准功能 轻量确认 → TaskTDR
16
+ 小修 直接定位 → 改 → 轻量证据
17
+ 轻功能 范围复述 → 直接做 → 凭证据闭环
18
+ 标准功能 轻量确认 → 内部短计划执行闭环
19
19
  高风险 完整 Story / 计划 / 验证 / 人工确认
20
20
  ```
21
21
 
@@ -23,6 +23,33 @@ version: 1.0.0
23
23
 
24
24
  ---
25
25
 
26
+ ## 交付追求(强制但不模板化)
27
+
28
+ DraftGo-CLI 的目标不是只把页面写出来,而是让 AI 基于基座快速交付高质量项目:
29
+
30
+ - **开发的急速感**:优先用本地 index、目标文件、现有资源和最小必要规则快速建立上下文;资源关系不清时再用 `draftgo map`。小修和轻功能不要被表格化流程拖慢。
31
+ - **逻辑与实现的完整**:优先考虑真实落地闭环、高可用;默认真实数据、真实入口、真实反馈和必要证据。页面、导航、DB、脚本、权限和后台维护按用户路径闭环推断。
32
+ - **迭代性强**:文件命名、route、数据 schema、组件结构、changelog、Task/lessons 记录要让下一次 AI 或开发者能继续接手。
33
+ - **前端 UI 交给 shadcn 能力**:平台壳层默认 React + shadcn/ui + Tailwind;数据库 HTML 页面中的 `dg-*` 必须理解为 shadcn 的 DraftGo HTML 协议表达。若本地 Agent 环境存在 shadcn / 前端 UI 相关 Skills,前端界面开发时优先调用;DraftGo-CLI 提供运行时、资源、数据、路由、入口绑定和验证方法。
34
+
35
+ 判断一版交付是否合格:用户路径、数据和操作能真实落地,后续继续改不用重猜结构。
36
+
37
+ ---
38
+
39
+ ## 真实落地默认原则(强制)
40
+
41
+ 除非用户明确要求“静态 / 纯页面 / demo / mock / 假数据 / 伪功能 / 先看效果”,任何开发任务都优先考虑真实落地闭环、高可用。
42
+
43
+ - 不要把功能降级成只有前端展示的假页面;按钮、表单、搜索、筛选、分页、提交、保存、删除、发布、管理等交互默认要有真实效果。
44
+ - 不要用写死数组、静态卡片、空点击事件、只弹 toast 的按钮伪装业务能力;演示数据只能用于加载态、空态或用户明确要求的原型/demo。
45
+ - 如果需求涉及可维护内容或业务记录,优先判断是否可用 DraftGo 动态 DB、已有 db_meta、custom_scripts、外部 API 或 AIHub 资产完成真实数据闭环,并考虑后续维护、迭代和稳定性。
46
+ - **数据存储选型:业务数据优先用动态 DB 通用库。**
47
+ - 若平台能力、权限、外部依赖或通用动态 DB 都无法支撑该功能,不要继续开发伪功能;向用户说明具体阻塞点和可选替代方案,确有复用价值时在 `.draftgo/lessons/` 记录“无法闭环原因 / 已验证限制 / 后续建议”。
48
+
49
+ 一句话判断:用户没有明确要假,就优先考虑真实落地闭环、高可用;做不了真实闭环,就停下来说明,不写假的。
50
+
51
+ ---
52
+
26
53
  ## 轻量任务识别与用户意图翻译
27
54
 
28
55
  不要把流程做成固定填表。开发前先用 AI 自身判断力做一次轻量识别:这次是小修、轻功能、标准功能,还是高风险系统改动。识别结果用于决定规划深度,不要求每次都输出模板。
@@ -34,15 +61,17 @@ version: 1.0.0
34
61
  3. 看使用角色:访客、普通用户、管理员、运营、审核员、客服、内部人员等决定是否需要前台 / 后台 / 权限。
35
62
  4. 看现有项目结构:已有导航、页面命名、db_meta、custom_scripts、角色体系和 Story 都是默认推断依据。
36
63
 
64
+ 进入陌生项目、资源关系不清、多页面任务或用户描述较模糊时,先运行 `draftgo map` 快速获得资源地图;目标文件明确的小修和局部改动可以跳过。`draftgo map --output json` 可用于机器读取,不替代具体文件阅读。
65
+
37
66
  默认策略:
38
67
 
39
68
  - 用户说“修改 / 调整 / 优化某个已存在页面” → 默认按单资源改动处理;范围清晰则小修,影响主流程则轻功能或标准功能。
40
- - 用户说“做 / 新建 / 增加一个页面” → 默认按**完整页面功能**处理:页面可访问、交互有效、状态完整、必要数据真实读写、入口已绑定。只有用户明确说“静态页 / 纯页面 / 视觉稿 / demo / 先做效果”时,才允许按静态页面处理。
41
- - 用户说“做一个功能 / 模块 / 系统能力” → 默认按功能闭环处理,不能自动降级为单个展示页。
69
+ - 用户说“做 / 新建 / 增加一个页面” → 默认按**完整页面功能**处理:页面可访问、交互有效、状态完整、必要数据真实读写、入口已绑定,并优先考虑真实落地闭环、高可用。只有用户明确说“静态页 / 纯页面 / 静态稿 / demo / mock / 假数据 / 伪功能 / 先做效果”时,才允许按静态页面处理。
70
+ - 用户说“做一个功能 / 模块 / 系统能力” → 默认按功能闭环处理,不能自动降级为单个展示页或前端假数据。
42
71
  - 用户说“管理 / 维护 / 发布 / 审核 / 上下架” → 默认需要后台管理能力和真实数据闭环。
43
72
  - 用户说“官网 / 官方 / 平台 / 系统” → 不要做孤立页面;至少考虑导航入口、访问路径和完整用户路径。
44
73
 
45
- 只有当不确定点会明显改变页面数量、数据结构、后台能力、权限或风险时,才向用户确认。确认最多 1-3 个问题,并给出推荐默认值;其余细节由 AI 自主推断,并按任务等级记录到范围复述、Task 或 TDR 中。
74
+ 只有当不确定点会明显改变页面数量、数据结构、后台能力、权限或风险时,才向用户确认。确认最多 1-3 个问题,并给出推荐默认值;其余细节由 AI 自主推断,并按任务等级记录到范围复述、内部短计划或 Task 中。
46
75
 
47
76
  ### 用户路径链路(功能任务默认视角)
48
77
 
@@ -78,9 +107,9 @@ version: 1.0.0
78
107
  ```
79
108
  1. 定位:读目标 index / 文件,确认 resource id 与文件路径
80
109
  2. 改:只做最小必要改动
81
- 3. check:运行能覆盖该改动的最小检查(lint / 语法 / 浏览器 / 回读)
82
- 4. push:用 draftgo_push.py 推送对应资源
83
- 5. 录:写 changelog
110
+ 3. 证据:用与改动匹配的轻量方式确认命中(文件回读 / 语法检查 / diff / 必要的本地检查)
111
+ 4. 同步:需要云端生效或用户要求时再 push
112
+ 5. 记录:影响可见功能、已 push 或有接手价值时写 changelog
84
113
  ```
85
114
 
86
115
  小修不需要 Story 门、需求门、Task 文档,也不需要并行分发。若执行中发现影响面扩大,立即升级为「轻功能」或「标准功能」。
@@ -102,7 +131,7 @@ version: 1.0.0
102
131
  1. 范围复述:一句话说明要做什么、入口在哪里、如何验证
103
132
  2. 直接做:读目标资源,按最小闭环实现
104
133
  3. 主路径验证:入口可达、核心交互有效、关键状态不空白
105
- 4. push + changelog:推送相关资源并记录
134
+ 4. 证据闭环:按影响选择 check / push / changelog
106
135
  ```
107
136
 
108
137
  轻功能不强制创建 Task 文档,不强制 depends/resource_lock/wave,也不启用并行。若执行中发现需要多个页面协作、后台管理、复杂权限或资源冲突,升级为「标准功能」。
@@ -121,9 +150,9 @@ version: 1.0.0
121
150
  ```
122
151
  1. 若 .draftgo/story.yaml 存在,静默加载;不存在时不阻塞开发,完成后提醒补 Story
123
152
  2. 轻量确认:意图翻译 + 必要追问 + 范围复述
124
- 3. 计划门:创建 Task 文档,写任务清单;多任务 / 多资源冲突时补充 depends/resource_lock/wave
125
- 4. 执行门:按 TDR 循环逐任务执行
126
- 5. 闭环门:证据 + changelog + Task 标记 + push 输出
153
+ 3. 内部短计划:列清资源、入口、数据、关键交互和证据形式;跨资源、多页面协作、并行或高风险时再创建 Task
154
+ 4. 执行门:按短计划逐项实现
155
+ 5. 闭环门:证据 + 按影响选择 changelog / check / push;有 Task 时同步标记
127
156
  ```
128
157
 
129
158
  标准功能任务最低规划要求:写清楚用户路径链路、页面入口/导航绑定、前台与后台是否需要同一份数据、哪些交互必须真实有效。不要把“页面看起来存在”当成“功能完成”。
@@ -144,7 +173,7 @@ version: 1.0.0
144
173
  1. Story 门:无 .draftgo/story.yaml 必须先构建;有则静默加载并做冲突检测
145
174
  2. 完整确认:挖透关键风险、边界和验收,复述确认后才动手
146
175
  3. 计划门:Task 文档 + 风险点 + 回滚/验证方案 + 人工确认点
147
- 4. 执行门:TDR;涉及 roles/users/custom_scripts 等按 push skill 要求二次确认
176
+ 4. 执行门:轻量闭环执行;涉及 roles/users/custom_scripts 等按 push skill 要求二次确认
148
177
  5. 闭环门:真实验证证据 + push 输出 + 回读结果 + 影响范围说明
149
178
  ```
150
179
 
@@ -236,7 +265,7 @@ C. <更完整方案>
236
265
  ☐ 2. 不做什么(边界)
237
266
  ☐ 3. 成功长什么样(验收)
238
267
  ☐ 4. 已知约束(用户角色 / 权限 / 数据结构 / 现有页面位置)
239
- ☐ 5. 视觉 / 体验偏好(如果涉及前端 UI)
268
+ ☐ 5. 前端 UI 需求(如果用户明确提出)
240
269
  ```
241
270
 
242
271
  **追问优先用多选题**,开放题作为兜底。
@@ -269,9 +298,9 @@ C. <更完整方案>
269
298
 
270
299
  ---
271
300
 
272
- ## 计划门(标准功能 / 高风险,一次性产出,不打扰用户)
301
+ ## 计划门(按需 Task / 高风险,一次性产出,不打扰用户)
273
302
 
274
- 轻量确认过了之后,AI **自主产出**设计 + 任务清单,落到 `.draftgo/Task/` 文件夹。小修和轻功能不创建 Task 文档。
303
+ 轻量确认过了之后,AI 先做**内部短计划**并直接执行;只有跨资源、多页面协作、并行开发、需要长期接手或高风险任务,才把设计 + 任务清单落到 `.draftgo/Task/` 文件夹。小修、轻功能和普通标准功能不创建 Task 文档。
275
304
 
276
305
  ### Task 文件位置
277
306
 
@@ -316,7 +345,7 @@ related_changelog: YYYY-MM-DD
316
345
  - 不做:...
317
346
  - 验收:...
318
347
  - 约束:...
319
- - 视觉偏好:...
348
+ - 前端 UI 需求:...
320
349
 
321
350
  ## 设计
322
351
 
@@ -348,10 +377,10 @@ related_changelog: YYYY-MM-DD
348
377
  - 步骤:
349
378
  1. 读取当前文件,定位 X
350
379
  2. 在 Y 位置插入 Z
351
- 3. 浏览器打开 /admin/users 实测(验四态)
352
- 4. push 脚本:`python {{SKILL_SCRIPTS}}/draftgo_push.py pages <page_id>`
353
- 5. 写更新日志
354
- - 验证证据:浏览器截图说明 + push 输出 + console 无报错
380
+ 3. 验证:文件回读 / draftgo check / 与改动匹配的轻量证据
381
+ 4. 需要云端生效时调 push 脚本:`python {{SKILL_SCRIPTS}}/draftgo_push.py pages <page_id>`
382
+ 5. 需要接手记录时写更新日志
383
+ - 验证证据:文件回读 / check / push 输出(如已推送)
355
384
 
356
385
  - [ ] T2. ... ⬜
357
386
 
@@ -413,14 +442,14 @@ related_changelog: YYYY-MM-DD
413
442
 
414
443
  ---
415
444
 
416
- ## 门 3:执行门(DraftGo 特化的 TDR 循环)
445
+ ## 执行节奏(轻量闭环)
417
446
 
418
- DraftGo 主要场景是**改 HTML 页面、改导航、调 App API、写 custom_script、注册外部 API**。TDD 在这里大部分用不上,换成 **TDR 循环**:
447
+ DraftGo 主要场景是**改 HTML 页面、改导航、调 App API、写 custom_script、注册外部 API**。执行时保持小步、可理解、有证据:
419
448
 
420
449
  ```
421
- Tiny 最小改动,一次只动一件事
422
- Demo 立即可演示(浏览器实测 / curl 验证 / 脚本执行)
423
- Record 迭代记录 + 任务标记 + 同步
450
+ Small 小步实现,一次只动清楚的一件事
451
+ Evidence 用文件回读 / check / 与改动匹配的轻量证据确认
452
+ Record 按影响选择 changelog / Task 标记 / push
424
453
  ```
425
454
 
426
455
  ### 并行分发(Wave 模式)
@@ -428,31 +457,33 @@ Record 迭代记录 + 任务标记 + 同步
428
457
  当任务数 ≥ 3、存在多个 Wave 1 任务(`depends: []` 且 resource_lock 不冲突)、任务边界清晰,且并行收益大于协调成本时,主代理可启用并行:
429
458
 
430
459
  1. **分发**:为每个 Wave 1 任务生成子代理,携带上下文包(task 定义 + 当前文件 + 禁区摘要)
431
- 2. **子代理执行**:每个子代理独立完成 TDR 的 Tiny + Demo,产出修改文件 + changelog 条目 + 验证报告
460
+ 2. **子代理执行**:每个子代理独立完成小步实现和证据确认,产出修改文件 + 验证报告;需要接手记录时再产出 changelog 条目
432
461
  3. **收集**:主代理收集所有子代理产出,写入文件系统
433
- 4. **批量推送**:`python {{SKILL_SCRIPTS}}/draftgo_push.py --batch <type1> <id1>,<id2> <type2> <id3>`
462
+ 4. **批量推送**:需要云端生效时运行 `python {{SKILL_SCRIPTS}}/draftgo_push.py --batch <type1> <id1>,<id2> <type2> <id3>`
434
463
  5. **Wave 2**:依赖已完成的任务可以开始,重复上述流程
435
- 6. **闭环**:主代理统一更新 Task 文档 + 闭环门
464
+ 6. **闭环**:主代理统一汇总证据;有 Task 文档时再更新标记
436
465
 
437
466
  **退化条件**:平台不支持子代理 / 任务数不足 / 边界不清 / 协调成本更高 / 用户明确说"串行" → 静默退化为逐任务串行。
438
467
 
439
468
  详细协议见 `{{SKILL_DIR}}/rules/parallel.md`。
440
469
 
441
- ### 每个任务的六步执行
470
+ ### 每个任务的轻量执行
442
471
 
443
472
  ```
444
473
  1. 读 —— 读当前文件状态,理解现状(不读不改)
474
+ • 资源关系不清 / 陌生项目 / 多页面任务:先跑 `draftgo map`
475
+ • 涉及页面闭环:读取 pages/index.json、navigations/index.json 和相关 HTML
445
476
  2. 改 —— 做最小必要改动,不顺手改无关代码
446
- 3. —— 立即看效果:
447
- 页面类:在浏览器里实测路径 / 四态 / 边界场景
448
- • API 类:用 App.callApi / Python urllib / push 脚本真实跑一次
477
+ 3. —— 用与改动匹配的轻量证据确认:
478
+ 页面类:文件回读、入口引用、状态结构、关键交互代码路径
479
+ • API 类:用 App.callApi / Python urllib / 管理端测试端点真实跑一次
449
480
  (Windows 环境下 curl 对中文/特殊字符编码易出错,建议优先用 Python urllib/requests)
450
481
  • custom_script:用 POST /api/scripts/{id}/execute 跑一遍
451
482
  • db_meta / aihub / 外部 API:注册或更新后用 GET 回读字段
452
- 4. 录 —— 写更新日志到 .draftgo/changelog.md
483
+ 4. 录 —— 影响可见功能、跨资源、已 push 或需接手时写更新日志到 .draftgo/changelog.md
453
484
  格式:- [HH:MM] [操作类型] 描述(不超过 30 字)
454
- 5. 推 —— 按资源类型调对应 push 脚本(pages / nav / db_meta / aihub / external_apis / system_config / docs / doc_categories / custom_scripts / roles / users)
455
- 6. 标 —— 标准功能 / 高风险任务在 Task 文档里把这个任务勾掉,记录证据摘要;小修和轻功能无需 Task 标记
485
+ 5. 推 —— 需要云端生效时按资源类型调对应 push 脚本(pages / nav / db_meta / aihub / external_apis / system_config / docs / doc_categories / custom_scripts / roles / users)
486
+ 6. 标 —— Task 文档时把对应任务勾掉并记录证据摘要;没有 Task 文档则不补建
456
487
  ```
457
488
 
458
489
  ### 分段实现原则
@@ -460,7 +491,7 @@ Record 迭代记录 + 任务标记 + 同步
460
491
  复杂或高风险代码应分段实现并验证;不要一次性写入难以检查的大块代码。
461
492
 
462
493
  1. 按功能模块或逻辑段落拆分,优先保持每段可理解、可验证
463
- 2. 大段 HTML/CSS/JS 写入后及时做语法或浏览器检查
494
+ 2. 大段 HTML/CSS/JS 写入后及时做语法、结构或静态检查
464
495
  3. 批次间保持上下文连贯(闭合标签、函数结尾等不可跨批断开)
465
496
 
466
497
  **原则**:分段是为了降低错误率,不是为了机械限制行数;清晰、完整、可验证优先。
@@ -471,10 +502,22 @@ Record 迭代记录 + 任务标记 + 同步
471
502
 
472
503
  1. **强制先读** `.draftgo/db_meta/index.json` 中对应 type 的 schema
473
504
  2. 字段名、字段类型、是否必填 **以 schema 为准**,不凭印象写
474
- 3. 如果 `db_meta/index.json` 不存在或对应 type 缺失,先 `/draftgo pull db_meta` 刷新
505
+ 3. 要对某字段做检索/筛选(`filters`)或排序(`order_by`)前,先确认该字段在 schema 里标了 `searchable`,且操作符匹配其检索模式(`exact`→eq/in,`fuzzy`→eq/like/in,`range`→eq/gte/lte/gt/lt/in,`contains`→contains);未标 searchable 或操作符不匹配后端返回 400
506
+ 4. 如果 `db_meta/index.json` 不存在或对应 type 缺失,先 `/draftgo pull db_meta` 刷新
475
507
 
476
508
  违反后果:字段名写错 → 数据静默丢失 → 排查成本极高。
477
509
 
510
+ ### custom_script 契约前置门(强制)
511
+
512
+ 当前端要对接某个 custom_script 的 route 端点(`App.callApi`、`fetch('/api/x/<slug>/...')`、DB 列表/表单页依赖某脚本的读写接口)时,**云端正在运行的脚本才是唯一契约真相,本地 `code_file` 不是**:
513
+
514
+ 1. **对接前强制确认"本地 = 云端"**:先 `python {{SKILL_SCRIPTS}}/draftgo_pull.py custom_scripts <id>` 拉云端运行版,或直接探测关键端点(如目标端点返回 404 即说明云端没有该 route)。两者一致才可按本地契约写前端。
515
+ 2. **本地领先时先推后接**:若本地脚本已演进但因 custom_scripts 推送的二次确认被跳过而未上云,必须先完成推送(push skill 的二次确认流程),不得对着"未上云的本地契约"写前端。
516
+ 3. **跳过推送必须留痕**:任何一次跳过 custom_scripts 推送,都要在 changelog 或 Task 里写明"本地脚本 vN 未上云",避免后续 AI 误判已生效。
517
+ 4. **route 端点设计约束**:custom_script 的 route ctx 只有 `{body, query_params, headers, method, path, user}`,**没有 `path_params`**;基座不从 `/api/x/{slug}/{path}` 里提取 `{id}`/`{uid}` 这类路径模板。需要 id 的写操作(删除/编辑)一律走 `POST + body 带 id`,不要写 `@route("DELETE /xxx/{id}")` —— 这类 handler 取不到 path 参数,永远走异常分支,是死代码。
518
+
519
+ 违反后果:本地脚本 ≠ 云端运行版 → 前端对错契约 → 列表恒空 / 写读两套存储,排查极隐蔽。
520
+
478
521
  ### 执行禁区(继承现有规则)
479
522
 
480
523
  以下规则在根 [SKILL.md](../SKILL.md) "开发禁区"和 [frontend.md](./frontend.md) 中已有定义,执行时**全部生效**:
@@ -487,8 +530,12 @@ Record 迭代记录 + 任务标记 + 同步
487
530
  - ❌ `navigate('/login')` 退出(用 `window.location.href = '/login'`)
488
531
  - ❌ `window.alert / confirm / prompt`(用 `App.toast / confirm / showModal`)
489
532
  - ❌ 硬编码颜色(用 `var(--dg-*)` token)
533
+ - ❌ 把 `dg-*` 当成自研 UI、daisyUI、Bootstrap、Ant Design 或 Element Plus(`dg-*` 只能表示 shadcn 的 HTML 协议形态)
534
+ - ❌ 在数据库 HTML 页面直接写 React/TSX 版 shadcn 组件(应写对应 `dg-*` 标签,或补齐缺失映射)
490
535
  - ❌ `App.confirm` 不 `await`(详见 [debugging-syntax.md](./debugging-syntax.md) 第 3 条)
491
536
  - ❌ `await` 用在非 `async` 函数里(详见 [debugging-syntax.md](./debugging-syntax.md) 第 2 条)
537
+ - ❌ custom_script 里写 `@route("DELETE /x/{id}")` 取 `ctx.path_params`(route ctx 无 path_params,需 id 的写操作走 POST+body)
538
+ - ❌ 对着未上云的本地 custom_script 契约写前端(先 pull/探测确认本地=云端,见上「custom_script 契约前置门」)
492
539
 
493
540
  ### 调试方法论(升级 debugging-syntax.md 的清单为方法论)
494
541
 
@@ -498,15 +545,15 @@ Record 迭代记录 + 任务标记 + 同步
498
545
  取证 → 模式 → 假设 → 修复
499
546
  ```
500
547
 
501
- 1. **取证**:先看浏览器 console,再看 `.draftgo/changelog.md`,再看 push 输出。**先取证再判断**,禁止靠猜。
548
+ 1. **取证**:先看文件回读、`.draftgo/changelog.md`、`draftgo check`、API 回读或 push 输出中最贴近问题的证据。**先取证再判断**,禁止靠猜。
502
549
  2. **模式**:对照 [debugging-syntax.md](./debugging-syntax.md) 10 大致命缺陷清单。九成"页面静默失效"都在里面。
503
550
  3. **假设**:一次只验证一个假设。在关键路径加 `console.log('=== A 点 ===')` 二分定位。
504
- 4. **修复**:修根因,不修表面。改完跑一次完整 TDR 循环。
551
+ 4. **修复**:修根因,不修表面。改完用与改动匹配的轻量证据确认。
505
552
  5. **3 次修不好停手**:去 `.draftgo/lessons/` 写经验记录(基座 bug 或基座局限),与用户讨论是不是架构问题。
506
553
 
507
554
  ---
508
555
 
509
- ## 门 4:闭环门(无证据不许说完)
556
+ ## 闭环门(无证据不许说完)
510
557
 
511
558
  ### 完成铁律
512
559
 
@@ -518,19 +565,19 @@ Record 迭代记录 + 任务标记 + 同步
518
565
 
519
566
  按任务等级选择验证强度:
520
567
 
521
- - 小修:验证改动点命中、无明显报错、对应资源 push 成功。
522
- - 轻功能:验证真实入口可达、主路径交互有效、关键状态不空白、对应资源 push 成功。
523
- - 标准功能:验证入口、主流程、关键四态、数据读写 / 回读、关联页面跳转和 push 输出。
568
+ - 小修:验证改动点命中、无明显报错;需要云端生效时再确认对应资源已推送成功。
569
+ - 轻功能:验证入口引用存在、主路径交互有效、关键状态不空白;需要时补 `draftgo check` 或 push 输出。
570
+ - 标准功能:验证入口、主流程、关键四态、数据读写 / 回读、关联页面跳转;按影响选择 `draftgo check`、changelog 和 push 输出。
524
571
  - 高风险:在标准功能基础上增加人工确认、回读验证、影响范围说明和回滚 / 兜底方案。
525
572
 
526
573
  | 资源类型 | 完成证据 |
527
574
  |---------|---------|
528
- | 页面 HTML | 按等级验证:小修看改动点;轻功能看入口 + 主路径 + 关键状态;标准功能 / 高风险再完整覆盖四态、console 和 push 输出 |
529
- | 新增页面 / 多页面功能 | ① 页面资源创建或更新成功 ② route 与 page_id 对应 ③ 导航栏 / 首页 / 后台菜单 / 相关页面按钮至少一个入口已绑定 ④ 从入口点击到目标页可通所有关联页面互相跳转可通 ⑥ push 输出 PASS |
530
- | 导航栏 | ① 浏览器看到新链接 ② 链接含正确 `data-page-route` ③ 点击跳转通 push 输出 PASS |
531
- | 外部 API 注册 | ① `POST /api/external-apis/{id}/test` 返回 2xx ② push 输出 PASS ③ 页面里 `App.callApi` 能调通 |
532
- | custom_script | ① `POST /api/scripts/{id}/execute` 真跑一次 ② 返回值符合预期 ③ push 输出 PASS |
533
- | db_meta / aihub / 系统配置 | ① GET 回读字段对得上 ② push 输出 PASS |
575
+ | 页面 HTML | 按等级验证:小修看改动点;轻功能看入口引用 + 主路径 + 关键状态;标准功能 / 高风险覆盖四态和必要的同步证据 |
576
+ | 新增页面 / 多页面功能 | ① 页面资源创建或更新成功 ② route 与 page_id 对应 ③ 导航栏 / 首页 / 后台菜单 / 相关页面按钮至少一个入口已绑定 ④ 文件回读或 `draftgo check` 可确认入口引用 关联页面互跳关系清楚若已推送则有 push 输出 |
577
+ | 导航栏 | ① 文件回读确认新链接存在 ② 链接含正确 `data-page-route` ③ 若已推送则有 push 输出 |
578
+ | 外部 API 注册 | ① `POST /api/external-apis/{id}/test` 返回 2xx ② 若已推送则有 push 输出 ③ 页面里 `App.callApi` 能调通 |
579
+ | custom_script | ① `POST /api/scripts/{id}/execute` 真跑一次 ② 返回值符合预期 ③ 若已推送则有 push 输出 |
580
+ | db_meta / aihub / 系统配置 | ① GET 回读字段对得上 ② 若已推送则有 push 输出 |
534
581
  | roles / users | ① 用户二次确认 ② push 输出 PASS ③ 影响范围告知用户 |
535
582
  | 文档 / 文档分类 | ① push 输出 PASS ② GET 回读字段对得上 |
536
583
 
@@ -542,21 +589,35 @@ Record 迭代记录 + 任务标记 + 同步
542
589
  入口出现 → 点击进入 → 页面加载 → 操作有效 → 反馈明确 → 数据可回读 → 后台可维护(如需要)→ 前台展示更新
543
590
  ```
544
591
 
545
- 如果新页面只能靠手动输入 route 访问,且用户正常路径里看不到入口,视为未完成。若任务明确要求“只创建未公开页面”,必须在完成声明中说明该页面暂不绑定导航的原因。
592
+ 如果新页面没有任何导航栏、首页模块、后台菜单或相关页面按钮引用,视为未完成。若任务明确要求“只创建未公开页面”,必须在完成声明中说明该页面暂不绑定导航的原因。
593
+
594
+ ### CLI 闭环体检
595
+
596
+ 涉及页面、导航、DB、脚本或 AIHub 的任务,可按影响运行:
597
+
598
+ ```bash
599
+ draftgo check
600
+ ```
601
+
602
+ - 有 `错误`:与本次改动相关时先修复,不得声明完成。
603
+ - 有 `提醒`:结合任务判断。若是未绑定入口、疑似 mock 数据、缺少真实调用,优先补齐;若是用户明确要求隐藏页 / demo,需在 changelog、Task 或完成说明中写明原因。
604
+ - 需要把提醒也作为失败处理时运行 `draftgo check --strict`。
605
+
606
+ `draftgo check` 只做本地启发式检查;结合文件回读、静态检查、API 回读和必要的 push 输出形成证据。
546
607
 
547
608
  ### 禁用措辞
548
609
 
549
610
  - "应该 / 可能 / 看起来 / 大概 / Perfect / Done / 搞定 / 好了 / OK 了"
550
611
  - 任何隐含成功但没附证据的句子
551
612
 
552
- ### 完成声明必须附
613
+ ### 完成声明附证据
553
614
 
554
- - 命令 / 操作名(哪个 push / 哪个 API / 哪个浏览器路径)
615
+ - 命令 / 操作名(哪个文件回读 / 哪个 check / 哪个 push / 哪个 API)
555
616
  - 真实输出摘要(HTTP code、关键日志行、计数)
556
- - 标准功能 / 高风险任务:Task 文档更新到哪些 ✅;小修和轻功能说明无需 Task
617
+ - Task 文档时说明更新到哪些 ✅;无 Task 文档时不需要补说明
557
618
 
558
619
  **示例(正确)**:
559
- > T2 完成。`python draftgo_push.py pages 123` 返回 `OK pages/123`,浏览器 `/admin/users` 加载正常,导出按钮点击触发下载,CSV 文件 89 行(与列表 page_size=100 + 11 条过滤匹配)。Task 文档 T2 已 ✅。
620
+ > T2 完成。文件回读确认导出按钮绑定 `handleExport()`;`POST /api/scripts/7/execute` 返回 200,CSV 生成 89 行;已推送时 `python draftgo_push.py pages 123` 返回 `OK pages/123`。Task 文档 T2 已 ✅。
560
621
 
561
622
  **示例(错误)**:
562
623
  > 导出按钮做好了,应该没问题,push 也跑了,你试试看。
@@ -565,61 +626,27 @@ Record 迭代记录 + 任务标记 + 同步
565
626
 
566
627
  1. 把 Task 文档 frontmatter 的 `status` 改为 `done`
567
628
  2. 填写"完成回顾"段(实际改动、偏离计划处、后续 TODO)
568
- 3. changelog.md 写一条总结:`- [HH:MM] [完成] <主题>,详见 Task/<file>.md`
629
+ 3. 需要接手记录时在 changelog.md 写一条总结:`- [HH:MM] [完成] <主题>,详见 Task/<file>.md`
569
630
  4. 文件原地归档,不要移动
570
631
 
571
632
  ---
572
633
 
573
- ## 前端审美方向(只立方向,不立细则)
574
-
575
- 不强制设计 token、不强制栅格规格、不强制颜色清单。但给三个方向 + DraftGo 项目内的硬约束。
576
-
577
- ### 三个方向
578
-
579
- | 方向 | 含义 | 锚点 |
580
- |-----|------|------|
581
- | **现代工艺** | 当下主流审美:克制留白、精细对齐、轻量阴影、合理动效、高质感字体与间距 | 参考 Linear / Vercel / Apple HIG / Notion;避免低质感套模板、无意义大色块和粗糙过渡 |
582
- | **艺术风** | 不止"能用",要有视觉记忆点:节奏感、对比、层次、有调性的克制装饰 | 允许有调性的色彩组合、有质感的字体搭配(已有本地 Inter / Lexend / Plus Jakarta Sans / JetBrains Mono Nerd Font)、几何 / 微插画点缀;允许根据项目气质探索更鲜明的视觉语言 |
583
- | **用户体验** | 状态完整、操作可逆、反馈即时、信息层级清晰 | **四态必做**:空态 / 加载态 / 错误态 / 成功态。Toast 用 `App.showSuccess / Error / Warning / Info`,确认用 `App.confirm`,禁用 `window.alert` |
584
-
585
- ### DraftGo 项目内的硬约束(继承 frontend.md)
586
-
587
- - 颜色:必须 `var(--dg-*)` token,禁止硬编码 hex / rgb
588
- - 圆角:默认 `rounded-md`(6px);如需表达品牌感、卡片层级或营销视觉,可使用更大圆角,但需保持页面内节奏一致
589
- - 组件类名:`-dg` 结尾(`input-dg / btn-dg-primary / btn-dg-secondary / btn-dg-danger`)
590
- - 字体:用本地 `/assets/fonts/*.css`
591
- - 图标:用本地 `/assets/fontawesome/css/all.min.css`
592
- - 静态资源:禁止境外 CDN
593
- - 主题:必须适配 light / dark + 三套配色方案
594
-
595
- ### 给 AI 的自由
596
-
597
- 在"现代工艺 + 艺术风 + UX"三轴里**自由生长**。但**视觉变动必须可视化**:涉及布局 / 配色 / 风格选择时,主动产出 ASCII mockup 或 HTML 草图给用户看,而不是嘴上描述。
598
-
599
- ### 唯一红线(敏感场景)
600
-
601
- 登录 / 支付 / 删除确认 / 错误提示 / 权限拒绝:
602
- - 禁止抖机灵、禁止网络梗、禁止阴阳怪气
603
- - 文案保持清晰、中性、礼貌、可操作、低情绪浓度
604
-
605
- ---
606
-
607
634
  ## 与现有规则的关系
608
635
 
609
636
  | 现有规则 | 本规范如何对接 |
610
637
  |---------|---------------|
611
638
  | 根 [SKILL.md](../SKILL.md) "开发分级" | 本规范提供小修 / 轻功能 / 标准功能 / 高风险分级与执行依据 |
612
639
  | 根 [SKILL.md](../SKILL.md) "命令路由" | 增加触发:开发任务前先进本规范做任务分级 |
613
- | 根 [SKILL.md](../SKILL.md) "开发禁区" / "App API" / "数据库 Schema" / "API 速查" | 继续生效,执行门第 6 步验证依赖它们 |
614
- | [frontend.md](./frontend.md) | 继续生效,本规范的"前端审美方向"与它互补 |
640
+ | 根 [SKILL.md](../SKILL.md) "开发禁区" / "App API" / "数据库 Schema" / "API 速查" | 继续生效,执行证据依赖它们 |
641
+ | [frontend.md](./frontend.md) | 继续生效,提供 DraftGo 前端运行时、资源、数据、路由、入口绑定和验证方法 |
615
642
  | [debugging-syntax.md](./debugging-syntax.md) | 继续生效,本规范第 3 章"调试方法论"在其之上加方法论 |
616
- | 迭代记录规范(根 SKILL "迭代记录规范"段) | TDR 循环第 4 步复用 |
643
+ | 迭代记录规范(根 SKILL "迭代记录规范"段) | 按影响选择复用 |
617
644
  | 错误日志规范(根 SKILL "错误日志规范"段) | 取证阶段复用 |
618
645
  | 经验记录规范(根 SKILL "经验记录规范(lessons)"段) | 第 3 章"3 次修不好停手"写入 `.draftgo/lessons/`,含基座 bug 与基座局限场景 |
619
- | 同步规范(根 SKILL "自动同步规范"段) | TDR 循环第 5 步复用 |
646
+ | 同步规范(根 SKILL "推送规范"段) | 需要云端生效时复用 |
620
647
 
621
648
  ---
622
649
 
623
650
  ## 一句话总结
624
651
 
625
- > **先分级:小修直接定位改完验证推送;轻功能范围复述后直接做;标准功能轻量确认后 Task + TDR;高风险走完整 Story / 计划 / 验证 / 人工确认。审美只立方向,质量靠证据。追问必带推测意图,新增页面必须绑定真实入口。**
652
+ > **先分级:小修直接定位改完给轻量证据;轻功能范围复述后直接做;标准功能轻量确认后用内部短计划执行;高风险走完整 Story / 计划 / 验证 / 人工确认。前端 UI 交给本地 Skills,DraftGo 质量靠真实链路和轻量证据。追问必带推测意图,新增页面必须绑定真实入口。**