prd-to-flutter 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 (85) hide show
  1. package/README.md +149 -0
  2. package/bin/p2f.mjs +18 -0
  3. package/dist/cli.js +203 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/commands/clean.js +35 -0
  6. package/dist/commands/clean.js.map +1 -0
  7. package/dist/commands/doctor.js +148 -0
  8. package/dist/commands/doctor.js.map +1 -0
  9. package/dist/commands/generate.js +120 -0
  10. package/dist/commands/generate.js.map +1 -0
  11. package/dist/commands/init.js +46 -0
  12. package/dist/commands/init.js.map +1 -0
  13. package/dist/commands/paths.js +58 -0
  14. package/dist/commands/paths.js.map +1 -0
  15. package/dist/commands/remove.js +23 -0
  16. package/dist/commands/remove.js.map +1 -0
  17. package/dist/commands/screenshots-audit.js +39 -0
  18. package/dist/commands/screenshots-audit.js.map +1 -0
  19. package/dist/commands/skills-install.js +21 -0
  20. package/dist/commands/skills-install.js.map +1 -0
  21. package/dist/commands/sync.js +84 -0
  22. package/dist/commands/sync.js.map +1 -0
  23. package/dist/commands/update.js +93 -0
  24. package/dist/commands/update.js.map +1 -0
  25. package/dist/core/existing-page-detector.js +463 -0
  26. package/dist/core/existing-page-detector.js.map +1 -0
  27. package/dist/core/fail-fast.js +50 -0
  28. package/dist/core/fail-fast.js.map +1 -0
  29. package/dist/core/feature-coverage-builder.js +667 -0
  30. package/dist/core/feature-coverage-builder.js.map +1 -0
  31. package/dist/core/flutter-project-scanner.js +393 -0
  32. package/dist/core/flutter-project-scanner.js.map +1 -0
  33. package/dist/core/implementation-plan-writer.js +190 -0
  34. package/dist/core/implementation-plan-writer.js.map +1 -0
  35. package/dist/core/logger.js +39 -0
  36. package/dist/core/logger.js.map +1 -0
  37. package/dist/core/package-info.js +33 -0
  38. package/dist/core/package-info.js.map +1 -0
  39. package/dist/core/paths.js +37 -0
  40. package/dist/core/paths.js.map +1 -0
  41. package/dist/core/playwright-capture.js +539 -0
  42. package/dist/core/playwright-capture.js.map +1 -0
  43. package/dist/core/playwright-cli.js +26 -0
  44. package/dist/core/playwright-cli.js.map +1 -0
  45. package/dist/core/playwright-install.js +40 -0
  46. package/dist/core/playwright-install.js.map +1 -0
  47. package/dist/core/prd-clone.js +131 -0
  48. package/dist/core/prd-clone.js.map +1 -0
  49. package/dist/core/prd-install.js +108 -0
  50. package/dist/core/prd-install.js.map +1 -0
  51. package/dist/core/profile.js +149 -0
  52. package/dist/core/profile.js.map +1 -0
  53. package/dist/core/project-doc-reader.js +252 -0
  54. package/dist/core/project-doc-reader.js.map +1 -0
  55. package/dist/core/report-writer.js +90 -0
  56. package/dist/core/report-writer.js.map +1 -0
  57. package/dist/core/route-name.js +60 -0
  58. package/dist/core/route-name.js.map +1 -0
  59. package/dist/core/run-context.js +160 -0
  60. package/dist/core/run-context.js.map +1 -0
  61. package/dist/core/screenshot-auditor.js +405 -0
  62. package/dist/core/screenshot-auditor.js.map +1 -0
  63. package/dist/core/screenshot-exploration-plan-writer.js +200 -0
  64. package/dist/core/screenshot-exploration-plan-writer.js.map +1 -0
  65. package/dist/core/semantic-model-builder.js +922 -0
  66. package/dist/core/semantic-model-builder.js.map +1 -0
  67. package/dist/core/skill-install.js +78 -0
  68. package/dist/core/skill-install.js.map +1 -0
  69. package/dist/core/stage-stub.js +24 -0
  70. package/dist/core/stage-stub.js.map +1 -0
  71. package/dist/core/task-index-writer.js +149 -0
  72. package/dist/core/task-index-writer.js.map +1 -0
  73. package/dist/core/update-checker.js +155 -0
  74. package/dist/core/update-checker.js.map +1 -0
  75. package/dist/core/vue-page-locator.js +748 -0
  76. package/dist/core/vue-page-locator.js.map +1 -0
  77. package/dist/core/vue-project-reader.js +116 -0
  78. package/dist/core/vue-project-reader.js.map +1 -0
  79. package/docs/artifacts-and-agent.md +203 -0
  80. package/docs/development.md +118 -0
  81. package/docs/usage.md +246 -0
  82. package/package.json +50 -0
  83. package/skills/p2f/SKILL.md +303 -0
  84. package/skills/p2f/references/page-layout-patterns.md +120 -0
  85. package/skills/p2f/references/youfi-flutter-guidelines.md +71 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue-page-locator.js","sourceRoot":"","sources":["../../src/core/vue-page-locator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { logger } from './logger.js';
