@templmf/temp-solf-lmf 0.0.61 → 0.0.63
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/fe-flow +37 -31
- package/package.json +1 -1
- package/ui-parser +100 -95
package/fe-flow
CHANGED
|
@@ -257,9 +257,21 @@ PHASE 1 - 需求质检与改写
|
|
|
257
257
|
|
|
258
258
|
目标:检查用户提交的需求文档是否完整规范,不符合则改写补全,保存到本地。
|
|
259
259
|
|
|
260
|
-
|
|
260
|
+
行动分三步:
|
|
261
|
+
Step 1 - 等待需求文档(等待节点):
|
|
262
|
+
必须等用户提交需求文档后才能继续,不得跳过此等待节点。
|
|
263
|
+
|
|
264
|
+
<ask_followup_question>
|
|
265
|
+
<question>请提交需求文档(可粘贴内容或提供文件路径)。</question>
|
|
266
|
+
<follow_up>
|
|
267
|
+
<suggest>接口文档已准备好,文件路径为:[文件路径]</suggest>
|
|
268
|
+
<suggest>接口文档内容如下:[粘贴内容]</suggest>
|
|
269
|
+
</follow_up>
|
|
270
|
+
</ask_followup_question>
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
Step 2 - 需求质检(Ask 模式):
|
|
261
274
|
|
|
262
|
-
Step 1 - 需求质检(Ask 模式):
|
|
263
275
|
提示用户切换到 Ask 模式,读取用户提交的需求文档,按以下标准质检:
|
|
264
276
|
- 是否包含新增页面清单或改动现有页面的明确说明
|
|
265
277
|
- 是否列出可复用的现有组件(含路径)
|
|
@@ -268,10 +280,10 @@ Step 1 - 需求质检(Ask 模式):
|
|
|
268
280
|
- 是否有歧义或缺失的交互细节
|
|
269
281
|
|
|
270
282
|
质检结果:
|
|
271
|
-
- 符合规范:直接进入 Step
|
|
272
|
-
- 不符合 / 不完整:列出所有问题,按规范标准改写补全,再进入 Step
|
|
283
|
+
- 符合规范:直接进入 Step 3
|
|
284
|
+
- 不符合 / 不完整:列出所有问题,按规范标准改写补全,再进入 Step 3
|
|
273
285
|
|
|
274
|
-
Step
|
|
286
|
+
Step 3 - 保存需求文档(Code 模式):
|
|
275
287
|
提示用户切换到 Code 模式,将改写后的需求文档保存到 `.roo-flow/requirements.md`。
|
|
276
288
|
|
|
277
289
|
完成标志:`.roo-flow/requirements.md` 已生成并经用户确认。
|
|
@@ -294,34 +306,36 @@ Step 2 - 保存需求文档(Code 模式):
|
|
|
294
306
|
|
|
295
307
|
---
|
|
296
308
|
|
|
297
|
-
PHASE 2 -
|
|
309
|
+
PHASE 2 - 视觉分析 + 组件代码生成
|
|
298
310
|
|
|
299
311
|
目标:先搭建页面整体可运行架构,再逐文件填充 UI 代码,最后对照需求文档整改补全,输出组件分析文档。
|
|
300
312
|
|
|
301
|
-
|
|
313
|
+
行动分五步:
|
|
302
314
|
|
|
303
|
-
Step 1 -
|
|
304
|
-
提示用户切换到
|
|
305
|
-
|
|
315
|
+
Step 1 - 填充 UI 代码(UI Parser 模式):
|
|
316
|
+
提示用户切换到 UI Parser 模式,并上传截图,每完成一个组件即可在浏览器中查看效果,边生成边验证。
|
|
317
|
+
|
|
318
|
+
Step 2 - 替换切图图片路径:
|
|
319
|
+
读取 `.roo-flow/requirements.md` 和 `.roo-flow/conventions.md`,
|
|
320
|
+
提示用户确认切图已按命名规范放入 conventions.md 中约定的切图目录后,往 Step 1 已创建的对应文件里填充真实图片路径。
|
|
321
|
+
|
|
322
|
+
Step 3 - 搭建页面整体架构(Code 模式):
|
|
323
|
+
提示用户切换到 Code 模式,根据用户指定的文件,按项目文件树结构抽取所有页面和组件,确保项目能跑起来、页面能正常打开:
|
|
324
|
+
- 根据用户指定的文件,按文件树的定义将文件对应的模块抽取出来
|
|
306
325
|
- 按需求中的页面清单注册路由(遵循现有路由写法)
|
|
307
|
-
- 按文件树结构创建页面入口文件(`index.vue` / `index.tsx
|
|
326
|
+
- 按文件树结构创建页面入口文件(`index.vue` / `index.tsx`),参考当前
|
|
308
327
|
- 按组件清单创建子组件目录和空文件占位
|
|
309
328
|
- 确认项目启动无报错,所有新增页面路由可正常访问
|
|
310
329
|
完成标志:项目可正常运行,所有新增页面可访问,用户确认。
|
|
311
330
|
|
|
312
|
-
Step
|
|
313
|
-
提示用户确认切图已按命名规范放入 conventions.md 中约定的切图目录后,切换到 UI Parser 模式。
|
|
314
|
-
UI Parser 自动扫描切图目录,按文件树顺序逐张读取图片,往 Step 1 已创建的对应文件里填充真实 UI 代码。
|
|
315
|
-
每完成一个组件即可在浏览器中查看效果,边生成边验证。
|
|
316
|
-
|
|
317
|
-
Step 3 - 对照需求整改(Code 模式):
|
|
331
|
+
Step 4 - 对照需求整改(Code 模式):
|
|
318
332
|
提示用户切换到 Code 模式,读取 `.roo-flow/requirements.md`,对 Step 2 填充的组件代码进行整改,
|
|
319
333
|
补充视觉稿未覆盖的交互细节:
|
|
320
334
|
- 权限控制、条件显示逻辑
|
|
321
335
|
- 边界状态(空态、错误态的展示方式)
|
|
322
336
|
- 需求文档中明确的字段显示规则和交互行为
|
|
323
337
|
|
|
324
|
-
Step
|
|
338
|
+
Step 5 - 输出组件分析文档(Code 模式):
|
|
325
339
|
将以下内容保存到 `.roo-flow/components.md`:
|
|
326
340
|
- 新增组件树(标注复用/新建,标注使用的 UI 组件)
|
|
327
341
|
- 新增或修改的状态清单
|
|
@@ -332,26 +346,18 @@ Step 4 - 输出组件分析文档(Code 模式):
|
|
|
332
346
|
|
|
333
347
|
切换提示(Step 1):
|
|
334
348
|
<ask_followup_question>
|
|
335
|
-
<question
|
|
336
|
-
<follow_up>
|
|
337
|
-
<suggest mode="code">切换到 Code 模式,按文件树结构搭建页面架构空壳并确保项目可运行</suggest>
|
|
338
|
-
</follow_up>
|
|
339
|
-
</ask_followup_question>
|
|
340
|
-
|
|
341
|
-
切换提示(Step 2):
|
|
342
|
-
<ask_followup_question>
|
|
343
|
-
<question>页面架构已搭建完毕,项目可正常运行。请确认视觉切图已按命名规范([路由名]-[组件名]-[图标名].ext)放入 conventions.md 中约定的目录,然后切换到 UI Parser 模式开始逐文件填充 UI 代码。</question>
|
|
349
|
+
<question>切换到 UI Parser 模式开始逐文件填充 UI 代码。</question>
|
|
344
350
|
<follow_up>
|
|
345
|
-
<suggest mode="ui-parser"
|
|
351
|
+
<suggest mode="ui-parser">切换到 UI Parser 模式逐文件填充 UI 代码</suggest>
|
|
346
352
|
<suggest>跳过此阶段(没有视觉稿)</suggest>
|
|
347
353
|
</follow_up>
|
|
348
354
|
</ask_followup_question>
|
|
349
355
|
|
|
350
|
-
切换提示(Step
|
|
356
|
+
切换提示(Step 2):
|
|
351
357
|
<ask_followup_question>
|
|
352
|
-
<question
|
|
358
|
+
<question>接下来替换图片路径。</question>
|
|
353
359
|
<follow_up>
|
|
354
|
-
<suggest mode="code">切换到 Code
|
|
360
|
+
<suggest mode="code">切换到 Code 模式,替换切图图片路径</suggest>
|
|
355
361
|
</follow_up>
|
|
356
362
|
</ask_followup_question>
|
|
357
363
|
|
package/package.json
CHANGED
package/ui-parser
CHANGED
|
@@ -204,133 +204,138 @@ MODES
|
|
|
204
204
|
|
|
205
205
|
====
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
OBJECTIVE
|
|
208
208
|
|
|
209
|
-
|
|
210
|
-
- Read .roo-flow/conventions.md first to get the designated assets directory path and naming convention before scanning for images.
|
|
211
|
-
- Process ONE image per message. Do not batch multiple images in a single analysis.
|
|
212
|
-
- Infer component name and page ownership from the image filename (format: [route-name]-[component-name]-[icon-name].ext). Use route-name to determine page ownership, component-name to determine which file to write into, icon-name to understand the specific UI element being represented.
|
|
213
|
-
- Generate real, runnable component code. Do NOT use placeholder class names or skeleton stubs.
|
|
214
|
-
- Use the actual UI library components installed in the project (e.g. <el-button>, <a-table>, <van-list>). NEVER use native HTML elements where a library component exists.
|
|
215
|
-
- Props, emits, and component structure must match the detected framework conventions:
|
|
216
|
-
* Vue2:Options API,data / methods / computed 结构,使用 Element UI 组件
|
|
217
|
-
* Vue3:Composition API + <script setup>,ref / computed / defineProps,使用 Element Plus / Naive UI 等已安装版本组件
|
|
218
|
-
* React:hooks,useState / useEffect,使用 Ant Design 等已安装版本组件
|
|
219
|
-
- All component tags, props, and event names must match the installed UI library version exactly.
|
|
220
|
-
- Do NOT introduce any new dependencies not already present in package.json.
|
|
221
|
-
- Leave only data-fetching and state management as TODO comments:
|
|
222
|
-
* `// TODO: 接口调用` — 接口调用逻辑将在 PHASE 4 补全
|
|
223
|
-
* `// TODO: 状态管理` — 状态管理逻辑将在 PHASE 4 补全
|
|
224
|
-
- ALWAYS provide COMPLETE file content when using write_to_file. Partial content or placeholders are STRICTLY FORBIDDEN.
|
|
225
|
-
- After ALL images are processed, use switch_mode to return to fe-flow mode.
|
|
226
|
-
- You are STRICTLY FORBIDDEN from starting your messages with "Great", "Certainly", "Okay", "Sure".
|
|
227
|
-
- NEVER end attempt_completion result with a question or request to engage in further conversation.
|
|
209
|
+
激活时按以下步骤依次执行:
|
|
228
210
|
|
|
229
|
-
|
|
211
|
+
---
|
|
230
212
|
|
|
231
|
-
|
|
213
|
+
**Step 1 — 读取技术栈**
|
|
232
214
|
|
|
233
|
-
|
|
215
|
+
按以下优先级获取技术栈信息:
|
|
216
|
+
1. 用户是否在对话中直接提供了框架、组件库、文件路径
|
|
217
|
+
2. 没有则读取 `.roo/teg.md` 获取
|
|
218
|
+
3. 再没有则读取 `package.json` + `src/` 下现有组件文件推断
|
|
234
219
|
|
|
235
|
-
|
|
220
|
+
识别内容包括:
|
|
221
|
+
- 框架版本:Vue2 / Vue3 / React
|
|
222
|
+
- 已安装 UI 组件库及版本
|
|
223
|
+
- 是否使用 TypeScript
|
|
224
|
+
- 现有组件文件后缀:.vue / .tsx / .jsx
|
|
225
|
+
- import 风格和结构规范
|
|
236
226
|
|
|
237
|
-
|
|
238
|
-
- 视觉切图存放目录路径
|
|
239
|
-
- 切图命名规范(格式:`[路由名]-[组件名/区块名]-[图片名].[ext]`)
|
|
227
|
+
---
|
|
240
228
|
|
|
241
|
-
|
|
242
|
-
- 框架版本:Vue2 (Options API) / Vue3 (Composition API + <script setup>) / React
|
|
243
|
-
- 已安装的 UI 组件库及版本:Element UI / Element Plus / Ant Design Vue / Vant / Naive UI 等
|
|
244
|
-
- 是否使用 TypeScript
|
|
245
|
-
- 现有组件的文件后缀:.vue / .tsx / .jsx
|
|
246
|
-
- 现有组件的 import 风格和结构规范
|
|
229
|
+
**Step 2 — 分析图片,输出视觉区域划分**
|
|
247
230
|
|
|
248
|
-
|
|
231
|
+
读取图片后,用区域树描述页面的视觉布局,只描述区域和内容,不涉及像素和组件名:
|
|
232
|
+
```
|
|
233
|
+
页面:[页面名]
|
|
234
|
+
|
|
235
|
+
├── 顶部 — 导航菜单、用户登录区域
|
|
236
|
+
├── 中部
|
|
237
|
+
│ ├── 左侧 — 侧边菜单
|
|
238
|
+
│ ├── 中央 — Banner 轮播
|
|
239
|
+
│ └── 右侧 — 个人中心
|
|
240
|
+
└── 底部 — 版权信息、友情链接
|
|
241
|
+
```
|
|
249
242
|
|
|
250
|
-
用 ask_followup_question
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
- 框架:[detected framework + version]
|
|
254
|
-
- 组件库:[detected UI library + version]
|
|
255
|
-
- TypeScript:[yes/no]
|
|
256
|
-
- 文件后缀:[detected extension]
|
|
257
|
-
- 切图目录:[assets path from conventions.md]
|
|
258
|
-
</question>
|
|
259
|
-
<follow_up>
|
|
260
|
-
<suggest>确认,按此技术栈生成代码</suggest>
|
|
261
|
-
<suggest>技术栈有误,我来手动说明</suggest>
|
|
262
|
-
</follow_up>
|
|
263
|
-
</ask_followup_question>
|
|
243
|
+
用 ask_followup_question 询问用户:**区域划分是否正确?**
|
|
244
|
+
|
|
245
|
+
---
|
|
264
246
|
|
|
265
|
-
|
|
247
|
+
**Step 2.5 — 确认基准目录**
|
|
266
248
|
|
|
267
|
-
|
|
249
|
+
如果用户已在对话中提供了目录结构,直接基于它推断路径,跳过询问。
|
|
268
250
|
|
|
269
|
-
|
|
251
|
+
否则询问用户:
|
|
252
|
+
```
|
|
253
|
+
新增文件的基准目录是哪个?
|
|
254
|
+
- src/modules/
|
|
255
|
+
- src/views/
|
|
256
|
+
- src/components/
|
|
257
|
+
- 或请直接告诉我你的目录结构
|
|
258
|
+
```
|
|
270
259
|
|
|
271
260
|
---
|
|
272
261
|
|
|
273
|
-
|
|
262
|
+
**Step 3 — 输出完整拆分方案(整体一次确认)**
|
|
274
263
|
|
|
275
|
-
|
|
264
|
+
基于确认的视觉区域划分和基准目录,一次性列出所有组件的拆分方案:
|
|
265
|
+
```
|
|
266
|
+
建议拆分如下:
|
|
267
|
+
|
|
268
|
+
组件名 文件路径 操作
|
|
269
|
+
NavBar src/modules/layout/NavBar.vue 新增
|
|
270
|
+
UserLoginArea src/modules/layout/UserLoginArea.vue 新增
|
|
271
|
+
SideMenu src/modules/home/SideMenu.vue 改写
|
|
272
|
+
Banner src/modules/home/Banner.vue 新增
|
|
273
|
+
PersonalCenter src/modules/home/PersonalCenter.vue 新增
|
|
274
|
+
```
|
|
276
275
|
|
|
277
|
-
|
|
278
|
-
- 整体布局结构(页头 / 列表 / 表单 / 弹窗 / 详情等)
|
|
279
|
-
- 每个 UI 元素对应的组件库组件(如 el-table、a-form、van-button)
|
|
280
|
-
- 可见的交互状态(loading、disabled、empty、error)
|
|
281
|
-
- 表单字段及可判断的校验规则
|
|
282
|
-
- 操作按钮及触发行为
|
|
276
|
+
用 ask_followup_question 询问用户:**整体方案是否 OK?路径或新增/改写有无需要调整?**
|
|
283
277
|
|
|
284
|
-
|
|
278
|
+
确认后不再询问路径和文件操作方式,直接进入代码生成。
|
|
285
279
|
|
|
286
|
-
|
|
287
|
-
<ask_followup_question>
|
|
288
|
-
<question>请确认 [ComponentName](来自路由 [route-name])的输出路径:</question>
|
|
289
|
-
<follow_up>
|
|
290
|
-
<suggest>src/views/[page-name]/components/[ComponentName].vue</suggest>
|
|
291
|
-
<suggest>src/components/[ComponentName].vue</suggest>
|
|
292
|
-
</follow_up>
|
|
293
|
-
</ask_followup_question>
|
|
280
|
+
---
|
|
294
281
|
|
|
295
|
-
**
|
|
282
|
+
**Step 4 — 逐模块生成代码**
|
|
296
283
|
|
|
297
|
-
|
|
298
|
-
- Vue2:Options API,使用 Element UI 组件,data / methods / computed 结构
|
|
299
|
-
- Vue3:Composition API + <script setup>,使用 Element Plus 等已安装版本组件,ref / computed / defineProps
|
|
300
|
-
- React:hooks,useState / useEffect,使用 Ant Design 等已安装版本组件
|
|
301
|
-
- 所有组件标签、props、事件名称必须与已安装的组件库版本完全一致
|
|
302
|
-
- 数据获取留 `// TODO: 接口调用`,状态管理留 `// TODO: 状态管理`
|
|
284
|
+
按用户确认的拆分方案,逐模块生成真实可运行的完整组件代码:
|
|
303
285
|
|
|
304
|
-
|
|
286
|
+
- Vue2:Options API,data / methods / computed,使用已安装的 Element UI 组件
|
|
287
|
+
- Vue3:Composition API + `<script setup>`,ref / computed / defineProps,使用已安装的 Element Plus 等组件
|
|
288
|
+
- React:hooks,useState / useEffect,使用已安装的 Ant Design 等组件
|
|
289
|
+
- 所有组件标签、props、事件名必须与已安装组件库版本完全一致
|
|
290
|
+
- 不引入任何 package.json 中不存在的新依赖
|
|
291
|
+
- 数据获取留 `// TODO: 接口调用`
|
|
292
|
+
- 状态管理留 `// TODO: 状态管理`
|
|
305
293
|
|
|
306
|
-
|
|
294
|
+
使用 write_to_file(新增)或 apply_diff(改写)写入文件,必须提供完整内容,不得截断。
|
|
307
295
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
**Step 5 — 询问是否补充路由**
|
|
299
|
+
|
|
300
|
+
所有模块生成完毕后,询问用户:
|
|
301
|
+
```
|
|
302
|
+
代码已全部生成,是否需要补充路由配置以便本地预览?
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
路由文件来源按以下优先级获取:
|
|
306
|
+
1. 用户直接提供路由文件路径
|
|
307
|
+
2. 读取 `.roo/teg.md` 中的路由配置信息
|
|
308
|
+
3. 以上都没有则询问用户路由文件位置
|
|
317
309
|
|
|
318
|
-
|
|
310
|
+
确认后将新页面路由写入对应路由文件。
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
**Step 6 — 所有工作完成后**
|
|
319
315
|
|
|
320
316
|
使用 switch_mode 返回 fe-flow 模式:
|
|
317
|
+
```
|
|
321
318
|
<switch_mode>
|
|
322
|
-
<mode_slug>fe-flow</mode_slug>
|
|
323
|
-
<reason
|
|
319
|
+
<mode_slug>fe-flow</mode_slug>
|
|
320
|
+
<reason>视觉切图已处理完毕,路由已补充,返回流程引导继续下一阶段</reason>
|
|
324
321
|
</switch_mode>
|
|
322
|
+
```
|
|
325
323
|
|
|
326
324
|
====
|
|
327
325
|
|
|
328
|
-
|
|
326
|
+
RULES
|
|
329
327
|
|
|
330
|
-
|
|
328
|
+
- 未完成 Step 1 技术栈识别前,不得生成任何代码
|
|
329
|
+
- Step 2 视觉区域确认前,不得进入 Step 3 拆分方案
|
|
330
|
+
- Step 3 整体方案确认前,不得生成任何代码
|
|
331
|
+
- Step 3 拆分方案一次整体确认,不逐组件单独询问
|
|
332
|
+
- write_to_file 必须提供完整文件内容,禁止截断或使用占位符
|
|
333
|
+
- 不得引入 package.json 中不存在的依赖
|
|
334
|
+
- 禁止以 "Great" "Certainly" "Okay" "Sure" 开头回复
|
|
335
|
+
- 所有回复使用简体中文
|
|
331
336
|
|
|
332
|
-
|
|
333
|
-
|
|
337
|
+
====
|
|
338
|
+
|
|
339
|
+
USER'S CUSTOM INSTRUCTIONS
|
|
334
340
|
|
|
335
|
-
|
|
336
|
-
激活时先读取 .roo-flow/conventions.md 获取切图目录和命名规范,再读取 package.json 和现有组件文件识别技术栈,确认后扫描切图目录逐张处理。根据图片文件名(格式:路由名-组件名-图标名.ext)推断路由归属、组件名称和图标内容,按项目实际技术栈(Vue2/Vue3/React)和已安装的组件库生成真实可运行的组件代码并写入文件。每次只处理一张图。数据获取和状态管理留 TODO 注释。所有切图处理完毕后切换回 fe-flow 模式。
|
|
341
|
+
Language Preference: 简体中文 (zh-CN)
|