constraints.md 3.7 KB

阶段2b 约束条件

版本:v1.0 日期:2026-05-30


1. 技术约束

1.1 框架版本

技术 版本 约束
Java 8 不使用 Java 9+ 特性
Spring Boot 1.5.9 不使用 2.x 特性
MyBatis 3.x XML 映射,禁用 ${}
MySQL 5.7+ 不使用 8.0 特性

1.2 编码规范

  • 实体类手动 getter/setter(不使用 Lombok)
  • 控制器返回 Map
  • 工具类返回 ResultUtil.success()/error()
  • 所有 SQL 使用 #{} 参数化
  • 1.3 数据库约束

    • 表名:snake_case
    • 字段名:snake_case
    • 主键:BIGINT AUTO_INCREMENT
    • 时间字段:DATETIME DEFAULT CURRENT_TIMESTAMP

    2. 业务约束

    2.1 短信服务

    约束 说明
    服务商 阿里云短信
    每日限额 同一工人对同一果农≤1条
    内容模板 固定格式,签名"洒渔用工"
    发送方式 异步发送,不阻断主流程
    失败处理 记录日志,不影响报名

    2.2 联系授权

    约束 说明
    有效期 7天
    存储 phone_unlock_record 表
    唯一性 buyer_identity_id + grower_identity_id
    过期处理 过期后重新解锁

    2.3 信用机制

    约束 说明
    投诉1次 警告(可继续使用)
    投诉2次 限制24小时
    投诉3次 锁定,需管理员解除
    自动恢复 凌晨2:00,3天无操作

    2.4 工人状态

    约束 说明
    状态值 0忙碌/1空闲
    自动切换 报名时自动忙碌
    手动切换 工人可手动切换
    自动恢复 3天无操作恢复空闲

    3. 数据约束

    3.1 数据隔离

    • 所有查询带 user_identity_id 过滤
    • 工人只能看自己的报名
    • 客商只能解锁自己的联系记录

    3.2 数据一致性

    • 报名时同时更新 worker_apply 和 worker_profile
    • 解锁时同时检查和创建 phone_unlock_record
    • 使用事务保证原子性

    3.3 数据验证

    数据 验证规则
    手机号 11位数字
    价格 正数,最多2位小数
    产量 正数
    技能 JSON数组格式

    4. 性能约束

    4.1 响应时间

    接口 目标
    推荐列表 < 500ms
    货源列表 < 500ms
    档案查询 < 200ms
    报名操作 < 1s

    4.2 并发处理

    • 短信发送异步化
    • 报名操作防重复提交
    • 数据库连接池配置

    5. 安全约束

    5.1 认证授权

    • JWT Token 认证
    • 小程序端 24h 有效期
    • 后台端 8h 有效期

    5.2 数据安全

    • 手机号 AES 加密存储
    • 手机号 SHA256 哈希查询
    • 电话通过拨号接口获取(记录日志)

    5.3 接口安全

    • 敏感操作记录日志
    • 短信限流防骚扰
    • 联系授权 7 天过期

    6. 集成约束

    6.1 外部服务

    服务 状态 约束
    阿里云短信 可选 未配置时跳过发送
    Redis 可选 未配置时使用内存
    微信API 已配置 小程序登录

    6.2 内部依赖

    • Phase 2a 已完成模块(果农、招工、拨号)
    • 字典表数据(苹果品种、工种、农资种类)
    • 用户认证体系(JWT、RBAC)

    7. 测试约束

    7.1 测试覆盖

    • 单元测试覆盖率 ≥ 80%
    • 核心接口必须测试
    • 异常流程必须覆盖

    7.2 测试环境

    • 使用 MockMvc 测试控制器
    • 使用 Mockito 测试服务层
    • 使用内存数据库测试数据层

    8. 部署约束

    8.1 环境要求

    环境 配置
    JDK 1.8
    Maven 3.x
    MySQL 5.7+
    内存 ≥ 512MB

    8.2 配置管理

    • 敏感配置使用环境变量
    • 短信配置可动态修改
    • 日志级别可配置