phase-planning.md 28 KB

洒渔镇苹果产业供需对接平台 — 阶段规划说明书

版本:V1.1 编制日期:2026-05-30 基于:requirements-specification.md + 阶段划分研讨(6角色投票≥5/6通过) V1.1变更:增加环境准备阶段、调整工期(基于工作量复核)、增加风险与缓解措施


阶段总览

阶段0(0.5周)     阶段一(3-4周)          阶段2a(3周)           阶段2b(2周)          阶段三(2周)
┌──────────┐  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐
│ 环境准备  │  │ 基础设施与用户体系│  │ 果农核心功能     │  │ 工人+客商+农资   │  │ 运营功能与统计   │
│          │  │                 │  │                 │  │                 │  │                 │
│ • 项目骨架│  │ • 数据库建表     │  │ • 果农名片       │  │ • 工人找活报名   │  │ • 数据大屏       │
│ • OSS申请 │  │ • 用户体系       │  │ • 视频/照片上传  │  │ • 状态+信用     │  │ • 报表导出       │
│ • 短信申请│  │ • 后台管理框架   │  │ • 招工发布       │  │ • 客商找货       │  │ • 招工巡查       │
│ • Redis  │  │ • 数据导入       │  │ • 找工人/客商    │  │ • 联系授权       │  │ • P1功能补充     │
│ • 微信账号│  │ • 审核框架       │  │ • 名片审核       │  │ • 农资店铺       │  │ • 举报处理       │
│ • Git仓库│  │ • 行情管理       │  │ • 待复核列表     │  │ • 短信配置       │  │                 │
│          │  │ • 微信登录       │  │                 │  │                 │  │                 │
│          │  │ • 小程序首页     │  │                 │  │                 │  │                 │
│          │  │ • 安全基础设施   │  │                 │  │                 │  │                 │
└──────────┘  └─────────────────┘  └─────────────────┘  └─────────────────┘  └─────────────────┘
   验收:          验收:                验收:                验收:                验收:
   环境就绪        能登录+看行情         能发招工+找工人       四端流程跑通          大屏+报表可用
阶段 名称 工期 目标 功能点数
0 环境准备 0.5周 开发环境就绪 -
基础设施与用户体系 3-4周 平台可用 20
2a 果农核心功能 3周 供给上线 14
2b 工人+客商+农资 2周 供需对接 13
运营功能与统计 2周 运营闭环 14
总计 10.5-11.5周 61

工期调整说明(V1.1)

阶段 V1.0工期 V1.1工期 调整原因
阶段0 0.5周 新增:环境搭建不可省略
阶段一 2-3周 3-4周 20个功能点后端需15-19人天,含环境搭建
阶段2a 2-3周 3周 视频上传5环节(OSS凭证/直传/回调/压缩/重试)复杂度高
阶段2b 2周 2周 可行,无需调整
阶段三 1-2周 2周 数据大屏+报表导出+P1功能补充

阶段零:环境准备(0.5周)

目标

开发环境就绪,所有外部依赖到位,项目骨架可运行。

任务清单

序号 任务 负责 说明
1 Spring Boot项目初始化 后端 基于CRRC多模块模式创建项目骨架,配置Gradle
2 数据库初始化 后端 MySQL建库(crrc),执行全量建表SQL
3 阿里云OSS申请 运维 创建Bucket,配置访问策略,获取AccessKey
4 阿里云短信申请 运维 申请短信签名"洒渔用工",报备短信模板
5 Redis部署 运维 安装Redis,配置持久化
6 微信小程序账号 产品 申请小程序AppID,配置服务器域名
7 Git仓库初始化 全员 创建远程仓库,初始化main分支,配置.gitignore
8 本地开发环境 全员 JDK 8、Gradle、微信开发者工具、数据库客户端
9 CI/CD基础 运维 配置编译验证脚本(./gradlew compileJava)

验收标准

  • 项目骨架可编译通过(./gradlew compileJava零错误)
  • 数据库连接正常,全量表结构创建完成
  • OSS Bucket可访问,能上传/下载测试文件
  • 短信SDK可调用(发送测试短信成功)
  • Redis连接正常
  • 微信小程序开发者账号就绪
  • Git仓库可push/pull

阶段一:基础设施与用户体系

目标

