# 阶段一约束条件 — 基础设施与用户体系 --- ## 一、技术约束 ### 1.1 开发环境 - **JDK**: 1.8.0_291 - **Maven**: 3.6.3 - **Spring Boot**: 1.5.9.RELEASE - **数据库**: MySQL 5.7+ - **缓存**: Redis 3.0+ - **ORM**: MyBatis(XML 映射) ### 1.2 代码规范 - **包名**: com.fenzhitech.crrc - **Controller 路径**: - 小程序端: /api/wx/* - 后台管理端: /api/admin/* - **MyBatis XML**: 必须使用 `#{}` 语法,禁止 `${}` - **文件行数**: ≤ 500 行/文件 ### 1.3 构建与部署 - **构建工具**: Maven - **编译命令**: `mvn compile` - **测试命令**: `mvn test` - **打包命令**: `mvn package -DskipTests` - **启动命令**: `mvn spring-boot:run` --- ## 二、安全约束 ### 2.1 数据安全 - **手机号**: AES 加密存储,phone_hash (SHA256) 唯一索引 - **密码**: BCrypt 加密,强度≥8位,含大小写字母和数字 - **Token**: JWT,payload 包含 userId, identityId, identityType, exp - **密钥管理**: 配置在 application.properties,禁止硬编码 ### 2.2 接口安全 - **认证**: JWT Token 认证 - **授权**: RBAC 权限控制,默认拒绝,显式授权 - **防重放**: Token 过期机制(小程序24小时,后台8小时) - **防注入**: MyBatis #{} 参数化 - **敏感数据**: 接口返回脱敏(手机号 138****8888) ### 2.3 操作安全 - **登录日志**: 记录登录时间、IP、设备信息 - **操作日志**: 记录管理员操作行为 - **密码锁定**: 连续5次错误锁定30分钟 - **账号禁用**: 禁用后不可登录 --- ## 三、业务约束 ### 3.1 用户体系 - **一人多职**: 一个用户可绑定多个身份(果农/工人/客商/农资商) - **数据隔离**: 所有业务表带 user_identity_id 字段 - **身份路由**: - 0个身份 → 提示联系村委会 - 1个身份 → 直接进入对应首页 - N个身份 → 身份选择页 ### 3.2 审核机制 - **审核对象**: 果农档案、工人档案、客商档案、招工信息、货源信息 - **审核状态**: 待审、已通过、被驳回 - **审核 SLA**: ≤24小时提醒,48小时升级给超级管理员 - **驳回要求**: 必须填写驳回原因 ### 3.3 字典管理 - **系统内置字典**: 不可删除,仅可扩展 - **字典编码**: 唯一 - **字典变更**: 记录操作日志 --- ## 四、性能约束 ### 4.1 响应时间 - **接口响应**: ≤500ms(95%请求) - **页面加载**: ≤3s ### 4.2 并发能力 - **并发用户**: ≥100 - **数据库连接池**: 最大连接数 20 ### 4.3 数据量 - **用户数据**: 预计 10,000+ - **操作日志**: 保留 ≥180天 - **字典数据**: 预计 100+ 条 --- ## 五、兼容性约束 ### 5.1 小程序端 - **微信基础库**: ≥2.0 - **适老化**: - 正文≥18px(rem) - 按钮≥88×88px - 高对比度 ### 5.2 后台管理端 - **浏览器**: Chrome/Firefox/Edge 最新版 - **分辨率**: ≥1280×720 --- ## 六、数据约束 ### 6.1 数据库设计 - **字符集**: utf8mb4 - **排序规则**: utf8mb4_unicode_ci - **表引擎**: InnoDB - **主键**: 自增ID 或 雪花算法 ### 6.2 索引设计 - **sys_user**: phone_hash UNIQUE, openid UNIQUE, status INDEX - **user_identity**: user_id INDEX, identity_type INDEX - **audit_log**: operator_id INDEX - **operation_log**: operator_id INDEX ### 6.3 初始数据 - **字典数据**: 苹果品种、工种类型、农资种类、行政区划 - **管理员账号**: 超级管理员(admin/admin123) --- ## 七、接口约束 ### 7.1 接口格式 - **请求格式**: JSON - **响应格式**: JSON - **响应结构**: ```json { "code": 200, "message": "success", "data": {} } ``` ### 7.2 错误码规范 - **200**: 成功 - **400**: 请求参数错误 - **401**: 未认证 - **403**: 无权限 - **404**: 资源不存在 - **500**: 服务器内部错误 ### 7.3 分页规范 - **请求参数**: page(页码,从1开始)、pageSize(每页数量,默认10) - **响应参数**: ```json { "total": 100, "page": 1, "pageSize": 10, "list": [] } ``` --- ## 八、测试约束 ### 8.1 测试框架 - **单元测试**: JUnit 4 - **集成测试**: Spring Boot Test - **测试目录**: src/test/java/ ### 8.2 测试覆盖 - **核心接口**: 测试覆盖率 ≥80% - **测试独立性**: 每个测试方法独立运行 - **测试可重复**: 同一测试多次运行结果一致 ### 8.3 测试数据 - **测试数据库**: 独立测试数据库 - **测试数据**: 测试前准备,测试后清理