Files
platforms/docs/项目文档_服务端APP三岗位产品设计与开发_v1.0.md

183 lines
9.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 项目文档:服务端 APP 三岗位产品设计与开发 v1.0
## 1. 项目概述
### 1.1 项目名称
服务端 APP 安装维修、配送、安全检查三岗位 UI 优化与功能完善。
### 1.2 目标
以三个“最新参考产品设计”目录为目标界面,升级现有 Flutter `apps/service_app`。保留当前真实登录、角色识别、准入、任务、取证、草稿和接口能力,通过扩展路由、领域状态机、专用页面与服务端接口补齐业务闭环。
### 1.3 目标设计目录
- `doc/服务端APP-安装端-最新参考产品设计`40 张页面。
- `doc/服务端APP-配送端-最新参考产品设计`42 张页面。
- `doc/服务端APP-安全检查端-最新参考产品设计`40 张页面。
上述图片是目标状态,不是当前完成状态。各岗位目录中的《产品设计说明》提供逐页功能和验收要求。
## 2. 当前系统状态
### 2.1 已有能力
- Flutter 单应用支持登录后按角色进入安装维修、配送或安全检查岗位。
- 路由已有 `/login``/preflight``/tasks/:identity``/tasks/:identity/evidence``/work``/records``/me`
- 仓储层已有个人资料、作业前检查、钱包、考勤、任务列表与详情。
- 通用工单已有开始、异常、恢复和结果提交。
- 配送已有轨迹追加、到达和签收提交。
- 证据文件可上传,本地草稿具备加密保存基础。
### 2.2 主要差距
- 当前路由以通用页面为主,无法承载三个岗位各自的完整步骤、字段和异常分支。
- 后端接口尚未覆盖岗位申请、每日培训、详细资质、排单、气瓶、收款、隐患、整改、复检、提现、知识库、人工支持等目标能力。
- 任务状态和 `allowed_actions` 不完整,客户端容易出现“页面有按钮但服务端不可执行”的风险。
- 记录、统计、个人资料、通知和离线冲突仍需领域化。
- 当前完成状态不能由图片推断,必须以代码、接口和自动化测试为准。
## 3. 技术栈与运行环境
- 客户端Flutter、Dart、GoRouter、现有网络与本地存储封装。
- 服务端:沿用项目现有 `/heqi/client/v1/staff` API 体系。
- 本地数据:延续现有加密草稿机制,新增附件队列、重试、冲突版本和清理策略。
- 运行环境:项目当前 Flutter 与 Android 构建环境;不得为本次 UI 优化替换应用框架。
## 4. 目录结构建议
```text
apps/service_app/lib/
├── app/
│ ├── router.dart # 现有路由入口,扩展岗位子路由
│ └── dependencies.dart # 仓储、草稿、会话等依赖
├── data/
│ ├── models/ # 任务、证据、风险、气瓶、结算模型
│ └── repositories/
│ └── service_repository.dart # 保留现有方法并扩展岗位接口
├── domain/
│ ├── installation/ # 安装维修状态与动作
│ ├── delivery/ # 配送与空瓶状态与动作
│ ├── inspection/ # 安检、隐患、整改和复检
│ └── shared/ # 身份、准入、钱包、通知、离线
└── ui/
├── design_system/ # 颜色、文字、间距、按钮、状态标签
├── features/shared/ # 登录、准入、消息、钱包、个人中心
├── features/installation/ # 安装维修专用页面
├── features/delivery/ # 配送专用页面
└── features/inspection/ # 安检专用页面
```
原则:通过新增目录、页面和方法扩展现有实现;保留公共接口与现有路由兼容层,避免一次性重写。
## 5. 共享设计系统
| 项目 | 规范 |
| --- | --- |
| 主色 | `#2563EB` |
| 页面背景 | `#F7F8FA` |
| 成功 | `#16875D` |
| 提醒 | `#B86400` |
| 危险 | `#C7352A` |
| 页面边距 | 20px 视觉基准,代码按 Flutter 逻辑像素适配 |
| 圆角 | 最大 8px除头像、状态点、开关等固有圆形控件 |
| 图标 | Material 或项目既有图标库,禁止手绘占位符 |
| 禁止项 | 紫色、紫色渐变、光晕、AI 图形、AI 文案、装饰性大卡片 |
## 6. 路由与模块规划
### 6.1 共享路由
- 登录、岗位申请、作业前检查、准入阻断、每日培训。
- 消息、钱包、提现、银行卡、离线队列、个人资料、二维码、设置、人工支持、知识库和反馈。
- 共享页面通过角色配置切换标题、字段、权限和接口,不硬编码岗位文案。
### 6.2 安装维修模块
- 工单列表与详情、使用条件、材料、安装、测试、前期安检、签名、收款、完成。
- 维修执行、安全检查、异常恢复、巡检、复检、备件、保修和回访。
### 6.3 配送模块
- 订单、接单改派、时间排单、路线排单、导航到达、围栏异常。
- 气瓶扫描、随瓶安检、取证、收款、签收、空瓶回收、蓝牙设备和轨迹补传。
- 服务用户、配送记录与配送统计。
### 6.4 安全检查模块
- 任务、到场、设备、环境、取证、签名、合格结果和完成。
- 不合格、风险分级、一级高风险处置、整改通知、隐患、整改、复检和拒检。
- 区域抽查、安检记录与安检统计。
## 7. 服务端接口规划
### 7.1 兼容原则
- 保留现有路径和响应字段,新增字段均允许旧客户端忽略。
- 新动作优先添加子资源或动作端点,不改变现有 `start``exception``recover``submit-result` 语义。
- 所有变更动作接收幂等键并返回服务端版本号、最终状态和 `allowed_actions`
- 错误响应返回稳定错误码、用户可读消息、是否可重试和必要的当前资源快照。
### 7.2 共享接口组
- 岗位申请与审核、角色和组织、资质与到期提醒。
- 作业前检查、考勤、培训、授权设备和阻断原因。
- 钱包明细、提现、银行卡、消息、知识库、人工服务请求和反馈。
- 附件初始化、分片上传、完成确认、校验失败和断点续传。
### 7.3 岗位专用接口组
- 安装维修:条件、材料、步骤、测试、签名、收款、备件、保修与回访。
- 配送:接单、改派、排单、气瓶、围栏、安检、收款、签收、空瓶、押金和轨迹。
- 安检:检查项、测量值、风险分级、抢险联动、整改单、隐患、整改、复检和拒检。
## 8. 数据模型要求
- 所有任务包含 `id``role_code``status``version``allowed_actions`、计划时间、用户与脱敏地址。
- 所有状态事件包含操作人、角色、设备、客户端时间、服务端时间、定位与幂等键。
- 证据包含类型、业务步骤、文件哈希、大小、MIME、拍摄时间、定位精度、本地状态和服务端文件标识。
- 金额使用最小货币单位整数,分别记录商品、押金、优惠、线上、线下、已核验、待核验和差额。
- 风险字段固定枚举并带规则版本,禁止自由文本替代等级。
- 数据库新增字段必须提供中文 `COMMENT`枚举字段列出全部值JSON 字段说明结构。
## 9. 离线与安全
- 草稿、附件和签名使用系统安全存储管理的密钥加密,日志不记录明文手机号、地址、签名或文件内容。
- 离线队列按资源和动作排序;相同幂等键只执行一次。
- 冲突时展示本地版本、服务端版本和差异,不静默覆盖。
- 退出登录、切换账号和清理缓存前检查未同步数据并阻断危险操作。
- 地图列表默认显示模糊点位,精确地址仅在授权任务详情展示。
## 10. 分阶段开发计划
| 阶段 | 范围 | 完成标准 |
| --- | --- | --- |
| P0 | 共享设计系统、角色路由、准入、状态与错误模型 | 三岗位可登录并进入正确工作台,现有功能无回归 |
| P1 | 三岗位核心任务主链路 | 安装、配送、安检各有一条正常链路端到端完成 |
| P2 | 高风险与异常链路 | 阻断、失败、拒检、一级风险、改派、围栏异常可闭环 |
| P3 | 离线、证据、冲突与幂等 | 弱网、断网、重复提交和版本冲突测试通过 |
| P4 | 钱包、记录、统计、资质与支持 | 目标目录全部页面有对应路由、接口或明确只读状态 |
| P5 | 全量视觉与回归 | 逐页截图比对、无障碍、性能、安全和兼容性验收通过 |
## 11. 测试策略
- 单元测试:金额、风险分级、允许动作、状态转换、幂等和冲突合并。
- 仓储测试:现有 API 兼容、新接口解析、错误码、重试和超时。
- Widget 测试:表单校验、按钮状态、长文本、空列表、失败和离线提示。
- 集成测试:三岗位正常链路及关键异常链路。
- 安全测试:越权、敏感信息、日志泄露、本地加密、附件伪造和重复提交。
- 视觉回归:目标图片与相同状态、相同逻辑尺寸的 Flutter 截图并排比较。
## 12. 验收与发布
- 每张目标图片必须映射到页面、路由、状态、接口和测试,不以“已经画图”代替开发完成。
- 原有真实登录、任务、取证、草稿和配送接口行为必须保持兼容。
- 关键接口必须先在测试环境验证,再分岗位灰度发布。
- 发布前完成数据库变更审核、接口文档、移动端回归、异常演练和回滚方案。
## 13. 变更记录
| 版本 | 日期 | 内容 |
| --- | --- | --- |
| v1.0 | 2026-09-06 | 建立三岗位目标产品设计与开发对照,明确共享架构、接口、状态机、离线、安全、测试和发布要求 |