# 阶段2a:果农核心功能 — 详细任务清单 > 工期:3周(15天) > 目标:果农能完善名片、发布招工、找到工人和客商 > 功能点:14个 > 前置:阶段一完成(用户体系+数据导入+审核框架+行情+登录+首页) > 流程:M1(需求) → M2(架构) → M3(编码) → M4(测试) --- ## 里程碑总览 ``` Week 1 Week 2 Week 3 ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ M1 需求分析 │ │ M3 编码(续) │ │ M3 编译自检 │ │ M2 架构设计 │ │ 视频上传+招工 │ │ M4 测试验收 │ │ M3 编码(名片基础) │ │ 找工人+找客商 │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ 5天 5天 5天 ``` --- ## M1 Team A — 需求分析(2-3天) ### 交付产物 | 序号 | 文件路径 | 说明 | |------|----------|------| | 1 | deliveries/team-a-requirement/spec.md | 阶段2a需求规格 | | 2 | deliveries/team-a-requirement/use-cases.md | 用例文档 | | 3 | deliveries/team-a-requirement/constraints.md | 约束条件(继承阶段一+新增) | | 4 | deliveries/team-a-requirement/DELIVERY-MANIFEST.md | 交付清单 | ### 任务分解 | 任务 | 内容 | 耗时 | |------|------|------| | M1.1 | 果农名片需求细化(视频上传5环节、照片上传、审核状态流转) | 1天 | | M1.2 | 招工发布+管理需求细化(免审核+关键词标记+下架/编辑) | 0.5天 | | M1.3 | 找工人/客商需求细化(距离计算、拨号日志) | 0.5天 | | M1.4 | 后台审核需求细化(名片审核+待复核列表+SLA) | 0.5天 | | M1.5 | 编写 DELIVERY-MANIFEST.md | 0.5天 | ### M1 关键需求点 **视频上传3环节**: 1. 前端清除 EXIF → 前端预校验(格式/大小) 2. 调用后端上传API → 后端存储到本地目录 3. 后端记录 URL + 异步压缩 720p **关键词标记机制**: - 敏感词库:色情/赌博/政治等明确违规词 - 发布时自动检测,keyword_flag=1 进入待复核 - 不阻塞发布,审核员定时处理 **距离计算**: - 果园地址 → 地理编码 → 经纬度存储 - 查询时 Haversine 公式计算距离 - 按距离排序 ### M1 验收标准 - [ ] spec.md 覆盖14个功能点 - [ ] use-cases.md 用例数 ≥ 30 - [ ] 视频上传3环节流程图完整 - [ ] DELIVERY-MANIFEST.md 关键信息完整 --- ## M2 Team B — 架构设计(2-3天) ### 交付产物 | 序号 | 文件路径 | 说明 | |------|----------|------| | 1 | deliveries/team-b-architecture/design.md | 架构设计 | | 2 | deliveries/team-b-architecture/api-definition.md | 接口定义 | | 3 | deliveries/team-b-architecture/tech-stack.md | 技术选型(新增OSS相关) | | 4 | deliveries/team-b-architecture/DELIVERY-MANIFEST.md | 交付清单 | ### 任务分解 | 任务 | 内容 | 耗时 | |------|------|------| | M2.1 | 果农名片模块架构(信息维护+视频/照片上传+审核状态) | 0.5天 | | M2.2 | 视频上传技术方案(OSS凭证→直传→回调→压缩) | 0.5天 | | M2.3 | 招工模块架构(发布+管理+关键词检测) | 0.5天 | | M2.4 | 找工人/客商模块架构(列表+距离+拨号) | 0.5天 | | M2.5 | 接口定义(新增约15个接口) | 0.5天 | | M2.6 | DELIVERY-MANIFEST.md | 0.5天 | ### M2 接口清单(阶段2a新增) #### 果农名片模块 | 接口 | 方法 | 说明 | |------|------|------| | /api/wx/grower/profile | GET | 获取果农档案 | | /api/wx/grower/profile | PUT | 更新果农档案 | #### 文件上传模块(已实现) | 接口 | 方法 | 说明 | |------|------|------| | /api/wx/file/upload/image | POST | 上传图片 | | /api/wx/file/upload/video | POST | 上传视频 | | /api/wx/file/upload | POST | 通用文件上传 | | /api/wx/file/files/{category}/{filename} | GET | 访问文件 | | /api/wx/file/delete | DELETE | 删除文件 | #### 招工模块 | 接口 | 方法 | 说明 | |------|------|------| | /api/wx/grower/recruit | POST | 发布招工 | | /api/wx/grower/recruit | GET | 我的招工列表 | | /api/wx/grower/recruit/{id} | PUT | 编辑招工 | | /api/wx/grower/recruit/{id} | DELETE | 下架招工 | #### 找工人/客商 | 接口 | 方法 | 说明 | |------|------|------| | /api/wx/grower/workers | GET | 工人列表(工种筛选+距离排序) | | /api/wx/grower/buyers | GET | 客商列表 | | /api/wx/call/phone | POST | 拨号接口(记录call_log) | #### 后台审核 | 接口 | 方法 | 说明 | |------|------|------| | /api/admin/audit/grower-profile | GET | 名片审核列表 | | /api/admin/audit/grower-profile/{id} | PUT | 名片审核操作 | | /api/admin/audit/recruit-review | GET | 待复核招工列表 | | /api/admin/audit/recruit-review/{id} | PUT | 待复核操作 | ### M2 验收标准 - [ ] api-definition.md 新增接口 ≥ 15 - [ ] 文件上传接口已实现并测试通过 - [ ] 距离计算方案明确(Haversine) - [ ] DELIVERY-MANIFEST.md 关键信息完整 --- ## M3 Team C — 编码实现(8-10天) ### 模块拆分与并行策略 ``` 并行组1(基础数据层): ├── C-GrowerProfile: 果农档案 CRUD ├── C-RecruitInfo: 招工信息 CRUD └── C-CallLog: 拨号日志 并行组2(业务逻辑层,依赖并行组1): ├── C-VideoUpload: 视频上传(OSS凭证/直传/回调/压缩) ├── C-PhotoUpload: 照片上传 └── C-KeywordCheck: 敏感词检测 并行组3(展示层): ├── C-WorkerList: 找工人列表 ├── C-BuyerList: 找客商列表 └── C-Audit2a: 名片审核+待复核 串行: └── C-Integration: 集成测试+编译自检 ``` ### 任务详细分解 #### C-GrowerProfile: 果农档案(1天) | 任务 | 文件 | 说明 | |------|------|------| | C-GP.1 | GrowerProfileController.java | 果农档案 API | | C-GP.2 | GrowerProfileService.java | 档案业务逻辑 | | C-GP.3 | GrowerProfileMapper.xml | MyBatis 映射 | #### C-VideoUpload: 视频上传(2天,已简化) | 任务 | 文件 | 说明 | |------|------|------| | C-VU.1 | LocalFileStorageService.java | 本地文件存储服务(已实现) | | C-VU.2 | FileController.java | 文件上传API(已实现) | | C-VU.3 | VideoCompressService.java | 异步视频压缩(FFmpeg 720p/2Mbps) | | C-VU.4 | VideoCompressTask.java | 压缩定时任务+重试机制 | | C-VU.5 | FileValidateService.java | 文件校验(格式/大小/EXIF) | #### C-PhotoUpload: 照片上传(0.5天) | 任务 | 文件 | 说明 | |------|------|------| | C-PU.1 | PhotoUploadService.java | 照片上传逻辑(≤9张/张≤5MB) | #### C-RecruitInfo: 招工信息(1.5天) | 任务 | 文件 | 说明 | |------|------|------| | C-RI.1 | RecruitController.java | 招工 CRUD API | | C-RI.2 | RecruitService.java | 招工业务逻辑 | | C-RI.3 | RecruitMapper.xml | MyBatis 映射 | | C-RI.4 | KeywordCheckService.java | 敏感词检测(正则匹配) | | C-RI.5 | KeywordDictionary.java | 敏感词库(硬编码初始词库) | #### C-CallLog: 拨号日志(0.5天) | 任务 | 文件 | 说明 | |------|------|------| | C-CL.1 | CallLogService.java | 拨号日志记录 | | C-CL.2 | CallPhoneController.java | 拨号 API(/api/wx/call/phone) | | C-CL.3 | CallLogMapper.xml | MyBatis 映射 | #### C-WorkerList: 找工人(1天) | 任务 | 文件 | 说明 | |------|------|------| | C-WL.1 | WorkerSearchController.java | 工人列表 API | | C-WL.2 | WorkerSearchService.java | 工种筛选+距离排序 | | C-WL.3 | DistanceUtil.java | Haversine 距离计算工具 | | C-WL.4 | WorkerProfileMapper.xml | 工人表映射(含经纬度查询) | #### C-BuyerList: 找客商(0.5天) | 任务 | 文件 | 说明 | |------|------|------| | C-BL.1 | BuyerSearchController.java | 客商列表 API | | C-BL.2 | BuyerSearchService.java | 客商查询逻辑 | #### C-Audit2a: 后台审核(1天) | 任务 | 文件 | 说明 | |------|------|------| | C-A2.1 | GrowerAuditController.java | 名片审核 API | | C-A2.2 | GrowerAuditService.java | 名片审核逻辑 | | C-A2.3 | RecruitReviewController.java | 待复核 API | | C-A2.4 | RecruitReviewService.java | 待复核逻辑 | ### 编译自检 ```bash cd service && mvn compile ``` ### M3 验收标准 - [ ] 编译自检零错误 - [ ] 视频上传3环节端到端可通 - [ ] 招工发布免审核直接可见 - [ ] 敏感关键词自动标记 - [ ] 拨号日志完整记录 - [ ] MyBatis XML 无 `${}` 注入 --- ## M4 Team D — 测试验收(3-4天) ### 测试重点(业务领导指定) #### 核心接口(必须测试) - /api/wx/grower/profile — 果农档案 - /api/wx/file/upload/image — 图片上传 - /api/wx/file/upload/video — 视频上传 - /api/wx/grower/recruit — 招工发布 - /api/wx/grower/workers — 工人列表 - /api/wx/call/phone — 拨号接口 - /api/admin/audit/grower-profile/{id} — 名片审核 #### 重点场景 | 场景 | 说明 | |------|------| | 视频上传 | 50MB边界、格式异常、EXIF清除验证、本地存储验证 | | 照片上传 | 9张边界、大小限制、格式校验 | | 招工发布 | 敏感词标记、免审核发布、下架/编辑 | | 找工人 | 工种筛选、距离排序准确性、拨号日志 | | 审核 | 名片通过/驳回、待复核处理、SLA提醒 | ### 任务分解 | 任务 | 内容 | 耗时 | |------|------|------| | M4.1 | 编写测试用例(≥30个) | 1天 | | M4.2 | 编写自动化测试代码 | 1.5天 | | M4.3 | 手动验证(视频上传专项) | 0.5天 | | M4.4 | mvn test 全部通过 | 0.5天 | | M4.5 | Bug 修复 | 1天 | ### M4 验收标准 - [ ] 测试用例数 ≥ 30 - [ ] 视频上传端到端测试通过 - [ ] `mvn test` 全部通过 - [ ] Bug 清单记录完整 --- ## 阶段2a风险与缓解 | 风险 | 影响 | 概率 | 缓解措施 | |------|------|------|----------| | 视频上传链路复杂 | 延期2-3天 | 高 | 拆分3步逐步验证;压缩失败有重试机制 | | 本地存储空间不足 | 上传失败 | 中 | 定期清理过期文件,监控磁盘空间 | | EXIF清除不彻底 | 位置信息泄露 | 低 | 前端清除+后端二次检查双保险 | | 敏感词库不完善 | 误杀或漏杀 | 中 | 初始词库只含明确违规词;通过待复核列表持续优化 | | 距离计算精度 | 排序不准确 | 低 | 使用成熟Haversine公式,经纬度精确到小数点后7位 |