# 阶段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 配置管理 - 敏感配置使用环境变量 - 短信配置可动态修改 - 日志级别可配置