sdd-full 2.2.0 → 3.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.
- package/package.json +1 -1
- package/skills/design-planning/ai-coding-rules/SKILL.md +52 -0
- package/skills/design-planning/design-to-code/SKILL.md +53 -0
- package/skills/design-planning/enterprise-spec/SKILL.md +54 -0
- package/skills/design-planning/flutter-av/SKILL.md +54 -0
- package/skills/design-planning/flutter-map/SKILL.md +54 -0
- package/skills/design-planning/function-sdd/SKILL.md +54 -0
- package/skills/design-planning/ui-sdd-specialized/SKILL.md +56 -0
- package/skills/development-execution/flutter-errors/SKILL.md +54 -0
- package/skills/quality-assurance/bdd-acceptance/SKILL.md +56 -0
- package/skills/quality-assurance/flutter-test/SKILL.md +56 -0
- package/skills/rules/project_rules.md +167 -0
- package/skills/rules/user_rules.md +223 -0
- package/skills/special-tools/env-check/SKILL.md +53 -0
- package/skills/templates/Andrej Karpathy AI/347/274/226/347/240/201/350/247/204/345/210/231/350/220/275/345/234/260SDD.md" +117 -0
- package/skills/templates/BDD/351/243/216/346/240/274/351/252/214/346/224/266/346/240/207/345/207/206SDD.md +147 -0
- package/skills/templates/Flutter/345/205/250/347/261/273/345/236/213/346/265/213/350/257/225/347/255/226/347/225/245SDD.md +162 -0
- package/skills/templates/Flutter/345/234/260/345/233/276/345/257/274/350/210/252/344/270/232/345/212/241SDD.md +136 -0
- package/skills/templates/Flutter/345/270/270/350/247/201/345/274/202/345/270/270/344/270/223/351/241/271SDD.md +159 -0
- package/skills/templates/Flutter/351/237/263/350/247/206/351/242/221/345/205/250/346/240/210SDD.md +121 -0
- package/skills/templates/UI-SDD/344/270/223/347/224/250/346/250/241/346/235/277.md +141 -0
- package/skills/templates//344/274/201/344/270/232/347/272/247/345/205/250/346/240/210/345/267/245/347/250/213/350/247/204/350/214/203SDD.md +152 -0
- package/skills/templates//345/212/237/350/203/275SDD/344/270/223/347/224/250/346/250/241/346/235/277.md +132 -0
- package/skills/templates//347/216/257/345/242/203/351/242/204/346/243/200/346/240/207/345/207/206/345/214/226SDD.md +153 -0
- package/skills/templates//351/253/230/344/277/235/347/234/237/350/256/276/350/256/241/350/275/254/344/273/243/347/240/201SDD.md +119 -0
- package/skills//346/212/200/350/203/275/345/206/263/347/255/226/346/240/221.md +16 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
【claude code调用标识:Flutter全类型测试策略SDD】【trae调用标识:Flutter全类型测试策略SDD+测试方案】【流程场景:1.完整3阶段SDD流程、3.小型功能迭代、4.Bug处理】
|
|
2
|
+
|
|
3
|
+
# Flutter全类型测试策略SDD:[项目名称]
|
|
4
|
+
|
|
5
|
+
## 一、Golden截图测试
|
|
6
|
+
|
|
7
|
+
### 1.1 配置说明
|
|
8
|
+
| 工具 | 版本 | 用途 |
|
|
9
|
+
|------|------|------|
|
|
10
|
+
| flutter_test | 内置 | 基础测试框架 |
|
|
11
|
+
| golden_toolkit | ^0.15.0 | Golden测试增强 |
|
|
12
|
+
|
|
13
|
+
### 1.2 核心配置
|
|
14
|
+
```dart
|
|
15
|
+
void main() {
|
|
16
|
+
testGoldens('test widget golden', (tester) async {
|
|
17
|
+
await tester.pumpWidget(MyWidget());
|
|
18
|
+
await screenMatchesGolden(tester, 'my_widget_golden');
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 1.3 边界与优缺点
|
|
24
|
+
| 维度 | 说明 |
|
|
25
|
+
|------|------|
|
|
26
|
+
| 优点 | 自动化视觉回归测试、快速发现UI变化 |
|
|
27
|
+
| 缺点 | 对像素差异敏感、环境差异影响大 |
|
|
28
|
+
| 边界 | 仅测试静态UI、不测试交互逻辑 |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 二、E2E端到端测试
|
|
33
|
+
|
|
34
|
+
### 2.1 配置说明
|
|
35
|
+
| 工具 | 版本 | 用途 |
|
|
36
|
+
|------|------|------|
|
|
37
|
+
| integration_test | 内置 | 集成测试框架 |
|
|
38
|
+
| flutter_driver | 内置 | 驱动测试 |
|
|
39
|
+
|
|
40
|
+
### 2.2 核心配置
|
|
41
|
+
```dart
|
|
42
|
+
void main() {
|
|
43
|
+
integrationDriver();
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 2.3 边界与优缺点
|
|
48
|
+
| 维度 | 说明 |
|
|
49
|
+
|------|------|
|
|
50
|
+
| 优点 | 模拟真实用户操作、覆盖完整流程 |
|
|
51
|
+
| 缺点 | 执行速度慢、环境要求高 |
|
|
52
|
+
| 边界 | 依赖真实设备/模拟器、网络环境 |
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 三、TDD单元测试
|
|
57
|
+
|
|
58
|
+
### 3.1 配置说明
|
|
59
|
+
| 工具 | 版本 | 用途 |
|
|
60
|
+
|------|------|------|
|
|
61
|
+
| flutter_test | 内置 | 单元测试框架 |
|
|
62
|
+
| mockito | ^5.0.0 | Mock对象 |
|
|
63
|
+
|
|
64
|
+
### 3.2 核心配置
|
|
65
|
+
```dart
|
|
66
|
+
void main() {
|
|
67
|
+
test('test calculation', () {
|
|
68
|
+
final calculator = Calculator();
|
|
69
|
+
expect(calculator.add(2, 3), equals(5));
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 3.3 边界与优缺点
|
|
75
|
+
| 维度 | 说明 |
|
|
76
|
+
|------|------|
|
|
77
|
+
| 优点 | 执行速度快、隔离性好、可重复 |
|
|
78
|
+
| 缺点 | 无法测试UI、需要Mock依赖 |
|
|
79
|
+
| 边界 | 仅测试逻辑单元、不测试集成 |
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 四、冒烟测试
|
|
84
|
+
|
|
85
|
+
### 4.1 配置说明
|
|
86
|
+
| 工具 | 版本 | 用途 |
|
|
87
|
+
|------|------|------|
|
|
88
|
+
| flutter_test | 内置 | 基础测试框架 |
|
|
89
|
+
| custom_test_runner | 自定义 | 冒烟测试套件 |
|
|
90
|
+
|
|
91
|
+
### 4.2 核心配置
|
|
92
|
+
```dart
|
|
93
|
+
void main() {
|
|
94
|
+
group('smoke tests', () {
|
|
95
|
+
test('app starts', () {
|
|
96
|
+
expect(true, isTrue);
|
|
97
|
+
});
|
|
98
|
+
test('main widget builds', () {
|
|
99
|
+
// 基础构建测试
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 4.3 边界与优缺点
|
|
106
|
+
| 维度 | 说明 |
|
|
107
|
+
|------|------|
|
|
108
|
+
| 优点 | 快速验证、早期发现问题 |
|
|
109
|
+
| 缺点 | 覆盖范围有限、不够深入 |
|
|
110
|
+
| 边界 | 仅验证基本功能、不测试细节 |
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 五、自动化实现规范
|
|
115
|
+
|
|
116
|
+
### 5.1 测试目录结构
|
|
117
|
+
```
|
|
118
|
+
test/
|
|
119
|
+
├── unit/ # 单元测试
|
|
120
|
+
├── integration/ # 集成测试
|
|
121
|
+
├── golden/ # Golden测试
|
|
122
|
+
└── smoke/ # 冒烟测试
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 5.2 测试执行命令
|
|
126
|
+
| 命令 | 用途 |
|
|
127
|
+
|------|------|
|
|
128
|
+
| `flutter test` | 运行所有测试 |
|
|
129
|
+
| `flutter test test/unit/` | 运行单元测试 |
|
|
130
|
+
| `flutter test --update-goldens` | 更新Golden快照 |
|
|
131
|
+
| `flutter drive` | 运行E2E测试 |
|
|
132
|
+
|
|
133
|
+
### 5.3 CI/CD集成
|
|
134
|
+
| 阶段 | 测试类型 |
|
|
135
|
+
|------|---------|
|
|
136
|
+
| PR检查 | 单元测试、冒烟测试 |
|
|
137
|
+
| 构建前 | Golden测试 |
|
|
138
|
+
| 发布前 | E2E测试 |
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 六、验收标准
|
|
143
|
+
|
|
144
|
+
### 6.1 测试覆盖率
|
|
145
|
+
- [ ] 单元测试覆盖率 ≥ 80%
|
|
146
|
+
- [ ] 集成测试覆盖率 ≥ 70%
|
|
147
|
+
- [ ] Golden测试覆盖核心页面
|
|
148
|
+
- [ ] 冒烟测试覆盖启动流程
|
|
149
|
+
|
|
150
|
+
### 6.2 测试执行
|
|
151
|
+
- [ ] 所有单元测试通过
|
|
152
|
+
- [ ] 所有Golden测试通过
|
|
153
|
+
- [ ] E2E测试覆盖核心流程
|
|
154
|
+
- [ ] 冒烟测试快速通过
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## 七、trae调用参数说明
|
|
159
|
+
- **调用路径**: skills/templates/Flutter全类型测试策略SDD.md
|
|
160
|
+
- **必传参数**: 项目名称
|
|
161
|
+
- **可选参数**: 测试类型(单元/集成/Golden/E2E/冒烟)
|
|
162
|
+
- **流程场景**: 1.完整3阶段SDD流程、3.小型功能迭代、4.Bug处理
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
【claude code调用标识:Flutter地图导航业务SDD】【trae调用标识:Flutter地图导航业务SDD+地图集成】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目、3.小型功能迭代】
|
|
2
|
+
|
|
3
|
+
# Flutter地图导航业务SDD:[项目名称]
|
|
4
|
+
|
|
5
|
+
## 一、SDK集成
|
|
6
|
+
|
|
7
|
+
### 1.1 版本锁定
|
|
8
|
+
| SDK | 版本号 | 锁定状态 |
|
|
9
|
+
|------|------|---------|
|
|
10
|
+
| 高德地图Flutter SDK | 【10.0.0】 | 【已锁定】 |
|
|
11
|
+
| amap_flutter_map | 【3.0.0】 | 【已锁定】 |
|
|
12
|
+
| amap_flutter_location | 【3.0.0】 | 【已锁定】 |
|
|
13
|
+
|
|
14
|
+
### 1.2 依赖配置
|
|
15
|
+
```yaml
|
|
16
|
+
dependencies:
|
|
17
|
+
amap_flutter_map: ^3.0.0
|
|
18
|
+
amap_flutter_location: ^3.0.0
|
|
19
|
+
amap_flutter_base: ^3.0.0
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 1.3 初始化时机
|
|
23
|
+
- [ ] 应用启动时全局初始化一次
|
|
24
|
+
- [ ] 禁止在页面中重复初始化
|
|
25
|
+
- [ ] 初始化完成后缓存实例
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 二、核心功能
|
|
30
|
+
|
|
31
|
+
### 2.1 地图显示
|
|
32
|
+
| 功能 | 实现方式 | 验收标准 |
|
|
33
|
+
|------|---------|---------|
|
|
34
|
+
| 地图加载 | MapWidget | 地图正常显示 |
|
|
35
|
+
| 地图类型切换 | mapType | 支持普通/卫星/夜间模式 |
|
|
36
|
+
| 缩放控制 | zoomControls | 支持手势缩放 |
|
|
37
|
+
| 拖动控制 | gestureRecognizers | 支持手势拖动 |
|
|
38
|
+
|
|
39
|
+
### 2.2 定位服务
|
|
40
|
+
| 功能 | 实现方式 | 验收标准 |
|
|
41
|
+
|------|---------|---------|
|
|
42
|
+
| 首次定位 | LocationPlugin | 进入页面自动定位并居中 |
|
|
43
|
+
| 持续定位 | startLocation | 实时更新位置 |
|
|
44
|
+
| 定位权限 | PermissionHandler | 权限申请流程完整 |
|
|
45
|
+
|
|
46
|
+
### 2.3 导航功能
|
|
47
|
+
| 功能 | 实现方式 | 验收标准 |
|
|
48
|
+
|------|---------|---------|
|
|
49
|
+
| 路径规划 | AMapNavi | 支持驾车/步行/骑行 |
|
|
50
|
+
| 导航指引 | NaviWidget | 语音+视觉指引 |
|
|
51
|
+
| 实时路况 | TrafficInfo | 显示实时交通状况 |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 三、Marker处理
|
|
56
|
+
|
|
57
|
+
### 3.1 Marker创建
|
|
58
|
+
| 属性 | 说明 | 示例值 |
|
|
59
|
+
|------|------|------|
|
|
60
|
+
| position | 经纬度 | LatLng(39.908860, 116.397390) |
|
|
61
|
+
| icon | 自定义图标 | BitmapDescriptor.fromAsset() |
|
|
62
|
+
| anchor | 锚点位置 | Offset(0.5, 1.0) |
|
|
63
|
+
| infoWindow | 信息窗口 | InfoWindow(title, snippet) |
|
|
64
|
+
|
|
65
|
+
### 3.2 警告处理
|
|
66
|
+
| 警告类型 | 处理方式 | 代码示例 |
|
|
67
|
+
|----------|---------|---------|
|
|
68
|
+
| 重复添加 | 先remove再add | marker.remove() |
|
|
69
|
+
| 内存泄漏 | dispose时清理 | dispose()中调用clearMarkers() |
|
|
70
|
+
| 图标加载失败 | 备用图标 | fallback icon |
|
|
71
|
+
|
|
72
|
+
### 3.3 自定义样式
|
|
73
|
+
| 样式类型 | 实现方式 | 适用场景 |
|
|
74
|
+
|---------|---------|---------|
|
|
75
|
+
| 自定义图标 | BitmapDescriptor | 不同类型Marker |
|
|
76
|
+
| 动画效果 | AnimationController | 选中/高亮效果 |
|
|
77
|
+
| 聚合显示 | ClusterManager | 大量Marker |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 四、常见问题
|
|
82
|
+
|
|
83
|
+
### 4.1 地图不显示
|
|
84
|
+
| 排查步骤 | 检查内容 | 解决方案 |
|
|
85
|
+
|---------|---------|---------|
|
|
86
|
+
| 1 | API Key是否正确 | 检查key配置 |
|
|
87
|
+
| 2 | 权限是否开启 | 检查Info.plist/AndroidManifest |
|
|
88
|
+
| 3 | 网络是否正常 | 检查网络连接 |
|
|
89
|
+
| 4 | 依赖是否正确 | 检查pubspec配置 |
|
|
90
|
+
|
|
91
|
+
### 4.2 定位失败
|
|
92
|
+
| 排查步骤 | 检查内容 | 解决方案 |
|
|
93
|
+
|---------|---------|---------|
|
|
94
|
+
| 1 | 定位权限是否获取 | 请求定位权限 |
|
|
95
|
+
| 2 | 定位服务是否开启 | 提示用户开启 |
|
|
96
|
+
| 3 | 网络定位是否可用 | 切换网络 |
|
|
97
|
+
| 4 | GPS是否开启 | 提示用户开启 |
|
|
98
|
+
|
|
99
|
+
### 4.3 导航异常
|
|
100
|
+
| 排查步骤 | 检查内容 | 解决方案 |
|
|
101
|
+
|---------|---------|---------|
|
|
102
|
+
| 1 | 起点终点是否有效 | 校验坐标 |
|
|
103
|
+
| 2 | 路径规划是否成功 | 检查API返回 |
|
|
104
|
+
| 3 | 导航组件是否初始化 | 检查初始化流程 |
|
|
105
|
+
| 4 | 语音播报是否正常 | 检查权限和配置 |
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 五、验收标准
|
|
110
|
+
|
|
111
|
+
### 5.1 功能验证
|
|
112
|
+
- [ ] 地图正常加载显示
|
|
113
|
+
- [ ] 首次定位自动居中
|
|
114
|
+
- [ ] 手动拖动不自动回弹
|
|
115
|
+
- [ ] Marker点击显示信息窗口
|
|
116
|
+
- [ ] 导航路径规划正确
|
|
117
|
+
|
|
118
|
+
### 5.2 性能指标
|
|
119
|
+
- [ ] 地图加载时间 ≤ 2秒
|
|
120
|
+
- [ ] 定位响应时间 ≤ 1秒
|
|
121
|
+
- [ ] 内存占用正常(无泄漏)
|
|
122
|
+
- [ ] 动画流畅(60fps)
|
|
123
|
+
|
|
124
|
+
### 5.3 稳定性测试
|
|
125
|
+
- [ ] 连续运行24小时无崩溃
|
|
126
|
+
- [ ] 切换后台/前台正常
|
|
127
|
+
- [ ] 网络切换后自动恢复
|
|
128
|
+
- [ ] 低内存环境正常运行
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 六、trae调用参数说明
|
|
133
|
+
- **调用路径**: skills/templates/Flutter地图导航业务SDD.md
|
|
134
|
+
- **必传参数**: 项目名称
|
|
135
|
+
- **可选参数**: SDK版本、功能范围
|
|
136
|
+
- **流程场景**: 1.完整3阶段SDD流程、2.从零开始新项目、3.小型功能迭代
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
【claude code调用标识:Flutter常见异常专项SDD】【trae调用标识:Flutter常见异常专项SDD+异常处理】【流程场景:4.Bug处理】
|
|
2
|
+
|
|
3
|
+
# Flutter常见异常专项SDD:[项目名称]
|
|
4
|
+
|
|
5
|
+
## 一、SocketException异常
|
|
6
|
+
|
|
7
|
+
### 1.1 异常描述
|
|
8
|
+
| 属性 | 说明 |
|
|
9
|
+
|------|------|
|
|
10
|
+
| 异常类型 | SocketException |
|
|
11
|
+
| 错误码 | 通常为OS错误码 |
|
|
12
|
+
| 常见原因 | 网络不可用、连接被拒绝、超时 |
|
|
13
|
+
|
|
14
|
+
### 1.2 排查流程
|
|
15
|
+
| 步骤 | 检查内容 | 验证方法 |
|
|
16
|
+
|------|---------|---------|
|
|
17
|
+
| 1 | 网络连接 | ping baidu.com |
|
|
18
|
+
| 2 | 服务器状态 | 检查API是否可访问 |
|
|
19
|
+
| 3 | 端口开放 | telnet host port |
|
|
20
|
+
| 4 | 代理配置 | 检查系统代理设置 |
|
|
21
|
+
|
|
22
|
+
### 1.3 修复方案
|
|
23
|
+
```dart
|
|
24
|
+
try {
|
|
25
|
+
final response = await http.get(Uri.parse(url));
|
|
26
|
+
} on SocketException catch (e) {
|
|
27
|
+
// 网络异常处理
|
|
28
|
+
showError('网络连接失败,请检查网络设置');
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 1.4 预防措施
|
|
33
|
+
- [ ] 添加网络状态监听
|
|
34
|
+
- [ ] 实现重试机制
|
|
35
|
+
- [ ] 添加超时配置
|
|
36
|
+
- [ ] 提供离线模式
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 二、Framebuffer渲染异常
|
|
41
|
+
|
|
42
|
+
### 2.1 异常描述
|
|
43
|
+
| 属性 | 说明 |
|
|
44
|
+
|------|------|
|
|
45
|
+
| 异常类型 | FlutterError |
|
|
46
|
+
| 错误码 | 渲染相关错误 |
|
|
47
|
+
| 常见原因 | Widget树不一致、布局溢出、资源缺失 |
|
|
48
|
+
|
|
49
|
+
### 2.2 排查流程
|
|
50
|
+
| 步骤 | 检查内容 | 验证方法 |
|
|
51
|
+
|------|---------|---------|
|
|
52
|
+
| 1 | Widget树 | 检查build方法返回 |
|
|
53
|
+
| 2 | 布局约束 | 检查Container/SizedBox约束 |
|
|
54
|
+
| 3 | 资源文件 | 检查图片/字体是否存在 |
|
|
55
|
+
| 4 | 日志分析 | 查看Flutter控制台 |
|
|
56
|
+
|
|
57
|
+
### 2.3 修复方案
|
|
58
|
+
```dart
|
|
59
|
+
// 确保Widget树一致性
|
|
60
|
+
@override
|
|
61
|
+
Widget build(BuildContext context) {
|
|
62
|
+
if (data == null) {
|
|
63
|
+
return CircularProgressIndicator();
|
|
64
|
+
}
|
|
65
|
+
return Text(data!.text);
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 2.4 预防措施
|
|
70
|
+
- [ ] 使用const构造函数
|
|
71
|
+
- [ ] 添加null安全检查
|
|
72
|
+
- [ ] 使用LayoutBuilder处理约束
|
|
73
|
+
- [ ] 启用debug模式检查
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 三、其他常见异常
|
|
78
|
+
|
|
79
|
+
### 3.1 空指针异常(NullPointerException)
|
|
80
|
+
| 排查 | 修复 |
|
|
81
|
+
|------|------|
|
|
82
|
+
| 检查变量是否为null | 使用?.或??运算符 |
|
|
83
|
+
| 检查函数返回值 | 添加null检查 |
|
|
84
|
+
|
|
85
|
+
### 3.2 类型转换异常(TypeError)
|
|
86
|
+
| 排查 | 修复 |
|
|
87
|
+
|------|------|
|
|
88
|
+
| 检查类型转换位置 | 使用as进行安全转换 |
|
|
89
|
+
| 检查泛型使用 | 指定正确的泛型类型 |
|
|
90
|
+
|
|
91
|
+
### 3.3 内存泄漏(Memory Leak)
|
|
92
|
+
| 排查 | 修复 |
|
|
93
|
+
|------|------|
|
|
94
|
+
| 使用DevTools分析 | 及时dispose资源 |
|
|
95
|
+
| 检查Stream订阅 | 取消不必要的订阅 |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 四、异常处理框架
|
|
100
|
+
|
|
101
|
+
### 4.1 全局异常捕获
|
|
102
|
+
```dart
|
|
103
|
+
void main() {
|
|
104
|
+
FlutterError.onError = (details) {
|
|
105
|
+
FlutterError.presentError(details);
|
|
106
|
+
// 上报到日志系统
|
|
107
|
+
logError(details.exception, details.stack);
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
runApp(MyApp());
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 4.2 Zone异常捕获
|
|
115
|
+
```dart
|
|
116
|
+
runZonedGuarded(() {
|
|
117
|
+
runApp(MyApp());
|
|
118
|
+
}, (error, stackTrace) {
|
|
119
|
+
// 处理异步异常
|
|
120
|
+
logError(error, stackTrace);
|
|
121
|
+
});
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 4.3 Error Widget
|
|
125
|
+
```dart
|
|
126
|
+
ErrorWidget.builder = (FlutterErrorDetails details) {
|
|
127
|
+
return MaterialApp(
|
|
128
|
+
home: Scaffold(
|
|
129
|
+
body: Center(
|
|
130
|
+
child: Text('发生错误: ${details.exception}'),
|
|
131
|
+
),
|
|
132
|
+
),
|
|
133
|
+
);
|
|
134
|
+
};
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 五、验收标准
|
|
140
|
+
|
|
141
|
+
### 5.1 异常处理验证
|
|
142
|
+
- [ ] SocketException有捕获和提示
|
|
143
|
+
- [ ] Framebuffer异常有防护
|
|
144
|
+
- [ ] 全局异常处理已配置
|
|
145
|
+
- [ ] 错误日志已上报
|
|
146
|
+
|
|
147
|
+
### 5.2 稳定性测试
|
|
148
|
+
- [ ] 网络断开后恢复正常
|
|
149
|
+
- [ ] Widget树异常不导致崩溃
|
|
150
|
+
- [ ] 内存泄漏检测通过
|
|
151
|
+
- [ ] 长时间运行无异常
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 六、trae调用参数说明
|
|
156
|
+
- **调用路径**: skills/templates/Flutter常见异常专项SDD.md
|
|
157
|
+
- **必传参数**: 项目名称
|
|
158
|
+
- **可选参数**: 异常类型(SocketException/Framebuffer/其他)
|
|
159
|
+
- **流程场景**: 4.Bug处理
|
package/skills/templates/Flutter/351/237/263/350/247/206/351/242/221/345/205/250/346/240/210SDD.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
【claude code调用标识:Flutter音视频全栈SDD】【trae调用标识:Flutter音视频全栈SDD+音视频集成】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目、3.小型功能迭代】
|
|
2
|
+
|
|
3
|
+
# Flutter音视频全栈SDD:[项目名称]
|
|
4
|
+
|
|
5
|
+
## 一、离线ASR语音转写
|
|
6
|
+
|
|
7
|
+
### 1.1 SDK集成
|
|
8
|
+
| SDK | 版本 | 配置方式 |
|
|
9
|
+
|------|------|---------|
|
|
10
|
+
| speech_to_text | ^6.0.0 | pubspec依赖 |
|
|
11
|
+
| pocketsphinx | ^0.10.0 | 离线模型 |
|
|
12
|
+
|
|
13
|
+
### 1.2 配置说明
|
|
14
|
+
```yaml
|
|
15
|
+
dependencies:
|
|
16
|
+
speech_to_text: ^6.0.0
|
|
17
|
+
pocketsphinx: ^0.10.0
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### 1.3 核心功能
|
|
21
|
+
| 功能 | 说明 | 验收标准 |
|
|
22
|
+
|------|------|---------|
|
|
23
|
+
| 语音录制 | 麦克风采集 | 支持多种采样率 |
|
|
24
|
+
| 语音识别 | 离线识别引擎 | 准确率≥90% |
|
|
25
|
+
| 实时转写 | 边录边识别 | 延迟≤500ms |
|
|
26
|
+
| 语言选择 | 多语言支持 | 中文/英文 |
|
|
27
|
+
|
|
28
|
+
### 1.4 权限配置
|
|
29
|
+
| 平台 | 权限 | 配置位置 |
|
|
30
|
+
|------|------|---------|
|
|
31
|
+
| iOS | NSMicrophoneUsageDescription | Info.plist |
|
|
32
|
+
| Android | RECORD_AUDIO | AndroidManifest.xml |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 二、TTS语音合成
|
|
37
|
+
|
|
38
|
+
### 2.1 SDK集成
|
|
39
|
+
| SDK | 版本 | 配置方式 |
|
|
40
|
+
|------|------|---------|
|
|
41
|
+
| flutter_tts | ^3.0.0 | pubspec依赖 |
|
|
42
|
+
|
|
43
|
+
### 2.2 配置说明
|
|
44
|
+
```yaml
|
|
45
|
+
dependencies:
|
|
46
|
+
flutter_tts: ^3.0.0
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 2.3 核心功能
|
|
50
|
+
| 功能 | 说明 | 验收标准 |
|
|
51
|
+
|------|------|---------|
|
|
52
|
+
| 文本转语音 | TTS引擎 | 发音清晰 |
|
|
53
|
+
| 语速调节 | 0.5-2.0倍 | 可调节 |
|
|
54
|
+
| 音量调节 | 0-1.0 | 可调节 |
|
|
55
|
+
| 音色选择 | 多种声音 | 支持切换 |
|
|
56
|
+
|
|
57
|
+
### 2.4 平台差异
|
|
58
|
+
| 平台 | 引擎 | 特性 |
|
|
59
|
+
|------|------|------|
|
|
60
|
+
| iOS | AVSpeechSynthesizer | 自然语音 |
|
|
61
|
+
| Android | TextToSpeech | 多语言支持 |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 三、OCR文字识别
|
|
66
|
+
|
|
67
|
+
### 3.1 SDK集成
|
|
68
|
+
| SDK | 版本 | 配置方式 |
|
|
69
|
+
|------|------|---------|
|
|
70
|
+
| google_mlkit_text_recognition | ^0.10.0 | pubspec依赖 |
|
|
71
|
+
| tflite | ^1.1.2 | 离线模型 |
|
|
72
|
+
|
|
73
|
+
### 3.2 配置说明
|
|
74
|
+
```yaml
|
|
75
|
+
dependencies:
|
|
76
|
+
google_mlkit_text_recognition: ^0.10.0
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 3.3 核心功能
|
|
80
|
+
| 功能 | 说明 | 验收标准 |
|
|
81
|
+
|------|------|---------|
|
|
82
|
+
| 图片识别 | 从图片提取文字 | 准确率≥95% |
|
|
83
|
+
| 实时识别 | 摄像头实时识别 | 帧率≥15fps |
|
|
84
|
+
| 多行识别 | 支持多行文本 | 自动换行 |
|
|
85
|
+
| 语言支持 | 多语言识别 | 中文/英文/数字 |
|
|
86
|
+
|
|
87
|
+
### 3.4 权限配置
|
|
88
|
+
| 平台 | 权限 | 配置位置 |
|
|
89
|
+
|------|------|---------|
|
|
90
|
+
| iOS | NSCameraUsageDescription | Info.plist |
|
|
91
|
+
| Android | CAMERA | AndroidManifest.xml |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 四、验收标准
|
|
96
|
+
|
|
97
|
+
### 4.1 ASR验收
|
|
98
|
+
- [ ] 语音录制正常
|
|
99
|
+
- [ ] 离线识别准确率≥90%
|
|
100
|
+
- [ ] 实时转写延迟≤500ms
|
|
101
|
+
- [ ] 静音检测正常
|
|
102
|
+
|
|
103
|
+
### 4.2 TTS验收
|
|
104
|
+
- [ ] 语音合成清晰
|
|
105
|
+
- [ ] 语速调节正常
|
|
106
|
+
- [ ] 音量调节正常
|
|
107
|
+
- [ ] 暂停/继续正常
|
|
108
|
+
|
|
109
|
+
### 4.3 OCR验收
|
|
110
|
+
- [ ] 图片识别准确率≥95%
|
|
111
|
+
- [ ] 实时识别帧率≥15fps
|
|
112
|
+
- [ ] 多行识别正确
|
|
113
|
+
- [ ] 倾斜文本识别正常
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 五、trae调用参数说明
|
|
118
|
+
- **调用路径**: skills/templates/Flutter音视频全栈SDD.md
|
|
119
|
+
- **必传参数**: 项目名称
|
|
120
|
+
- **可选参数**: 功能模块(ASR/TTS/OCR)
|
|
121
|
+
- **流程场景**: 1.完整3阶段SDD流程、2.从零开始新项目、3.小型功能迭代
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
【claude code调用标识:UI-SDD专用模板】【trae调用标识:UI-SDD专用模板+UI设计规范】【流程场景:1.完整3阶段SDD流程、2.从零开始新项目、3.小型功能迭代】
|
|
2
|
+
|
|
3
|
+
# UI-SDD专用模板:[页面/组件名称]
|
|
4
|
+
|
|
5
|
+
## 一、设计稿信息
|
|
6
|
+
|
|
7
|
+
### 1.1 设计稿来源
|
|
8
|
+
| 项目 | 内容 |
|
|
9
|
+
|------|------|
|
|
10
|
+
| Figma链接 | 【必填】 |
|
|
11
|
+
| 备份文件 | 【必填】PNG/PDF格式 |
|
|
12
|
+
| 设计稿版本 | 【必填】如:v1.0 |
|
|
13
|
+
| 设计师 | 【必填】 |
|
|
14
|
+
| 设计日期 | 【必填】 |
|
|
15
|
+
|
|
16
|
+
### 1.2 设计稿状态
|
|
17
|
+
- [ ] 初稿
|
|
18
|
+
- [ ] 评审中
|
|
19
|
+
- [x] 已确认
|
|
20
|
+
- [ ] 需要修改
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 二、页面结构
|
|
25
|
+
|
|
26
|
+
### 2.1 页面层级
|
|
27
|
+
```
|
|
28
|
+
页面名称
|
|
29
|
+
├── 模块1
|
|
30
|
+
│ ├── 组件1
|
|
31
|
+
│ └── 组件2
|
|
32
|
+
└── 模块2
|
|
33
|
+
└── 组件3
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 2.2 组件清单
|
|
37
|
+
| 组件名称 | 类型 | 位置 | 状态 |
|
|
38
|
+
|---------|------|------|------|
|
|
39
|
+
| 【组件1】 | 【原子/分子/组织】 | 【页面位置】 | 【新增/复用/修改】 |
|
|
40
|
+
| 【组件2】 | 【原子/分子/组织】 | 【页面位置】 | 【新增/复用/修改】 |
|
|
41
|
+
|
|
42
|
+
### 2.3 布局规范
|
|
43
|
+
- 页面宽度:【如:375px(移动端)/ 1200px(桌面端)】
|
|
44
|
+
- 边距规范:【如:16px】
|
|
45
|
+
- 栅格系统:【如:12列】
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 三、交互设计
|
|
50
|
+
|
|
51
|
+
### 3.1 页面跳转
|
|
52
|
+
| 触发操作 | 目标页面 | 跳转方式 |
|
|
53
|
+
|---------|---------|---------|
|
|
54
|
+
| 【点击按钮A】 | 【页面B】 | 【push/pop/modal】 |
|
|
55
|
+
|
|
56
|
+
### 3.2 状态切换
|
|
57
|
+
| 组件 | 状态 | 触发条件 | 视觉变化 |
|
|
58
|
+
|------|------|---------|---------|
|
|
59
|
+
| 【按钮】 | 默认/悬停/点击/禁用 | 【用户操作】 | 【颜色/大小变化】 |
|
|
60
|
+
|
|
61
|
+
### 3.3 动效说明
|
|
62
|
+
| 动效类型 | 触发场景 | 时长 | 缓动函数 |
|
|
63
|
+
|---------|---------|------|---------|
|
|
64
|
+
| 【页面切换】 | 【进入/退出】 | 【300ms】 | 【ease-out】 |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 四、视觉规范
|
|
69
|
+
|
|
70
|
+
### 4.1 颜色规范
|
|
71
|
+
| 颜色用途 | Hex值 | RGB | 用途说明 |
|
|
72
|
+
|---------|-------|-----|---------|
|
|
73
|
+
| 主色 | 【#XXXXXX】 | 【R,G,B】 | 【按钮、链接】 |
|
|
74
|
+
| 辅助色 | 【#XXXXXX】 | 【R,G,B】 | 【强调、提示】 |
|
|
75
|
+
| 背景色 | 【#XXXXXX】 | 【R,G,B】 | 【页面背景】 |
|
|
76
|
+
| 文字色 | 【#XXXXXX】 | 【R,G,B】 | 【正文】 |
|
|
77
|
+
|
|
78
|
+
### 4.2 字体规范
|
|
79
|
+
| 字体用途 | 字体名称 | 字号 | 字重 | 行高 |
|
|
80
|
+
|---------|---------|------|------|------|
|
|
81
|
+
| 标题 | 【PingFang SC】 | 【18px】 | 【600】 | 【24px】 |
|
|
82
|
+
| 正文 | 【PingFang SC】 | 【14px】 | 【400】 | 【20px】 |
|
|
83
|
+
| 小字 | 【PingFang SC】 | 【12px】 | 【400】 | 【16px】 |
|
|
84
|
+
|
|
85
|
+
### 4.3 间距规范
|
|
86
|
+
| 间距用途 | 值 | 适用场景 |
|
|
87
|
+
|---------|-----|---------|
|
|
88
|
+
| 页面边距 | 【16px】 | 【页面四周】 |
|
|
89
|
+
| 组件间距 | 【8px】 | 【组件之间】 |
|
|
90
|
+
| 内容间距 | 【12px】 | 【文字与元素】 |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 五、交付标准
|
|
95
|
+
|
|
96
|
+
### 5.1 设计稿完整性检查
|
|
97
|
+
- [ ] 所有页面/组件设计完成
|
|
98
|
+
- [ ] 交互状态完整(默认/悬停/点击/禁用)
|
|
99
|
+
- [ ] 响应式适配(移动端/平板/桌面端)
|
|
100
|
+
- [ ] 标注完整
|
|
101
|
+
|
|
102
|
+
### 5.2 切图规范
|
|
103
|
+
- [ ] 切图格式:【PNG/WebP/SVG】
|
|
104
|
+
- [ ] 切图倍率:【1x/2x/3x】
|
|
105
|
+
- [ ] 图标导出:【SVG格式,支持多色】
|
|
106
|
+
- [ ] 命名规范:【模块_组件_状态_倍率.png】
|
|
107
|
+
|
|
108
|
+
### 5.3 交付物清单
|
|
109
|
+
- [ ] Figma源文件链接
|
|
110
|
+
- [ ] 切图压缩包
|
|
111
|
+
- [ ] 设计规范文档
|
|
112
|
+
- [ ] 标注文件
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 六、验收标准
|
|
117
|
+
|
|
118
|
+
### 6.1 视觉还原度
|
|
119
|
+
- [ ] 颜色偏差 ≤ 5%
|
|
120
|
+
- [ ] 尺寸偏差 ≤ 1px
|
|
121
|
+
- [ ] 间距偏差 ≤ 2px
|
|
122
|
+
- [ ] 字体一致
|
|
123
|
+
|
|
124
|
+
### 6.2 交互正确性
|
|
125
|
+
- [ ] 所有交互符合设计稿
|
|
126
|
+
- [ ] 状态切换正确
|
|
127
|
+
- [ ] 动效流畅
|
|
128
|
+
- [ ] 无障碍访问
|
|
129
|
+
|
|
130
|
+
### 6.3 响应式适配
|
|
131
|
+
- [ ] 移动端显示正常
|
|
132
|
+
- [ ] 平板端显示正常
|
|
133
|
+
- [ ] 桌面端显示正常
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 七、trae调用参数说明
|
|
138
|
+
- **调用路径**: skills/templates/UI-SDD专用模板.md
|
|
139
|
+
- **必传参数**: 页面/组件名称
|
|
140
|
+
- **可选参数**: 设计稿版本、设计师、设计日期
|
|
141
|
+
- **流程场景**: 1.完整3阶段SDD流程、2.从零开始新项目、3.小型功能迭代
|