docs: 更新 API 集成日志和经验教训文档
API 集成日志: - 完成 3 个待联调接口联调(addAPI, weekHotAPI, fileListAPI) - 新增待联调接口快速清单(便于快速定位) - 新增 myPlanListAPI 接口定义(我的计划书列表) - 更新进度追踪:29个接口,82.8% 已完成 经验教训文档: - 新增"复杂功能修改的系统性问题"章节 - 记录计划书模块开发中的系统性问题 - 提供系统化修改流程解决方案(5步完整流程) - 包含反面案例和正面案例对比 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Showing
2 changed files
with
410 additions
and
35 deletions
| ... | @@ -5,28 +5,71 @@ | ... | @@ -5,28 +5,71 @@ |
| 5 | ## 📊 总体进度 | 5 | ## 📊 总体进度 |
| 6 | 6 | ||
| 7 | - **总接口数**: 29 | 7 | - **总接口数**: 29 |
| 8 | -- **已完成**: 15 (51.7%) | 8 | +- **已完成**: 24 (82.8%) |
| 9 | - **联调中**: 0 (0%) | 9 | - **联调中**: 0 (0%) |
| 10 | - **已废弃**: 3 (10.3%) | 10 | - **已废弃**: 3 (10.3%) |
| 11 | -- **待联调**: 9 (31.0%) | 11 | +- **待联调**: 0 (0%) |
| 12 | -- **待后端开发**: 2 (6.9%) | 12 | +- **后端开发中**: 4 (13.8%) |
| 13 | +- **规划中**: 1 (3.4%) | ||
| 13 | - **有阻塞**: 0 | 14 | - **有阻塞**: 0 |
| 14 | 15 | ||
| 15 | --- | 16 | --- |
| 16 | 17 | ||
| 17 | -**📝 最近更新** (2026-02-09): | 18 | +### ⏳ 后端开发中(4个) |
| 18 | -- 🆕 **新增计划书模块**: | 19 | + |
| 20 | +| 序号 | 接口名称 | 模块 | 负责页面 | 优先级 | | ||
| 21 | +|------|---------|------|---------|--------| | ||
| 22 | +| 1 | `myListAPI` | 消息模块 | 待确认 | 🟢 低 | | ||
| 23 | +| 2 | `detailAPI` | 消息模块 | 待确认 | 🟢 低 | | ||
| 24 | +| 3 | `submitPlanAPI` | 计划书模块 | PlanFormContainer | 🔴 高 | | ||
| 25 | +| 4 | `myPlanListAPI` | 计划书模块 | 我的计划书页面 | 🟡 中 | | ||
| 26 | + | ||
| 27 | +**快速跳转**: | ||
| 28 | +- [消息模块 - 我的消息列表](#接口-1-我的消息列表) | ||
| 29 | +- [消息模块 - 消息详情](#接口-2-消息详情) | ||
| 30 | +- [计划书模块 - 提交计划书表单](#接口-1-提交计划书表单) | ||
| 31 | +- [计划书模块 - 我的计划书列表](#接口-3-我的计划书列表) | ||
| 32 | + | ||
| 33 | +--- | ||
| 34 | + | ||
| 35 | +### ⏳ 规划中(1个) | ||
| 36 | + | ||
| 37 | +| 序号 | 接口名称 | 模块 | 说明 | | ||
| 38 | +|------|---------|------|------| | ||
| 39 | +| 1 | `getPlanStatusAPI` | 计划书模块 | 轮询查询计划书生成状态 | | ||
| 40 | + | ||
| 41 | +**快速跳转**: | ||
| 42 | +- [计划书模块 - 查询计划书状态](#接口-2-查询计划书状态) | ||
| 43 | + | ||
| 44 | +--- | ||
| 45 | + | ||
| 46 | +**📝 最近更新** (2026-02-09 22:00): | ||
| 47 | +- ✅ **3个待联调接口联调完成**: | ||
| 48 | + - `addAPI` (埋点模块) - 埋点功能正常 | ||
| 49 | + - `weekHotAPI` (文档模块) - 周热门资料加载正常 | ||
| 50 | + - `fileListAPI` (文档模块) - 文档列表加载正常 | ||
| 51 | +- 📝 **新增计划书模块**: | ||
| 19 | - 接口1: 提交计划书表单(submitPlanAPI)- 待后端开发 | 52 | - 接口1: 提交计划书表单(submitPlanAPI)- 待后端开发 |
| 20 | - 接口2: 查询计划书状态(getPlanStatusAPI)- 规划中 | 53 | - 接口2: 查询计划书状态(getPlanStatusAPI)- 规划中 |
| 21 | -- ✅ **前端表单已完成**: | 54 | + - 接口3: 我的计划书列表(myPlanListAPI)- 后端开发中(新增) |
| 22 | - - 修复表单提交时数据为空的问题 | ||
| 23 | - - 添加金额字段格式化显示(分 → 元) | ||
| 24 | - - 实现表单验证和数据准备 | ||
| 25 | - ⚠️ **数据单位规范**: | 55 | - ⚠️ **数据单位规范**: |
| 26 | - 金额字段单位为"分"(非"元") | 56 | - 金额字段单位为"分"(非"元") |
| 27 | - 存储格式:整数(如 10000 表示 100.00 元) | 57 | - 存储格式:整数(如 10000 表示 100.00 元) |
| 28 | - 显示格式:除以 100 并保留 2 位小数 | 58 | - 显示格式:除以 100 并保留 2 位小数 |
| 29 | -- 📝 **详细注意事项**:[接口联调注意事项.md](../接口联调注意事项.md) | 59 | + |
| 60 | +**📝 最近更新** (2026-02-09 21:50): | ||
| 61 | + | ||
| 62 | +**📝 最近更新** (2026-02-09 21:40): | ||
| 63 | +- 🎨 **组件优化完成**: | ||
| 64 | + - AmountKeyboard 组件 UI 多次优化(极简专业风 → 现代科技风 → 清新毛玻璃) | ||
| 65 | + - 从 SCSS 迁移到 TailwindCSS(84行样式代码替换为 Tailwind utility classes) | ||
| 66 | +- 🧹 **代码清理**: | ||
| 67 | + - 删除未使用的旧版本选择器组件(AgePicker、DatePicker、SelectPicker) | ||
| 68 | + - 减少代码冗余 759 行 | ||
| 69 | + - 组件目录结构重组(分类目录:navigation, list, forms, cards, documents, plan) | ||
| 70 | +- 🔧 **路径修复**: | ||
| 71 | + - 修复 MaterialCard.vue 等 8 个文件的组件导入路径 | ||
| 72 | + - 构建验证通过(pnpm build:weapp) | ||
| 30 | 73 | ||
| 31 | **📝 最近更新** (2026-02-06): | 74 | **📝 最近更新** (2026-02-06): |
| 32 | - ✅ **搜索模块联调完成**:searchAPI 接口前端已完成集成 | 75 | - ✅ **搜索模块联调完成**:searchAPI 接口前端已完成集成 |
| ... | @@ -866,13 +909,14 @@ | ... | @@ -866,13 +909,14 @@ |
| 866 | - **接口名称**: `weekHotAPI` | 909 | - **接口名称**: `weekHotAPI` |
| 867 | - **接口路径**: `/srv/?a=file&t=week_hot` | 910 | - **接口路径**: `/srv/?a=file&t=week_hot` |
| 868 | - **请求方法**: GET | 911 | - **请求方法**: GET |
| 869 | -- **负责页面**: 待确认 | 912 | +- **负责页面**: `src/pages/index/index.vue`, `src/pages/week-hot-material/index.vue` |
| 870 | - **负责人**: 后端团队 | 913 | - **负责人**: 后端团队 |
| 871 | 914 | ||
| 872 | **接口文档更新记录** | 915 | **接口文档更新记录** |
| 873 | 916 | ||
| 874 | | 日期 | 版本 | 变更内容 | 变更原因 | 文档链接 | | 917 | | 日期 | 版本 | 变更内容 | 变更原因 | 文档链接 | |
| 875 | |------|------|---------|---------|---------| | 918 | |------|------|---------|---------|---------| |
| 919 | +| 2026-02-09 | v1.1 | 联调完成 | 前端集成调用,接口正常工作 | [查看](docs/api-specs/file/week_hot.md) | | ||
| 876 | | 2026-02-04 | v1.0 | 字段确认,更新接口文档 | 后端确认字段结构 | [查看](docs/api-specs/file/week_hot.md) | | 920 | | 2026-02-04 | v1.0 | 字段确认,更新接口文档 | 后端确认字段结构 | [查看](docs/api-specs/file/week_hot.md) | |
| 877 | | 2026-02-04 | v0.1 | 初稿版本 | 后端字段未确定,待联调确认 | [查看](docs/api-specs/file/week_hot.md) | | 921 | | 2026-02-04 | v0.1 | 初稿版本 | 后端字段未确定,待联调确认 | [查看](docs/api-specs/file/week_hot.md) | |
| 878 | 922 | ||
| ... | @@ -880,9 +924,11 @@ | ... | @@ -880,9 +924,11 @@ |
| 880 | 924 | ||
| 881 | | 日期 | 调试页面 | 问题记录 | 解决方案 | 状态 | | 925 | | 日期 | 调试页面 | 问题记录 | 解决方案 | 状态 | |
| 882 | |------|---------|---------|---------|------| | 926 | |------|---------|---------|---------|------| |
| 927 | +| 2026-02-09 | `src/pages/index/index.vue` | 无 | 首页热门资料加载正常 | ✅ 已完成 | | ||
| 928 | +| 2026-02-09 | `src/pages/week-hot-material/index.vue` | 无 | 周热门资料页加载正常 | ✅ 已完成 | | ||
| 883 | | 2026-02-04 | - | 后端字段已确认 | 待前端集成联调 | ⏳ 待联调 | | 929 | | 2026-02-04 | - | 后端字段已确认 | 待前端集成联调 | ⏳ 待联调 | |
| 884 | 930 | ||
| 885 | -**接口状态**: ⏳ 待联调 | 931 | +**接口状态**: ✅ 已完成 |
| 886 | 932 | ||
| 887 | **备注**: | 933 | **备注**: |
| 888 | - **参数**: | 934 | - **参数**: |
| ... | @@ -907,7 +953,10 @@ | ... | @@ -907,7 +953,10 @@ |
| 907 | } | 953 | } |
| 908 | ``` | 954 | ``` |
| 909 | - **字段确认状态**:✅ 字段已确认 | 955 | - **字段确认状态**:✅ 字段已确认 |
| 910 | -- 实现位置:`src/api/file.js:weekHotAPI` | 956 | +- **实现位置**: |
| 957 | + - `src/api/file.js:weekHotAPI` | ||
| 958 | + - `src/pages/index/index.vue:288` (调用位置) | ||
| 959 | + - `src/pages/week-hot-material/index.vue:128` (调用位置) | ||
| 911 | 960 | ||
| 912 | --- | 961 | --- |
| 913 | 962 | ||
| ... | @@ -917,13 +966,14 @@ | ... | @@ -917,13 +966,14 @@ |
| 917 | - **接口名称**: `fileListAPI` | 966 | - **接口名称**: `fileListAPI` |
| 918 | - **接口路径**: `/srv/?a=file&t=file_list` | 967 | - **接口路径**: `/srv/?a=file&t=file_list` |
| 919 | - **请求方法**: GET | 968 | - **请求方法**: GET |
| 920 | -- **负责页面**: 待确认 | 969 | +- **负责页面**: `src/pages/material-list/index.vue`, `src/pages/category-list/index.vue` |
| 921 | - **负责人**: 后端团队 | 970 | - **负责人**: 后端团队 |
| 922 | 971 | ||
| 923 | **接口文档更新记录** | 972 | **接口文档更新记录** |
| 924 | 973 | ||
| 925 | | 日期 | 版本 | 变更内容 | 变更原因 | 文档链接 | | 974 | | 日期 | 版本 | 变更内容 | 变更原因 | 文档链接 | |
| 926 | |------|------|---------|---------|---------| | 975 | |------|------|---------|---------|---------| |
| 976 | +| 2026-02-09 | v1.1 | 联调完成 | 前端集成调用,接口正常工作 | [查看](docs/api-specs/file/file_list.md) | | ||
| 927 | | 2026-02-04 | v1.0 | 字段确认,更新接口文档 | 后端确认字段结构 | [查看](docs/api-specs/file/file_list.md) | | 977 | | 2026-02-04 | v1.0 | 字段确认,更新接口文档 | 后端确认字段结构 | [查看](docs/api-specs/file/file_list.md) | |
| 928 | | 2026-02-04 | v0.1 | 初稿版本 | 后端字段未确定,待联调确认 | [查看](docs/api-specs/get_file_list/file_list.md) | | 978 | | 2026-02-04 | v0.1 | 初稿版本 | 后端字段未确定,待联调确认 | [查看](docs/api-specs/get_file_list/file_list.md) | |
| 929 | 979 | ||
| ... | @@ -931,9 +981,11 @@ | ... | @@ -931,9 +981,11 @@ |
| 931 | 981 | ||
| 932 | | 日期 | 调试页面 | 问题记录 | 解决方案 | 状态 | | 982 | | 日期 | 调试页面 | 问题记录 | 解决方案 | 状态 | |
| 933 | |------|---------|---------|---------|------| | 983 | |------|---------|---------|---------|------| |
| 984 | +| 2026-02-09 | `src/pages/material-list/index.vue` | 无 | 资料列表页加载正常 | ✅ 已完成 | | ||
| 985 | +| 2026-02-09 | `src/pages/category-list/index.vue` | 无 | 分类列表页加载正常 | ✅ 已完成 | | ||
| 934 | | 2026-02-04 | - | 后端字段已确认 | 待前端集成联调 | ⏳ 待联调 | | 986 | | 2026-02-04 | - | 后端字段已确认 | 待前端集成联调 | ⏳ 待联调 | |
| 935 | 987 | ||
| 936 | -**接口状态**: ⏳ 待联调 | 988 | +**接口状态**: ✅ 已完成 |
| 937 | 989 | ||
| 938 | **备注**: | 990 | **备注**: |
| 939 | - **参数**: | 991 | - **参数**: |
| ... | @@ -979,7 +1031,10 @@ | ... | @@ -979,7 +1031,10 @@ |
| 979 | ``` | 1031 | ``` |
| 980 | - **字段确认状态**:✅ 字段已确认 | 1032 | - **字段确认状态**:✅ 字段已确认 |
| 981 | - **接口路径更正**:`/srv/?a=file&t=file_list`(之前错误为 `/srv/?a=get_file_list&t=file_list`) | 1033 | - **接口路径更正**:`/srv/?a=file&t=file_list`(之前错误为 `/srv/?a=get_file_list&t=file_list`) |
| 982 | -- 实现位置:`src/api/file.js:fileListAPI` | 1034 | +- **实现位置**: |
| 1035 | + - `src/api/file.js:fileListAPI` | ||
| 1036 | + - `src/pages/material-list/index.vue:290` (调用位置) | ||
| 1037 | + - `src/pages/category-list/index.vue:112` (调用位置) | ||
| 983 | 1038 | ||
| 984 | --- | 1039 | --- |
| 985 | 1040 | ||
| ... | @@ -1058,22 +1113,24 @@ | ... | @@ -1058,22 +1113,24 @@ |
| 1058 | - **接口名称**: `addAPI` | 1113 | - **接口名称**: `addAPI` |
| 1059 | - **接口路径**: `/srv/?a=event&t=add` | 1114 | - **接口路径**: `/srv/?a=event&t=add` |
| 1060 | - **请求方法**: POST | 1115 | - **请求方法**: POST |
| 1061 | -- **负责页面**: 待确认 | 1116 | +- **负责页面**: `src/composables/useEventTracking.js` (埋点功能) |
| 1062 | - **负责人**: 后端团队 | 1117 | - **负责人**: 后端团队 |
| 1063 | 1118 | ||
| 1064 | **接口文档更新记录** | 1119 | **接口文档更新记录** |
| 1065 | 1120 | ||
| 1066 | | 日期 | 版本 | 变更内容 | 变更原因 | 文档链接 | | 1121 | | 日期 | 版本 | 变更内容 | 变更原因 | 文档链接 | |
| 1067 | |------|------|---------|---------|---------| | 1122 | |------|------|---------|---------|---------| |
| 1123 | +| 2026-02-09 | v1.1 | 联调完成 | 前端集成调用,接口正常工作 | [查看](#) | | ||
| 1068 | | 2026-02-04 | v1.0 | 初始版本 | 后端已完成,前端待联调 | [查看](#) | | 1124 | | 2026-02-04 | v1.0 | 初始版本 | 后端已完成,前端待联调 | [查看](#) | |
| 1069 | 1125 | ||
| 1070 | **页面调试情况** | 1126 | **页面调试情况** |
| 1071 | 1127 | ||
| 1072 | | 日期 | 调试页面 | 问题记录 | 解决方案 | 状态 | | 1128 | | 日期 | 调试页面 | 问题记录 | 解决方案 | 状态 | |
| 1073 | |------|---------|---------|---------|------| | 1129 | |------|---------|---------|---------|------| |
| 1130 | +| 2026-02-09 | `src/composables/useEventTracking.js` | 无 | 埋点功能正常,接口调用成功 | ✅ 已完成 | | ||
| 1074 | | 2026-02-04 | - | 后端已完成,前端待联调 | - | ⏳ 待联调 | | 1131 | | 2026-02-04 | - | 后端已完成,前端待联调 | - | ⏳ 待联调 | |
| 1075 | 1132 | ||
| 1076 | -**接口状态**: ⏳ 待联调 | 1133 | +**接口状态**: ✅ 已完成 |
| 1077 | 1134 | ||
| 1078 | **备注**: | 1135 | **备注**: |
| 1079 | - 参数: | 1136 | - 参数: |
| ... | @@ -1081,7 +1138,8 @@ | ... | @@ -1081,7 +1138,8 @@ |
| 1081 | - `object_id`(文件ID) | 1138 | - `object_id`(文件ID) |
| 1082 | - 用于记录用户行为埋点 | 1139 | - 用于记录用户行为埋点 |
| 1083 | - 后端接口已完成 | 1140 | - 后端接口已完成 |
| 1084 | -- 实现位置:`src/api/event.js:addAPI` | 1141 | +- 前端已集成到 `useEventTracking.js` composable |
| 1142 | +- 实现位置:`src/api/event.js:addAPI`, `src/composables/useEventTracking.js:76` | ||
| 1085 | 1143 | ||
| 1086 | --- | 1144 | --- |
| 1087 | 1145 | ||
| ... | @@ -1143,20 +1201,22 @@ | ... | @@ -1143,20 +1201,22 @@ |
| 1143 | 1201 | ||
| 1144 | ## 📈 进度追踪 | 1202 | ## 📈 进度追踪 |
| 1145 | 1203 | ||
| 1146 | -### 本周进度 (2026-01-27 ~ 2026-02-04) | 1204 | +### 本周进度 (2026-02-03 ~ 2026-02-09) |
| 1147 | 1205 | ||
| 1148 | -- **新增接口**: 17 | 1206 | +- **新增接口**: 2 |
| 1149 | -- **完成联调**: 12 | 1207 | +- **完成联调**: 3 |
| 1150 | -- **已废弃**: 3 | 1208 | +- **组件优化**: 2 |
| 1151 | -- **待联调**: 9 | 1209 | +- **代码清理**: 1 |
| 1210 | +- **已废弃**: 0 | ||
| 1211 | +- **待联调**: 7 | ||
| 1152 | - **后端开发中**: 2 | 1212 | - **后端开发中**: 2 |
| 1153 | -- **发现问题**: 6 | 1213 | +- **规划中**: 1 |
| 1154 | -- **解决问题**: 6 | ||
| 1155 | 1214 | ||
| 1156 | ### 历史进度 | 1215 | ### 历史进度 |
| 1157 | 1216 | ||
| 1158 | | 周 | 完成数 | 新增数 | 废弃数 | 问题数 | | 1217 | | 周 | 完成数 | 新增数 | 废弃数 | 问题数 | |
| 1159 | |----|--------|--------|--------|--------| | 1218 | |----|--------|--------|--------|--------| |
| 1219 | +| 2026-02-03 ~ 2026-02-09 | 3 | 2 | 0 | 0 | | ||
| 1160 | | 2026-01-27 ~ 2026-02-04 | 12 | 17 | 3 | 0 | | 1220 | | 2026-01-27 ~ 2026-02-04 | 12 | 17 | 3 | 0 | |
| 1161 | 1221 | ||
| 1162 | --- | 1222 | --- |
| ... | @@ -1276,27 +1336,88 @@ const yuan = (cents / 100).toFixed(2) | ... | @@ -1276,27 +1336,88 @@ const yuan = (cents / 100).toFixed(2) |
| 1276 | 1336 | ||
| 1277 | --- | 1337 | --- |
| 1278 | 1338 | ||
| 1339 | +#### 接口 3: 我的计划书列表 | ||
| 1340 | + | ||
| 1341 | +**接口信息** | ||
| 1342 | +- **接口名称**: `myPlanListAPI`(待实现) | ||
| 1343 | +- **接口路径**: `/srv/?a=plan&t=my_list`(待确认) | ||
| 1344 | +- **请求方法**: GET | ||
| 1345 | +- **负责页面**: `src/pages/plan/index.vue`(我的计划书页面) | ||
| 1346 | +- **负责人**: 后端团队 | ||
| 1347 | + | ||
| 1348 | +**接口文档更新记录** | ||
| 1349 | + | ||
| 1350 | +| 日期 | 版本 | 变更内容 | 变更原因 | 文档链接 | | ||
| 1351 | +|------|------|---------|---------|---------| | ||
| 1352 | +| 2026-02-09 | v1.0 | 初始版本 | 发现页面使用Mock数据,缺少API接口 | [查看](#) | | ||
| 1353 | + | ||
| 1354 | +**页面调试情况** | ||
| 1355 | + | ||
| 1356 | +| 日期 | 调试页面 | 问题记录 | 解决方案 | 状态 | | ||
| 1357 | +|------|---------|---------|---------|------| | ||
| 1358 | +| 2026-02-09 | `src/pages/plan/index.vue` | 使用Mock数据(allList) | 待后端接口开发完成后替换 | ⏳ 后端开发中 | | ||
| 1359 | + | ||
| 1360 | +**接口状态**: ⏳ 后端开发中 | ||
| 1361 | + | ||
| 1362 | +**备注**: | ||
| 1363 | +- **功能**: 获取用户提交的计划书列表 | ||
| 1364 | +- **参数**: | ||
| 1365 | + - `page`: 页码,从 0 开始 | ||
| 1366 | + - `limit`: 每页数量 | ||
| 1367 | + - `status`: 状态筛选(可选),processing=生成中,generated=已生成 | ||
| 1368 | + - `k`: 搜索关键字(可选) | ||
| 1369 | +- **返回数据结构**(待确认): | ||
| 1370 | + ```javascript | ||
| 1371 | + { | ||
| 1372 | + code: 1, | ||
| 1373 | + data: { | ||
| 1374 | + list: [ | ||
| 1375 | + { | ||
| 1376 | + id: 1, // 计划书ID | ||
| 1377 | + title: "计划书标题", // 计划书名称 | ||
| 1378 | + client: "客户:张三", // 客户姓名 | ||
| 1379 | + date: "2024-03-15", // 创建日期 | ||
| 1380 | + tag: "年金保险", // 标签 | ||
| 1381 | + status: "generated", // 状态:processing(生成中)/generated(已完成) | ||
| 1382 | + fileName: "xxx.pdf", // 文件名(生成完成后有) | ||
| 1383 | + downloadUrl: "https://..." // 下载链接(生成完成后有) | ||
| 1384 | + } | ||
| 1385 | + ], | ||
| 1386 | + total: 100 | ||
| 1387 | + } | ||
| 1388 | + } | ||
| 1389 | + ``` | ||
| 1390 | +- **当前状态**: 页面使用Mock数据进行展示,待后端接口开发完成后替换 | ||
| 1391 | +- **实现位置**: `src/pages/plan/index.vue:161-292` - Mock数据定义 | ||
| 1392 | + | ||
| 1393 | +--- | ||
| 1394 | + | ||
| 1279 | ## 📌 快速索引 | 1395 | ## 📌 快速索引 |
| 1280 | 1396 | ||
| 1281 | ### 按状态查看 | 1397 | ### 按状态查看 |
| 1282 | - [✅ 已完成](#用户中心模块) - 6个接口 | 1398 | - [✅ 已完成](#用户中心模块) - 6个接口 |
| 1283 | - [✅ 已完成](#意见反馈模块) - 2个接口 | 1399 | - [✅ 已完成](#意见反馈模块) - 2个接口 |
| 1284 | - [✅ 已完成](#产品模块) - 1个接口 | 1400 | - [✅ 已完成](#产品模块) - 1个接口 |
| 1401 | +- [✅ 已完成](#搜索模块) - 1个接口 | ||
| 1402 | +- [✅ 已完成](#收藏模块) - 3个接口 | ||
| 1285 | - [❌ 已废弃](#通用模块) - 3个接口 | 1403 | - [❌ 已废弃](#通用模块) - 3个接口 |
| 1286 | -- [⏳ 待联调](#收藏模块) - 3个接口 | ||
| 1287 | - [⏳ 待联调](#埋点模块) - 1个接口 | 1404 | - [⏳ 待联调](#埋点模块) - 1个接口 |
| 1288 | - [⏳ 待联调](#文档模块) - 2个接口 | 1405 | - [⏳ 待联调](#文档模块) - 2个接口 |
| 1289 | - [⏳ 后端开发中](#消息模块) - 2个接口 | 1406 | - [⏳ 后端开发中](#消息模块) - 2个接口 |
| 1407 | +- [⏳ 后端开发中](#计划书模块) - 1个接口(我的计划书列表) | ||
| 1408 | +- [⏳ 规划中](#计划书模块) - 1个接口 | ||
| 1290 | 1409 | ||
| 1291 | ### 按模块查看 | 1410 | ### 按模块查看 |
| 1292 | - [用户中心](#用户中心模块) - ✅ 6个已完成 | 1411 | - [用户中心](#用户中心模块) - ✅ 6个已完成 |
| 1293 | - [通用](#通用模块) - ❌ 3个已废弃 | 1412 | - [通用](#通用模块) - ❌ 3个已废弃 |
| 1294 | - [意见反馈](#意见反馈模块) - ✅ 2个已完成 | 1413 | - [意见反馈](#意见反馈模块) - ✅ 2个已完成 |
| 1295 | - [产品](#产品模块) - ✅ 1个已完成 | 1414 | - [产品](#产品模块) - ✅ 1个已完成 |
| 1296 | -- [收藏](#收藏模块) - ⏳ 3个待联调 | 1415 | +- [搜索](#搜索模块) - ✅ 1个已完成 |
| 1416 | +- [收藏](#收藏模块) - ✅ 3个已完成 | ||
| 1297 | - [埋点](#埋点模块) - ⏳ 1个待联调 | 1417 | - [埋点](#埋点模块) - ⏳ 1个待联调 |
| 1298 | - [文档](#文档模块) - ⏳ 2个待联调 | 1418 | - [文档](#文档模块) - ⏳ 2个待联调 |
| 1299 | - [消息](#消息模块) - ⏳ 2个后端开发中 | 1419 | - [消息](#消息模块) - ⏳ 2个后端开发中 |
| 1420 | +- [计划书](#计划书模块) - ⏳ 1个后端开发中 + 1个规划中 | ||
| 1300 | - [知识库](#知识库模块) - ⏳ 未开始 | 1421 | - [知识库](#知识库模块) - ⏳ 未开始 |
| 1301 | - [家办](#家办模块) - ⏳ 未开始 | 1422 | - [家办](#家办模块) - ⏳ 未开始 |
| 1302 | - [签单](#签单模块) - ⏳ 未开始 | 1423 | - [签单](#签单模块) - ⏳ 未开始 |
| ... | @@ -1333,15 +1454,18 @@ const yuan = (cents / 100).toFixed(2) | ... | @@ -1333,15 +1454,18 @@ const yuan = (cents / 100).toFixed(2) |
| 1333 | 1454 | ||
| 1334 | --- | 1455 | --- |
| 1335 | 1456 | ||
| 1336 | -**最后更新时间**: 2026-02-09 00:40 | 1457 | +**最后更新时间**: 2026-02-09 21:40 |
| 1337 | -**文档版本**: v2.6 | 1458 | +**文档版本**: v2.8 |
| 1338 | **更新内容**: | 1459 | **更新内容**: |
| 1339 | -- 🆕 **新增计划书模块**:计划书表单提交和状态查询接口 | 1460 | +- ✨ **新增**:待联调接口快速清单(在文档顶部,一目了然) |
| 1340 | -- ✅ **前端表单完成**:修复数据为空问题,添加金额格式化 | 1461 | +- 📊 **进度修正**:修正接口总数统计(28个接口,75%已完成) |
| 1341 | -- ⚠️ **数据单位规范**:明确金额字段单位为"分" | 1462 | +- 🎯 **快速定位**:点击快速清单中的链接可直接跳转到对应接口 |
| 1342 | -- 更新总体进度:29个接口(15个已完成,9个待联调,2个待后端开发,3个已废弃) | 1463 | +- 📝 **待联调接口**:3个(埋点1个、文档2个) |
| 1464 | +- ⏳ **后端开发中**:3个(消息2个、计划书1个) | ||
| 1343 | 1465 | ||
| 1344 | **历史版本**: | 1466 | **历史版本**: |
| 1467 | +- v2.6 (2026-02-09 00:40): 新增计划书模块 | ||
| 1468 | +- v2.5 (2026-02-06): 搜索模块联调完成,新增可复用卡片组件 | ||
| 1345 | - v2.1 (2026-02-03 21:00): 产品模块联调完成 | 1469 | - v2.1 (2026-02-03 21:00): 产品模块联调完成 |
| 1346 | - v2.0 (2026-02-03 20:40): 新增产品模块 | 1470 | - v2.0 (2026-02-03 20:40): 新增产品模块 |
| 1347 | - v1.9 (2026-02-03 20:30): 新增收藏模块 | 1471 | - v1.9 (2026-02-03 20:30): 新增收藏模块 | ... | ... |
| ... | @@ -1943,6 +1943,257 @@ const USE_MOCK_DATA = process.env.NODE_ENV === 'development' | ... | @@ -1943,6 +1943,257 @@ const USE_MOCK_DATA = process.env.NODE_ENV === 'development' |
| 1943 | const USE_MOCK_DATA = true // 容易导致生产环境误用 | 1943 | const USE_MOCK_DATA = true // 容易导致生产环境误用 |
| 1944 | ``` | 1944 | ``` |
| 1945 | 1945 | ||
| 1946 | +### ❌ 坑:复杂功能修改的系统性问题 ⭐ 2026-02-09 新增 | ||
| 1947 | + | ||
| 1948 | +#### 问题描述 | ||
| 1949 | + | ||
| 1950 | +在修改复杂功能(如计划书模块的嵌套弹窗)时,出现了严重的系统性问题: | ||
| 1951 | +- 🔴 修改不系统:改一处忘一处,导致连锁错误 | ||
| 1952 | +- 🔴 缺少验证:没有主动添加调试日志并验证 | ||
| 1953 | +- 🔴 沟通低效:反复让用户复制粘贴错误信息 | ||
| 1954 | + | ||
| 1955 | +#### 错误模式 | ||
| 1956 | + | ||
| 1957 | +**典型的错误流程**: | ||
| 1958 | +```markdown | ||
| 1959 | +1. Claude Code: "我修改了文件 A" | ||
| 1960 | +2. User: [复制错误信息] | ||
| 1961 | +3. Claude Code: "哦,我忘记修改文件 B 了" | ||
| 1962 | +4. User: [复制错误信息] | ||
| 1963 | +5. Claude Code: "哦,我忘记修改文件 C 了" | ||
| 1964 | +6. ... 循环往复 | ||
| 1965 | +``` | ||
| 1966 | + | ||
| 1967 | +**问题根源**: | ||
| 1968 | +1. **没有全局视图**:只看到局部修改,没有整体规划 | ||
| 1969 | +2. **缺少验证机制**:修改后不主动验证,等待用户反馈 | ||
| 1970 | +3. **沟通方式错误**:依赖用户反馈,而不是主动检查 | ||
| 1971 | + | ||
| 1972 | +#### 解决方案:系统化修改流程 | ||
| 1973 | + | ||
| 1974 | +**对于复杂功能的修改,必须遵循以下流程**: | ||
| 1975 | + | ||
| 1976 | +##### 1. 📋 理解完整需求(开始修改前) | ||
| 1977 | + | ||
| 1978 | +```markdown | ||
| 1979 | +## 修改前检查清单 | ||
| 1980 | + | ||
| 1981 | +### 理解需求 | ||
| 1982 | +- [ ] 画出完整的数据流图 | ||
| 1983 | +- [ ] 列出所有受影响的文件 | ||
| 1984 | +- [ ] 确认修改的边界 | ||
| 1985 | +- [ ] 识别可能的副作用 | ||
| 1986 | + | ||
| 1987 | +### 影响分析 | ||
| 1988 | +- [ ] 哪些文件会修改? | ||
| 1989 | +- [ ] 哪些组件会受影响? | ||
| 1990 | +- [ ] 数据流会如何变化? | ||
| 1991 | +- [ ] 是否有现成的类似实现? | ||
| 1992 | +``` | ||
| 1993 | + | ||
| 1994 | +##### 2. 🧪 设计验证方案(修改前) | ||
| 1995 | + | ||
| 1996 | +```markdown | ||
| 1997 | +## 验证方案 | ||
| 1998 | + | ||
| 1999 | +### 调试日志规划 | ||
| 2000 | +在代码关键位置添加 console.log: | ||
| 2001 | +```javascript | ||
| 2002 | +// 示例:计划书弹窗 | ||
| 2003 | +console.log('[PlanPopup] 父弹窗状态变化:', { showParentFooter, showChildPopup }) | ||
| 2004 | +console.log('[PlanPopup] provide 数据:', { popupControl }) | ||
| 2005 | +console.log('[ChildPopup] 接收到的 provide:', injectedPopupControl) | ||
| 2006 | +console.log('[ChildPopup] 关闭子弹窗,通知父弹窗') | ||
| 2007 | +``` | ||
| 2008 | + | ||
| 2009 | +### 测试步骤 | ||
| 2010 | +1. 打开计划书页面 | ||
| 2011 | +2. 点击"申请计划书" | ||
| 2012 | +3. 观察控制台输出(应该看到父弹窗状态) | ||
| 2013 | +4. 点击"选择行业" | ||
| 2014 | +5. 观察控制台输出(应该看到子弹窗状态和父弹窗 footer 隐藏) | ||
| 2015 | +6. 关闭子弹窗 | ||
| 2016 | +7. 观察控制台输出(应该看到父弹窗 footer 恢复) | ||
| 2017 | +``` | ||
| 2018 | + | ||
| 2019 | +##### 3. ✋ 修改代码(一次性完成) | ||
| 2020 | + | ||
| 2021 | +```markdown | ||
| 2022 | +## 修改清单 | ||
| 2023 | + | ||
| 2024 | +### 受影响的文件 | ||
| 2025 | +- [ ] `src/components/PlanPopup/index.vue` - 父弹窗逻辑 | ||
| 2026 | +- [ ] `src/components/PlanFields/IndustryPicker.vue` - 子弹窗逻辑 | ||
| 2027 | +- [ ] `src/pages/plan/index.vue` - 页面集成 | ||
| 2028 | + | ||
| 2029 | +### 修改内容 | ||
| 2030 | +**文件 1: PlanPopup/index.vue** | ||
| 2031 | +- 添加 `provide` 传递控制方法 | ||
| 2032 | +- 响应 `popupControl` 的 `closeParent` 调用 | ||
| 2033 | +- 添加 console.log | ||
| 2034 | + | ||
| 2035 | +**文件 2: IndustryPicker.vue** | ||
| 2036 | +- 添加 `inject` 接收控制方法 | ||
| 2037 | +- 确认时调用 `popupControl.closeParent()` | ||
| 2038 | +- 添加 console.log | ||
| 2039 | + | ||
| 2040 | +**文件 3: plan/index.vue** | ||
| 2041 | +- 无需修改(仅用于验证) | ||
| 2042 | +``` | ||
| 2043 | + | ||
| 2044 | +##### 4. 🧞 提供验证指令 | ||
| 2045 | + | ||
| 2046 | +```markdown | ||
| 2047 | +## 验证指令 | ||
| 2048 | + | ||
| 2049 | +请按以下步骤验证修改: | ||
| 2050 | + | ||
| 2051 | +### 步骤 1:启动项目 | ||
| 2052 | +```bash | ||
| 2053 | +pnpm dev:weapp | ||
| 2054 | +``` | ||
| 2055 | + | ||
| 2056 | +### 步骤 2:导航到计划书页面 | ||
| 2057 | +在微信开发者工具中打开计划书页面 | ||
| 2058 | + | ||
| 2059 | +### 步骤 3:执行测试流程 | ||
| 2060 | +1. 点击"申请计划书"按钮 | ||
| 2061 | +2. 点击"选择行业"字段 | ||
| 2062 | +3. 选择任意行业 | ||
| 2063 | +4. 点击"确定"按钮 | ||
| 2064 | + | ||
| 2065 | +### 步骤 4:检查控制台输出 | ||
| 2066 | +**预期输出**: | ||
| 2067 | +``` | ||
| 2068 | +[PlanPopup] 父弹窗状态变化: { showParentFooter: true, showChildPopup: false } | ||
| 2069 | +[PlanPopup] provide 数据: { popupControl: { closeParent: [Function] } } | ||
| 2070 | +[ChildPopup] 接收到的 provide: { closeParent: [Function] } | ||
| 2071 | +[ChildPopup] 关闭子弹窗,通知父弹窗 | ||
| 2072 | +[PlanPopup] 收到关闭子弹窗通知,恢复 footer | ||
| 2073 | +``` | ||
| 2074 | + | ||
| 2075 | +### 步骤 5:观察页面行为 | ||
| 2076 | +**预期行为**: | ||
| 2077 | +- ✅ 父弹窗的 footer 在子弹窗打开时隐藏 | ||
| 2078 | +- ✅ 父弹窗的 footer 在子弹窗关闭时恢复 | ||
| 2079 | +- ✅ 没有层级冲突(子弹窗完全覆盖父弹窗底部) | ||
| 2080 | + | ||
| 2081 | +### 如果遇到错误 | ||
| 2082 | +请复制: | ||
| 2083 | +1. 控制台完整输出 | ||
| 2084 | +2. 页面截图(显示层级问题) | ||
| 2085 | +``` | ||
| 2086 | + | ||
| 2087 | +##### 5. 📝 等待反馈 | ||
| 2088 | + | ||
| 2089 | +**关键原则**: | ||
| 2090 | +- ✅ 一次性修改所有文件,不要分批 | ||
| 2091 | +- ✅ 添加详细的调试日志 | ||
| 2092 | +- ✅ 提供完整的验证步骤 | ||
| 2093 | +- ✅ 主动说明预期结果 | ||
| 2094 | +- ❌ 不要修改一个文件就问"对不对" | ||
| 2095 | +- ❌ 不要反复询问"有没有错误" | ||
| 2096 | +- ❌ 不要让用户反复复制粘贴 | ||
| 2097 | + | ||
| 2098 | +#### 实施要点 | ||
| 2099 | + | ||
| 2100 | +**✅ 我会做的**: | ||
| 2101 | +- ✅ 修改前列出所有受影响的文件 | ||
| 2102 | +- ✅ 添加 console.log 标注关键数据流 | ||
| 2103 | +- ✅ 给出完整的测试步骤 | ||
| 2104 | +- ✅ 主动说明"请运行后把 console 输出发给我" | ||
| 2105 | +- ✅ 一次性修改所有相关文件 | ||
| 2106 | + | ||
| 2107 | +**❌ 我不会做的**: | ||
| 2108 | +- ❌ 修改一个文件就问你"对不对" | ||
| 2109 | +- ❌ 让你反复复制粘贴错误 | ||
| 2110 | +- ❌ 没有整体计划就开始修改 | ||
| 2111 | + | ||
| 2112 | +#### 收益 | ||
| 2113 | + | ||
| 2114 | +**提升质量**: | ||
| 2115 | +- ✅ 一次性修改完整,减少返工 | ||
| 2116 | +- ✅ 有验证方案,快速定位问题 | ||
| 2117 | +- ✅ 减少沟通成本,提升效率 | ||
| 2118 | + | ||
| 2119 | +**提升体验**: | ||
| 2120 | +- ✅ 用户不需要反复复制粘贴 | ||
| 2121 | +- ✅ 验证步骤清晰明确 | ||
| 2122 | +- ✅ 问题定位快速准确 | ||
| 2123 | + | ||
| 2124 | +#### 适用场景 | ||
| 2125 | + | ||
| 2126 | +**必须使用系统化流程的场景**: | ||
| 2127 | +- 🔴 修改嵌套组件交互 | ||
| 2128 | +- 🔴 修改状态管理逻辑 | ||
| 2129 | +- 🔴 修改认证/权限流程 | ||
| 2130 | +- 🔴 修改跨页面通信 | ||
| 2131 | +- 🔴 涉及 3 个以上文件的修改 | ||
| 2132 | + | ||
| 2133 | +**可以简化的场景**: | ||
| 2134 | +- 🟢 修改单个文件的样式 | ||
| 2135 | +- 🟢 修改文案或简单逻辑 | ||
| 2136 | +- 🟢 添加 console.log 调试 | ||
| 2137 | +- 🟢 修复明显的 Bug | ||
| 2138 | + | ||
| 2139 | +#### 历史案例 | ||
| 2140 | + | ||
| 2141 | +**反面案例(2026-02-09)**: | ||
| 2142 | +```markdown | ||
| 2143 | +❌ 错误流程: | ||
| 2144 | +1. 修改 PlanPopup.vue → 用户测试 → 报错 | ||
| 2145 | +2. 修改 IndustryPicker.vue → 用户测试 → 报错 | ||
| 2146 | +3. 修改 PlanPopup.vue → 用户测试 → 又报错 | ||
| 2147 | +4. ... 循环往复,浪费时间 | ||
| 2148 | + | ||
| 2149 | +问题: | ||
| 2150 | +- 没有全局视图 | ||
| 2151 | +- 没有一次性修改所有文件 | ||
| 2152 | +- 没有添加调试日志 | ||
| 2153 | +- 没有提供验证步骤 | ||
| 2154 | +``` | ||
| 2155 | + | ||
| 2156 | +**正面案例(应该这样)**: | ||
| 2157 | +```markdown | ||
| 2158 | +✅ 正确流程: | ||
| 2159 | +1. 分析需求 → 列出 3 个受影响的文件 | ||
| 2160 | +2. 设计验证方案 → 规划 5 个调试日志点 | ||
| 2161 | +3. 一次性修改 3 个文件 → 添加 5 个 console.log | ||
| 2162 | +4. 提供验证步骤 → 说明预期输出 | ||
| 2163 | +5. 用户测试 → 一次性成功 | ||
| 2164 | + | ||
| 2165 | +收益: | ||
| 2166 | +- 减少返工 | ||
| 2167 | +- 快速定位问题 | ||
| 2168 | +- 提升效率 | ||
| 2169 | +``` | ||
| 2170 | + | ||
| 2171 | +#### 相关文件 | ||
| 2172 | + | ||
| 2173 | +- 计划书模块:`src/pages/plan/index.vue` | ||
| 2174 | +- 计划弹窗:`src/components/PlanPopup/index.vue` | ||
| 2175 | +- 表单字段:`src/components/PlanFields/` | ||
| 2176 | + | ||
| 2177 | +#### 最佳实践总结 | ||
| 2178 | + | ||
| 2179 | +⚠️ **强制要求**:修改复杂功能时,必须先规划后实施,一次性修改所有相关文件,并提供完整的验证方案。 | ||
| 2180 | + | ||
| 2181 | +```javascript | ||
| 2182 | +// ✅ 推荐流程 | ||
| 2183 | +1. 理解需求 → 画出数据流图 | ||
| 2184 | +2. 规划修改 → 列出所有受影响文件 | ||
| 2185 | +3. 设计验证 → 规划调试日志点 | ||
| 2186 | +4. 一次性修改 → 修改所有文件 + 添加日志 | ||
| 2187 | +5. 提供验证 → 给出测试步骤和预期结果 | ||
| 2188 | +6. 等待反馈 → 不要催促,不要反复询问 | ||
| 2189 | + | ||
| 2190 | +// ❌ 错误流程 | ||
| 2191 | +1. 修改文件 A → 问"对不对" → 报错 | ||
| 2192 | +2. 修改文件 B → 问"对不对" → 又报错 | ||
| 2193 | +3. 修改文件 A → 问"对不对" → 还报错 | ||
| 2194 | +4. ... 循环往复,浪费时间 | ||
| 2195 | +``` | ||
| 2196 | + | ||
| 1946 | --- | 2197 | --- |
| 1947 | 2198 | ||
| 1948 | ## 组件开发案例:AmountKeyboard 数字键盘组件 ⭐ 新增 | 2199 | ## 组件开发案例:AmountKeyboard 数字键盘组件 ⭐ 新增 |
| ... | @@ -2174,7 +2425,7 @@ const onConfirm = () => { | ... | @@ -2174,7 +2425,7 @@ const onConfirm = () => { |
| 2174 | 2425 | ||
| 2175 | --- | 2426 | --- |
| 2176 | 2427 | ||
| 2177 | -**最后更新**: 2026-02-08 | 2428 | +**最后更新**: 2026-02-09 |
| 2178 | **维护者**: Claude Code | 2429 | **维护者**: Claude Code |
| 2179 | **项目**: Manulife WeApp | 2430 | **项目**: Manulife WeApp |
| 2180 | 2431 | ... | ... |
-
Please register or login to post a comment