bmall-mcp 1.0.0 → 1.0.2
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/.kiro/steering/bmall/Web/README.md +20 -0
- package/.kiro/steering/bmall/iOS/README.md +273 -0
- package/.kiro/steering/bmall/iOS/ai_workflow.md +53 -0
- package/.kiro/steering/bmall/iOS/architecture/objc_mvvm_rules.md +98 -0
- package/.kiro/steering/bmall/iOS/coding/component_rules.md +102 -0
- package/.kiro/steering/bmall/iOS/coding/controller_rules.md +105 -0
- package/.kiro/steering/bmall/iOS/coding/design_rules.md +375 -0
- package/.kiro/steering/bmall/iOS/coding/model_rules.md +131 -0
- package/.kiro/steering/bmall/iOS/coding/naming_rules.md +156 -0
- package/.kiro/steering/bmall/iOS/coding/network_rules.md +129 -0
- package/.kiro/steering/bmall/iOS/coding/safety_rules.md +160 -0
- package/.kiro/steering/bmall/iOS/coding/style_rules.md +65 -0
- package/.kiro/steering/bmall/iOS/coding/third_party_rules.md +78 -0
- package/.kiro/steering/bmall/iOS/coding/view_rules.md +96 -0
- package/.kiro/steering/bmall/iOS/coding/viewmodel_rules.md +286 -0
- package/.kiro/steering/bmall/iOS/coding_rules_index.md +226 -0
- package/.kiro/steering/bmall/iOS/library/category_library.md +98 -0
- package/.kiro/steering/bmall/iOS/library/component_library.md +26 -0
- package/.kiro/steering/bmall/iOS/library/project_structure.md +415 -0
- package/.kiro/steering/bmall/iOS/library/utils_library.md +62 -0
- package/.kiro/steering/bmall/iOS/tech_design_workflow.md +85 -0
- package/.kiro/steering/bmall/iOS/templates/change_scope_template.md +62 -0
- package/.kiro/steering/bmall/iOS/templates/controller_template.md +313 -0
- package/.kiro/steering/bmall/iOS/templates/requirements_template.md +213 -0
- package/.kiro/steering/bmall/iOS/templates/tech_design_template.md +151 -0
- package/.kiro/steering/bmall/iOS/templates/view_template.md +240 -0
- package/.kiro/steering/bmall/iOS/templates/viewmodel_template.md +287 -0
- package/README.md +51 -40
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/utils.d.ts +1 -1
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +5 -1
- package/dist/tools/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +2 -2
- package/src/tools/utils.ts +6 -2
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Web 开发规范
|
|
2
|
+
|
|
3
|
+
本目录包含Web开发相关的规范和最佳实践。
|
|
4
|
+
|
|
5
|
+
## 目录
|
|
6
|
+
|
|
7
|
+
- [编码规范](./coding_guidelines.md) - HTML、CSS 和 JavaScript 编码规范
|
|
8
|
+
- [框架规范](./framework_guidelines.md) - React、Vue、Angular等框架使用规范
|
|
9
|
+
- [架构规范](./architecture_guidelines.md) - 前端架构规范
|
|
10
|
+
- [UI规范](./ui_guidelines.md) - UI设计和实现规范
|
|
11
|
+
- [性能优化](./performance_guidelines.md) - 性能优化最佳实践
|
|
12
|
+
- [安全规范](./security_guidelines.md) - 安全相关最佳实践
|
|
13
|
+
- [可访问性](./accessibility_guidelines.md) - Web可访问性规范
|
|
14
|
+
|
|
15
|
+
## 相关资源
|
|
16
|
+
|
|
17
|
+
- [MDN Web 文档](https://developer.mozilla.org/zh-CN/)
|
|
18
|
+
- [W3C 标准](https://www.w3.org/standards/)
|
|
19
|
+
- [Web.dev](https://web.dev/) - 现代Web开发指南
|
|
20
|
+
- [Lighthouse](https://developers.google.com/web/tools/lighthouse) - 网站性能分析工具
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# iOS AI 辅助开发规范体系
|
|
2
|
+
|
|
3
|
+
> **版本**: v2.1
|
|
4
|
+
> **更新日期**: 2025-11-28
|
|
5
|
+
> **目的**: 为 AI 辅助开发提供完整的规范体系
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 📋 快速导航
|
|
10
|
+
|
|
11
|
+
- **AI 入口**: [ai_workflow.md](ai_workflow.md) - AI 工作流程导航
|
|
12
|
+
- **设计阶段**: [tech_design_workflow.md](tech_design_workflow.md) - 生成技术设计文档
|
|
13
|
+
- **编码阶段**: [coding_rules_index.md](coding_rules_index.md) - 生成代码
|
|
14
|
+
- **流程审计**: [WORKFLOW_AUDIT.md](WORKFLOW_AUDIT.md) - 流程完整性检查
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 🎯 体系概述
|
|
19
|
+
|
|
20
|
+
### 什么是这个规范体系
|
|
21
|
+
|
|
22
|
+
这是一套**专为 AI 设计的开发规范文档集合**,用于:
|
|
23
|
+
|
|
24
|
+
1. **指导 AI 生成代码** - 从 PRD 到代码的完整流程
|
|
25
|
+
2. **统一代码标准** - 确保生成的代码符合团队规范
|
|
26
|
+
3. **提升开发效率** - 自动化需求分析和代码生成
|
|
27
|
+
4. **保证代码质量** - 通过规范约束避免常见错误
|
|
28
|
+
|
|
29
|
+
### 核心设计原则
|
|
30
|
+
|
|
31
|
+
- **流程化** - 明确的阶段划分(设计 → 编码)
|
|
32
|
+
- **模板化** - 提供完整的代码模板
|
|
33
|
+
- **场景化** - 根据编码场景选择规范
|
|
34
|
+
- **精简化** - 只保留 AI 需要的核心信息
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 📂 完整工作流程
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
PRD + 设计稿 + 接口文档
|
|
42
|
+
↓
|
|
43
|
+
ai_workflow.md (入口导航)
|
|
44
|
+
↓
|
|
45
|
+
设计阶段 (tech_design_workflow.md)
|
|
46
|
+
├─ 1. 读取输入材料
|
|
47
|
+
├─ 2. 生成 requirements.md (等待用户确认)
|
|
48
|
+
├─ 3. 检查现有代码
|
|
49
|
+
├─ 4. 输出改动范围确认 (等待用户确认)
|
|
50
|
+
├─ 5-7. 提取信息、规划架构
|
|
51
|
+
└─ 8. 生成 design.md
|
|
52
|
+
↓
|
|
53
|
+
编码阶段 (coding_rules_index.md)
|
|
54
|
+
├─ 1. 读取 design.md
|
|
55
|
+
├─ 2. 按顺序生成代码
|
|
56
|
+
│ ├─ 公共 Model/API/View
|
|
57
|
+
│ ├─ 页面 Model/API
|
|
58
|
+
│ └─ 页面 View/ViewModel/Controller
|
|
59
|
+
└─ 3. 根据场景选择规范
|
|
60
|
+
↓
|
|
61
|
+
代码文件 (.h/.m)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 📁 目录结构
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
.kiro/steering/iOS/
|
|
70
|
+
│
|
|
71
|
+
├── README.md # 本文档(给人看)
|
|
72
|
+
├── ai_workflow.md # AI 入口(给 AI 看)
|
|
73
|
+
├── tech_design_workflow.md # 设计阶段指南
|
|
74
|
+
├── coding_rules_index.md # 编码阶段指南
|
|
75
|
+
├── WORKFLOW_AUDIT.md # 流程审计报告
|
|
76
|
+
│
|
|
77
|
+
├── architecture/ # 架构规范
|
|
78
|
+
│ └── objc_mvvm_rules.md # MVVM 架构
|
|
79
|
+
│
|
|
80
|
+
├── coding/ # 编码规范
|
|
81
|
+
│ ├── naming_rules.md # 命名规范
|
|
82
|
+
│ ├── style_rules.md # 代码风格
|
|
83
|
+
│ ├── safety_rules.md # 安全规范
|
|
84
|
+
│ ├── view_rules.md # View 层规范
|
|
85
|
+
│ ├── controller_rules.md # Controller 层规范
|
|
86
|
+
│ ├── viewmodel_rules.md # ViewModel 层规范
|
|
87
|
+
│ ├── model_rules.md # Model 层规范
|
|
88
|
+
│ ├── network_rules.md # 网络层规范
|
|
89
|
+
│ ├── design_rules.md # 设计规范
|
|
90
|
+
│ ├── component_rules.md # 组件使用规范
|
|
91
|
+
│ └── third_party_rules.md # 第三方库规范
|
|
92
|
+
│
|
|
93
|
+
├── library/ # 基础规范
|
|
94
|
+
│ ├── project_structure.md # 项目结构
|
|
95
|
+
│ ├── component_library.md # 组件库清单
|
|
96
|
+
│ ├── utils_library.md # 工具类清单
|
|
97
|
+
│ └── category_library.md # Category 扩展清单
|
|
98
|
+
│
|
|
99
|
+
├── templates/ # 代码模板
|
|
100
|
+
│ ├── requirements_template.md # Requirements 模板
|
|
101
|
+
│ ├── change_scope_template.md # 改动范围确认模板
|
|
102
|
+
│ ├── tech_design_template.md # 技术设计文档模板
|
|
103
|
+
│ ├── view_template.md # View 层代码模板
|
|
104
|
+
│ ├── controller_template.md # Controller 层代码模板
|
|
105
|
+
│ └── viewmodel_template.md # ViewModel 层代码模板
|
|
106
|
+
│
|
|
107
|
+
└── tools/ # 工具指南
|
|
108
|
+
└── input_processing.md # 输入材料处理指南
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 🚀 快速开始
|
|
114
|
+
|
|
115
|
+
### 对于 AI
|
|
116
|
+
|
|
117
|
+
1. 读取 [ai_workflow.md](ai_workflow.md) 了解全局流程
|
|
118
|
+
2. 根据阶段读取对应指南:
|
|
119
|
+
- 设计阶段 → [tech_design_workflow.md](tech_design_workflow.md)
|
|
120
|
+
- 编码阶段 → [coding_rules_index.md](coding_rules_index.md)
|
|
121
|
+
3. 根据场景选择具体规范
|
|
122
|
+
|
|
123
|
+
### 对于开发者
|
|
124
|
+
|
|
125
|
+
1. 阅读本文档了解体系结构
|
|
126
|
+
2. 查看 [WORKFLOW_AUDIT.md](WORKFLOW_AUDIT.md) 了解流程完整性
|
|
127
|
+
3. 根据需要查阅具体规范文档
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 📊 关键文档说明
|
|
132
|
+
|
|
133
|
+
### 核心流程文档
|
|
134
|
+
|
|
135
|
+
| 文档 | 作用 | 读者 |
|
|
136
|
+
|------|------|------|
|
|
137
|
+
| ai_workflow.md | 全局流程导航 | AI |
|
|
138
|
+
| tech_design_workflow.md | 设计阶段详细指南 | AI |
|
|
139
|
+
| coding_rules_index.md | 编码阶段详细指南 | AI |
|
|
140
|
+
| WORKFLOW_AUDIT.md | 流程完整性审计 | 人类 |
|
|
141
|
+
|
|
142
|
+
### 模板文档
|
|
143
|
+
|
|
144
|
+
| 文档 | 作用 |
|
|
145
|
+
|------|------|
|
|
146
|
+
| requirements_template.md | 生成需求文档 |
|
|
147
|
+
| change_scope_template.md | 确认改动范围 |
|
|
148
|
+
| tech_design_template.md | 生成技术设计文档 |
|
|
149
|
+
| view_template.md | 生成 View 代码 |
|
|
150
|
+
| controller_template.md | 生成 Controller 代码 |
|
|
151
|
+
| viewmodel_template.md | 生成 ViewModel 代码 |
|
|
152
|
+
|
|
153
|
+
### 规范文档
|
|
154
|
+
|
|
155
|
+
**架构规范**:
|
|
156
|
+
- objc_mvvm_rules.md - MVVM 架构规范
|
|
157
|
+
|
|
158
|
+
**编码规范**(11个):
|
|
159
|
+
- naming_rules.md - 命名规范
|
|
160
|
+
- style_rules.md - 代码风格
|
|
161
|
+
- safety_rules.md - 安全规范
|
|
162
|
+
- view_rules.md - View 层规范
|
|
163
|
+
- controller_rules.md - Controller 层规范
|
|
164
|
+
- viewmodel_rules.md - ViewModel 层规范
|
|
165
|
+
- model_rules.md - Model 层规范
|
|
166
|
+
- network_rules.md - 网络层规范
|
|
167
|
+
- design_rules.md - 设计规范
|
|
168
|
+
- component_rules.md - 组件使用规范
|
|
169
|
+
- third_party_rules.md - 第三方库规范
|
|
170
|
+
|
|
171
|
+
**基础规范**(4个):
|
|
172
|
+
- project_structure.md - 项目结构
|
|
173
|
+
- component_library.md - 组件库清单
|
|
174
|
+
- utils_library.md - 工具类清单
|
|
175
|
+
- category_library.md - Category 扩展清单
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 🔄 维护规范
|
|
180
|
+
|
|
181
|
+
### 更新频率
|
|
182
|
+
|
|
183
|
+
| 文档类型 | 更新频率 | 触发条件 |
|
|
184
|
+
|---------|---------|---------|
|
|
185
|
+
| 核心流程文档 | 每月 | 流程优化 |
|
|
186
|
+
| 规范文档 | 每月 | 规范调整 |
|
|
187
|
+
| 模板文档 | 持续 | 模板优化 |
|
|
188
|
+
|
|
189
|
+
### 更新流程
|
|
190
|
+
|
|
191
|
+
1. 发现问题或改进点
|
|
192
|
+
2. 讨论方案
|
|
193
|
+
3. 更新文档
|
|
194
|
+
4. 更新版本号
|
|
195
|
+
5. 通知团队
|
|
196
|
+
|
|
197
|
+
### 版本管理
|
|
198
|
+
|
|
199
|
+
**版本号规则**:`主版本.次版本.修订版本`
|
|
200
|
+
|
|
201
|
+
- **主版本**:架构性变更
|
|
202
|
+
- **次版本**:功能性变更
|
|
203
|
+
- **修订版本**:内容优化
|
|
204
|
+
|
|
205
|
+
**当前版本**:v2.1
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## 📈 版本历史
|
|
210
|
+
|
|
211
|
+
### v2.1 (2025-11-28)
|
|
212
|
+
|
|
213
|
+
**优化**:
|
|
214
|
+
- ✅ 重命名 `ios_rules_index.md` → `coding_rules_index.md`
|
|
215
|
+
- ✅ 重命名 `scope_and_tech_stack_template.md` → `change_scope_template.md`
|
|
216
|
+
- ✅ 在 `coding_rules_index.md` 增加操作步骤
|
|
217
|
+
- ✅ 精简所有文档,删除冗余内容
|
|
218
|
+
- ✅ 创建 `WORKFLOW_AUDIT.md` 流程审计报告
|
|
219
|
+
|
|
220
|
+
### v2.0 (2025-11-27)
|
|
221
|
+
|
|
222
|
+
**重构**:
|
|
223
|
+
- ✅ 大幅精简所有规范文档
|
|
224
|
+
- ✅ 优化文档结构
|
|
225
|
+
- ✅ 增加模板文档
|
|
226
|
+
|
|
227
|
+
### v1.0 (2025-11-27)
|
|
228
|
+
|
|
229
|
+
**初始版本**:
|
|
230
|
+
- ✅ 创建基础规范体系
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## 💡 使用建议
|
|
235
|
+
|
|
236
|
+
### 对于 AI
|
|
237
|
+
|
|
238
|
+
1. **始终从 ai_workflow.md 开始**
|
|
239
|
+
2. **严格遵循流程**(设计 → 编码)
|
|
240
|
+
3. **等待用户确认**(requirements.md 和改动范围)
|
|
241
|
+
4. **根据场景选择规范**(不要全部读取)
|
|
242
|
+
|
|
243
|
+
### 对于开发者
|
|
244
|
+
|
|
245
|
+
1. **理解整体流程**(阅读本文档)
|
|
246
|
+
2. **查看流程审计**(WORKFLOW_AUDIT.md)
|
|
247
|
+
3. **按需查阅规范**(不需要全部阅读)
|
|
248
|
+
4. **及时反馈问题**(帮助优化规范)
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 📞 联系方式
|
|
253
|
+
|
|
254
|
+
- **技术负责人**: [崔宝印]
|
|
255
|
+
- **规范维护**: [崔宝印]
|
|
256
|
+
- **问题反馈**: [崔宝印]
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 📝 总结
|
|
261
|
+
|
|
262
|
+
这是一套**专为 AI 设计的完整开发规范体系**,包含:
|
|
263
|
+
|
|
264
|
+
- ✅ 2 个核心流程文档(设计 + 编码)
|
|
265
|
+
- ✅ 6 个模板文档
|
|
266
|
+
- ✅ 16 个规范文档
|
|
267
|
+
- ✅ 1 个流程审计报告
|
|
268
|
+
|
|
269
|
+
**目标**:让 AI 能够从 PRD 到代码的完整自动化开发。
|
|
270
|
+
|
|
271
|
+
**现状**:流程完整性 100%,可执行性 100%。
|
|
272
|
+
|
|
273
|
+
**下一步**:根据实际使用情况持续优化。
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# AI 辅助开发工作流
|
|
2
|
+
|
|
3
|
+
> **说明**: 从需求到代码的完整流程导航
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 完整流程
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
PRD + 设计稿 + 接口文档
|
|
11
|
+
↓
|
|
12
|
+
设计阶段 (tech_design_workflow.md)
|
|
13
|
+
├─ 生成 requirements.md
|
|
14
|
+
├─ 检查现有代码
|
|
15
|
+
├─ 输出改动范围确认
|
|
16
|
+
└─ 生成 design.md
|
|
17
|
+
↓
|
|
18
|
+
编码阶段 (coding_rules_index.md)
|
|
19
|
+
├─ 生成 Model/API
|
|
20
|
+
├─ 生成 View/ViewModel
|
|
21
|
+
└─ 生成 Controller
|
|
22
|
+
↓
|
|
23
|
+
代码文件 (.h/.m)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 阶段 1:设计阶段
|
|
29
|
+
|
|
30
|
+
**详细指南**:[tech_design_workflow.md](mdc:tech_design_workflow.md)
|
|
31
|
+
|
|
32
|
+
**输入**:PRD + 设计稿 + 接口文档
|
|
33
|
+
**输出**:requirements.md + design.md
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 阶段 2:编码阶段
|
|
38
|
+
|
|
39
|
+
**详细指南**:[coding_rules_index.md](mdc:coding_rules_index.md)
|
|
40
|
+
|
|
41
|
+
**输入**:design.md
|
|
42
|
+
**输出**:代码文件 (.h/.m)
|
|
43
|
+
|
|
44
|
+
**生成顺序**:Model/API → View/ViewModel → Controller
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 关键原则
|
|
49
|
+
|
|
50
|
+
- 先复用,后实现
|
|
51
|
+
- 遵循 MVVM 架构
|
|
52
|
+
- 使用设计规范宏定义
|
|
53
|
+
- 使用 JDUtils 验证数据
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
inclusion: always
|
|
3
|
+
---
|
|
4
|
+
# Objective-C MVVM 架构规范
|
|
5
|
+
|
|
6
|
+
> **说明**: 定义 MVVM 架构的核心准则
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## MVVM 架构层次
|
|
11
|
+
|
|
12
|
+
- **Model**: 数据模型(数据结构、业务规则)
|
|
13
|
+
- **View**: 视图组件(UI 展示)
|
|
14
|
+
- **ViewController**: 控制器(生命周期管理、用户交互)
|
|
15
|
+
- **ViewModel**: 视图模型(业务逻辑、数据处理)
|
|
16
|
+
- **Net**: 网络层(API 接口封装)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 分层职责
|
|
21
|
+
|
|
22
|
+
### Model 层
|
|
23
|
+
|
|
24
|
+
- **[必须]** 只包含数据结构和基本验证逻辑
|
|
25
|
+
- **[必须]** 不依赖其他层
|
|
26
|
+
|
|
27
|
+
### View 层
|
|
28
|
+
|
|
29
|
+
- **[必须]** 只负责 UI 展示,不包含业务逻辑
|
|
30
|
+
- **[必须]** 包含两个标准方法:`setupViews`、`setupConstraints`
|
|
31
|
+
- **[必须]** 通过代理模式与控制器通信
|
|
32
|
+
|
|
33
|
+
### ViewController 层
|
|
34
|
+
|
|
35
|
+
- **[必须]** 管理视图生命周期和用户交互
|
|
36
|
+
- **[必须]** 不包含业务逻辑
|
|
37
|
+
- **[必须]** 包含三个标准方法:`setupViews`、`setupConstraints`、`bindViewModel`
|
|
38
|
+
|
|
39
|
+
### ViewModel 层
|
|
40
|
+
|
|
41
|
+
- **[必须]** 处理业务逻辑并为视图提供数据
|
|
42
|
+
- **[必须]** 不依赖 UIKit 框架
|
|
43
|
+
- **[必须]** 通过 Block 回调与控制器通信
|
|
44
|
+
- **[必须]** 调用 Net 层获取数据
|
|
45
|
+
|
|
46
|
+
### Net 层
|
|
47
|
+
|
|
48
|
+
- **[必须]** 封装服务端接口调用
|
|
49
|
+
- **[必须]** 一个接口对应一个 API 类
|
|
50
|
+
- **[详细规范]** 参考 `network_rules.md`
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 层间通信
|
|
55
|
+
|
|
56
|
+
### View → ViewController(代理模式)
|
|
57
|
+
|
|
58
|
+
```objective-c
|
|
59
|
+
@protocol BMCustomViewDelegate <NSObject>
|
|
60
|
+
- (void)customView:(BMCustomView *)view didTapButton:(UIButton *)button;
|
|
61
|
+
@end
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### ViewController → ViewModel(直接调用)
|
|
65
|
+
|
|
66
|
+
```objective-c
|
|
67
|
+
[self.viewModel fetchData];
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### ViewModel → ViewController(Block 回调)
|
|
71
|
+
|
|
72
|
+
```objective-c
|
|
73
|
+
// ViewModel 中定义
|
|
74
|
+
@property (nonatomic, copy) void (^dataUpdatedBlock)(void);
|
|
75
|
+
@property (nonatomic, copy) void (^errorBlock)(NSString *errorMessage);
|
|
76
|
+
|
|
77
|
+
// ViewController 中设置
|
|
78
|
+
WEAK_SELF
|
|
79
|
+
self.viewModel.dataUpdatedBlock = ^{
|
|
80
|
+
STRONG_SELF
|
|
81
|
+
[strongSelf.tableView reloadData];
|
|
82
|
+
};
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### ViewModel → Net(直接调用)
|
|
86
|
+
|
|
87
|
+
```objective-c
|
|
88
|
+
// ViewModel 中调用 API
|
|
89
|
+
[AIFloatingApi requestEntryConfigWithCompleteBlock:^(NSDictionary *dictionary, NSError *error) {
|
|
90
|
+
if (error) {
|
|
91
|
+
// 处理错误
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
// 处理数据
|
|
95
|
+
}];
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
inclusion: manual
|
|
3
|
+
---
|
|
4
|
+
# bmall UI 组件使用规范
|
|
5
|
+
|
|
6
|
+
> **说明**: 定义 bmall UI 组件的使用规范
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## JDBMToastView - 轻提示
|
|
11
|
+
|
|
12
|
+
### 基本规范
|
|
13
|
+
|
|
14
|
+
**[必须]** 引入头文件 `#import <JDBMUIKitModule/JDBMToastView.h>`
|
|
15
|
+
**[必须]** 文字不超过 20 个字
|
|
16
|
+
**[禁止]** 连续显示多个 Toast
|
|
17
|
+
|
|
18
|
+
### 常用示例
|
|
19
|
+
|
|
20
|
+
```objective-c
|
|
21
|
+
// 成功提示(居中)
|
|
22
|
+
[JDBMToastView showWithMessage:@"保存成功"
|
|
23
|
+
toastType:JDBMToastViewTypeSuccess
|
|
24
|
+
positionType:JDBMToastViewPositionTypeCenter];
|
|
25
|
+
|
|
26
|
+
// 错误提示(居中)
|
|
27
|
+
[JDBMToastView showWithMessage:@"网络连接失败"
|
|
28
|
+
toastType:JDBMToastViewTypeError
|
|
29
|
+
positionType:JDBMToastViewPositionTypeCenter];
|
|
30
|
+
|
|
31
|
+
// 普通提示(底部)
|
|
32
|
+
[JDBMToastView showWithMessage:@"已添加到购物车"
|
|
33
|
+
toastType:JDBMToastViewTypeTips
|
|
34
|
+
positionType:JDBMToastViewPositionTypeBottom];
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## JDBMProgressHUD - 网络加载框
|
|
40
|
+
|
|
41
|
+
### 基本规范
|
|
42
|
+
|
|
43
|
+
**[必须]** 引入头文件 `#import <JDBMUIKitModule/JDBMProgressHUD.h>`
|
|
44
|
+
**[必须]** 显示和隐藏必须成对出现
|
|
45
|
+
**[建议]** 在 ViewModel 的 loadingBlock 中控制显示/隐藏
|
|
46
|
+
**[禁止]** 长时间显示加载框(超过 30 秒)
|
|
47
|
+
|
|
48
|
+
### 常用示例
|
|
49
|
+
|
|
50
|
+
```objective-c
|
|
51
|
+
// 显示加载框
|
|
52
|
+
[JDBMProgressHUD showLoading];
|
|
53
|
+
|
|
54
|
+
// 隐藏加载框
|
|
55
|
+
[JDBMProgressHUD hideLoading];
|
|
56
|
+
|
|
57
|
+
// ✅ 推荐:在 Controller 的 bindViewModel 中使用
|
|
58
|
+
self.viewModel.loadingBlock = ^(BOOL isLoading) {
|
|
59
|
+
if (isLoading) {
|
|
60
|
+
[JDBMProgressHUD showLoading];
|
|
61
|
+
} else {
|
|
62
|
+
[JDBMProgressHUD hideLoading];
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## JDBMSimpleAlertView - 弹窗
|
|
70
|
+
|
|
71
|
+
### 基本规范
|
|
72
|
+
|
|
73
|
+
**[必须]** 引入头文件 `#import <JDBMUIKitModule/JDBMSimpleAlertView.h>`
|
|
74
|
+
**[必须]** 使用 `WEAK_SELF` 避免循环引用
|
|
75
|
+
**[建议]** 标题不超过 15 个字,详细说明放在 `contentStr`
|
|
76
|
+
**[禁止]** 在弹窗回调中再次弹窗
|
|
77
|
+
|
|
78
|
+
### 常用示例
|
|
79
|
+
|
|
80
|
+
```objective-c
|
|
81
|
+
// 确认操作(双按钮)
|
|
82
|
+
JDBMSimpleAlertView *alertView = [JDBMSimpleAlertView initWithTitle:@"确定删除吗?"
|
|
83
|
+
contentStr:@"删除后将无法恢复"
|
|
84
|
+
cancelStr:@"取消"
|
|
85
|
+
submitStr:@"确定"];
|
|
86
|
+
WEAK_SELF
|
|
87
|
+
[alertView setClickSubmitBlock:^{
|
|
88
|
+
[weakSelf.viewModel deleteItem];
|
|
89
|
+
}];
|
|
90
|
+
[alertView showAction];
|
|
91
|
+
|
|
92
|
+
// 提示信息(单按钮)
|
|
93
|
+
JDBMSimpleAlertView *alertView = [JDBMSimpleAlertView initWithTitle:@"操作成功"
|
|
94
|
+
contentStr:nil
|
|
95
|
+
cancelStr:nil
|
|
96
|
+
submitStr:@"确定"];
|
|
97
|
+
[alertView showAction];
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
inclusion: manual
|
|
3
|
+
---
|
|
4
|
+
# iOS 控制器实现规范
|
|
5
|
+
|
|
6
|
+
> **说明**: 定义控制器的实现规范(MVVM 架构)
|
|
7
|
+
> **架构规范**: 参考 `architecture/objc_mvvm_rules.md`
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 控制器基本结构
|
|
12
|
+
|
|
13
|
+
### 基本规范
|
|
14
|
+
|
|
15
|
+
- **[必须]** 控制器实现三个标准方法:`setupViews`、`setupConstraints`、`bindViewModel`
|
|
16
|
+
- **[必须]** 业务逻辑放在 ViewModel 中
|
|
17
|
+
- **[必须]** 使用 Block 回调进行数据绑定
|
|
18
|
+
- **[必须]** 使用 `WEAK_SELF` 和 `STRONG_SELF` 避免循环引用
|
|
19
|
+
|
|
20
|
+
### 示例
|
|
21
|
+
|
|
22
|
+
```objective-c
|
|
23
|
+
@interface BMViewController ()
|
|
24
|
+
@property (nonatomic, strong) BMViewModel *viewModel;
|
|
25
|
+
@property (nonatomic, strong) UITableView *tableView;
|
|
26
|
+
@end
|
|
27
|
+
|
|
28
|
+
@implementation BMViewController
|
|
29
|
+
|
|
30
|
+
- (void)viewDidLoad {
|
|
31
|
+
[super viewDidLoad];
|
|
32
|
+
[self setupViews];
|
|
33
|
+
[self setupConstraints];
|
|
34
|
+
[self bindViewModel];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
#pragma mark - Setup Methods
|
|
38
|
+
|
|
39
|
+
- (void)setupViews {
|
|
40
|
+
self.view.backgroundColor = tdd_color_fill_200;
|
|
41
|
+
[self.view addSubview:self.tableView];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
- (void)setupConstraints {
|
|
45
|
+
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
46
|
+
make.edges.equalTo(self.view);
|
|
47
|
+
}];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
- (void)bindViewModel {
|
|
51
|
+
WEAK_SELF
|
|
52
|
+
|
|
53
|
+
// 数据更新回调
|
|
54
|
+
self.viewModel.dataUpdatedBlock = ^{
|
|
55
|
+
STRONG_SELF
|
|
56
|
+
[strongSelf.tableView reloadData];
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// 加载状态回调
|
|
60
|
+
self.viewModel.loadingBlock = ^(BOOL isLoading) {
|
|
61
|
+
STRONG_SELF
|
|
62
|
+
if (isLoading) {
|
|
63
|
+
[JDBMToastView showLoading];
|
|
64
|
+
} else {
|
|
65
|
+
[JDBMToastView dismiss];
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// 错误处理回调
|
|
70
|
+
self.viewModel.errorBlock = ^(NSString *errorMessage) {
|
|
71
|
+
STRONG_SELF
|
|
72
|
+
[JDBMToastView showWithMessage:errorMessage
|
|
73
|
+
toastType:JDBMToastViewTypeError
|
|
74
|
+
positionType:JDBMToastViewPositionTypeCenter];
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
// 加载数据
|
|
78
|
+
[self.viewModel fetchData];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@end
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 事件处理
|
|
87
|
+
|
|
88
|
+
### 通过 ViewModel 处理
|
|
89
|
+
|
|
90
|
+
```objective-c
|
|
91
|
+
// ✅ 推荐:通过 ViewModel 处理业务逻辑
|
|
92
|
+
- (void)loginButtonTapped {
|
|
93
|
+
[self.viewModel loginWithUsername:self.usernameTextField.text
|
|
94
|
+
password:self.passwordTextField.text];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// ❌ 错误:控制器直接处理业务逻辑
|
|
98
|
+
- (void)wrongLoginButtonTapped {
|
|
99
|
+
if (self.usernameTextField.text.length == 0) {
|
|
100
|
+
[self showAlertWithMessage:@"请输入用户名"];
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
// 直接发起网络请求...
|
|
104
|
+
}
|
|
105
|
+
```
|