# 阶段零:环境准备 — 详细任务清单 > 工期:0.5周(2.5天) > 目标:开发环境就绪,所有外部依赖到位,项目骨架可运行 > 本阶段不走 Team A/B/C/D 流程,直接执行 --- ## 任务总览 ``` Day 1(并行) Day 2(并行) Day 3(串行) ┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐ │ T0.1 项目骨架初始化 │ │ T0.4 数据库建表 │ │ T0.7 编译验证+冒烟 │ │ T0.2 Git仓库初始化 │ │ T0.5 Redis/短信配置 │ │ T0.8 阶段一准备 │ │ T0.3 本地开发环境 │ │ T0.6 OSS/微信配置 │ │ │ └─────────────────────┘ └─────────────────────┘ └─────────────────────┘ ``` --- ## T0.1 Spring Boot 项目初始化 | 属性 | 说明 | |------|------| | 负责 | 后端 | | 前置 | 无 | | 耗时 | 0.5天 | | 并行 | T0.2, T0.3 | ### 具体操作 1. **创建 Gradle 多模块骨架**(CRRC 模式,根目录无 settings.gradle) ``` service/ ├── com.fenzhitech.crrc.service-common/ # 共享库(DTO/VO/常量) ├── com.fenzhitech.crrc.service-user/ # 用户模块 ├── com.fenzhitech.crrc.service-system/ # 系统管理模块(角色/账号/字典/日志) ├── com.fenzhitech.crrc.service-audit/ # 审核模块 ├── com.fenzhitech.crrc.service-trade/ # 交易模块(招工/报名/拨号) ├── com.fenzhitech.crrc.service-goods/ # 货源模块(果农货源/客商找货) ├── com.fenzhitech.crrc.service-message/ # 消息模块(短信/通知) ├── com.fenzhitech.crrc.service-file/ # 文件模块(OSS/视频/照片) ├── com.fenzhitech.crrc.gateway-pc/ # PC网关 ├── com.fenzhitech.crrc.gateway-mobile/ # 移动端网关(小程序) └── com.fenzhitech.crrc.gateway-management/ # 管理端网关(后台) ``` 2. **每个模块的 build.gradle 配置** - Java 8 源码兼容 - Spring Boot 1.5.9 依赖 - MyBatis starter - MySQL connector - 阿里云 OSS SDK - 阿里云短信 SDK - Redis starter - JWT 库(jjwt) - Apache POI(Excel 处理) 3. **service-common 共享库初始化** - 基础 DTO/VO 框架类 - 统一响应体 `ApiResult` - 通用异常类 - 分页工具 4. **application.properties 基础配置** - 数据库连接(占位符) - MyBatis 配置 - Redis 连接(占位符) - OSS 配置(占位符) - 短信配置(占位符) - JWT 密钥(占位符) ### 验收标准 - [ ] 每个模块 `./gradlew compileJava` 零错误 - [ ] service-common 编译通过后,其他模块可引用其类 - [ ] 各模块目录结构符合 CRRC 规范 --- ## T0.2 Git 仓库初始化 | 属性 | 说明 | |------|------| | 负责 | 全员 | | 前置 | 无 | | 耗时 | 0.25天 | | 并行 | T0.1, T0.3 | ### 具体操作 1. **初始化本地仓库** ```bash cd D:/ai_coding_project git init ``` 2. **创建 .gitignore** ``` # 编译产物 target/ build/ *.class *.jar *.war # IDE .idea/ *.iml *.ipr *.iws .vscode/ .settings/ .project .classpath # 系统 .DS_Store Thumbs.db *.log # 环境配置(含密钥) .env application-local.properties application-prod.properties # Node node_modules/ dist/ ``` 3. **创建 deliveries/ 目录结构** ``` deliveries/ ├── team-a-requirement/ ├── team-b-architecture/ ├── team-c-coding/ └── team-d-testing/ ``` 4. **创建 docs/ 目录结构**(已有文档保留) ``` docs/ ├── charter.md # 项目章程 ├── acceptance-criteria.md # 里程碑验收标准 ├── project-log.md # 项目生命周期日志 ├── environment-checklist.md # 环境就绪检查 └── reviews/ # 评审记录 ``` 5. **首次提交到 main 分支** ```bash git add .gitignore docs/ deliveries/ git commit -m "[milestone-0] 项目初始化:目录结构+文档" ``` 6. **配置远程仓库**(Gogs) ```bash git remote add origin git push -u origin main ``` ### 验收标准 - [ ] `git log` 可见首次提交 - [ ] .gitignore 正确排除编译产物和 IDE 文件 - [ ] deliveries/ 目录结构完整 - [ ] 远程仓库可 push/pull --- ## T0.3 本地开发环境 | 属性 | 说明 | |------|------| | 负责 | 全员 | | 前置 | 无 | | 耗时 | 0.25天 | | 并行 | T0.1, T0.2 | ### 具体操作 1. **JDK 8 安装验证** ```bash java -version # 确认 1.8.x javac -version ``` 2. **Gradle 安装验证**(各模块自带 gradlew,无需全局安装) ```bash cd com.fenzhitech.crrc.service-user ./gradlew --version ``` 3. **MySQL 客户端安装**(Navicat / DBeaver / MySQL Workbench) 4. **微信开发者工具安装**(用于小程序开发和调试) 5. **Redis 客户端安装**(redis-cli 或 RedisDesktopManager) ### 验收标准 - [ ] JDK 8 可用 - [ ] gradlew 可执行 - [ ] MySQL 客户端可连接数据库 - [ ] 微信开发者工具已安装 --- ## T0.4 数据库初始化 | 属性 | 说明 | |------|------| | 负责 | 后端 | | 前置 | T0.1(项目骨架) | | 耗时 | 0.5天 | | 并行 | T0.5, T0.6 | ### 具体操作 1. **创建数据库** ```sql CREATE DATABASE crrc DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. **执行全量建表 SQL**(15张表,基于 requirements-specification.md 3.1 节) | 序号 | 表名 | 说明 | 阶段一状态 | |------|------|------|-----------| | 1 | sys_user | 用户基础表 | 有数据 | | 2 | user_identity | 身份关联表 | 有数据 | | 3 | grower_profile | 果农档案表 | 有数据 | | 4 | worker_profile | 工人档案表 | 有数据 | | 5 | buyer_profile | 客商档案表 | 有数据 | | 6 | supplier_shop | 农资店铺表 | 有数据 | | 7 | recruit_info | 招工信息表 | 空表 | | 8 | worker_apply | 工人报名表 | 空表 | | 9 | phone_unlock_record | 联系授权记录 | 空表 | | 10 | call_log | 拨号日志表 | 空表 | | 11 | sms_daily_limit | 短信限流表 | 空表 | | 12 | market_price | 今日行情表 | 有数据 | | 13 | audit_log | 审核日志表 | 有数据 | | 14 | operation_log | 操作日志表 | 有数据 | | 15 | complaint | 投诉表 | 空表 | 3. **核心索引创建** - sys_user: phone_hash UNIQUE, openid UNIQUE, status INDEX - user_identity: user_id INDEX, identity_type INDEX - grower_profile: user_identity_id INDEX, (latitude,longitude) 复合索引, audit_status INDEX - worker_profile: user_identity_id INDEX, status INDEX - recruit_info: user_identity_id INDEX, status INDEX, keyword_flag INDEX, (latitude,longitude) 复合索引 - buyer_profile: user_identity_id INDEX - phone_unlock_record: buyer_identity_id INDEX, grower_identity_id INDEX, expire_time INDEX - call_log: caller_identity_id INDEX, callee_identity_id INDEX - sms_daily_limit: (worker_identity_id, farmer_identity_id, sms_date) UNIQUE - market_price: variety INDEX, update_date INDEX - audit_log: operator_id INDEX - operation_log: operator_id INDEX 4. **初始数据导入** - 字典数据:苹果品种、工种类型、农资种类、行政区划(洒渔镇下辖村) - 超级管理员账号 ### 验收标准 - [ ] 15张表全部创建成功 - [ ] 索引创建完整 - [ ] 初始字典数据已导入 - [ ] 应用可连接数据库 --- ## T0.5 Redis + 短信配置 | 属性 | 说明 | |------|------| | 负责 | 运维 | | 前置 | 无 | | 耗时 | 0.25天 | | 并行 | T0.4, T0.6 | ### 具体操作 1. **Redis 部署** - 安装 Redis - 配置持久化(RDB/AOF) - 配置密码 - 记录连接信息到 docs/mysql数据库配置.txt 2. **阿里云短信申请** - 申请短信签名:"洒渔用工" - 报备短信模板: - 模板1:报名通知 `【洒渔用工】${workerName}(${workType})对您的招工感兴趣,联系电话:${phone}` - 模板2:审核提醒 `【洒渔用工】您提交的${type}信息已${result},请及时查看` - 获取 AccessKey ID 和 Secret - 配置到 application.properties ### 验收标准 - [ ] Redis 可连接,支持读写 - [ ] 短信签名已通过审核 - [ ] 短信模板已报备 - [ ] 发送测试短信成功 --- ## T0.6 OSS + 微信配置 | 属性 | 说明 | |------|------| | 负责 | 运维 | | 前置 | 无 | | 耗时 | 0.25天 | | 并行 | T0.4, T0.5 | ### 具体操作 1. **阿里云 OSS 配置** - 创建 Bucket(如 sayu-app) - 配置访问策略(私有读写) - 配置 CORS(允许小程序域名) - 获取 AccessKey ID 和 Secret - 记录 Endpoint、Bucket 名称 2. **微信小程序账号** - 申请小程序 AppID - 配置服务器域名(request 合法域名、uploadFile 合法域名) - 获取 AppID 和 AppSecret - 配置到 application.properties ### 验收标准 - [ ] OSS Bucket 可访问,能上传/下载测试文件 - [ ] OSS CORS 配置正确 - [ ] 微信小程序 AppID 就绪 - [ ] 服务器域名已配置 --- ## T0.7 编译验证 + 冒烟 | 属性 | 说明 | |------|------| | 负责 | 后端 | | 前置 | T0.1, T0.4 | | 耗时 | 0.25天 | | 并行 | 无(串行) | ### 具体操作 1. **依赖链编译验证** ```bash # 先编译共享库 cd com.fenzhitech.crrc.service-common && ./gradlew compileJava # 再编译各业务模块 cd com.fenzhitech.crrc.service-user && ./gradlew compileJava cd com.fenzhitech.crrc.service-system && ./gradlew compileJava cd com.fenzhitech.crrc.service-audit && ./gradlew compileJava cd com.fenzhitech.crrc.service-trade && ./gradlew compileJava cd com.fenzhitech.crrc.service-goods && ./gradlew compileJava cd com.fenzhitech.crrc.service-message && ./gradlew compileJava cd com.fenzhitech.crrc.service-file && ./gradlew compileJava ``` 2. **网关编译验证** ```bash cd com.fenzhitech.crrc.gateway-mobile && ./gradlew compileJava cd com.fenzhitech.crrc.gateway-management && ./gradlew compileJava ``` 3. **启动冒烟测试** ```bash cd com.fenzhitech.crrc.gateway-management && ./gradlew bootRun # 确认启动无报错,日志无 ERROR ``` 4. **CI/CD 脚本验证** - 配置编译验证脚本(遍历所有模块执行 ./gradlew compileJava) - 验证脚本可执行 ### 验收标准 - [ ] 所有模块 `./gradlew compileJava` 零错误 - [ ] `./gradlew bootRun` 启动无报错 - [ ] 启动日志无 ERROR - [ ] CI/CD 编译脚本可执行 --- ## T0.8 阶段一准备 | 属性 | 说明 | |------|------| | 负责 | 全员 | | 前置 | T0.7 | | 耗时 | 0.25天 | | 并行 | 无 | ### 具体操作 1. **提交阶段零成果到 main** ```bash git add . git commit -m "[milestone-0] 环境准备完成:项目骨架+数据库+外部服务配置" git push origin main ``` 2. **创建 docs/charter.md**(项目章程) - 项目目标 - 验收标准(引用 requirements-specification.md) - 四阶段里程碑定义 3. **创建 docs/acceptance-criteria.md**(里程碑验收标准) - M1 需求分析验收条件 - M2 架构设计验收条件 - M3 编码实现验收条件 - M4 测试验收验收条件 4. **创建 docs/project-log.md**(项目日志) - 记录阶段零完成 5. **准备阶段一派单** - 提炼阶段零关键信息给 Team A ### 验收标准 - [ ] main 分支包含完整项目骨架 - [ ] charter.md 和 acceptance-criteria.md 就绪 - [ ] project-log.md 已记录 - [ ] 可以向 Team A 派单 --- ## 环境就绪检查清单 | 序号 | 检查项 | 状态 | |------|--------|------| | 1 | 项目骨架可编译通过(./gradlew compileJava 零错误) | □ | | 2 | 数据库连接正常,全量表结构创建完成 | □ | | 3 | OSS Bucket 可访问,能上传/下载测试文件 | □ | | 4 | 短信 SDK 可调用(发送测试短信成功) | □ | | 5 | Redis 连接正常 | □ | | 6 | 微信小程序开发者账号就绪 | □ | | 7 | Git 仓库可 push/pull | □ | | 8 | ./gradlew bootRun 启动无报错 | □ |