开发实施与部署准备清单
1. 文档定位
本文用于补齐《开发任务清单与验收标准.md》和 开发细节 前 4 份文档之外的实施准备内容,重点解决以下问题:
- 开发前需要准备哪些账号、环境、配置和资料。
- 前后端、小程序、数据库、第三方服务按什么顺序开发和联调。
- 测试环境、生产环境如何部署、初始化和验收。
- 哪些事项不应写死在代码里,需要通过环境变量或后台配置管理。
本文不替代以下文档:
| 文档 |
职责 |
01-页面级原型字段说明.md |
页面、字段、按钮、筛选项、弹窗和权限状态 |
02-API细化设计.md |
接口 request/response、枚举、错误码和业务规则 |
03-数据库调整设计.md |
表结构调整、迁移 SQL、初始化配置 |
04-测试用例清单.md |
可执行测试用例和验收通过标准 |
2. 技术栈落地约定
| 层级 |
技术 |
约定 |
| 后端 |
Python + FastAPI |
提供 HTTP/JSON API,统一响应、统一错误码、JWT 鉴权 |
| ORM/迁移 |
SQLAlchemy + Alembic |
所有表结构变更必须走 migration |
| 数据库 |
MySQL 8.0+ |
字符集 utf8mb4,金额使用 decimal,不使用 float |
| 缓存/任务 |
一期可先用数据库 + 定时任务 |
如后续引入 Redis/Celery,需另行补充部署说明 |
| WEB 前端 |
Vue 3 + Vite + Element Plus + Pinia + Vue Router |
业务员端和管理后台可共用工程能力,也可拆成两个入口 |
| 小程序 |
微信原生小程序 |
管理层端、司机端按原生 WXML/WXSS/JS 开发 |
| 文件存储 |
阿里云 OSS |
图片、视频、导入文件、导出文件、附件统一存储 |
| AI/OCR |
阿里云模型/OCR |
通过后端适配层调用,禁止前端直接持有密钥 |
| 部署 |
Nginx + 后端进程服务 + MySQL |
生产环境必须使用 HTTPS |
3. 开发前必备资料
3.1 业务资料
| 资料 |
用途 |
责任方 |
状态 |
| 角色清单 |
初始化管理员、管理层、业务员、司机权限 |
甲方确认 |
待准备 |
| 初始用户清单 |
初始化登录账号 |
甲方提供 |
待准备 |
| 产品分类初始数据 |
初始化 product_category |
甲方提供 |
待准备 |
| 产品资料样例 |
产品管理、订单录入联调 |
甲方提供 |
待准备 |
| 客户资料样例 |
客户导入、订单录入联调 |
甲方提供 |
待准备 |
| 工厂/供应商资料 |
下发文本、司机任务分配 |
甲方提供 |
待准备 |
| 下发工厂文本样例 |
生成和确认下发文本 |
甲方提供 |
待准备 |
| AI/OCR 样例图片 |
OCR 字段识别、人工修正联调 |
甲方提供 |
待准备 |
| 报表统计口径确认 |
月/季/年、分类、提成汇总 |
甲方确认 |
待准备 |
3.2 微信小程序资料
| 资料 |
说明 |
状态 |
| 小程序 AppID |
管理层端和司机端是否共用 AppID 需确认 |
待准备 |
| 小程序主体认证 |
发布正式版前必须完成 |
待准备 |
| 服务器域名备案 |
API 域名必须备案并支持 HTTPS |
待准备 |
| request 合法域名 |
后端 API 域名加入白名单 |
待准备 |
| uploadFile 合法域名 |
OSS 上传域名加入白名单 |
待准备 |
| downloadFile 合法域名 |
OSS 下载或 CDN 域名加入白名单 |
待准备 |
| 体验成员名单 |
联调和验收阶段使用 |
待准备 |
3.3 阿里云资料
| 资料 |
说明 |
状态 |
| OSS Bucket |
建议区分测试和生产 Bucket |
待准备 |
| OSS Endpoint |
与 Bucket 所在地域一致 |
待准备 |
| OSS 访问域名 |
可使用默认域名或绑定自定义域名/CDN |
待准备 |
| OSS AccessKey |
后端服务端使用,禁止前端写死 |
待准备 |
| OSS 上传大小限制 |
图片、视频、导入文件分别设置上限 |
待确认 |
| OSS 生命周期策略 |
临时文件、导出文件是否自动清理 |
待确认 |
| 阿里云 OCR/模型服务 |
开通服务、确认地域、模型能力 |
待准备 |
| AI/OCR 调用凭证 |
后端环境变量管理 |
待准备 |
| AI/OCR 费用预算 |
设置费用告警,避免失控调用 |
待确认 |
4. 环境规划
4.1 环境划分
| 环境 |
用途 |
数据要求 |
外部服务 |
| 本地开发环境 |
开发调试 |
可使用本地 MySQL 或开发库 |
可使用测试 OSS/OCR |
| 测试环境 |
前后端联调、验收测试 |
独立测试库,允许构造数据 |
使用测试 Bucket 和测试配置 |
| 生产环境 |
正式业务使用 |
真实业务库,必须备份 |
使用生产 Bucket、生产域名、生产凭证 |
4.2 推荐目录结构
project/
backend/
app/
migrations/
tests/
requirements.txt
.env.example
frontend/
web-admin/
web-sales/
mini-manager/
mini-driver/
docs/
deploy/
说明:
- 当前文档在项目根目录维护,后续实现时可将部署脚本放入
deploy/。
- 如果 WEB 管理后台和业务员端共用一个 Vue 工程,应通过路由和权限区分入口。
- 如果拆分两个 Vue 工程,需要共用 API SDK、枚举和响应处理逻辑,避免字段重复维护。
5. 后端环境变量清单
后端必须提供 .env.example,真实 .env 不提交代码仓库。
| 变量名 |
示例 |
说明 |
APP_ENV |
dev/test/prod |
当前环境 |
APP_NAME |
order-flow |
应用名称 |
API_PREFIX |
/api |
API 前缀 |
SECRET_KEY |
change-me |
JWT 签名密钥,生产必须更换 |
JWT_EXPIRE_MINUTES |
1440 |
token 有效期 |
MYSQL_HOST |
127.0.0.1 |
MySQL 地址 |
MYSQL_PORT |
3306 |
MySQL 端口 |
MYSQL_DATABASE |
order_flow |
数据库名 |
MYSQL_USER |
order_user |
数据库用户 |
MYSQL_PASSWORD |
password |
数据库密码 |
SQL_ECHO |
false |
是否输出 SQL |
ALIYUN_OSS_BUCKET |
bucket-name |
OSS Bucket |
ALIYUN_OSS_ENDPOINT |
oss-cn-hangzhou.aliyuncs.com |
OSS Endpoint |
ALIYUN_OSS_ACCESS_KEY_ID |
xxx |
OSS AccessKey ID |
ALIYUN_OSS_ACCESS_KEY_SECRET |
xxx |
OSS AccessKey Secret |
ALIYUN_OSS_PUBLIC_BASE_URL |
https://cdn.example.com |
文件访问基础域名 |
OSS_UPLOAD_MAX_IMAGE_MB |
10 |
图片上传上限 |
OSS_UPLOAD_MAX_VIDEO_MB |
200 |
视频上传上限 |
ALIYUN_AI_REGION |
cn-hangzhou |
AI/OCR 地域 |
ALIYUN_AI_ACCESS_KEY_ID |
xxx |
AI/OCR AccessKey ID |
ALIYUN_AI_ACCESS_KEY_SECRET |
xxx |
AI/OCR AccessKey Secret |
ALIYUN_OCR_MODEL |
default |
OCR/模型服务标识 |
CORS_ALLOW_ORIGINS |
https://admin.example.com |
WEB 跨域白名单 |
LOG_LEVEL |
INFO |
日志级别 |
6. 前端和小程序配置清单
6.1 Vue WEB 配置
| 配置 |
示例 |
说明 |
VITE_API_BASE_URL |
https://api.example.com/api |
后端 API 地址 |
VITE_APP_TITLE |
订单全流程系统 |
页面标题 |
VITE_UPLOAD_MODE |
oss-token |
通过后端获取 OSS 上传凭证 |
VITE_ENV_NAME |
test/prod |
页面展示和问题定位 |
前端不得配置任何 OSS 或 AI 密钥。
6.2 微信小程序配置
| 配置 |
示例 |
说明 |
appId |
微信公众平台 AppID |
project.config.json 使用 |
apiBaseUrl |
https://api.example.com/api |
小程序请求后端 |
ossUploadDomain |
https://bucket.oss-cn-hangzhou.aliyuncs.com |
上传域名需加白名单 |
envName |
test/prod |
环境识别 |
发布前必须确认:
- API 域名、上传域名、下载域名均已加入小程序合法域名。
- 生产域名证书有效且证书链完整。
- 小程序体验版能在真实微信环境调用 API 和上传文件。
7. 数据库实施准备
7.1 建库要求
| 项 |
要求 |
| MySQL 版本 |
8.0+ |
| 字符集 |
utf8mb4 |
| 排序规则 |
建议 utf8mb4_0900_ai_ci 或统一使用项目约定 |
| 时区 |
统一使用 Asia/Shanghai |
| 金额字段 |
decimal(18,2) |
| 数量字段 |
decimal(18,4) 或与数据库设计保持一致 |
7.2 迁移顺序
| 顺序 |
内容 |
说明 |
| 1 |
导入基础表结构 |
基于 数据库.sql |
| 2 |
执行结构调整 migration |
对应 03-数据库调整设计.md |
| 3 |
初始化角色、菜单、权限 |
支撑登录和页面权限 |
| 4 |
初始化系统配置 |
如 arrears_generate_mode=delivered |
| 5 |
初始化产品分类 |
默认分类可后续在后台维护 |
| 6 |
初始化管理员账号 |
首次登录后台使用 |
| 7 |
导入测试数据 |
测试环境使用,生产谨慎执行 |
7.3 初始化数据清单
| 数据 |
必需 |
说明 |
管理员角色 admin |
是 |
拥有全部系统管理权限 |
管理层角色 manager |
是 |
审批、下发确认、任务分配、报表 |
业务员角色 salesman |
是 |
录单、本人订单、提醒 |
司机角色 driver |
是 |
本人任务、接单、揽货、送达 |
| 菜单数据 |
是 |
对应 Vue 和小程序页面入口 |
| 权限编码 |
是 |
对应按钮和接口权限 |
| 初始管理员 |
是 |
首次登录使用,首次登录后应修改密码 |
| 产品分类 |
是 |
默认可初始化工业品、日用品,也允许后台新增 |
| 系统配置 |
是 |
欠款生成模式、提醒周期、OSS/AI 摘要配置 |
| 测试客户/产品/工厂 |
测试环境必需 |
用于联调和验收 |
8. 开发实施顺序
8.1 阶段一:基础工程
| 任务 |
产物 |
验证 |
| 后端 FastAPI 工程初始化 |
后端服务、健康检查、统一响应 |
/health 可访问 |
| 数据库连接和 migration |
SQLAlchemy、Alembic |
可创建和升级数据库 |
| JWT 登录鉴权 |
登录、当前用户、退出 |
token 有效和失效场景通过 |
| 角色菜单权限 |
用户、角色、菜单、授权接口 |
/api/auth/me 返回菜单权限 |
| 前端工程初始化 |
Vue 工程、小程序工程 |
本地可启动 |
8.2 阶段二:基础资料
| 任务 |
产物 |
验证 |
| 客户管理 |
客户 CRUD、导入 |
去重和导入统计正确 |
| 产品分类和产品管理 |
分类 CRUD、产品 CRUD |
产品可关联分类 |
| 工厂/供应商管理 |
工厂 CRUD、模板类型 |
下发文本可引用工厂 |
| OSS 文件服务 |
上传凭证、附件记录 |
图片/视频上传并写库 |
8.3 阶段三:订单主流程
| 任务 |
产物 |
验证 |
| 订单创建和编辑 |
订单主表、明细、费用计算 |
金额和利润计算正确 |
| 提交审核 |
draft -> pending_approve |
重复提交被拦截 |
| 管理层审批 |
pending_approve -> approved/rejected |
审批记录和通知正确 |
| 下发工厂文本 |
生成、复制、确认 |
确认后进入 pending_factory |
| 取消流程 |
cancel_pending 和取消审批 |
拒绝后恢复原状态 |
8.4 阶段四:履约和物流
| 任务 |
产物 |
验证 |
| 手动创建司机任务 |
管理层/管理员分配任务 |
司机端可见本人任务 |
| 司机任务流转 |
接单、揽货、送达 |
状态流转正确 |
| 揽货附件 |
图片、视频上传 |
OSS 和附件记录正确 |
| 手动物流节点 |
节点录入、轨迹查询 |
按时间展示轨迹 |
| 欠款生成 |
shipped/delivered 两种模式 |
生成节点符合配置 |
8.5 阶段五:提醒、AI 和报表
| 任务 |
产物 |
验证 |
| 提醒中心 |
欠款、物流超时、沉默客户 |
不重复生成无效提醒 |
| AI/OCR 识别 |
上传图片、识别、保存结果 |
原始结果和置信度留存 |
| 人工修正 |
修正结果和留痕 |
不覆盖原始识别结果 |
| 报表统计 |
月/季/年、分类、固定提成 |
与数据库手工核对一致 |
| 报表导出 |
导出文件写入 OSS |
文件内容与页面一致 |
8.6 阶段六:联调验收
| 任务 |
产物 |
验证 |
| 接口契约联调 |
前后端字段一致 |
无临时字段依赖 |
| 小程序真机联调 |
管理层端、司机端 |
登录、审批、任务、上传可用 |
| 全流程 E2E |
从录单到送达、欠款、报表 |
核心流程跑通 |
| 权限回归 |
四类角色越权测试 |
越权被拦截 |
| 验收测试 |
执行 04-测试用例清单.md |
阻断和严重缺陷为 0 |
9. 联调检查清单
9.1 后端自测
- 所有接口返回统一结构:
code/message/data。
- 所有受保护接口无 token 返回
40002。
- 越权访问返回
40003 或按安全策略返回 40004。
- 非法状态流转返回
40005。
- 业务重复数据返回
40006。
- 第三方服务失败返回
40008 或 40009。
- 关键写操作写入
audit_log。
9.2 Vue WEB 联调
- 登录后菜单和按钮由
/api/auth/me 控制。
- 业务员端不能看到成本、利润、回扣等无权限字段。
- 管理后台可维护用户、角色、菜单、产品分类、产品、客户、工厂、配置。
- 表格分页参数与 API 文档一致:
page_no/page_size。
- 金额显示保留 2 位小数,数量按业务字段要求显示。
- 文件上传先取后端上传凭证,再上传 OSS,再保存附件记录。
9.3 小程序联调
- 真机能访问 API 域名。
- 真机能上传图片和视频到 OSS。
- 管理层端能完成审批、取消审批、下发确认、任务分配。
- 司机端只显示本人任务。
- 司机端揽货必须上传照片。
- token 过期后跳转登录页。
9.4 第三方服务联调
- OSS 上传、下载、删除或过期策略符合预期。
- AI/OCR 成功调用时保存
raw_result、confidence、suggested_result。
- AI/OCR 失败时不影响订单主流程,只返回明确错误并记录日志。
- 费用告警已开启。
10. 部署准备
10.1 服务器准备
| 项 |
要求 |
| 操作系统 |
Linux 服务器,建议 Ubuntu LTS 或 CentOS/Rocky |
| Python |
3.11+ |
| Node.js |
20 LTS |
| MySQL |
8.0+ |
| Nginx |
用于 HTTPS、静态资源、反向代理 |
| 磁盘 |
预留数据库备份和日志空间 |
| 时间同步 |
开启 NTP,避免 token 和日志时间异常 |
10.2 后端部署
| 步骤 |
说明 |
| 安装依赖 |
使用虚拟环境安装 requirements.txt |
| 配置环境变量 |
根据第 5 节配置 .env |
| 执行 migration |
升级数据库到最新版本 |
| 初始化数据 |
角色、菜单、权限、配置、管理员 |
| 启动服务 |
使用 systemd/supervisor 管理进程 |
| 健康检查 |
/health 返回正常 |
| 日志检查 |
启动日志无异常,错误日志可追踪 |
10.3 Vue WEB 部署
| 步骤 |
说明 |
| 安装依赖 |
npm install 或约定包管理器 |
| 配置环境变量 |
设置 API 地址和环境名 |
| 构建 |
生成静态资源 |
| Nginx 发布 |
配置静态目录和 history 路由 fallback |
| 验证 |
登录、刷新页面、接口调用正常 |
10.4 小程序发布
| 步骤 |
说明 |
| 配置 AppID |
微信开发者工具项目配置 |
| 配置环境 |
API 地址、上传域名 |
| 上传体验版 |
添加体验成员 |
| 真机测试 |
登录、审批、任务、上传、OCR |
| 提交审核 |
确认类目、隐私协议、接口域名 |
| 发布正式版 |
审核通过后发布 |
11. Nginx 配置要求
| 项 |
要求 |
| HTTPS |
生产环境必须启用 |
| API 反向代理 |
/api 转发到 FastAPI 服务 |
| 静态资源 |
Vue dist 目录由 Nginx 托管 |
| 上传大小 |
client_max_body_size 大于业务上传上限 |
| 超时 |
AI/OCR 接口可适当提高代理超时 |
| 日志 |
开启 access/error 日志 |
| 安全头 |
建议配置基础安全响应头 |
12. 备份和恢复
| 内容 |
要求 |
| 数据库备份 |
生产环境每日自动备份,至少保留 7-30 天 |
| OSS 文件 |
开启版本控制或生命周期策略,按成本决定 |
| 配置备份 |
.env、Nginx 配置、部署脚本需安全备份 |
| 恢复演练 |
上线前至少完成一次测试库恢复验证 |
| 导出文件 |
可设置生命周期自动清理 |
13. 安全要求
- OSS、AI、JWT、数据库密码不得提交代码仓库。
- 生产环境禁止使用默认管理员密码。
- 后端必须控制字段权限,前端隐藏不能作为安全边界。
- 业务员只能访问本人订单、客户和提醒。
- 司机只能访问本人任务。
- 管理后台系统管理接口默认仅管理员可用。
- 所有关键写操作必须有审计日志。
- 文件上传必须限制类型、大小和业务归属。
- AI/OCR 输入图片必须来自已授权 OSS 文件或后端可校验的文件地址。
14. 上线前验收检查
| 检查项 |
标准 |
| 数据库迁移 |
测试和生产 migration 可重复执行且可回滚 |
| 初始化数据 |
角色、菜单、权限、配置、管理员存在 |
| 登录鉴权 |
四类角色登录和 token 过期处理正常 |
| 核心流程 |
录单、审批、下发、任务、揽货、送达、欠款、报表跑通 |
| 取消流程 |
cancel_pending、取消审批通过/拒绝正确 |
| 欠款模式 |
shipped 和 delivered 两种模式验证通过 |
| OSS |
图片、视频、导入、导出均可用 |
| AI/OCR |
成功、失败、人工修正均验证通过 |
| 小程序 |
体验版真机通过,合法域名配置正确 |
| 权限 |
越权访问被后端拦截 |
| 审计日志 |
关键操作可追溯 |
| 备份 |
数据库备份任务已配置并验证恢复 |
| 缺陷 |
阻断缺陷 0,严重缺陷 0 |
15. 交付物清单
| 交付物 |
内容 |
验收方式 |
| 后端源码 |
FastAPI、模型、服务、接口、任务、第三方适配 |
接口和测试通过 |
| 数据库迁移 |
Alembic migration、初始化数据脚本 |
新库可完整初始化 |
| Vue WEB |
业务员端、管理后台 |
浏览器可访问并完成流程 |
| 小程序源码 |
管理层端、司机端 |
微信开发者工具和真机可运行 |
| 部署配置 |
Nginx、服务进程、环境变量模板 |
新环境可按文档部署 |
| 测试报告 |
用例执行结果、缺陷记录 |
验收标准满足 |
| 操作说明 |
角色登录、录单、审批、任务、配置、报表 |
业务人员可按说明操作 |
16. 仍需甲方确认或提供的事项
| 事项 |
影响 |
建议完成时间 |
| 小程序 AppID 和合法域名 |
影响小程序真机联调和发布 |
开发联调前 |
| 阿里云 OSS Bucket 和凭证 |
影响文件上传、司机揽货、AI 图片识别 |
文件模块开发前 |
| 阿里云 OCR/模型凭证和预算 |
影响 AI/OCR 开发和联调 |
AI 模块开发前 |
| 初始用户、角色权限范围 |
影响权限初始化和页面入口 |
基础工程阶段 |
| 产品分类初始数据 |
影响产品录入和报表分类 |
基础资料阶段 |
| 下发工厂文本模板样例 |
影响下发文本生成效果 |
订单主流程阶段 |
| 服务器和域名 |
影响测试环境、生产环境部署 |
联调前 |
| 视觉风格或 UI 参考 |
影响页面观感,不影响字段级功能开发 |
前端开发前 |
17. 开发启动判定
满足以下条件即可正式启动开发:
- 后端、Vue、小程序技术栈已确认。
- 数据库设计和 API 细化文档已确认。
- 至少有测试环境 MySQL 可用。
- 至少有测试 OSS Bucket 和上传凭证可用。
- 小程序 AppID 可在联调前提供。
- 初始角色和管理员账号规则已确认。
- 核心流程验收用例已确认。
如果 AI/OCR 凭证暂未准备好,可以先实现后端适配层和 mock provider,但真实上线前必须完成阿里云真实服务联调。