管理员能录入数据,用户能登录并看到有价值的信息。

功能清单

1.1 数据库(全量建表)

一次性建好全部15张表,避免后续ALTER TABLE:

序号 表名 说明 阶段一状态
1 sys_user 用户基础表 有数据(导入+登录)
2 user_identity 身份关联表 有数据(导入)
3 grower_profile 果农档案表 有数据(导入)
4 worker_profile 工人档案表 有数据(导入)
5 buyer_profile 客商档案表 有数据(导入)
6 supplier_shop 农资店铺表 有数据(导入)
7 recruit_info 招工信息表 空表(阶段2a使用)
8 worker_apply 工人报名表 空表(阶段2b使用)
9 phone_unlock_record 联系授权记录 空表(阶段2b使用)
10 call_log 拨号日志表 空表(阶段2a使用)
11 sms_daily_limit 短信限流表 空表(阶段2b使用)
12 market_price 今日行情表 有数据(行情配置)
13 audit_log 审核日志表 有数据(审核操作)
14 operation_log 操作日志表 有数据(登录/导入)
15 complaint 投诉表 空表(阶段2b使用)

1.2 后台-系统管理

功能 说明
角色管理 定义4种角色:超级管理员/录入员/审核员/运维,角色-权限绑定
账号管理 管理员CRUD,分配角色,账号启用/禁用
字典管理 苹果品种、工种类型、农资种类、行政区划(洒渔镇下辖村)的增删改查
操作日志 记录登录/导入/审核等关键操作,只追加不修改

1.3 后台-数据导入

功能 说明
模板下载 4类Excel模板:果农/工人/客商/农资
Excel上传 拖拽上传,前端预校验格式(.xlsx)和大小(≤10MB)
预览 展示总行数、有效行数、错误行数、重复行数;错误行红色高亮
数据校验 手机号正则(1开头11位)、字段长度、必填项
去重 手机号+身份类型唯一,重复标记,用户可选跳过/覆盖
确认入库 ≤100行同步,>100行异步+完成通知

字段映射(硬编码)

果农模板:姓名→name, 手机号/电话→phone, 品种→varieties, 产量→yield_amount, 地址→address
工人模板:姓名→name, 手机号/电话→phone, 工种→skills, 报价→price
客商模板:姓名/公司名→name, 手机号/电话→phone, 品种→varieties, 地址→address
农资模板:店铺名→shop_name, 店主→owner_name, 种类→categories, 地址→address, 电话→phone

1.4 后台-审核中心

功能 说明
审核框架 审核列表+通过/驳回操作+驳回原因填写
导入数据审核 导入的数据需审核确认后生效(状态:待审/通过/驳回)
SLA提醒 ≤24小时自动提醒审核员,48小时升级给超级管理员

1.5 后台-行情管理

功能 说明
行情配置 按品种设置价格区间(最低价/最高价)+趋势(持平/涨价/降价)
行情列表 查看/编辑/删除行情记录

1.6 小程序-登录

功能 说明
微信登录 wx.login()→后端换openid+手机号→JWT token
身份路由 0个→提示联系村委会;1个→直接进入;N个→选择页
身份选择 大卡片列表(≥120px高度),每个身份一张卡片
兜底绑定 拒绝授权→弹窗引导→联系村委会管理员后台绑定

1.7 小程序-首页

功能 说明
今日行情 展示品种+价格区间,涨价红/降价绿色块,更新时间
金刚区 4个入口:找工人/找客商/买农资/发布需求(部分可灰态"即将开放")

1.8 安全基础设施

