阶段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 关键需求点
视频上传5环节:
- 前端清除 EXIF → 前端预校验(格式/大小)
- 调用后端获取 OSS 上传凭证
- 前端直传 OSS
- 上传完成回调后端
- 后端记录 URL + 异步压缩 720p
关键词标记机制:
- 敏感词库:色情/赌博/政治等明确违规词
- 发布时自动检测,keyword_flag=1 进入待复核
- 不阻塞发布,审核员定时处理
距离计算:
- 果园地址 → 地理编码 → 经纬度存储
- 查询时 Haversine 公式计算距离
- 按距离排序
M1 验收标准
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/grower/upload-credential |
POST |
申请 OSS 上传凭证 |
| /api/wx/grower/upload-callback |
POST |
OSS 上传完成回调 |
招工模块
| 接口 |
方法 |
说明 |
| /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 验收标准
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: 视频上传(3天,复杂度最高)
| 任务 |
文件 |
说明 |
| C-VU.1 |
OssCredentialController.java |
OSS 凭证申请 API |
| C-VU.2 |
OssCredentialService.java |
STS Token 生成 |
| C-VU.3 |
UploadCallbackController.java |
上传回调 API |
| C-VU.4 |
VideoCompressService.java |
异步视频压缩(FFmpeg 720p/2Mbps) |
| C-VU.5 |
VideoCompressTask.java |
压缩定时任务+重试机制 |
| C-VU.6 |
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 |
待复核逻辑 |
编译自检
cd com.fenzhitech.crrc.service-common && ./gradlew compileJava
cd com.fenzhitech.crrc.service-file && ./gradlew compileJava
cd com.fenzhitech.crrc.service-trade && ./gradlew compileJava
cd com.fenzhitech.crrc.service-goods && ./gradlew compileJava
cd com.fenzhitech.crrc.service-audit && ./gradlew compileJava
cd com.fenzhitech.crrc.gateway-mobile && ./gradlew compileJava
cd com.fenzhitech.crrc.gateway-management && ./gradlew compileJava
M3 验收标准
M4 Team D — 测试验收(3-4天)
测试重点(业务领导指定)
核心接口(必须测试)
- /api/wx/grower/profile — 果农档案
- /api/wx/grower/upload-credential — OSS 凭证
- /api/wx/grower/upload-callback — 上传回调
- /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 |
./gradlew test 全部通过 |
0.5天 |
| M4.5 |
Bug 修复 |
1天 |
M4 验收标准
阶段2a风险与缓解
| 风险 |
影响 |
概率 |
缓解措施 |
| 视频上传链路复杂 |
延期3-5天 |
高 |
拆分5步逐步验证;压缩失败有重试机制 |
| OSS回调不可靠 |
视频URL未记录 |
中 |
后端定时扫描OSS Bucket补录 |
| EXIF清除不彻底 |
位置信息泄露 |
低 |
前端清除+后端二次检查双保险 |
| 敏感词库不完善 |
误杀或漏杀 |
中 |
初始词库只含明确违规词;通过待复核列表持续优化 |
| 距离计算精度 |
排序不准确 |
低 |
使用成熟Haversine公式,经纬度精确到小数点后7位 |