visual-spec 0.1.3 → 0.1.4
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/docs/en-US/getting-started.md +4 -4
- package/docs/en-US/installation.md +4 -4
- package/docs/zh-CN/getting-started.md +4 -4
- package/docs/zh-CN/installation.md +4 -4
- package/package.json +1 -1
- package/skills/visual-spec-skill/SKILL-zh-CN.md +9 -4
- package/skills/visual-spec-skill/SKILL.md +9 -4
- package/skills/visual-spec-skill/prompts/harness/post_impl_verify.md +34 -0
- package/skills/visual-spec-skill/prompts/harness/post_verify_click_check.md +27 -0
- package/skills/visual-spec-skill/prompts/harness/post_verify_mobile_selection_check.md +23 -0
- package/skills/visual-spec-skill/prompts/harness/post_verify_price_format_check.md +26 -0
- package/skills/visual-spec-skill/prompts/harness/post_verify_stack_verify.md +43 -0
- package/skills/visual-spec-skill/prompts/vspec_detail/payment.md +3 -0
- package/skills/visual-spec-skill/prompts/vspec_new/functions.md +9 -0
- package/skills/visual-spec-skill/prompts/vspec_new/scenarios.md +20 -0
- package/skills/visual-spec-skill/prompts/vspec_verify/prototype.md +17 -0
- package/skills/visual-spec-skill/prompts/vspec_verify/prototype_auth.md +5 -0
- package/skills/visual-spec-skill/prompts/vspec_verify/prototype_layout.md +2 -0
- package/skills/visual-spec-skill/prompts/vspec_verify/prototype_order.md +8 -1
|
@@ -11,13 +11,13 @@ Install the npm package, then install the Skill into your AI editor configuratio
|
|
|
11
11
|
Install / update (npm):
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npm install -g visual-spec
|
|
14
|
+
npm install -g visual-spec@latest
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Install / update (pnpm):
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
pnpm add -g visual-spec
|
|
20
|
+
pnpm add -g visual-spec@latest
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Install / update (yarn):
|
|
@@ -25,13 +25,13 @@ Install / update (yarn):
|
|
|
25
25
|
Yarn Classic:
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
yarn global add visual-spec
|
|
28
|
+
yarn global add visual-spec@latest
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
Yarn Berry (v2+):
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
yarn dlx -p visual-spec vspec
|
|
34
|
+
yarn dlx -p visual-spec@latest vspec
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
### 2. Recommended Workflow
|
|
@@ -9,13 +9,13 @@ This package uses a script to copy the built-in Skill directory into your AI edi
|
|
|
9
9
|
### Install / Update (npm)
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
npm install -g visual-spec
|
|
12
|
+
npm install -g visual-spec@latest
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
### Install / Update (pnpm)
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
pnpm add -g visual-spec
|
|
18
|
+
pnpm add -g visual-spec@latest
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
### Install / Update (yarn)
|
|
@@ -23,13 +23,13 @@ pnpm add -g visual-spec
|
|
|
23
23
|
Yarn Classic:
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
yarn global add visual-spec
|
|
26
|
+
yarn global add visual-spec@latest
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
Yarn Berry (v2+):
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
yarn dlx -p visual-spec vspec
|
|
32
|
+
yarn dlx -p visual-spec@latest vspec
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
### Next
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
安装/更新(npm):
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npm install -g visual-spec
|
|
14
|
+
npm install -g visual-spec@latest
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
安装/更新(pnpm):
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
pnpm add -g visual-spec
|
|
20
|
+
pnpm add -g visual-spec@latest
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
安装/更新(yarn):
|
|
@@ -25,13 +25,13 @@ pnpm add -g visual-spec
|
|
|
25
25
|
Yarn Classic:
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
|
-
yarn global add visual-spec
|
|
28
|
+
yarn global add visual-spec@latest
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
Yarn Berry(v2+):
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
yarn dlx -p visual-spec vspec
|
|
34
|
+
yarn dlx -p visual-spec@latest vspec
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
### 2. 推荐流程
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
### 安装/更新(npm)
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
npm install -g visual-spec
|
|
12
|
+
npm install -g visual-spec@latest
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
### 安装/更新(pnpm)
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
pnpm add -g visual-spec
|
|
18
|
+
pnpm add -g visual-spec@latest
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
### 安装/更新(yarn)
|
|
@@ -23,13 +23,13 @@ pnpm add -g visual-spec
|
|
|
23
23
|
Yarn Classic:
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
yarn global add visual-spec
|
|
26
|
+
yarn global add visual-spec@latest
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
Yarn Berry(v2+):
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
yarn dlx -p visual-spec vspec
|
|
32
|
+
yarn dlx -p visual-spec@latest vspec
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
### 下一步
|
package/package.json
CHANGED
|
@@ -146,10 +146,14 @@ description: "将原始需求分析为可评审的视觉规格,并生成相关
|
|
|
146
146
|
4. 基于 functions/details/models/roles 生成可运行的页面原型;原型技术栈由 `/scheme.yaml` 选择(若缺失则按默认值自动创建)。
|
|
147
147
|
- 加载 `prompts/vspec_verify/prototype.md` 执行原型生成规则(必须遵循 `scheme.yaml` 技术栈;禁止只生成 html-only)。
|
|
148
148
|
5. 将原型工程写入 `/specs/prototypes/`。
|
|
149
|
-
6. 加载 `prompts/
|
|
150
|
-
7.
|
|
151
|
-
8.
|
|
152
|
-
9. 加载 `prompts/
|
|
149
|
+
6. 加载 `prompts/harness/post_verify_stack_verify.md` 检查原型前端工程是否严格符合 `/scheme.yaml` 中选择的前端栈;若输出了问题列表,则提示问题并立即结束。
|
|
150
|
+
7. 加载 `prompts/vspec_verify/validation.md` 生成场景验证网页。
|
|
151
|
+
8. 将验证页面写入 `/specs/prototypes/`,并提供 `scenario.html` 作为访问入口。
|
|
152
|
+
9. 加载 `prompts/vspec_verify/entries.md` 生成全功能入口页,并写入 `/specs/prototypes/entries.html`(禁止在菜单/Header 内提供入口)。
|
|
153
|
+
10. 加载 `prompts/harness/post_verify_mobile_selection_check.md` 检查移动端数据选择是否使用“选择页(List)选择→返回回填”,而不是下拉框 Select;若输出了问题列表,则提示问题并立即结束。
|
|
154
|
+
11. 加载 `prompts/harness/post_verify_price_format_check.md` 检查价格/金额格式是否统一(右对齐、两位小数、千位分隔符);若输出了问题列表,则提示问题并立即结束。
|
|
155
|
+
12. 加载 `prompts/harness/post_verify_click_check.md` 检查是否存在“按钮/链接点击无反应”的情况;若输出了问题列表,则提示问题并立即结束。
|
|
156
|
+
13. 加载 `prompts/harness/post_verify_verify.md` 检查原型是否覆盖关键约束(移动端/审批/CRUD/布局/登录/RBAC 等)。若输出了问题列表,则提示问题并立即结束。
|
|
153
157
|
|
|
154
158
|
### `/vspec:proto-survey`
|
|
155
159
|
|
|
@@ -208,6 +212,7 @@ description: "将原始需求分析为可评审的视觉规格,并生成相关
|
|
|
208
212
|
1. 读取 `/specs/functions/*`、`/specs/details/`、`/specs/models/*.md`、`/specs/background/dependencies.md`,并识别当前前后端技术栈与代码约定。
|
|
209
213
|
2. 加载 `prompts/vspec_impl/implement.md` 并按后端优先实现:先在 `/specs/backend/` 生成可运行后端工程(health check + 核心 API/service),再在后端 API 可用后生成前端集成对接。
|
|
210
214
|
3. 仅允许在 `/specs/` 下写代码,并尽量保持差异最小且可审查;后端必须在 `/specs/backend/`,原型前端在 `/specs/prototypes/`。
|
|
215
|
+
4. 加载 `prompts/harness/post_impl_verify.md` 检查后端是否符合 MVC 架构且测试覆盖是否完整;若输出了问题列表,则提示问题并立即结束。
|
|
211
216
|
|
|
212
217
|
### `/vspec:upgrade`
|
|
213
218
|
|
|
@@ -147,10 +147,14 @@ Flow:
|
|
|
147
147
|
4. Generate a runnable page prototype based on functions, details, models, and roles; the prototype tech stack can be selected via `/scheme.yaml` (auto-created with defaults if missing).
|
|
148
148
|
- Load `prompts/vspec_verify/prototype.md` for the prototype generation rules (must follow `scheme.yaml` stack; do not output html-only).
|
|
149
149
|
5. Write the prototype to `/specs/prototypes/`.
|
|
150
|
-
6. Load `prompts/
|
|
151
|
-
7.
|
|
152
|
-
8.
|
|
153
|
-
9. Load `prompts/
|
|
150
|
+
6. Load `prompts/harness/post_verify_stack_verify.md` to validate whether the prototype frontend stack matches `/scheme.yaml`. If it outputs any issues, show the issue list and stop.
|
|
151
|
+
7. Load `prompts/vspec_verify/validation.md` to generate a scenario validation web page.
|
|
152
|
+
8. Write the validation page to `/specs/prototypes/` and provide a `scenario.html` entry for access.
|
|
153
|
+
9. Load `prompts/vspec_verify/entries.md` to generate an entry page and write it to `/specs/prototypes/entries.html` (do not link it from any menu/header).
|
|
154
|
+
10. Load `prompts/harness/post_verify_mobile_selection_check.md` to ensure mobile data selection uses a picker page (list-based), not dropdown Select. If it outputs any issues, show the issue list and stop.
|
|
155
|
+
11. Load `prompts/harness/post_verify_price_format_check.md` to validate money/price formatting (right aligned, 2 decimals, thousand separators). If it outputs any issues, show the issue list and stop.
|
|
156
|
+
12. Load `prompts/harness/post_verify_click_check.md` to detect clickable UI elements that do nothing. If it outputs any issues, show the issue list and stop.
|
|
157
|
+
13. Load `prompts/harness/post_verify_verify.md` to validate the prototype completeness. If it outputs any issues, show the issue list and stop.
|
|
154
158
|
|
|
155
159
|
### `/vspec:proto-survey`
|
|
156
160
|
|
|
@@ -209,6 +213,7 @@ Flow:
|
|
|
209
213
|
1. Read `/specs/functions/*`, `/specs/details/`, `/specs/models/*.md`, `/specs/background/dependencies.md`, and detect the current frontend/backend stacks and code conventions.
|
|
210
214
|
2. Load `prompts/vspec_impl/implement.md` and implement backend-first: generate a runnable backend project under `/specs/backend/` (health check + core APIs/services), then generate frontend integration after backend APIs are available.
|
|
211
215
|
3. Write code only under `/specs/` with minimal diffs and keep it reviewable; backend must be under `/specs/backend/` and prototype frontend under `/specs/prototypes/`.
|
|
216
|
+
4. Load `prompts/harness/post_impl_verify.md` to validate backend MVC structure and test coverage. If it outputs any issues, show the issue list and stop.
|
|
212
217
|
|
|
213
218
|
### `/vspec:upgrade`
|
|
214
219
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
你是一名资深后端架构与测试质量质检员。你的任务是:在 `/vspec:impl` 生成后端代码(通常在 `/specs/backend/`)之后,验证后端工程是否符合 MVC 架构,并验证测试覆盖是否完整;若不满足,必须输出“问题列表”,并停止,要求重构/补测。
|
|
2
|
+
|
|
3
|
+
输入产物(必须读取):
|
|
4
|
+
- 后端代码:`/specs/backend/`
|
|
5
|
+
- 功能清单:`/specs/functions/*`
|
|
6
|
+
- 详细规格:`/specs/details/`
|
|
7
|
+
- 验收用例:`/specs/acceptance/`(如存在)
|
|
8
|
+
|
|
9
|
+
验证规则(必须):
|
|
10
|
+
0. 基础存在性:
|
|
11
|
+
- 若 `/specs/backend/` 不存在或为空:输出问题 1 条并停止。
|
|
12
|
+
|
|
13
|
+
1. MVC 架构(必须):
|
|
14
|
+
- 后端工程必须体现清晰的 MVC(或等价分层)目录/模块划分,且至少包含:
|
|
15
|
+
- Controller(路由/接口层)
|
|
16
|
+
- Service(业务编排层)
|
|
17
|
+
- Repository/DAO(数据访问层;若无数据库则为 InMemoryRepository/Adapter)
|
|
18
|
+
- Model/Entity/DTO(数据结构层)
|
|
19
|
+
- 若工程将控制器逻辑、业务逻辑、数据访问逻辑混写在单一文件/单一层:判定为不符合,输出问题并要求重构为 MVC。
|
|
20
|
+
|
|
21
|
+
2. 测试覆盖完整性(必须):
|
|
22
|
+
- 必须存在可运行的自动化测试(单元测试或集成测试皆可),并满足“覆盖主要接口/关键业务分支”的最小闭环。
|
|
23
|
+
- 覆盖口径(必须可核对):
|
|
24
|
+
- 从 `/specs/functions/*` 中抽取后端相关能力(`端=Backend`、或支付回调/对账/通知/权限校验等后端逻辑)。
|
|
25
|
+
- 以及从 `/specs/acceptance/` 中抽取关键验收场景(如存在)。
|
|
26
|
+
- 对每一类关键接口/能力,必须存在对应测试文件或测试用例描述(同名/同路径/同模块均可,但需可定位)。
|
|
27
|
+
- 若发现任一关键能力缺少测试覆盖:记录问题(指出缺失的能力与应对应的测试位置)。
|
|
28
|
+
|
|
29
|
+
输出要求(必须):
|
|
30
|
+
1. 若所有检查通过:仅输出单行 `PASS`。
|
|
31
|
+
2. 若存在问题:仅输出“问题列表”(不要输出修复方案、不要输出其他内容),格式固定如下:
|
|
32
|
+
- `问题列表(post-impl-verify)`
|
|
33
|
+
- 逐条编号:`1. ...`
|
|
34
|
+
- 每条必须包含:问题类型(MVC 不符合 / 测试覆盖缺失)+ 影响(无法维护/回归风险高/无法验收)+ 定位信息(目录/文件/对应 functions 行或 acceptance 目录)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
你是一名资深前端原型交互质检员。你的任务是:在 `/vspec:verify` 生成原型工程后,检查原型中是否存在“按钮/链接点击无反应”的情况;若存在,必须输出问题列表并要求补齐交互逻辑(更新 mock、提示、跳转、关闭抽屉等)。
|
|
2
|
+
|
|
3
|
+
输入产物(必须读取):
|
|
4
|
+
- 原型工程:`/specs/prototypes/`(页面、路由、组件、mock)
|
|
5
|
+
|
|
6
|
+
检查规则(必须):
|
|
7
|
+
1. 交互定义口径:
|
|
8
|
+
- 将“按钮/链接”定义为:UI 中可点击元素(Button/Link/Menu.Item/Dropdown.Item/Tab、以及带 onClick/@click 的可交互元素)。
|
|
9
|
+
2. 必须逐文件扫描(可用最小策略,不要求穷尽语义):
|
|
10
|
+
- Vue:查找 `@click=`、`onClick=`、`<a`、`<button`、`<Menu.Item` 等,并判断是否绑定了处理函数或跳转。
|
|
11
|
+
- React:查找 `onClick=`、`<Link`、`navigate(` 等,并判断是否存在空函数/占位函数。
|
|
12
|
+
3. 判定为“无反应”的典型模式(命中则必须报问题):
|
|
13
|
+
- `onClick={() => {}}`、`onClick={() => null}`、`onClick={undefined}`、`@click="() => {}"` 等空处理
|
|
14
|
+
- 点击后既不更新 mock 状态、也不触发 message/notification、也不跳转路由、也不打开/关闭抽屉/弹窗
|
|
15
|
+
- 明显占位文案:`TODO`、`TBD`、`coming soon`、`not implemented` 出现在点击处理路径中
|
|
16
|
+
4. 允许的最小可用交互(满足其一即可,不视为无反应):
|
|
17
|
+
- 更新 mock 并刷新视图(列表/详情/状态 Tag)
|
|
18
|
+
- 路由跳转(含 query/params)
|
|
19
|
+
- 打开抽屉/弹窗,并在提交成功后关闭抽屉
|
|
20
|
+
- message/notification 提示(中文完整句子),并且能解释“发生了什么/下一步是什么”
|
|
21
|
+
|
|
22
|
+
输出要求(必须):
|
|
23
|
+
1. 若不存在问题:仅输出单行 `PASS`。
|
|
24
|
+
2. 若存在问题:仅输出“问题列表”(不要输出修复方案、不要输出其他内容),格式固定如下:
|
|
25
|
+
- `问题列表(post-verify-click-check)`
|
|
26
|
+
- 逐条编号:`1. ...`
|
|
27
|
+
- 每条必须包含:问题类型(点击无反应)+ 影响(无法演示/无法验收)+ 定位信息(文件路径 + 组件/函数名 + 触发控件文本或 selector)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
你是一名资深移动端交互质检员。你的任务是:在 `/vspec:verify` 生成原型工程(`/specs/prototypes/`)后,检查移动端页面是否错误使用“下拉框 Select”来选择数据对象;若发现,应输出问题列表并要求改为“选择页(List)选择→返回回填”的交互。
|
|
2
|
+
|
|
3
|
+
输入产物(必须读取):
|
|
4
|
+
- 原型工程:`/specs/prototypes/`(移动端页面、组件、路由)
|
|
5
|
+
|
|
6
|
+
检查规则(必须):
|
|
7
|
+
1. 检查范围:
|
|
8
|
+
- 所有移动端页面:路由前缀为 `/m/*` 的页面与其组件(通常在 `src/pages/m/*`、`src/pages/mobile/*`、或路由配置指向的文件)
|
|
9
|
+
2. 判定为“不合规”的情况(命中任一即报问题):
|
|
10
|
+
- 在移动端表单/筛选/编辑等页面中,使用 Select 下拉框直接选择“数据对象/字典项/主数据”(例如城市、组织、门店、人员、商品、课程、仓库、渠道等)
|
|
11
|
+
- 使用任意“下拉弹出选项”的 Select 组件充当主数据选择(不论是 Ant Design(Vue/React)还是其他 UI 库的 Select)
|
|
12
|
+
3. 允许例外(仅限以下情况,不报问题):
|
|
13
|
+
- 登录页用于“快速切换角色/账号”的角色下拉框(用于演示 RBAC),不算数据对象选择
|
|
14
|
+
4. 合规交互要求(发现不合规时,问题描述必须引用):
|
|
15
|
+
- 必须改为“点选进入选择页(List)→ 搜索/筛选 → 点击条目选中 → 返回上一页并回填字段”
|
|
16
|
+
- 选择页必须使用移动端 List/Card(禁止 Table),并提供返回与搜索
|
|
17
|
+
|
|
18
|
+
输出要求(必须):
|
|
19
|
+
1. 若所有检查通过:仅输出单行 `PASS`。
|
|
20
|
+
2. 若存在问题:仅输出“问题列表”(不要输出修复方案、不要输出其他内容),格式固定如下:
|
|
21
|
+
- `问题列表(post-verify-mobile-selection-check)`
|
|
22
|
+
- 逐条编号:`1. ...`
|
|
23
|
+
- 每条必须包含:问题类型(移动端数据选择不合规)+ 影响(不符合移动端交互规范/不便操作)+ 定位信息(路由 + 文件路径 + 字段/控件名)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
你是一名资深前端 UI 质检员。你的任务是:在 `/vspec:verify` 生成原型工程后,检查“价格/金额”展示是否符合统一格式:右对齐、两位小数、千位分隔符;若不满足,输出问题列表并停止。
|
|
2
|
+
|
|
3
|
+
输入产物(必须读取):
|
|
4
|
+
- 原型工程:`/specs/prototypes/`
|
|
5
|
+
|
|
6
|
+
检查规则(必须):
|
|
7
|
+
1. 检查范围:
|
|
8
|
+
- 所有页面与组件(含 Web 与 Mobile),重点关注包含“价格/金额/费用/合计/应付/实付/退款金额”等语义的区域。
|
|
9
|
+
2. 价格格式要求(必须同时满足):
|
|
10
|
+
- 右对齐:价格文本在其容器中应右对齐(例如样式包含 `text-align: right`、`justify-content: space-between` 且价格在右侧并右对齐等等,按工程实现等价判断)
|
|
11
|
+
- 两位小数:展示值必须为固定两位小数(例如 `1234.00`)
|
|
12
|
+
- 千位分隔符:展示值必须包含千位分隔符(例如 `1,234.00`)
|
|
13
|
+
3. 判定为问题的典型模式(命中则必须报问题):
|
|
14
|
+
- 直接渲染原始 number/string(例如 `amount`)且未见格式化函数/formatter
|
|
15
|
+
- 价格展示为 `1234`、`1234.0`、`1234.000`、`1234.5`、`1234.50`(缺少千分位)
|
|
16
|
+
- 价格展示未右对齐(明显与标题/商品信息混在一列且不在右侧对齐)
|
|
17
|
+
4. 允许例外(仅限以下情况,不报问题):
|
|
18
|
+
- 输入态:表单中的 InputNumber 输入框(但其 formatter/parser 仍应保证千分位与两位小数一致)
|
|
19
|
+
- 无法显示千位的极短金额(例如小于 1000)仍必须保留两位小数,但千分位可无(此例外仅适用于 `< 1000` 的展示)
|
|
20
|
+
|
|
21
|
+
输出要求(必须):
|
|
22
|
+
1. 若所有检查通过:仅输出单行 `PASS`。
|
|
23
|
+
2. 若存在问题:仅输出“问题列表”,格式固定如下:
|
|
24
|
+
- `问题列表(post-verify-price-format-check)`
|
|
25
|
+
- 逐条编号:`1. ...`
|
|
26
|
+
- 每条必须包含:问题类型(价格格式不合规)+ 影响(展示不一致/评审困难/易误读)+ 定位信息(路由/组件 + 文件路径 + 相关字段名或 UI 文案)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
你是一名资深前端架构质检员。你的任务是:在 `/vspec:verify` 生成原型工程(`/specs/prototypes/`)之后,检查其前端工程架构是否严格符合 `/scheme.yaml` 中选择的前端栈;若不符合,必须输出“问题列表”,并停止,要求重构为正确栈。
|
|
2
|
+
|
|
3
|
+
输入产物(必须读取):
|
|
4
|
+
- 技术选型:`/scheme.yaml`
|
|
5
|
+
- 原型工程:`/specs/prototypes/`(至少包含 package.json、构建配置、src 目录等)
|
|
6
|
+
|
|
7
|
+
验证规则(必须):
|
|
8
|
+
0. 基础存在性:
|
|
9
|
+
- 若 `/scheme.yaml` 不存在:输出问题 1 条并停止。
|
|
10
|
+
- 若 `/specs/prototypes/` 不存在或为空:输出问题 1 条并停止。
|
|
11
|
+
- 若 `/specs/prototypes/package.json` 不存在:视为“非工程化原型(可能是 html-only)”,输出问题 1 条并停止。
|
|
12
|
+
|
|
13
|
+
1. 栈解析(必须):
|
|
14
|
+
- 从 `/scheme.yaml` 读取:
|
|
15
|
+
- `selected.prototype_frontend_stack`
|
|
16
|
+
- 以及 `catalog.prototype_frontend_stacks` 中对应 id 的条目(必须能找到),获取其 `framework` 与 `build_tool`
|
|
17
|
+
- 若无法在 catalog 中找到该 stack id:输出问题 1 条并停止(要求修正 scheme.yaml)。
|
|
18
|
+
|
|
19
|
+
2. 构建工具一致性(必须):
|
|
20
|
+
- 若 `build_tool=vite`:
|
|
21
|
+
- 原型工程必须存在 `vite.config.*` 与 `index.html`
|
|
22
|
+
- `package.json` 必须包含 `vite` 依赖(devDependencies 或 dependencies)
|
|
23
|
+
- 若 `build_tool` 为其他值:必须能在工程中找到对应的构建配置与依赖(按该栈条目约定);找不到则输出问题。
|
|
24
|
+
|
|
25
|
+
3. 框架一致性(必须):
|
|
26
|
+
- 若 `framework=vue`:
|
|
27
|
+
- `package.json` 必须包含 `vue`
|
|
28
|
+
- 必须包含 Vite Vue 插件:`@vitejs/plugin-vue`
|
|
29
|
+
- 必须存在 `src/main.ts` 或 `src/main.js`,且存在 `src/router/`(或等价路由目录)
|
|
30
|
+
- 若 `framework=react`:
|
|
31
|
+
- `package.json` 必须包含 `react` 与 `react-dom`
|
|
32
|
+
- 必须包含 Vite React 插件:`@vitejs/plugin-react`(或等价官方插件)
|
|
33
|
+
- 必须存在 `src/main.tsx`/`src/main.jsx`(或等价入口),且存在 `src/router/`(或等价路由目录)
|
|
34
|
+
|
|
35
|
+
4. 反例拦截(必须):
|
|
36
|
+
- 若原型仅存在若干 html 文件(例如 `scenario.html`、`entries.html`)但缺少工程化结构(package.json/src/vite 配置):判定为不合规,输出问题并停止。
|
|
37
|
+
|
|
38
|
+
输出要求(必须):
|
|
39
|
+
1. 若所有检查通过:仅输出单行 `PASS`。
|
|
40
|
+
2. 若存在问题:仅输出“问题列表”(不要输出修复方案、不要输出其他内容),格式固定如下:
|
|
41
|
+
- `问题列表(post-verify-stack-verify)`
|
|
42
|
+
- 逐条编号:`1. ...`
|
|
43
|
+
- 每条必须包含:问题类型(stack 不一致 / 缺少工程化结构 / scheme.yaml 不完整)+ 影响(无法构建/无法维护/无法按规范交付)+ 定位信息(文件路径 + 期望值 vs 实际值)
|
|
@@ -45,6 +45,9 @@
|
|
|
45
45
|
8. 前端交互(必须):
|
|
46
46
|
- 支付入口必须从订单/业务单详情进入(说明路由或入口)
|
|
47
47
|
- 提交成功后跳转到成功页(如 `/payment/success` 或业务 `*/success`),失败必须给出中文完整句子提示与重试入口
|
|
48
|
+
- 若存在退款:退款成功后订单必须仍保留在订单列表/详情中,并标记为“已退款”,且可追溯退款信息(金额/时间/退款单号 mock)
|
|
49
|
+
9. 发票/开票(命中则必须):
|
|
50
|
+
- 若涉及订单/支付且存在开票需求:必须说明发票申请入口、字段(抬头/税号/邮箱/内容类目)、状态流转(未开票/开票中/已开票)、下载/预览与记录查询
|
|
48
51
|
9. 操作日志与通知(必须):
|
|
49
52
|
- 支付/退款关键动作必须记录日志(字段:单号/金额/通道/结果/失败原因/操作者/时间)
|
|
50
53
|
- 通知:支付成功/退款成功/退款失败至少覆盖 3 类,并说明失败兜底
|
|
@@ -63,6 +63,10 @@
|
|
|
63
63
|
- 支付:支付下单/发起、支付渠道选择/配置、支付回调处理(幂等/签名校验)、支付失败重试/超时关闭、支付结果查询
|
|
64
64
|
- 退款:退款申请/审批(如适用)、退款执行/回调处理、部分退款口径(如适用)、退款失败重试/人工兜底
|
|
65
65
|
- 对账:对账任务(端=Job)或对账页面(端=Web)之一必须具备,包含差异识别与修复入口
|
|
66
|
+
- 若存在订单/支付语义:必须补齐“发票/开票”能力(至少在 core.md 中体现):
|
|
67
|
+
- 开票申请入口(端=Web;入口=/orders 或 /invoices)
|
|
68
|
+
- 发票信息维护(抬头/税号/邮箱/发票内容),以及发票状态(未开票/开票中/已开票)
|
|
69
|
+
- 发票下载/预览(PDF)与开票记录查询
|
|
66
70
|
- 若发现生命周期不完整:必须在输出前补全 `core.md`(或对应外部系统 functions 文件)的功能行,直到对象生命周期闭环
|
|
67
71
|
- 示例口径(用于你自检,不要生搬硬套):
|
|
68
72
|
- 有“优惠”能力:应覆盖优惠创建/配置、审批(如需要)、发放/绑定、使用/核销、延续(延期/续期/扩展额度)、失去(失效/作废/撤销/回收)、归档与审计
|
|
@@ -126,6 +130,11 @@
|
|
|
126
130
|
- 通知体系复查:
|
|
127
131
|
- 必须识别需要通知的业务节点(至少覆盖:提交成功/审批到达/审批结果/执行开始与异常/到期提醒/失败重试与人工兜底)
|
|
128
132
|
- 必须明确通知通道策略:哪些通道可用(站内信/短信/邮件/IM/Push)、是否可由用户订阅偏好选择、不同紧急级别如何升级(例如 IM + 短信)
|
|
133
|
+
- 若业务涉及通知:必须在 functions 中生成“通知功能与通知通道”相关功能点(不允许只写一句‘会通知’):
|
|
134
|
+
- 通知中心(站内信/消息中心):列表/详情/已读未读/批量处理(端=Web;入口=/tools/notify-center 或 /notifications)
|
|
135
|
+
- 通知模板管理:按业务事件维护模板(端=Web;入口=/admin/notify-templates 或等价)
|
|
136
|
+
- 通知通道配置:企业微信/钉钉/短信/邮件等通道开关与参数占位(端=Web;入口=/tools/notify-center)
|
|
137
|
+
- 通知发送记录与重试:发送日志、失败原因、重试/改用通道(端=Web;入口=/tools/notify-center)
|
|
129
138
|
- 若存在外部通道(短信/邮件/IM):必须在对应外部系统 functions 文件中补齐对接与失败兜底(回执、重试、补偿、人工兜底)
|
|
130
139
|
- 若站内信:必须在 `core.md` 补齐通知中心(列表/详情/已读未读/批量处理)与消息模板管理(可选)
|
|
131
140
|
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
- step-next(下一步)
|
|
46
46
|
- step-prev(上一步)
|
|
47
47
|
- step-save-draft(保存草稿)
|
|
48
|
+
- step-publish(发布/生效)
|
|
48
49
|
- step-complete(完成)
|
|
49
50
|
- 信息展示节点:
|
|
50
51
|
- info-list(列表展示)
|
|
@@ -92,13 +93,26 @@
|
|
|
92
93
|
- refund-approve(退款审核/审批)
|
|
93
94
|
- refund-callback(退款回调/通知)
|
|
94
95
|
- reconcile(对账/差异处理)
|
|
96
|
+
- MQ 排队节点:
|
|
97
|
+
- mq-enqueue(进入队列/排队)
|
|
98
|
+
- mq-consume(消费处理)
|
|
99
|
+
- mq-retry(重试/退避)
|
|
100
|
+
- mq-dlq(死信/人工兜底)
|
|
101
|
+
- 定时任务节点:
|
|
102
|
+
- cron-scan(定时扫描/批处理)
|
|
103
|
+
- cron-expire(到期/超时处理)
|
|
104
|
+
- cron-notify(定时通知/汇总通知)
|
|
105
|
+
- cron-reconcile(定时对账)
|
|
95
106
|
- 输出格式必须为(中文名+括号内节点类型,用 `→` 串联):
|
|
96
107
|
- `申请(apply)→审批(approve)→执行开始(execute-start)→执行结束(execute-end)`
|
|
97
108
|
- `列表(crud-list)→新建(crud-create)→编辑(crud-update)→导出(crud-export)`
|
|
98
109
|
- `开始(step-start)→下一步(step-next)→完成(step-complete)`
|
|
110
|
+
- `保存草稿(step-save-draft)→发布(step-publish)`
|
|
99
111
|
- `登录(auth-login)→修改密码(auth-change-password)`
|
|
100
112
|
- `创建问卷(survey-create)→发布(survey-publish)→填写(survey-fill)→提交(survey-submit)→统计(survey-analysis)`
|
|
101
113
|
- `提交订单(shop-order-submit)→支付(pay-init)→支付回调(pay-callback)→支付成功(pay-success)`
|
|
114
|
+
- `排队(mq-enqueue)→消费(mq-consume)→重试(mq-retry)→死信(mq-dlq)`
|
|
115
|
+
- `定时扫描(cron-scan)→到期处理(cron-expire)`
|
|
102
116
|
- 如果存在“拒绝/驳回”类场景:用 `审批(approve)` 节点表示“审批发生”,并在场景名中标明“驳回/拒绝”,节点链条在该处终止或进入 `cancel/abort`(按需求合理选择)
|
|
103
117
|
|
|
104
118
|
3. 场景粒度与数量控制:
|
|
@@ -114,7 +128,13 @@
|
|
|
114
128
|
- 基础数据/主数据维护(CRUD:列表/新建/编辑/启停/导入导出等;若明确来自外部系统同步,则以“同步/对接”场景替代 CRUD)
|
|
115
129
|
- 审批与流程配置(存在审批语义时:审批流配置、审批列表处理、审批意见与结果提交)
|
|
116
130
|
- 支付与退款(出现支付/退款/结算/对账/订单等语义时:必须补齐支付成功/失败/超时关闭/退款/部分退款/退款失败/对账差异等关键场景)
|
|
131
|
+
- 草稿与发布(出现草稿/发布/上架/下架/生效/失效/投放等语义时:必须补齐“草稿→发布/生效→下线/失效→归档”的场景)
|
|
132
|
+
- MQ 排队(出现队列/MQ/异步/排队/批处理/削峰等语义时:必须补齐入队、消费、重试、死信与人工兜底场景)
|
|
133
|
+
- 定时任务(出现定时/cron/到期/超时/SLA/自动关闭/自动失效/自动通知/对账等语义时:必须补齐定时扫描、到期处理、通知补偿、对账与差异修复场景)
|
|
117
134
|
- 上述能力的场景在场景表中至少各出现 1 个(若适用),并确保与主业务场景形成可演示闭环(例如:先维护课程/讲师/学员,再发起排课申请)。
|
|
135
|
+
- 登录场景补齐要求(命中则必须在场景表中体现):
|
|
136
|
+
- 至少包含 3 条:登录成功、登录失败(密码错误/验证码错误)、退出登录
|
|
137
|
+
- 若需求出现“忘记密码/重置密码/修改密码/注册/创建账号”任一语义:对应场景必须补齐
|
|
118
138
|
- 支付与退款场景细化要求(命中则必须在场景表中体现):
|
|
119
139
|
- 支付:下单→支付(成功/失败/取消/超时关闭)→支付结果通知/回调→订单状态落地
|
|
120
140
|
- 退款:发起退款→审核/审批(如适用)→退款成功/失败→原订单/权益回收与对账记录
|
|
@@ -639,6 +639,16 @@ Landing(落地页)生成要求(必须):
|
|
|
639
639
|
|
|
640
640
|
移动端通用 List 页面生成要求(必须):
|
|
641
641
|
1. 移动端列表页规则必须按 `prompts/vspec_verify/prototype_mobile_list.md` 执行。
|
|
642
|
+
2. 移动端列表承载(必须):
|
|
643
|
+
- 移动端页面的列表组件禁止使用 Table(包括 Ant Design Vue 的 Table),必须使用 Card/List/自定义列表组件组合实现
|
|
644
|
+
- 若需要多列字段展示:使用“列表项组件(component)”承载一条记录的标题/摘要/标签/状态/按钮,并在 List 中渲染该组件
|
|
645
|
+
3. 移动端多选呈现(必须):
|
|
646
|
+
- 移动端进行“多项数据选择”时,禁止使用 Checkbox 列表作为主要交互(尤其是长列表/商品列表场景)
|
|
647
|
+
- 必须使用列表项选择交互(点击整行切换选中态 + 选中标识),并支持搜索/筛选
|
|
648
|
+
- 若为商品/SKU 等:建议横向卡片列表(可横滑),卡片必须包含图片/icon、名称与价格分开展示,并提供进入详情入口;选中态用边框/勾角标识表达
|
|
649
|
+
4. 移动端金额/价格展示(必须):
|
|
650
|
+
- 涉及费用/价格/金额时,列表项布局必须为:左侧商品/标题信息,右侧价格信息
|
|
651
|
+
- 价格必须右对齐,且固定显示两位小数(例如 `1,234.00`),并与 Web 端金额格式保持一致
|
|
642
652
|
|
|
643
653
|
移动端增强页面生成要求(按需裁剪,命中条件则必须):
|
|
644
654
|
1. 购物车/支付/协议/商品/瀑布流/信息流/日历等移动端页面:若命中对应域或用户明确需要,必须按以下规则文件生成并确保 Landing 金刚区可进入:
|
|
@@ -804,6 +814,13 @@ Steps(步骤条)使用要求(必须):
|
|
|
804
814
|
- 表单输入金额:使用 InputNumber 的 formatter/parser(或等价实现),保持两位小数与千位分隔符一致
|
|
805
815
|
- 枚举/状态:必须使用 Select/Radio/Tag,并与模型/状态机对齐
|
|
806
816
|
- 地点:若包含省市区/详细地址,必须拆分(Cascader + Input)
|
|
817
|
+
- 移动端数据选择(必须):移动端页面选择“数据对象/字典项/主数据”(例如城市、组织、门店、人员、商品、课程等)时,禁止使用下拉框 Select 直接在当前页选择。
|
|
818
|
+
- 必须改为“点选进入选择页(List)→ 列表搜索/筛选 → 点击条目选中 → 返回上一页并回填字段”的交互。
|
|
819
|
+
- 表单页中该字段应表现为“只读输入框/Cell”,点击后跳转到 `/m/select/<entity>`(或模块内等价路由),并在选择页顶部提供返回与搜索。
|
|
820
|
+
- 选择页列表必须使用移动端 List/Card(禁止 Table),并且选中后给出中文提示并立即返回。
|
|
821
|
+
- 移动端城市选择(命中则必须):若出现移动端“选择城市/切换城市/城市列表”页面或控件(例如 `/m/city` 或城市选择弹层):
|
|
822
|
+
- 必须使用“城市列表 + 右侧字母索引条(A-Z)”的交互,点击字母可快速跳转到对应首字母分组
|
|
823
|
+
- 城市列表必须按首字母分组展示,并支持搜索
|
|
807
824
|
3. 对“复合字段”的判定口径:字段名或说明中出现“起止/范围/地址/联系人/额度/资源+数量/城市+地点”等组合语义时,一律拆分。
|
|
808
825
|
|
|
809
826
|
交互样式统一(必须):
|
|
@@ -21,13 +21,18 @@
|
|
|
21
21
|
会话与拦截(必须):
|
|
22
22
|
1. 必须在 mock 中提供 session(例如 `mock.session`):
|
|
23
23
|
- 字段至少包含:`user_id/user_name/role_id/role_name/org_id/org_name`
|
|
24
|
+
- 必须额外包含:`role_terminal`(Web/手机App/小程序/其他),用于登录成功后的跳转与入口控制
|
|
24
25
|
2. 路由访问控制(必须):
|
|
25
26
|
- 未登录访问任意业务路由(非 `/login*`、`/m/login*`):必须引导到对应端登录页,并在登录成功后回跳
|
|
26
27
|
3. 登录成功后必须进入应用首页(`/` 或 `/landing`),并渲染完整的 Web 三段式布局(Header + Menu + 内容区)。
|
|
27
28
|
|
|
28
29
|
页面要求(必须):
|
|
29
30
|
1. 登录页(Web + Mobile):
|
|
31
|
+
- 必须提供“角色下拉框”(Select),用于快速选择要以哪个角色进入系统(至少提供 3 个角色选项;来自 roles.md,若不足 3 个则尽量覆盖全部)
|
|
30
32
|
- 支持“选择账号”或“账号+密码”两种 mock 登录方式之一(按需求裁剪但必须可用)
|
|
33
|
+
- 登录提交成功后必须根据所选角色的终端跳转:
|
|
34
|
+
- 若角色终端为 Web:跳转到 `/` 或 `/landing`
|
|
35
|
+
- 若角色终端为 手机App/小程序:跳转到对应移动端首页(`/m/...`,最少为 `/m/list` 或 `/m/dashboard` 其一),并确保该端页面可访问
|
|
31
36
|
- 提供入口:创建账号、忘记密码
|
|
32
37
|
- 提示文案必须中文化且为完整句子
|
|
33
38
|
2. 创建账号(Web + Mobile):
|
|
@@ -22,6 +22,8 @@ Web 全局布局(必须):
|
|
|
22
22
|
|
|
23
23
|
移动端布局(必须):
|
|
24
24
|
1. 移动端页面必须独立路由前缀:`/m/*`,并使用移动端布局(顶部简化 Header + 内容区 +(按需)底部吸底操作栏/TabBar),不复用后台三段式布局。
|
|
25
|
+
- 底部 TabBar(必须):只要原型生成了 2 个及以上移动端页面,就必须实现底部 TabBar,并按实际移动端功能分布放置 icon + 文案(示例:首页/任务/消息/我的);当前 Tab 高亮必须随路由变化。
|
|
26
|
+
- 布局固定规则(必须):TabBar 必须 fixed 吸底;中间内容区必须可滚动(Scroll),不得因为 TabBar 导致内容被遮挡;建议通过 `padding-bottom` 为内容区预留 TabBar 高度。
|
|
25
27
|
2. Web 端左侧菜单不展示移动端专属页面入口;Web 端对应动作按钮必须置灰并提示“请在手机端操作”,并提供一个“打开手机端页面”的入口(可复制链接或跳转)。
|
|
26
28
|
|
|
27
29
|
场景验证入口(必须禁止):
|
|
@@ -27,6 +27,9 @@
|
|
|
27
27
|
- 去支付(仅待支付可用)
|
|
28
28
|
- 取消订单(待支付可用,Popconfirm)
|
|
29
29
|
- 退款(仅已支付可用,Drawer 表单占位)
|
|
30
|
+
4. 退款后状态展示(必须):
|
|
31
|
+
- 发生退款后,订单必须仍保留在订单列表中,不允许从订单列表消失。
|
|
32
|
+
- 订单状态必须标记为“已退款”(Tag),并在详情页同步展示退款信息(退款时间/退款金额/退款单号 mock)。
|
|
30
33
|
|
|
31
34
|
订单详情页(必须):
|
|
32
35
|
1. 基础信息(Descriptions):订单号、用户、状态、创建时间、支付时间(如有)、支付方式(如有)。
|
|
@@ -37,9 +40,13 @@
|
|
|
37
40
|
- 去支付(待支付)
|
|
38
41
|
- 申请退款(已支付)
|
|
39
42
|
- 查看支付记录(mock)
|
|
43
|
+
5. 发票(命中则必须):
|
|
44
|
+
- 若需求/功能清单/模型命中“发票/开票/电子发票/抬头/税号/发票下载”等:必须提供发票能力入口:
|
|
45
|
+
- 订单列表 Action 或订单详情操作区提供“申请开票/查看发票”按钮(按状态控制可用性)
|
|
46
|
+
- 发票信息表单用 Drawer 承载,字段至少包含:抬头类型(个人/企业)、抬头名称、税号(企业必填)、邮箱、发票内容/类目(Select)
|
|
47
|
+
- 提交成功后:订单详情展示发票状态(未开票/开票中/已开票),并提供“下载/预览(PDF 占位)”
|
|
40
48
|
|
|
41
49
|
数据要求(必须):
|
|
42
50
|
1. 数据来自 mock(例如 `mock.orders`、`mock.payments`),字段至少包含:
|
|
43
51
|
- orderId、items、amount、discount、discountDetails、shipping、payable、status、payStatus、createdAt、paidAt、user
|
|
44
52
|
2. 与支付页联动:从订单详情进入 `/m/payment?orderId=...` 后,支付成功需回写订单 payStatus/paidAt,并在返回订单详情与列表时可见变化。
|
|
45
|
-
|