功能 说明
手机号加密 AES加密存储,phone_hash(SHA256)唯一索引
权限框架 RBAC角色权限,/api/wx/*和/api/admin/*独立拦截器
接口脱敏 手机号138**1234,姓名张
操作日志 登录/导入/审核操作全量记录

技术依赖链

数据库建表(全量15张)
    │
    ├── sys_user + user_identity ──→ 权限框架(RBAC+拦截器)
    │                                │
    │                                ├── 后台管理API(角色/账号/字典)
    │                                │
    │                                └── 微信登录+JWT ──→ 身份路由 ──→ 小程序首页
    │
    ├── 全量表结构 ──→ 数据导入(Excel上传/预览/校验/入库)
    │                │
    │                └── 审核框架(导入数据审核)
    │
    ├── market_price ──→ 行情管理(配置)──→ 小程序首页(行情展示)
    │
    └── audit_log + operation_log ──→ 操作日志记录

验收标准

  • 管理员能登录后台管理系统
  • 管理员能通过Excel导入4类用户数据(果农/工人/客商/农资)
  • 导入数据预览正确显示有效/错误/重复行
  • 导入数据经审核后生效
  • 管理员能配置今日行情(品种+价格区间+趋势)
  • 用户能微信登录,0/1/N个身份路由正确
  • 小程序首页展示今日行情(涨价红/降价绿色块)
  • 金刚区展示4个入口
  • 手机号数据库存储为密文
  • 接口返回手机号脱敏(138****1234)
  • 操作日志记录登录/导入/审核操作
  • 角色权限隔离:录入员不能审核,审核员不能导入

测试重点

测试类型 重点场景
登录 微信登录→0/1/N身份路由、拒绝授权兜底
数据导入 空行/格式错误/重复/超大文件、预览准确性
审核 通过/驳回操作、SLA提醒触发
权限 不同角色访问隔离、越权访问拦截
安全 手机号加密存储验证、接口脱敏验证

阶段2a:果农核心功能

目标

果农能完善名片、发布招工、找到工人和客商。

功能清单

2a.1 小程序-果农名片

功能 说明
信息维护 苹果品种(多选)、产量(斤)、预期价格(元/斤)、果园地址
视频上传 本地文件存储,≤50MB/MP4/MOV,前端清除EXIF,后端压缩720p/2Mbps/≤5分钟
照片上传 ≤9张,单张≤5MB,前端清除EXIF
审核状态 展示待审/已通过/被驳回(驳回显示原因)

视频上传流程

前端选择视频 → 前端清除EXIF → 前端预校验(格式/大小)
    → 调用后端上传API
    → 后端存储到本地目录
    → 后端记录URL + 异步压缩720p
    → 更新审核状态为"待审"

2a.2 小程序-招工发布

功能 说明
发布表单 工种(多选)、价格、价格单位(元/天
语音输入 备注支持语音转文字
发布规则 免审核直接发布
关键词标记 敏感关键词自动标记keyword_flag=1,进入待复核列表
招工管理 下架(status=0)、重新编辑、查看历史记录

敏感词库:色情/赌博/政治等明确违规词,不包含业务词汇

2a.3 小程序-找工人

功能 说明
工人列表 按工种筛选,展示姓名/工种标签/报价/距离/状态
距离计算 果园地址经纬度→Haversine公式
一键拨号 调用/api/wx/call/phone,记录call_log

2a.4 小程序-找客商

功能 说明
客商列表 展示姓名/公司名、收购品种、价格、数量、地址
一键拨号 调用/api/wx/call/phone,记录call_log

2a.5 后台-审核

功能 说明
名片审核 审核果农视频/照片,通过/驳回+原因
待复核列表 keyword_flag=1的招工信息,人工审核
SLA提醒 ≤24h提醒,48h升级

2a.6 安全

功能 说明
视频安全 EXIF清除、格式校验(MP4/MOV)、大小限制(≤50MB)
拨号日志 call_log表记录:拨号方、被拨方、时间

技术依赖链

阶段一(用户体系+数据导入)
    │
    ├── grower_profile(已有导入数据)
    │   ├── 名片信息维护 → 更新grower_profile
    │   └── 视频/照片上传 → 后端上传API → 本地存储 → 记录URL → 异步压缩
    │
    ├── recruit_info(招工表)
    │   ├── 招工发布 → INSERT recruit_info(keyword_flag自动检测)
    │   └── 招工管理 → UPDATE status/编辑
    │
    ├── worker_profile(已有导入数据)
    │   └── 找工人列表 → 查询worker_profile(工种筛选+经纬度排序)
    │
    ├── buyer_profile(已有导入数据)
    │   └── 找客商列表 → 查询buyer_profile
    │
    ├── call_log(拨号日志)
    │   └── 一键拨号 → INSERT call_log → 返回电话号码
    │
    └── 审核框架(阶段一已有)
        ├── 名片审核 → 审核grower_profile.audit_status
        └── 待复核 → 审核recruit_info.keyword_flag

验收标准

  • 果农能编辑名片信息(品种/产量/价格/地址)
  • 果农能上传视频到OSS,视频压缩至720p
  • 果农能上传照片(≤9张/张≤5MB)
  • 名片提交后进入待审核状态
  • 审核员能审核名片(通过/驳回+原因)
  • 果农能发布招工信息(免审核直接发布)
  • 敏感关键词自动标记,进入待复核列表
  • 果农能下架/编辑招工
  • 果农能按工种筛选工人列表
  • 果农能一键拨号联系工人(记录call_log)
  • 果农能查看客商列表并拨号
  • 视频上传前EXIF已清除
  • 拨号日志完整记录

测试重点

测试类型 重点场景
视频上传 50MB边界、格式异常、网络中断、EXIF清除验证
照片上传 9张边界、大小限制、格式校验
招工发布 敏感词标记、免审核发布、下架/编辑
找工人 工种筛选、距离排序准确性、拨号日志
审核 名片通过/驳回、待复核处理、SLA提醒

阶段2b:工人+客商+农资功能

目标

四端核心流程跑通——工人能报名、客商能找货、农资能展示。

功能清单

2b.1 小程序-工人找活

功能 说明
推荐列表 工种匹配+距离排序,展示工种/价格/天数/人数/果农姓名/距离
报名 点击→短信通知果农→worker_apply记录→自动变为"忙碌"
防骚扰 sms_daily_limit表,同一工人每天对同一果农最多1条(自然日)

短信模板【洒渔用工】[工人姓名]([工种])对您的招工感兴趣,联系电话:[电话]

2b.2 小程序-工人状态

功能 说明
状态切换 空闲/工作中,手动切换
自动恢复 3天无操作自动恢复"空闲"(last_active_time判断,定时任务每天检查)
报名联动 报名后自动变为"忙碌"
信用机制 complaint_count字段:1次警告,2次限制24h,3次锁定需管理员解除

2b.3 小程序-客商找货

功能 说明
货源筛选 按品种/价格区间/距离筛选果农货源
货源详情 种植面积、规格(糖度/果径)、视频/照片
联系授权 勾选批次→解锁电话→phone_unlock_record(7天有效)
一键拨号 解锁后调用拨号接口(记录call_log)

联系授权流程

客商浏览货源详情 → 勾选具体批次(如"红富士 20000斤")
    → 后端检查是否已有有效解锁记录
    → 无记录/已过期 → INSERT phone_unlock_record(expire_time=now+7天)
    → 返回果农电话
    → 客商一键拨号 → INSERT call_log

2b.4 小程序-农资店铺

功能 说明
信息维护 店铺名称/店主/主营种类/地址/电话
保存提交 更新supplier_shop表
一键拨号 展示电话,点击拨号

2b.5 后台-短信配置

功能 说明
签名管理 短信签名配置(如"洒渔用工")
模板管理 短信模板配置(报名通知模板等)

2b.6 安全

功能 说明
联系授权 phone_unlock_record表+7天过期控制
短信限流 sms_daily_limit表+自然日计数
短信合规 签名报备+模板报备+日志全量记录

技术依赖链

阶段2a(果农数据已有)
    │
    ├── recruit_info(已有招工数据)
    │   └── 工人找活 → 查询recruit_info(工种匹配+距离排序)
    │
    ├── worker_apply(报名表)
    │   ├── 报名 → INSERT worker_apply → 短信通知果农
    │   └── 防骚扰 → 查询sms_daily_limit
    │
    ├── worker_profile(已有工人数据)
    │   ├── 状态切换 → UPDATE status
    │   └── 信用机制 → UPDATE complaint_count
    │
    ├── grower_profile(已有果农数据)
    │   └── 客商找货 → 查询grower_profile(品种/价格/距离筛选)
    │
    ├── phone_unlock_record(联系授权)
    │   └── 解锁电话 → INSERT/查询有效期
    │
    ├── call_log(拨号日志)
    │   └── 客商拨号 → INSERT call_log
    │
    └── sms_daily_limit(短信限流)
        └── 报名短信 → INSERT/UPDATE计数

验收标准

  • 工人能看到推荐的招工列表(工种匹配+距离排序)
  • 工人能报名,果农收到短信通知
  • 同一工人每天对同一果农最多1条短信
  • 工人能切换状态(空闲/工作中)
  • 3天无操作自动恢复空闲
  • 工人被投诉3次后状态锁定
  • 客商能按品种/价格/距离筛选货源
  • 客商能查看货源详情(含视频/照片)
  • 客商勾选批次后解锁果农电话(7天有效)
  • 客商能一键拨号(记录call_log)
  • 农资商能维护店铺信息
  • 解锁记录完整存储
  • 短信日志全量记录
  • 短信签名和模板可配置

测试重点

测试类型 重点场景
报名 短信发送成功、防骚扰限流、跨天重置
状态 手动切换、3天自动恢复、报名联动忙碌
信用 投诉1/2/3次递进处罚、管理员解除
联系授权 解锁成功、7天过期、重新勾选
短信 签名/模板配置、发送日志、成本统计
边界 多身份用户数据隔离、并发报名

阶段三:运营功能与统计

目标

政府管理部门能监控运营、统计数据、管理平台。

功能清单

3.1 后台-数据大屏

功能 优先级 数据来源 说明
宏观概览 P0 sys_user 注册用户总数、今日活跃(last_active_time)
供需比 P0 recruit_info/worker_profile 招工数/空闲工人数
撮合指标 P0 call_log/sms_daily_limit 电话拨打次数、短信发送条数
有效撮合率 P0 worker_apply 已联系/总报名
流量指标 P1 - PV/UV、名片浏览量(需新增统计表)
产业地图 P1 grower_profile 果农分布热力图、客商来源TOP10

技术方案:定时任务每5分钟刷新→Redis缓存

3.2 后台-报表导出

功能 说明
用户列表导出 按条件筛选→导出Excel(手机号脱敏)
撮合记录导出 拨号/短信/报名记录→Excel
操作日志导出 操作日志→Excel
安全 导出需二次确认+操作日志记录

3.3 后台-管理功能

功能 优先级 说明
招工巡查 P1 查看所有招工,强制下架违规内容
用户信息修正 P1 管理员修改用户基础信息
短信配置 P1 签名+模板管理(如未在阶段2b完成)
举报处理 P2 处理用户投诉(虚假招工/骚扰电话)

3.4 小程序-P1功能补充

功能 优先级 说明
买农资 P1 分类筛选+店铺列表+一键拨号
工作记录 P1 工人报名历史+联系果农
我的信息 P1 工人展示姓名/技能/电话
我的需求 P1 客商收购偏好维护
关于我们 P2 平台介绍、联系方式、免责声明

验收标准

  • 数据大屏展示注册用户总数、今日活跃、供需比
  • 数据大屏展示电话拨打次数、短信发送条数
  • 数据大屏每5分钟自动刷新
  • 管理员能导出用户列表/撮合记录为Excel(脱敏)
  • 导出操作有二次确认和日志记录
  • 管理员能查看所有招工并强制下架
  • 管理员能修改用户基础信息
  • 举报处理流程可用
  • 果农能按分类筛选农资店铺
  • 工人能查看报名历史
  • 客商能维护收购偏好

测试重点

测试类型 重点场景
大屏 统计数据准确性、定时刷新、Redis缓存一致性
报表 导出数据完整性、脱敏正确性、大文件导出
巡查 强制下架生效、列表筛选
P1功能 买农资筛选、工作记录、收购偏好

跨阶段注意事项

数据兼容性

  • 阶段一全量建表,后续阶段只做INSERT/UPDATE,不做ALTER TABLE
  • 阶段一导入的数据在阶段二/三可直接使用
  • 预留字段(如supplier_shop.has_online_order)后续扩展时不需改表

安全基线

  • 阶段一建立的安全基础设施(加密/脱敏/权限/日志)贯穿所有阶段
  • 每个阶段新增的接口必须遵循权限框架
  • 每个阶段新增的敏感操作必须记录日志

测试策略

  • 每个阶段结束前预留2-3天用于测试和修复
  • 阶段二/三的测试需回归阶段一的功能(特别是登录和权限)
  • 自动化测试从阶段一开始积累,后续阶段持续补充

UI/UX设计

  • UI设计需在阶段一启动,与后端开发并行
  • 适老化设计规范(18px/88px按钮/高对比度)贯穿所有页面
  • 阶段一的金刚区灰态入口在阶段二/三逐步开放

风险与缓解措施

阶段一风险

风险 影响 概率 缓解措施
20个功能点工期不足 延期1-2周 已调整为3-4周;优先完成登录+导入+行情,审核框架可延到阶段2a初
Excel导入格式多样性 字段映射不全 MVP硬编码覆盖4种标准模板;非标格式人工处理
微信手机号授权拒绝 用户无法注册 后台手动绑定兜底;阶段一即实现
Spring Boot 1.5.9兼容性 部分SDK版本冲突 阶段零验证所有SDK兼容性

阶段2a风险

风险 影响 概率 缓解措施
视频上传链路复杂 延期3-5天 拆分3步逐步验证:上传→存储→压缩;压缩失败有重试机制
本地存储空间不足 上传失败 定期清理过期文件,监控磁盘空间
EXIF清除不彻底 位置信息泄露 前端清除+后端二次检查双保险
敏感词库不完善 误杀或漏杀 初始词库只含明确违规词;通过待复核列表持续优化

阶段2b风险

风险 影响 概率 缓解措施
短信发送延迟/失败 果农收不到通知 短信发送异步化,失败重试3次;记录发送状态
短信成本超预算 运营成本增加 sms_daily_limit限流;月度预算500元告警
3天自动恢复误判 工人状态不准确 定时任务每天凌晨执行,日志记录恢复操作
联系授权并发问题 重复解锁记录 数据库唯一索引(buyer_identity_id+grower_identity_id+batch_id)

阶段三风险

风险 影响 概率 缓解措施
统计数据不准确 大屏数据可信度低 统计SQL需与业务SQL对齐;提供数据核对入口
大文件导出超时 报表导出失败 >1000行异步导出+邮件通知下载
Redis缓存不一致 大屏数据延迟 5分钟刷新周期可接受;提供手动刷新按钮

各阶段工作量明细

阶段零(0.5周 = 2.5天)

任务 后端 前端 运维
项目骨架 1天 - -
数据库建表 0.5天 - -
OSS/短信/Redis申请 - - 1天
微信账号+Git仓库 - 0.5天 0.5天
本地环境+CI/CD 0.5天 0.5天 0.5天

阶段一(3-4周 = 15-20天)

任务 后端 前端 说明
系统管理(角色/账号/字典/日志) 4天 3天 后台管理基础
数据导入(上传/预览/校验/去重/异步) 4天 3天 核心功能,复杂度高
审核框架(列表/操作/SLA) 2天 2天 可复用框架
行情管理 1天 1天 简单CRUD
微信登录+身份路由 3天 2天 微信API对接
小程序首页(行情+金刚区) 1天 2天 首页展示
安全(加密/脱敏/拦截器) 3天 - 贯穿全阶段
联调+测试 2天 2天 预留缓冲

阶段2a(3周 = 15天)

任务 后端 前端 说明
果农名片(信息维护) 1天 2天 CRUD
视频上传(OSS凭证/直传/回调/压缩) 4天 3天 复杂度最高
照片上传 1天 1天 相对简单
招工发布+管理 2天 2天 表单+列表
找工人列表 1天 2天 筛选+距离排序
找客商列表 1天 1天 简单列表
名片审核+待复核 1天 1天 复用审核框架
联调+测试 2天 2天 含视频上传专项测试

阶段2b(2周 = 10天)

任务 后端 前端 说明
工人找活推荐 2天 2天 匹配+排序
报名+短信通知 2天 1天 短信API对接
状态管理+信用机制 2天 1天 定时任务+状态机
客商找货+联系授权 2天 2天 授权逻辑
农资店铺 0.5天 0.5天 简单CRUD
短信配置 0.5天 0.5天 配置管理
联调+测试 1天 1天 四端流程联调

阶段三(2周 = 10天)

任务 后端 前端 说明
数据大屏(核心指标) 3天 3天 统计+Redis+UI
数据大屏(扩展指标) 1天 2天 流量+产业地图
报表导出 2天 1天 Excel生成+脱敏
招工巡查+用户修正 1天 1天 复用列表组件
P1功能补充 1天 2天 买农资/工作记录/收购偏好
联调+测试 1天 1天 回归测试