# 阶段2b:工人+客商+农资功能 — 详细任务清单 > 工期:2周(10天) > 目标:四端核心流程跑通——工人能报名、客商能找货、农资能展示 > 功能点:13个 > 前置:阶段2a完成(果农数据已有、招工数据已有、拨号日志已有) > 流程:M1(需求) → M2(架构) → M3(编码) → M4(测试) --- ## 里程碑总览 ``` Week 1 Week 2 ┌─────────────────────┐ ┌─────────────────────┐ │ M1 需求分析 │ │ M3 编码(续)+自检 │ │ M2 架构设计 │ │ M4 测试验收 │ │ M3 编码(核心模块) │ │ │ └─────────────────────┘ └─────────────────────┘ 5天 5天 ``` --- ## M1 Team A — 需求分析(1.5天) ### 交付产物 | 序号 | 文件路径 | 说明 | |------|----------|------| | 1 | deliveries/team-a-requirement/spec.md | 阶段2b需求规格 | | 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 | 工人端需求细化(找活推荐、报名、防骚扰、状态、信用) | 0.5天 | | M1.2 | 客商端需求细化(货源筛选、详情、联系授权、拨号) | 0.5天 | | M1.3 | 农资端+短信配置需求 | 0.25天 | | M1.4 | DELIVERY-MANIFEST.md | 0.25天 | ### M1 关键需求点 **报名+短信通知流程**: ``` 工人点击报名 → INSERT worker_apply → 检查 sms_daily_limit → 无记录/未达限 → 发送短信(阿里云API)→ INSERT/UPDATE sms_daily_limit → 更新 worker_profile.status = 0(忙碌) → 短信内容:【洒渔用工】[工人姓名]([工种])对您的招工感兴趣,联系电话:[电话] ``` **联系授权流程**: ``` 客商浏览货源详情 → 勾选具体批次(如"红富士 20000斤") → 后端检查是否已有有效解锁记录 → 无记录/已过期 → INSERT phone_unlock_record(expire_time=now+7天) → 返回果农电话 → 客商一键拨号 → INSERT call_log ``` **信用机制**: - complaint_count=1 → 警告 - complaint_count=2 → 限制报名24小时 - complaint_count=3 → 状态锁定,需管理员解除 - 定时任务每天凌晨检查,3天无操作自动恢复空闲 ### M1 验收标准 - [ ] spec.md 覆盖13个功能点 - [ ] use-cases.md 用例数 ≥ 25 - [ ] 报名+短信流程图完整 - [ ] 联系授权流程图完整 - [ ] 信用机制状态机图完整 --- ## M2 Team B — 架构设计(1.5天) ### 交付产物 | 序号 | 文件路径 | 说明 | |------|----------|------| | 1 | deliveries/team-b-architecture/design.md | 架构设计 | | 2 | deliveries/team-b-architecture/api-definition.md | 接口定义 | | 3 | deliveries/team-b-architecture/DELIVERY-MANIFEST.md | 交付清单 | ### 任务分解 | 任务 | 内容 | 耗时 | |------|------|------| | M2.1 | 工人端架构(推荐算法、报名、状态机、信用) | 0.5天 | | M2.2 | 客商端架构(筛选、授权、拨号) | 0.5天 | | M2.3 | 接口定义(新增约15个接口) | 0.25天 | | M2.4 | DELIVERY-MANIFEST.md | 0.25天 | ### M2 接口清单(阶段2b新增) #### 工人模块 | 接口 | 方法 | 说明 | |------|------|------| | /api/wx/worker/profile | GET/PUT | 工人档案 | | /api/wx/worker/recommend | GET | 推荐招工列表(工种匹配+距离排序) | | /api/wx/worker/apply | POST | 报名(触发短信) | | /api/wx/worker/status | PUT | 切换状态(空闲/工作中) | | /api/wx/worker/applies | GET | 报名历史 | #### 客商模块 | 接口 | 方法 | 说明 | |------|------|------| | /api/wx/buyer/profile | GET/PUT | 客商档案 | | /api/wx/buyer/goods | GET | 货源列表(品种/价格/距离筛选) | | /api/wx/buyer/goods/{id} | GET | 货源详情(含视频/照片) | | /api/wx/buyer/unlock | POST | 解锁果农电话(7天有效) | | /api/wx/buyer/preferences | GET/PUT | 收购偏好 | #### 农资模块 | 接口 | 方法 | 说明 | |------|------|------| | /api/wx/supplier/shop | GET/PUT | 店铺信息 | #### 后台模块 | 接口 | 方法 | 说明 | |------|------|------| | /api/admin/sms/config | GET/PUT | 短信配置(签名+模板) | ### M2 验收标准 - [ ] api-definition.md 新增接口 ≥ 15 - [ ] 报名+短信时序图完整 - [ ] 联系授权时序图完整 - [ ] 信用机制状态机图完整 --- ## M3 Team C — 编码实现(5-6天) ### 模块拆分与并行策略 ``` 并行组1(数据层): ├── C-WorkerApply: 报名表 CRUD ├── C-PhoneUnlock: 联系授权记录 └── C-SmsDailyLimit: 短信限流 并行组2(业务层,并行组1完成后): ├── C-WorkerRecommend: 工人找活推荐 ├── C-WorkerApplyBiz: 报名+短信通知 ├── C-WorkerStatus: 状态管理+信用机制 └── C-BuyerGoods: 客商找货+联系授权 并行组3(简单模块,可与其他组并行): ├── C-SupplierShop: 农资店铺 └── C-SmsConfig: 短信配置 串行: └── C-Integration: 集成+自检 ``` ### 任务详细分解 #### C-WorkerRecommend: 工人找活(1天) | 任务 | 文件 | 说明 | |------|------|------| | C-WR.1 | WorkerRecommendController.java | 推荐招工列表 API | | C-WR.2 | WorkerRecommendService.java | 工种匹配+距离排序 | | C-WR.3 | RecruitInfoMapper.xml | 招工查询(工种+经纬度) | #### C-WorkerApplyBiz: 报名+短信(1.5天) | 任务 | 文件 | 说明 | |------|------|------| | C-WA.1 | WorkerApplyController.java | 报名 API | | C-WA.2 | WorkerApplyService.java | 报名业务逻辑 | | C-WA.3 | SmsService.java | 短信发送(阿里云API) | | C-WA.4 | SmsDailyLimitService.java | 短信限流逻辑 | | C-WA.5 | WorkerApplyMapper.xml | 报名表映射 | | C-WA.6 | SmsDailyLimitMapper.xml | 限流表映射 | #### C-WorkerStatus: 状态+信用(1天) | 任务 | 文件 | 说明 | |------|------|------| | C-WS.1 | WorkerStatusController.java | 状态切换 API | | C-WS.2 | WorkerStatusService.java | 状态业务逻辑 | | C-WS.3 | CreditService.java | 信用机制(投诉计数+处罚) | | C-WS.4 | AutoRecoverTask.java | 3天自动恢复定时任务 | | C-WS.5 | WorkerProfileMapper.xml | 工人表映射更新 | #### C-BuyerGoods: 客商找货+授权(1.5天) | 任务 | 文件 | 说明 | |------|------|------| | C-BG.1 | BuyerGoodsController.java | 货源列表+详情 API | | C-BG.2 | BuyerGoodsService.java | 货源筛选逻辑(品种/价格/距离) | | C-BG.3 | PhoneUnlockController.java | 解锁电话 API | | C-BG.4 | PhoneUnlockService.java | 授权逻辑(7天有效期) | | C-BG.5 | PhoneUnlockMapper.xml | 授权记录映射 | | C-BG.6 | GrowerProfileMapper.xml | 果农查询(含视频/照片) | #### C-SupplierShop: 农资店铺(0.5天) | 任务 | 文件 | 说明 | |------|------|------| | C-SS.1 | SupplierShopController.java | 店铺信息 API | | C-SS.2 | SupplierShopService.java | 店铺 CRUD | | C-SS.3 | SupplierShopMapper.xml | 店铺表映射 | #### C-SmsConfig: 短信配置(0.5天) | 任务 | 文件 | 说明 | |------|------|------| | C-SC.1 | SmsConfigController.java | 短信配置 API | | C-SC.2 | SmsConfigService.java | 签名+模板管理 | ### 编译自检 ```bash cd com.fenzhitech.crrc.service-common && ./gradlew compileJava cd com.fenzhitech.crrc.service-trade && ./gradlew compileJava cd com.fenzhitech.crrc.service-goods && ./gradlew compileJava cd com.fenzhitech.crrc.service-message && ./gradlew compileJava cd com.fenzhitech.crrc.service-user && ./gradlew compileJava cd com.fenzhitech.crrc.gateway-mobile && ./gradlew compileJava cd com.fenzhitech.crrc.gateway-management && ./gradlew compileJava ``` ### M3 验收标准 - [ ] 编译自检零错误 - [ ] 报名→短信通知端到端可通 - [ ] 联系授权→拨号端到端可通 - [ ] 状态切换+自动恢复可通 - [ ] 短信限流逻辑正确 - [ ] MyBatis XML 无 `${}` 注入 --- ## M4 Team D — 测试验收(2-3天) ### 测试重点(业务领导指定) #### 核心接口(必须测试) - /api/wx/worker/recommend — 推荐招工 - /api/wx/worker/apply — 报名 - /api/wx/worker/status — 状态切换 - /api/wx/buyer/goods — 货源列表 - /api/wx/buyer/unlock — 解锁电话 - /api/wx/call/phone — 拨号 - /api/wx/supplier/shop — 店铺信息 #### 重点场景 | 场景 | 说明 | |------|------| | 报名 | 短信发送成功、防骚扰限流、跨天重置 | | 状态 | 手动切换、3天自动恢复、报名联动忙碌 | | 信用 | 投诉1/2/3次递进处罚、管理员解除 | | 联系授权 | 解锁成功、7天过期、重新勾选 | | 边界 | 多身份用户数据隔离、并发报名 | ### 任务分解 | 任务 | 内容 | 耗时 | |------|------|------| | M4.1 | 编写测试用例(≥25个) | 0.5天 | | M4.2 | 编写自动化测试代码 | 1天 | | M4.3 | 手动验证(四端流程联调) | 0.5天 | | M4.4 | ./gradlew test 全部通过 | 0.5天 | | M4.5 | Bug 修复 | 0.5天 | ### M4 验收标准 - [ ] 测试用例数 ≥ 25 - [ ] 四端核心流程测试通过 - [ ] `./gradlew test` 全部通过 - [ ] 短信限流测试正确(跨天重置) --- ## 阶段2b风险与缓解 | 风险 | 影响 | 概率 | 缓解措施 | |------|------|------|----------| | 短信发送延迟/失败 | 果农收不到通知 | 中 | 异步发送,失败重试3次;记录发送状态 | | 短信成本超预算 | 运营成本增加 | 低 | sms_daily_limit限流;月度500元告警 | | 3天自动恢复误判 | 工人状态不准确 | 低 | 定时任务每天凌晨执行,日志记录恢复操作 | | 联系授权并发问题 | 重复解锁记录 | 低 | 数据库唯一索引(buyer+grower+batch) | | 四端联调复杂 | 集成问题多 | 中 | 预留充足联调时间,逐步集成 |