mta-mcp 1.0.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.
- package/README.md +818 -0
- package/agents/_TEMPLATE.md +153 -0
- package/agents/flutter.agent.md +222 -0
- package/agents/i18n.agent.md +78 -0
- package/agents/logicflow.agent.md +97 -0
- package/agents/vue3.agent.md +176 -0
- package/agents/wechat-miniprogram.agent.md +89 -0
- package/bin/mta.cjs +132 -0
- package/common/i18n.md +385 -0
- package/common/typescript-strict.md +186 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.js +6493 -0
- package/dist/index.js.map +1 -0
- package/package.json +81 -0
- package/standards/README.md +194 -0
- package/standards/core/code-generation.md +421 -0
- package/standards/core/code-style.md +308 -0
- package/standards/core/dart-base.md +572 -0
- package/standards/core/mandatory-rules.md +103 -0
- package/standards/core/typescript-base.md +179 -0
- package/standards/frameworks/flutter-ui-system.md +497 -0
- package/standards/frameworks/flutter.md +1268 -0
- package/standards/frameworks/pinia.md +172 -0
- package/standards/frameworks/vue3-composition.md +779 -0
- package/standards/frameworks/wechat-miniprogram.md +2177 -0
- package/standards/libraries/element-plus.md +1128 -0
- package/standards/libraries/i18n.md +360 -0
- package/standards/libraries/logicflow.md +1007 -0
- package/standards/patterns/api-layer.md +187 -0
- package/standards/patterns/component-design.md +200 -0
- package/standards/patterns/design-system-restoration.md +570 -0
- package/standards/patterns/vue-api-mock-layer.md +958 -0
- package/standards/patterns/vue-css-nesting.md +604 -0
- package/standards/troubleshooting-cases/flutter/textfield-vertical-centering.md +107 -0
- package/standards/workflows/design-restoration-guide.md +164 -0
- package/standards/workflows/large-project-split.md +359 -0
- package/standards/workflows/problem-diagnosis.md +280 -0
- package/standards/workflows/textfield-centering-guide.md +157 -0
- package/templates/README.md +144 -0
- package/templates/common/types/_CONFIG.md +12 -0
- package/templates/common/types/api.ts +39 -0
- package/templates/common/types/common.ts +70 -0
- package/templates/config-templates/agents-section.md +9 -0
- package/templates/config-templates/custom-section.md +6 -0
- package/templates/config-templates/header.md +29 -0
- package/templates/config-templates/workflow-minimal.md +44 -0
- package/templates/copilot-instructions-mcp-optimized.md +158 -0
- package/templates/vue/api-layer/_CONFIG.md +145 -0
- package/templates/vue/api-layer/index.ts +58 -0
- package/templates/vue/api-layer/mock/index.ts +122 -0
- package/templates/vue/api-layer/modules/_template.ts +109 -0
- package/templates/vue/api-layer/modules/index.ts +16 -0
- package/templates/vue/api-layer/request.ts +279 -0
- package/templates/vue/api-layer/types.ts +80 -0
- package/troubleshooting/README.md +368 -0
- package/troubleshooting/USAGE_GUIDE.md +289 -0
- package/troubleshooting/flutter/clip-/351/230/264/345/275/261/350/243/201/345/211/252.md +244 -0
- package/troubleshooting/flutter/component-/351/200/232/347/224/250/345/214/226/346/217/220/345/217/226.md +269 -0
- package/troubleshooting/flutter/input-/345/255/227/346/256/265/347/274/272/345/244/261.md +240 -0
- package/troubleshooting/flutter/input-/350/276/271/346/241/206/351/227/256/351/242/230.md +236 -0
- package/troubleshooting/flutter/layout-/345/260/272/345/257/270/344/270/215/345/214/271/351/205/215.md +214 -0
- package/troubleshooting/flutter/shadow-/351/200/217/345/207/272/351/227/256/351/242/230.md +172 -0
- package/troubleshooting/flutter/sketch-/345/210/227/350/241/250item/345/214/272/345/237/237.md +212 -0
- package/troubleshooting/flutter/sketch-/345/233/276/346/240/207/345/260/272/345/257/270.md +135 -0
- package/troubleshooting/flutter/sketch-/345/256/214/346/225/264/346/217/220/345/217/226.md +201 -0
- package/troubleshooting/flutter/sketch-/345/261/236/346/200/247/346/234/252/344/275/277/347/224/250.md +139 -0
- package/troubleshooting/flutter/sketch-/350/203/214/346/231/257/345/261/202/351/253/230/345/272/246.md +264 -0
- package/troubleshooting/flutter/svg-/346/234/252/345/261/205/344/270/255.md +120 -0
- package/troubleshooting/flutter/svg-/351/242/234/350/211/262/345/274/202/345/270/270.md +117 -0
- package/troubleshooting/flutter/tabbar-/345/212/250/347/224/273/345/220/214/346/255/245.md +107 -0
- package/troubleshooting/flutter/withopacity-/345/274/203/347/224/250.md +81 -0
- package/troubleshooting/vue3/cascader-/350/257/257/346/233/277/346/215/242.md +130 -0
- package/troubleshooting/vue3/drawer-input-/346/240/267/345/274/217.md +181 -0
- package/troubleshooting/vue3/table-/347/274/226/350/276/221/345/217/226/346/266/210.md +148 -0
- package/troubleshooting/vue3/table-/350/276/271/346/241/206/351/227/256/351/242/230.md +178 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# 设计稿还原通用规范
|
|
2
|
+
|
|
3
|
+
> 适用于使用 Sketch、Figma 等设计工具 MCP 进行 UI 还原的所有场景
|
|
4
|
+
|
|
5
|
+
## 🔴 核心问题
|
|
6
|
+
|
|
7
|
+
本规范基于真实案例总结:**一个简单的输入框垂直居中问题,经历了 15+ 轮对话才修复**。
|
|
8
|
+
|
|
9
|
+
### 问题根源分析
|
|
10
|
+
|
|
11
|
+
| 问题 | 表现 | 后果 |
|
|
12
|
+
|------|------|------|
|
|
13
|
+
| **属性读取不完整** | 只读容器尺寸,忽略内部文本位置 | 无法精确计算边距和行高 |
|
|
14
|
+
| **分散查询** | 每次只问一个属性 | 信息不完整,反复补充 |
|
|
15
|
+
| **假设而非验证** | "应该差不多居中" | 实际偏差明显 |
|
|
16
|
+
| **试错式调整** | 逐个调整参数看效果 | 改了 A 问题引发 B 问题 |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## ✅ 强制执行规范
|
|
21
|
+
|
|
22
|
+
### 1. 完整读取选中元素及其所有子集
|
|
23
|
+
|
|
24
|
+
**⚠️ 这是最重要的规则**
|
|
25
|
+
|
|
26
|
+
```javascript
|
|
27
|
+
// 正确示例:一次性获取完整信息
|
|
28
|
+
function extractCompleteInfo(element) {
|
|
29
|
+
console.log('=== 容器信息 ===');
|
|
30
|
+
console.log(`尺寸: ${element.frame.width}x${element.frame.height}px`);
|
|
31
|
+
|
|
32
|
+
console.log('=== 所有子元素 ===');
|
|
33
|
+
element.layers.forEach((child, index) => {
|
|
34
|
+
console.log(`\n子元素 ${index}: ${child.name} (${child.type})`);
|
|
35
|
+
console.log(` X: ${child.frame.x}px, Y: ${child.frame.y}px`);
|
|
36
|
+
console.log(` 宽: ${child.frame.width}px, 高: ${child.frame.height}px`);
|
|
37
|
+
|
|
38
|
+
if (child.type === 'Text') {
|
|
39
|
+
console.log(` 字号: ${child.style.fontSize}px`);
|
|
40
|
+
console.log(` 字重: ${child.style.fontWeight}`);
|
|
41
|
+
console.log(` 颜色: ${child.style.textColor}`);
|
|
42
|
+
console.log(` 行高倍数: ${(child.frame.height / child.style.fontSize).toFixed(2)}`);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// 递归处理嵌套子元素
|
|
46
|
+
if (child.layers && child.layers.length > 0) {
|
|
47
|
+
child.layers.forEach(nested => {
|
|
48
|
+
console.log(` 嵌套: ${nested.name} (${nested.type})`);
|
|
49
|
+
console.log(` 位置: Y=${nested.frame.y}px`);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
console.log('=== 计算结果 ===');
|
|
55
|
+
const textChild = element.layers.find(l => l.type === 'Text');
|
|
56
|
+
if (textChild) {
|
|
57
|
+
const topSpace = textChild.frame.y;
|
|
58
|
+
const bottomSpace = element.frame.height - textChild.frame.y - textChild.frame.height;
|
|
59
|
+
console.log(`文本上边距: ${topSpace}px`);
|
|
60
|
+
console.log(`文本下边距: ${bottomSpace}px`);
|
|
61
|
+
console.log(`是否居中: ${Math.abs(topSpace - bottomSpace) < 2 ? '是' : '否'}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 2. 必须获取的完整信息清单
|
|
67
|
+
|
|
68
|
+
| 元素类型 | 必须获取的属性 | 用途 |
|
|
69
|
+
|----------|----------------|------|
|
|
70
|
+
| **容器** | width, height, padding, 背景色/渐变 | 外层布局 |
|
|
71
|
+
| **文本** | Y 坐标, height, fontSize, fontWeight, color | 计算行高和边距 |
|
|
72
|
+
| **图标** | viewBox, path, fill, fill-opacity | 完整导出 SVG |
|
|
73
|
+
| **渐变** | 所有 stops(颜色+位置), from, to | 精确还原 |
|
|
74
|
+
| **阴影** | x, y, blur, spread, color (全部 5 个) | 完整阴影 |
|
|
75
|
+
| **边框** | color, width, position | 边框样式 |
|
|
76
|
+
|
|
77
|
+
### 3. 计算而非试错
|
|
78
|
+
|
|
79
|
+
**正确流程**:
|
|
80
|
+
```
|
|
81
|
+
1. 从设计稿获取精确数值
|
|
82
|
+
2. 计算目标框架需要的参数
|
|
83
|
+
3. 一次性配置完整方案
|
|
84
|
+
4. 验证结果
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**示例:TextField 行高计算**
|
|
88
|
+
```
|
|
89
|
+
设计稿数据:
|
|
90
|
+
- 容器高度: 36px
|
|
91
|
+
- 文本 Y 坐标: 8px
|
|
92
|
+
- 文本高度: 20px
|
|
93
|
+
- 字号: 14px
|
|
94
|
+
|
|
95
|
+
计算:
|
|
96
|
+
- 行高倍数 = 文本高度 ÷ 字号 = 20 ÷ 14 = 1.43
|
|
97
|
+
- 上边距 = 文本 Y 坐标 = 8px
|
|
98
|
+
- 下边距 = 容器高度 - Y - 文本高度 = 36 - 8 - 20 = 8px
|
|
99
|
+
|
|
100
|
+
Flutter 配置:
|
|
101
|
+
style: TextStyle(fontSize: 14, height: 1.43)
|
|
102
|
+
Container: height=36, alignment=Alignment.center
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 📋 框架特定注意事项
|
|
108
|
+
|
|
109
|
+
### Flutter
|
|
110
|
+
|
|
111
|
+
| 问题场景 | 关键属性 | 注意事项 |
|
|
112
|
+
|----------|----------|----------|
|
|
113
|
+
| TextField 居中 | `style.height`, `hintStyle.height` | 两者必须相同 |
|
|
114
|
+
| 容器阴影 | `clipBehavior` | 设为 `Clip.none` 避免裁剪 |
|
|
115
|
+
| Gap 间距 | `Gap()` vs `Gap.h()` | 默认垂直,`.h()` 水平 |
|
|
116
|
+
| SVG 颜色 | `colorFilter` | 不要覆盖,保留原色 |
|
|
117
|
+
|
|
118
|
+
### Vue/CSS
|
|
119
|
+
|
|
120
|
+
| 问题场景 | 关键属性 | 注意事项 |
|
|
121
|
+
|----------|----------|----------|
|
|
122
|
+
| Flex 居中 | `align-items`, `justify-content` | 注意主轴方向 |
|
|
123
|
+
| 文本居中 | `line-height` | 设为容器高度实现垂直居中 |
|
|
124
|
+
| 边框问题 | `box-sizing` | 使用 `border-box` |
|
|
125
|
+
| 阴影裁剪 | `overflow` | 避免 `hidden` 裁剪阴影 |
|
|
126
|
+
|
|
127
|
+
### React Native
|
|
128
|
+
|
|
129
|
+
| 问题场景 | 关键属性 | 注意事项 |
|
|
130
|
+
|----------|----------|----------|
|
|
131
|
+
| 文本居中 | `textAlignVertical` | 仅 Android 生效 |
|
|
132
|
+
| 输入框 | `includeFontPadding` | Android 设为 false |
|
|
133
|
+
| 阴影 | `elevation` vs `shadow*` | 平台差异 |
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 🚫 禁止事项
|
|
138
|
+
|
|
139
|
+
1. ❌ **禁止只读容器属性** - 必须读取所有子元素
|
|
140
|
+
2. ❌ **禁止分散查询** - 一次性获取完整信息
|
|
141
|
+
3. ❌ **禁止假设数值** - 必须从设计稿读取精确像素
|
|
142
|
+
4. ❌ **禁止试错调整** - 先计算,再编码
|
|
143
|
+
5. ❌ **禁止忽略透明度** - 颜色 `#RRGGBBAA` 最后两位是透明度
|
|
144
|
+
6. ❌ **禁止属性不一致** - 相关属性(如 style 和 hintStyle)必须统一配置
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## ✅ 检查清单
|
|
149
|
+
|
|
150
|
+
还原任何设计稿元素前:
|
|
151
|
+
|
|
152
|
+
- [ ] 已获取目标元素的**容器尺寸**
|
|
153
|
+
- [ ] 已获取**所有子元素**的位置和尺寸
|
|
154
|
+
- [ ] 已获取文本的**Y 坐标、高度、字号**
|
|
155
|
+
- [ ] 已**计算**行高倍数和边距
|
|
156
|
+
- [ ] 已确认相关属性(style/hintStyle)**配置一致**
|
|
157
|
+
- [ ] 已一次性配置**完整方案**
|
|
158
|
+
- [ ] 已验证**所有相关元素**符合预期
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
**维护团队**: MTA工作室
|
|
163
|
+
**创建日期**: 2026-01-19
|
|
164
|
+
**版本**: v1.0
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
# 大型项目文档拆分规范
|
|
2
|
+
|
|
3
|
+
> 适用场景:功能模块多(>30页)、目录结构复杂、开发周期长的中大型项目
|
|
4
|
+
> 核心目标:不丢失需求细节 + 避免 Token 膨胀 + 支持独立开发
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、适用场景判断
|
|
9
|
+
|
|
10
|
+
### 触发条件(满足任一)
|
|
11
|
+
|
|
12
|
+
- 原型/设计稿页面数 > 30
|
|
13
|
+
- 功能模块 > 5 个
|
|
14
|
+
- 预估开发周期 > 2 周
|
|
15
|
+
- 文档内容超过 500 行
|
|
16
|
+
|
|
17
|
+
### 不适用场景
|
|
18
|
+
|
|
19
|
+
- 单页面应用或小型项目
|
|
20
|
+
- 功能模块 ≤ 3 个
|
|
21
|
+
- 页面数 ≤ 20
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 二、拆分流程
|
|
26
|
+
|
|
27
|
+
### Step 1: 资源盘点
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 统计原型/设计稿数量
|
|
31
|
+
find docs/ -type f -name "*.png" | wc -l
|
|
32
|
+
|
|
33
|
+
# 列出完整目录结构
|
|
34
|
+
find docs/ -type f -name "*.png" | sort
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**输出**:确认总页面数,建立完整清单
|
|
38
|
+
|
|
39
|
+
### Step 2: 模块识别
|
|
40
|
+
|
|
41
|
+
根据目录结构识别一级模块:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
docs/项目名/
|
|
45
|
+
├── 用户登录/ → 模块1
|
|
46
|
+
├── 交易管理/ → 模块2
|
|
47
|
+
├── 财务管理/ → 模块3
|
|
48
|
+
├── 客户管理/ → 模块4
|
|
49
|
+
└── ...
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Step 3: 创建文档结构
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
docs/
|
|
56
|
+
├── DEVELOPMENT_PLAN.md # 主文档(精简版)
|
|
57
|
+
└── plans/ # 模块子计划目录
|
|
58
|
+
├── 01-模块A.md
|
|
59
|
+
├── 02-模块B.md
|
|
60
|
+
└── ...
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Step 4: 主文档内容(精简版)
|
|
64
|
+
|
|
65
|
+
主文档只包含:
|
|
66
|
+
1. 项目概述(技术栈、原型地址)
|
|
67
|
+
2. 页面统计总表(模块 + 页面数)
|
|
68
|
+
3. 模块子计划索引(链接到子文档)
|
|
69
|
+
4. 架构设计(目录结构、Mock系统)
|
|
70
|
+
5. 开发规范(简要)
|
|
71
|
+
|
|
72
|
+
**控制在 100-150 行以内**
|
|
73
|
+
|
|
74
|
+
### Step 5: 模块子文档内容(详细版)
|
|
75
|
+
|
|
76
|
+
每个模块文档包含:
|
|
77
|
+
|
|
78
|
+
```markdown
|
|
79
|
+
# 模块名称开发计划
|
|
80
|
+
|
|
81
|
+
> 模块:xxx
|
|
82
|
+
> 页面数:xx
|
|
83
|
+
> 上下文依赖:说明
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 页面清单
|
|
88
|
+
|
|
89
|
+
| 序号 | 页面名称 | 原型文件 | 类型 | 独立性 |
|
|
90
|
+
|------|----------|----------|------|--------|
|
|
91
|
+
| 1 | xxx | xxx.png | 列表/详情/表单/弹窗 | ✅独立 / 依赖xxx |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 目录结构
|
|
96
|
+
|
|
97
|
+
src/views/main/模块名/
|
|
98
|
+
├── XxxList.vue
|
|
99
|
+
└── XxxDetail.vue
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 进度跟踪
|
|
104
|
+
|
|
105
|
+
- [ ] 子功能A (0/n)
|
|
106
|
+
- [ ] 子功能B (0/n)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 三、页面分类标准
|
|
112
|
+
|
|
113
|
+
### 3.1 页面类型
|
|
114
|
+
|
|
115
|
+
| 类型 | 说明 | 示例 |
|
|
116
|
+
|------|------|------|
|
|
117
|
+
| 列表 | 数据表格 + 搜索 + 分页 | 用户列表、订单列表 |
|
|
118
|
+
| 详情 | 查看单条记录完整信息 | 订单详情、用户详情 |
|
|
119
|
+
| 表单 | 新增/编辑数据 | 新增用户、编辑订单 |
|
|
120
|
+
| 弹窗 | 轻量级交互 | 确认删除、选择项目 |
|
|
121
|
+
| Tab | 详情页内的子视图 | 订单详情-物流信息 |
|
|
122
|
+
| 仪表盘 | 数据概览 | 首页、统计页 |
|
|
123
|
+
|
|
124
|
+
### 3.2 独立性判断
|
|
125
|
+
|
|
126
|
+
| 独立性 | 说明 | 开发策略 |
|
|
127
|
+
|--------|------|----------|
|
|
128
|
+
| ✅ 独立 | 无需其他页面数据 | 可单独开发,优先处理 |
|
|
129
|
+
| 列表→详情 | 详情页依赖列表选中 | 通过路由参数 id 传递 |
|
|
130
|
+
| 表单内弹窗 | 弹窗是表单的子组件 | 随表单一起开发 |
|
|
131
|
+
| 流程依赖 | 需要前置步骤数据 | 通过 store/session 传递 |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 四、开发顺序建议
|
|
136
|
+
|
|
137
|
+
### 4.1 整体顺序
|
|
138
|
+
|
|
139
|
+
1. **基础架构** - Mock系统、类型定义、通用组件
|
|
140
|
+
2. **独立列表页** - 所有无依赖的列表页(约70%)
|
|
141
|
+
3. **详情页** - 列表对应的详情页
|
|
142
|
+
4. **表单页** - 新增/编辑表单
|
|
143
|
+
5. **弹窗/交互** - 各种操作弹窗
|
|
144
|
+
|
|
145
|
+
### 4.2 模块内顺序
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
列表页 → 详情页 → 表单页 → 弹窗组件
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 五、Token 优化策略
|
|
154
|
+
|
|
155
|
+
### 5.1 开发时只加载当前模块
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
❌ 错误:一次性加载 DEVELOPMENT_PLAN.md(可能上千行)
|
|
159
|
+
✅ 正确:只加载 plans/02-交易管理模块.md(当前开发模块)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### 5.2 跨模块引用
|
|
163
|
+
|
|
164
|
+
如果开发当前模块需要参考其他模块:
|
|
165
|
+
- 只引用必要的类型定义
|
|
166
|
+
- 使用业务组件封装(如 CustomerSelect)
|
|
167
|
+
- 不加载完整的其他模块文档
|
|
168
|
+
|
|
169
|
+
### 5.3 进度更新
|
|
170
|
+
|
|
171
|
+
开发完成后,只更新:
|
|
172
|
+
- 当前模块文档的进度跟踪
|
|
173
|
+
- 主文档的完成状态(可选)
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 六、进度管理与中断恢复(重要)
|
|
178
|
+
|
|
179
|
+
> ⚠️ 大型项目开发过程中经常会遇到意外中断(如临时优化、Bug修复、需求变更等),必须建立进度保存机制
|
|
180
|
+
|
|
181
|
+
### 6.1 进度保存时机
|
|
182
|
+
|
|
183
|
+
**必须保存进度的场景:**
|
|
184
|
+
|
|
185
|
+
1. **每完成一个阶段/任务** - 主动保存当前状态
|
|
186
|
+
2. **被临时任务打断时** - 保存后再切换
|
|
187
|
+
3. **发现需要优化/重构时** - 先记录再执行
|
|
188
|
+
4. **长时间暂停前** - 如下班、会议等
|
|
189
|
+
|
|
190
|
+
### 6.2 进度记录格式
|
|
191
|
+
|
|
192
|
+
在项目根目录或 docs/ 下维护 `PROGRESS.md`:
|
|
193
|
+
|
|
194
|
+
```markdown
|
|
195
|
+
# 项目开发进度
|
|
196
|
+
|
|
197
|
+
## 当前状态
|
|
198
|
+
|
|
199
|
+
- **阶段**: Phase 3 - 用户登录模块
|
|
200
|
+
- **进度**: 2/8 页面完成
|
|
201
|
+
- **最后更新**: 2025-12-25 15:30
|
|
202
|
+
|
|
203
|
+
## 任务清单
|
|
204
|
+
|
|
205
|
+
### ✅ 已完成
|
|
206
|
+
1. [x] Phase 1: 基础设施 - Mock系统、类型定义、composables、通用组件
|
|
207
|
+
2. [x] Phase 2: API封装 - request.ts、各业务模块API
|
|
208
|
+
|
|
209
|
+
### 🔄 进行中
|
|
210
|
+
3. [ ] Phase 3: 用户登录模块 (2/8)
|
|
211
|
+
- [x] Login.vue 完善
|
|
212
|
+
- [x] 路由配置
|
|
213
|
+
- [ ] TwoFactorAuth.vue
|
|
214
|
+
- [ ] ResetPassword.vue
|
|
215
|
+
- ...
|
|
216
|
+
|
|
217
|
+
### ⏳ 待开始
|
|
218
|
+
4. [ ] Phase 4: 交易管理模块
|
|
219
|
+
5. [ ] Phase 5: 其他业务模块
|
|
220
|
+
|
|
221
|
+
## 变更记录
|
|
222
|
+
|
|
223
|
+
### 2025-12-25
|
|
224
|
+
- **临时任务**: 优化 API 封装,结合 VitaSage 的 wrap 函数
|
|
225
|
+
- **影响范围**: src/api/request.ts, src/api/modules/*
|
|
226
|
+
- **状态**: ✅ 已完成
|
|
227
|
+
- **备注**: 新增 wrap 函数、文件上传下载、Mock 集成
|
|
228
|
+
|
|
229
|
+
### 2025-12-24
|
|
230
|
+
- **完成**: Phase 1 基础设施搭建
|
|
231
|
+
- **产出**: Mock系统、8个类型定义文件、3个composables、5个通用组件
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### 6.3 中断处理流程
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
发现需要中断
|
|
238
|
+
↓
|
|
239
|
+
1. 保存当前文件
|
|
240
|
+
↓
|
|
241
|
+
2. 更新 PROGRESS.md
|
|
242
|
+
- 当前进度
|
|
243
|
+
- 中断原因
|
|
244
|
+
- 待办事项
|
|
245
|
+
↓
|
|
246
|
+
3. 执行临时任务
|
|
247
|
+
↓
|
|
248
|
+
4. 完成后记录变更
|
|
249
|
+
↓
|
|
250
|
+
5. 恢复原任务
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### 6.4 恢复开发流程
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
打开项目
|
|
257
|
+
↓
|
|
258
|
+
1. 阅读 PROGRESS.md
|
|
259
|
+
- 确认当前阶段
|
|
260
|
+
- 查看待办事项
|
|
261
|
+
- 了解近期变更
|
|
262
|
+
↓
|
|
263
|
+
2. 加载相关模块文档
|
|
264
|
+
- plans/xx-当前模块.md
|
|
265
|
+
↓
|
|
266
|
+
3. 继续开发
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### 6.5 Todo List 工具使用
|
|
270
|
+
|
|
271
|
+
**推荐使用 `manage_todo_list` 工具跟踪任务:**
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
// 创建任务列表
|
|
275
|
+
manage_todo_list({
|
|
276
|
+
todoList: [
|
|
277
|
+
{ id: 1, title: "Phase 1: 基础设施", status: "completed", description: "..." },
|
|
278
|
+
{ id: 2, title: "Phase 2: API封装", status: "completed", description: "..." },
|
|
279
|
+
{ id: 3, title: "Phase 3: 用户登录", status: "in-progress", description: "..." },
|
|
280
|
+
{ id: 4, title: "Phase 4: 交易管理", status: "not-started", description: "..." },
|
|
281
|
+
]
|
|
282
|
+
})
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**工具使用原则:**
|
|
286
|
+
- 开始新项目时创建完整任务列表
|
|
287
|
+
- 每完成一个任务立即更新状态
|
|
288
|
+
- 被打断时保存当前状态
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## 七、质量检查清单
|
|
293
|
+
|
|
294
|
+
### 拆分完成后检查
|
|
295
|
+
|
|
296
|
+
- [ ] 所有原型页面都已记录(数量一致)
|
|
297
|
+
- [ ] 每个页面有明确的类型和独立性标注
|
|
298
|
+
- [ ] 主文档精简(< 150行)
|
|
299
|
+
- [ ] 模块子文档完整(含页面清单、目录结构、进度跟踪)
|
|
300
|
+
- [ ] 子文档之间无重复内容
|
|
301
|
+
|
|
302
|
+
### 开发过程检查
|
|
303
|
+
|
|
304
|
+
- [ ] 开发前只加载当前模块文档
|
|
305
|
+
- [ ] 完成后及时更新进度
|
|
306
|
+
- [ ] 复用组件及时提取到 common/business
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## 七、示例项目结构
|
|
311
|
+
|
|
312
|
+
以「汇通管理后台」为例:
|
|
313
|
+
|
|
314
|
+
```
|
|
315
|
+
docs/
|
|
316
|
+
├── DEVELOPMENT_PLAN.md # 主文档(~100行)
|
|
317
|
+
├── plans/
|
|
318
|
+
│ ├── 01-用户登录模块.md # 8页
|
|
319
|
+
│ ├── 02-交易管理模块.md # 29页(含8个子模块)
|
|
320
|
+
│ ├── 03-财务管理模块.md # 17页
|
|
321
|
+
│ ├── 04-客户管理模块.md # 18页
|
|
322
|
+
│ ├── 05-收款人管理模块.md # 5页
|
|
323
|
+
│ ├── 06-推广管理模块.md # 14页
|
|
324
|
+
│ ├── 07-促销管理模块.md # 9页
|
|
325
|
+
│ ├── 08-风险管理模块.md # 10页
|
|
326
|
+
│ ├── 09-系统设置模块.md # 14页
|
|
327
|
+
│ ├── 10-消息与广告模块.md # 9页
|
|
328
|
+
│ └── 11-其他页面.md # 2页
|
|
329
|
+
└── 汇通管理后台/ # 原型截图(143个.png)
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## 八、MCP 工具调用
|
|
335
|
+
|
|
336
|
+
开发大型项目时,建议的工作流:
|
|
337
|
+
|
|
338
|
+
```typescript
|
|
339
|
+
// 1. 项目分析阶段
|
|
340
|
+
analyze_project({ projectPath: "/path/to/project" })
|
|
341
|
+
|
|
342
|
+
// 2. 加载当前模块规范
|
|
343
|
+
get_relevant_standards({
|
|
344
|
+
scenario: "大型项目文档拆分",
|
|
345
|
+
fileType: "md"
|
|
346
|
+
})
|
|
347
|
+
|
|
348
|
+
// 3. 开发具体模块时
|
|
349
|
+
get_relevant_standards({
|
|
350
|
+
fileType: "vue",
|
|
351
|
+
imports: ["element-plus"] // 根据实际技术栈
|
|
352
|
+
})
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
**维护者**: MTA工作室
|
|
358
|
+
**创建日期**: 2025-12-25
|
|
359
|
+
**适用版本**: v1.0
|