4
+ import { markComplete } from './run-context.js';
5
+ import { failFast } from './fail-fast.js';
6
+ import { resolveProfilePath } from './profile.js';
7
+ const MAX_EXCERPT = 6_000;
8
+ export function readVueProjectDocs(ctx, prototypeRoot, profile) {
9
+ const prototypeSub = locatePrototypeSub(prototypeRoot, profile);
10
+ const pkgPath = join(prototypeSub, 'package.json');
11
+ if (!existsSync(pkgPath)) {
12
+ failFast({
13
+ stage: 'vue-doc-read',
14
+ action: `read ${pkgPath}`,
15
+ reason: '原型仓库 package.json 未找到,无法确认为 Vue 项目。',
16
+ completedSteps: [...ctx.completedSteps],
17
+ pendingSteps: [...ctx.pendingSteps],
18
+ suggestions: [
19
+ '检查原型仓库结构是否变更。',
20
+ '确认 TradeAppPrd 根目录是否包含 Vue 子工程。',
21
+ ],
22
+ });
23
+ }
24
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
25
+ const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
26
+ const hasVue = Boolean(deps['vue']);
27
+ const hasReact = Boolean(deps['react']);
28
+ const routerDir = pickExistingProfilePaths(prototypeSub, profile.prototype.routerDirs);
29
+ const themeDir = pickExistingProfilePaths(prototypeSub, profile.prototype.themeDirs);
30
+ const stylesDir = pickExistingProfilePaths(prototypeSub, profile.prototype.stylesDirs);
31
+ const componentsDir = pickExistingProfilePaths(prototypeSub, profile.prototype.componentsDirs);
32
+ const viewsDir = pickExistingProfilePaths(prototypeSub, profile.prototype.viewsDirs);
33
+ const readmeExcerpt = existsSync(join(prototypeSub, 'README.md'))
34
+ ? truncate(readFileSync(join(prototypeSub, 'README.md'), 'utf8'))
35
+ : '';
36
+ const outDir = join(ctx.pageDir, 'analysis');
37
+ mkdirSync(outDir, { recursive: true });
38
+ const writtenTo = join(outDir, 'project-rules.md');
39
+ const appendSection = [
40
+ '',
41
+ '---',
42
+ '',
43
+ '# Vue 原型项目摘要',
44
+ '',
45
+ `- root: \`${prototypeSub}\``,
46
+ `- p2f profile: \`${profile.name}\``,
47
+ `- package.name: \`${pkg.name ?? '未知'}\``,
48
+ `- package.version: \`${pkg.version ?? '未知'}\``,
49
+ `- hasVue: \`${hasVue}\``,
50
+ `- hasReact: \`${hasReact}\``,
51
+ `- routerDir: \`${routerDir ?? '(无)'}\``,
52
+ `- themeDir: \`${themeDir ?? '(无)'}\``,
53
+ `- stylesDir: \`${stylesDir ?? '(无)'}\``,
54
+ `- componentsDir: \`${componentsDir ?? '(无)'}\``,
55
+ `- viewsDir: \`${viewsDir ?? '(无)'}\``,
56
+ '',
57
+ '## scripts 脚本',
58
+ '```json',
59
+ JSON.stringify(pkg.scripts ?? {}, null, 2),
60
+ '```',
61
+ '',
62
+ '## README.md 摘要',
63
+ '```markdown',
64
+ readmeExcerpt || '(缺失)',
65
+ '```',
66
+ '',
67
+ ].join('\n');
68
+ // Append to the same project-rules.md written by project-doc-reader.
69
+ const existing = existsSync(writtenTo) ? readFileSync(writtenTo, 'utf8') : '';
70
+ writeFileSync(writtenTo, existing + appendSection, 'utf8');
71
+ logger.success(`Vue 原型项目摘要追加 → ${writtenTo}`);
72
+ markComplete(ctx, 'read-vue-docs');
73
+ return {
74
+ root: prototypeSub,
75
+ profileName: profile.name,
76
+ packageJsonSummary: {
77
+ name: pkg.name ?? 'unknown',
78
+ version: pkg.version,
79
+ scripts: pkg.scripts ?? {},
80
+ hasVue,
81
+ hasReact,
82
+ },
83
+ routerDir,
84
+ themeDir,
85
+ stylesDir,
86
+ componentsDir,
87
+ viewsDir,
88
+ readmeExcerpt,
89
+ writtenTo,
90
+ };
91
+ }
92
+ /**
93
+ * TradeAppPrd has a root package.json as well as a `prototype/` Vue sub-project;
94
+ * we probe whichever contains `src/` with Vue assets. Falls back to root.
95
+ */
96
+ function locatePrototypeSub(root, profile) {
97
+ for (const candidate of profile.prototype.subprojectCandidates) {
98
+ const c = resolveProfilePath(root, candidate);
99
+ if (existsSync(join(c, 'package.json')) && existsSync(join(c, 'src'))) {
100
+ return c;
101
+ }
102
+ }
103
+ return root;
104
+ }
105
+ function pickExistingProfilePaths(root, paths) {
106
+ for (const p of paths) {
107
+ const path = resolveProfilePath(root, p);
108
+ if (existsSync(path))
109
+ return path;
110
+ }
111
+ return null;
112
+ }
113
+ function truncate(body) {
114
+ return body.length > MAX_EXCERPT ? body.slice(0, MAX_EXCERPT) + '\n…(truncated)' : body;
115
+ }
116
+ //# sourceMappingURL=vue-project-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue-project-reader.js","sourceRoot":"","sources":["../../src/core/vue-project-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ # 产物与 Agent 规则
2
+
3
+ 本文档说明 `p2f generate` 的任务目录结构、关键产物、agent 审阅顺序、截图规则和实现规则。
4
+
5
+ ## 任务目录
6
+
7
+ 每次 `generate` 会写入:
8
+
9
+ ```text
10
+ .p2f-workspace/pages/<task-name>/
11
+ main.md
12
+ cli/
13
+ source/
14
+ route-info.json
15
+ related-files.txt
16
+ vue-entry.txt
17
+ runtime/
18
+ dom.json
19
+ accessibility.json
20
+ computed-styles.json
21
+ visible-text.txt
22
+ interactions.candidate.json
23
+ interactions.json
24
+ analysis/
25
+ feature-coverage.md
26
+ feature-coverage.json
27
+ screenshot-exploration-plan.md
28
+ screenshot-exploration-plan.json
29
+ text-style-map.md
30
+ text-style-map.json
31
+ implementation-plan.md
32
+ output/
33
+ generate-report.md
34
+ runs/
35
+ agent/
36
+ manifest.json
37
+ screenshots/
38
+ runtime/
39
+ agent-screenshot-exploration.json
40
+ ```
41
+
42
+ 项目级快照固定写入 `.p2f-workspace/project/flutter-project.json`。该文件不是页面级数据,每次执行 `p2f generate` 会在 `read-flutter-docs` 阶段提前更新同一份;页面目录中只保留当前页面相关的 `cli/analysis/flutter-mapping.md`。
43
+
44
+ `<task-name>` 由页面 URL 的路由名解析得到。无法确定时可用:
45
+
46
+ ```bash
47
+ p2f paths --url "<页面链接>"
48
+ ```
49
+
50
+ ## 关键产物
51
+
52
+ 重点查看这些文件:
53
+
54
+ - `main.md`:本次任务的入口索引,列出 JSON、源码范围、截图探索计划和实现计划路径。
55
+ - `cli/source/vue-entry.txt`:PRD 页面入口文件。
56
+ - `cli/source/related-files.txt`:PRD 相关源码范围。
57
+ - `cli/source/route-info.json`:URL 和路由解析结果。
58
+ - `cli/source/product-docs-index.md`:页面产品文档索引;如有 `cli/source/product-docs/**`,实现前先读对应 `.md`。
59
+ - `cli/source/prototype-i18n.md`:页面 prototype i18n 摘要;如有 `cli/source/i18n/<screenId>.json`,实现翻译时参考原始 JSON。
60
+ - `agent/screenshots/`:agent live-page 探索后写入的首屏、滚动分段和交互分支截图;`p2f generate` 不直接写截图。
61
+ - `agent/manifest.json`:agent 产物清单;截图、探索日志、说明文件和修改的 Flutter 文件都必须登记。
62
+ - `agent/runtime/agent-screenshot-exploration.json`:agent live-page 探索日志,记录截图、尝试过的动作和不可达状态。
63
+ - `cli/runtime/dom.json`:页面 DOM 结构,大文件,按需读取。
64
+ - `cli/runtime/accessibility.json`:轻量可访问性树,按需读取。
65
+ - `cli/runtime/computed-styles.json`:关键元素样式信息;新版记录直接文本、元素范围和 CSS 字体属性,供 text-style-map 使用,按需读取。
66
+ - `cli/runtime/visible-text.txt`:页面可见文案。
67
+ - `cli/runtime/interactions.candidate.json`:运行态 DOM 和源码/文档派生的可交互候选,包含 selector、类型、文案、置信度和 bounds;只作为 agent 探索线索,按需读取。
68
+ - `cli/runtime/interactions.json`:CLI 占位文件,保留兼容。
69
+ - `cli/analysis/feature-coverage.md`:从 Vue 源码和原型产品文档整理出的功能、状态、交互覆盖清单,用来指导 agent 补齐截图。
70
+ - `cli/analysis/feature-coverage.json`:feature coverage 机器可读版本,包含 source/doc 派生交互及运行覆盖状态。
71
+ - `cli/analysis/screenshot-exploration-plan.md`:agent 截图探索任务书,定义目标 URL、viewport、候选交互、预期状态和探索日志格式。
72
+ - `cli/analysis/screenshot-exploration-plan.json`:截图探索计划机器可读版本。
73
+ - `cli/analysis/agent-screenshot-audit.md`:执行 `p2f screenshots-audit` 后生成的截图审计报告,标出重复图和疑似平台壳层截图。
74
+ - `cli/analysis/agent-screenshot-audit.json`:截图审计机器可读版本。
75
+ - `cli/analysis/page-summary.md`:页面摘要和语义概览。
76
+ - `cli/analysis/ui-structure.md`:页面结构树。
77
+ - `cli/analysis/interaction-model.md`:交互模型。
78
+ - `cli/analysis/text-style-map.md`:由新版 `cli/runtime/computed-styles.json` 生成的原型 CSS 字号/字重/行高到 YouFi `themeService.textStyles.*` 映射,实现文本样式前必须先读。
79
+ - `cli/analysis/text-style-map.json`:text style map 机器可读版本。
80
+ - `cli/analysis/flutter-mapping.md`:Flutter 页面存在性判断、证据明细和低置信复核任务。
81
+ - `cli/analysis/implementation-plan.md`:agent 实现计划。
82
+ - `cli/output/generate-report.md`:本次运行报告。
83
+
84
+ 项目级共享产物:
85
+
86
+ - `.p2f-workspace/project/flutter-project.json`:Flutter 项目扫描快照,包含 profile、模块、路由、公共组件、主题 token 和资源索引。每次 `p2f generate` 在 `read-flutter-docs` 阶段更新同一份,不写入单页页面目录。
87
+
88
+ ## 主题文件
89
+
90
+ 原型主题文件:
91
+
92
+ - `.p2f-workspace/prd-source/src/style.scss`
93
+ - `.p2f-workspace/prd-source/src/tokens/design-tokens.js`
94
+
95
+ YouFi App 默认主题文件:
96
+
97
+ - `lib/app/services/theme_service.dart`
98
+
99
+ YouFi App 默认路由文件:
100
+
101
+ - `lib/app/routes/utils/app_routes.dart`:`AppRoutes` 路由常量。
102
+ - `lib/app/routes/utils/app_pages.dart`:`GetPage` 页面注册。
103
+
104
+ 项目结构变更时,以 `cli/analysis/flutter-mapping.md` 和 `.p2f-workspace/project/flutter-project.json` 中检测到的真实路由文件为准。
105
+
106
+ 实现页面时必须先读取 `cli/analysis/text-style-map.md`,按其中映射选择 `themeService.textStyles.*`;颜色必须优先使用 `themeService.colors.*`。不要为了贴合截图硬编码 `Color(0x...)`、十六进制颜色、字体大小或行高;确实没有对应 token 时,先在报告或实现说明里标记差异。
107
+
108
+ ## Fail-Fast 规则
109
+
110
+ 遇到关键失败必须停止,并向用户说明阶段、动作、原因、已完成步骤、未完成步骤和建议方案。
111
+
112
+ 关键失败包括:
113
+
114
+ - PRD 仓库无法 clone、fetch 或 reset。
115
+ - PRD 页面 URL 无法定位到 Vue 页面入口。
116
+ - Playwright 无法打开页面或完成基础采集。
117
+ - 页面核心状态、Tab、弹窗、下拉等关键交互无法确认。
118
+ - Flutter 项目结构、路由、主题或已有页面扫描失败。
119
+ - 无法判断目标 Flutter 页面是否已经存在。
120
+ - 数据产物缺失或明显不完整。
121
+
122
+ 不要基于缺失截图、缺失 JSON 或不完整源码范围继续实现页面。
123
+
124
+ ## Agent 实现规则
125
+
126
+ - 新建文件前必须判断 Flutter 页面是否已经存在,不能只靠文件名,必须结合路由、页面标题、Widget class、模块目录和 `flutter-mapping.md` 数据。
127
+ - `flutter-mapping.md` 的页面存在性状态分为 `exists`、`uncertain`、`missing`。当状态是 `uncertain` 或 `agentReviewRequired=true` 时,agent 必须先完成复核任务,不能直接修改候选页面或创建新页面。
128
+ - 已存在页面时,在已有文件上扩展,保留业务结构、路由、状态管理和依赖注入。
129
+ - 不存在页面时,按 YouFi 现有模块、路由、命名和目录风格新增。
130
+ - 新增或修改路由时,使用 `flutter-mapping.md` 中检测到的真实路由文件;默认是 `lib/app/routes/utils/app_routes.dart` 和 `lib/app/routes/utils/app_pages.dart`。
131
+ - 如果用户指定页面入口文件或模块,agent 实现时以用户指定为准,并在实现说明中记录。
132
+ - 优先复用 App 已有模块、公共组件、路由、控制器、翻译和资源。
133
+ - 颜色必须优先使用 `themeService.colors.*`,文字样式必须优先使用 `themeService.textStyles.*`。
134
+ - 单页内部复用的组件放在目标模块内,不轻易抽到公共层。
135
+ - 不为了贴合截图硬编码颜色、字体大小、行高或随意新增设计 token。
136
+ - 高风险修改必须先让用户确认,包括 `pubspec.yaml`、全局路由架构、全局主题、`analysis_options.yaml`、替换已有页面业务结构。
137
+ - 实现后由 agent 在 YouFi 项目里运行必要检查,例如 `flutter analyze`。
138
+
139
+ ## 审阅顺序
140
+
141
+ agent 或架构师不应只看最终计划,建议按顺序审阅:
142
+
143
+ 1. `main.md`:确认本次任务索引完整。
144
+ 2. `cli/source/route-info.json` 和 `cli/source/vue-entry.txt`:确认 URL 定位正确。
145
+ 3. `cli/analysis/feature-coverage.md`:确认源码/产品文档中识别到的功能、状态、交互。
146
+ 4. `cli/analysis/screenshot-exploration-plan.md`:agent 先打开 live prototype 主动探索并补齐截图。
147
+ 5. `p2f screenshots-audit --url "<页面链接>"`:确认没有重复图和疑似平台壳层截图。
148
+ 6. `agent/screenshots/` 和 `agent/runtime/agent-screenshot-exploration.json`:确认首屏、滚动和关键交互状态覆盖完整,无法覆盖的状态有原因记录。
149
+ 7. `agent/manifest.json`:确认 agent 生成的截图、日志、说明文件和 Flutter 修改文件已登记。
150
+ 8. `cli/analysis/page-summary.md`:确认页面类型和核心内容理解正确。
151
+ 9. `cli/analysis/ui-structure.md`:确认页面结构拆分合理。
152
+ 10. `cli/analysis/interaction-model.md` 和 `cli/runtime/interactions.json`:确认 Tab、弹窗、展开项、输入状态等关键交互是否覆盖。
153
+ 11. `cli/analysis/flutter-mapping.md`:确认目标 Flutter 页面是否判断正确;若状态为 `uncertain`,先执行其中的 Agent 复核任务。
154
+ 12. `cli/analysis/implementation-plan.md`:确认目标文件、风险点、不确定项和实现范围。
155
+
156
+ ## Agent 使用方式
157
+
158
+ 完成 `p2f init` 后,直接对 agent 说:
159
+
160
+ ```text
161
+ 帮我用 p2f 还原 xxx 页面,页面链接为:xxxxx
162
+ ```
163
+
164
+ Agent 应执行:
165
+
166
+ ```bash
167
+ p2f sync
168
+ p2f generate "<页面链接>"
169
+ ```
170
+
171
+ 如果需要人工指定页面名,执行 `p2f generate --page "<页面名>" "<页面链接>"`。然后读取 `.p2f-workspace/pages/<task-name>/main.md`,先检查 `cli/source/product-docs-index.md`、`cli/source/prototype-i18n.md` 和 `cli/analysis/feature-coverage.md`,再按 `cli/analysis/screenshot-exploration-plan.md` 打开 live prototype 自动探索并补齐 `agent/screenshots/`,最后按需使用 JSON、源码范围和 `cli/analysis/implementation-plan.md` 按 YouFi 项目规范实现 Dart 页面,并维护 `agent/manifest.json`。p2f CLI 不直接生成 Dart 页面代码。
172
+
173
+ ## 截图规则
174
+
175
+ - agent 截图必须使用 `.phone-screen` 元素截图,例如 Playwright 的 `page.locator('.phone-screen').screenshot({ path })`。
176
+ - agent 必须打开 `cli/analysis/screenshot-exploration-plan.md` 中的实际探索链接,不要回退到原始链接;实际探索链接已附加 `is_mobile=1&app_simulator=1`。
177
+ - 禁止保存整页截图或浏览器 viewport 截图;如果图片中出现 TradeApp Workflow Hub 左侧菜单、搜索框、Docs/UI 规范/交互原型/设计稿入口,说明截错了,必须删除重截。
178
+ - 如果截图内容是登录过期、重登上下文失效、权限拦截、错误账号、错误路由等非目标态,必须在 `agent/runtime/agent-screenshot-exploration.json` 里标记为 `invalid-context` 或 `superseded`,并记录替代基准。
179
+ - 用户提供的手动截图或明确确认的目标态优先级高于自动采集到的非目标态;记录到 `manualBaselines` 后按它实现。
180
+ - 同一交互后 UI 完全一致时不要保留重复 PNG;在 `agent/runtime/agent-screenshot-exploration.json` 中记录为 `no-effect` 或 `duplicate`。
181
+ - 截图完成后运行 `p2f screenshots-audit --url "<页面链接>"`,根据 `cli/analysis/agent-screenshot-audit.md` 删除重复图并重截错误图。
182
+ - agent 生成或修改的所有文件必须登记到 `agent/manifest.json`。
183
+
184
+ ## 当前限制
185
+
186
+ - CLI 候选交互依赖 DOM 和 CSS 启发式,只能作为 agent 探索线索,复杂自定义组件需要 agent 在 live page 中复核。
187
+ - agent 截图探索依赖原型页面稳定加载;原型接口、登录态或网络不稳定会影响采集结果。
188
+ - CLI 不直接修改 `pubspec.yaml`、路由或 Dart 页面;这些由 agent 基于数据和用户确认实现。
189
+ - 设计 token 候选是启发式结果,最终颜色和文字样式必须回到 `themeService` 里确认。
190
+
191
+ ## 常见问题
192
+
193
+ ### 为什么不让 CLI 直接写 Dart?
194
+
195
+ 页面还原涉及已有页面复用、模块归属、路由、主题 token、业务状态和交互细节。纯 CLI 生成 Dart 的效果不稳定,容易偏离 YouFi 项目规范。p2f 的职责是准备还原数据和实现计划,真正实现由 agent 根据数据和项目规范完成。
196
+
197
+ ### 为什么需要 Playwright?
198
+
199
+ PRD 原型页面的真实结构、样式和交互状态只有运行后才能看到。CLI 使用 Playwright 打开真实页面、等待渲染稳定并读取 DOM/样式/文本;截图和交互分支由 agent 后续在 live page 中主动探索。
200
+
201
+ ### `.p2f-workspace` 是否需要提交?
202
+
203
+ 不建议提交。它是本地运行产物、截图、分析报告和页面目录,已经加入 `.gitignore`。
@@ -0,0 +1,118 @@
1
+ # 维护与发布
2
+
3
+ 本文档说明 p2f CLI 的更新、发布和本地开发流程。
4
+
5
+ ## 更新 CLI
6
+
7
+ p2f 使用公司 GitLab tag 作为版本来源。检查新版本:
8
+
9
+ ```bash
10
+ p2f update --check
11
+ ```
12
+
13
+ 从最新 tag 重新安装 p2f CLI:
14
+
15
+ ```bash
16
+ p2f update
17
+ ```
18
+
19
+ `p2f update` 会执行全局 npm 安装,效果等同于重新运行:
20
+
21
+ ```bash
22
+ npm install -g git+ssh://git@code.nexita.net/inno/youfi/client/prd-to-flutter.git#<最新tag>
23
+ ```
24
+
25
+ 如果 p2f CLI 的 GitLab 安装来源变更,可以临时指定:
26
+
27
+ ```bash
28
+ p2f update --repo git@code.nexita.net:inno/youfi/client/prd-to-flutter.git
29
+ ```
30
+
31
+ ## 发布
32
+
33
+ CLI 修改完成后,在仓库根目录执行:
34
+
35
+ ```bash
36
+ npm run release
37
+ ```
38
+
39
+ 默认递增 patch 版本,例如 `0.1.0` -> `0.1.1`,并自动完成:
40
+
41
+ 1. 更新 `package.json` 和 `package-lock.json` 版本。
42
+ 2. 执行 `npm run build`、`npm run typecheck`、`git diff --check`、`npm pack --dry-run`。
43
+ 3. `git add -A` 并提交 `chore: release vX.Y.Z`。
44
+ 4. 创建 annotated tag `vX.Y.Z`。
45
+ 5. 推送当前分支和 tag 到 `origin`。
46
+
47
+ 递增 minor 或 major:
48
+
49
+ ```bash
50
+ npm run release:minor
51
+ npm run release:major
52
+ ```
53
+
54
+ 只查看下一版本,不写文件、不提交、不推送:
55
+
56
+ ```bash
57
+ npm run release -- --dry-run
58
+ ```
59
+
60
+ ## 发布到 npmjs.com
61
+
62
+ 先确认本机已经登录 npm:
63
+
64
+ ```bash
65
+ npm login --registry https://registry.npmjs.org/
66
+ npm whoami --registry https://registry.npmjs.org/
67
+ ```
68
+
69
+ 发布前先运行 dry-run,检查构建、类型检查和最终打包文件:
70
+
71
+ ```bash
72
+ npm run publish:npm
73
+ ```
74
+
75
+ 确认无误后发布到 npmjs.com:
76
+
77
+ ```bash
78
+ npm run publish:npm -- --publish
79
+ ```
80
+
81
+ 如果 npm 账号开启了双因素认证:
82
+
83
+ ```bash
84
+ npm run publish:npm -- --publish --otp <一次性验证码>
85
+ ```
86
+
87
+ 脚本会默认发布到 `https://registry.npmjs.org/`,并在真实发布前检查当前版本是否已经存在。若版本已存在,需要先更新 `package.json` 和 `package-lock.json` 的版本,或先运行上面的 Git release 流程。
88
+
89
+ ## 本地开发
90
+
91
+ ```bash
92
+ git clone <this-repo>
93
+ cd p2f
94
+ npm install
95
+ npm run build
96
+ npm link
97
+ ```
98
+
99
+ 常用检查:
100
+
101
+ ```bash
102
+ npm run typecheck
103
+ npm run build
104
+ ```
105
+
106
+ ## Profile 与 Scanner 维护
107
+
108
+ `p2f generate` 默认使用内置 `youfi-default` profile。路径变化优先通过项目根目录的 `p2f.config.json` 或 `.p2f/config.json` 解决;框架语法变化再新增 scanner adapter。
109
+
110
+ 判断方式:
111
+
112
+ - 路径变了,但模式没变:改 profile/config。
113
+ - `GetPage` 还在,但 `app_pages.dart` 换位置:配置 `flutter.routeFiles`。
114
+ - `lib/app/modules` 变成 `lib/features`:配置 `flutter.moduleRoots`。
115
+ - GetX 换成 GoRouter/AutoRoute:新增 route parser adapter。
116
+ - 原型 registry 从 `src/config/*.js` 换成 Vue Router 自动注册:新增 prototype page locator adapter。
117
+
118
+ 当前 `flutter.routeFiles.parser` 只支持 `getx`。配置成其他 parser 时,CLI 会 fail-fast,提示升级 CLI 或新增 adapter。