constraints.md 4.4 KB

阶段一约束条件 — 基础设施与用户体系


一、技术约束

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
  • 响应结构:

    {
    "code": 200,
    "message": "success",
    "data": {}
    }
    

7.2 错误码规范

  • 200: 成功
  • 400: 请求参数错误
  • 401: 未认证
  • 403: 无权限
  • 404: 资源不存在
  • 500: 服务器内部错误

7.3 分页规范

  • 请求参数: page(页码,从1开始)、pageSize(每页数量,默认10)
  • 响应参数:

    {
    "total": 100,
    "page": 1,
    "pageSize": 10,
    "list": []
    }
    

八、测试约束

8.1 测试框架

  • 单元测试: JUnit 4
  • 集成测试: Spring Boot Test
  • 测试目录: src/test/java/

8.2 测试覆盖

  • 核心接口: 测试覆盖率 ≥80%
  • 测试独立性: 每个测试方法独立运行
  • 测试可重复: 同一测试多次运行结果一致

8.3 测试数据

  • 测试数据库: 独立测试数据库
  • 测试数据: 测试前准备,测试后清理