feat: add Flutter mobile clients and staff delivery API
This commit is contained in:
@@ -13,8 +13,8 @@
|
||||
|
||||
| 层级 | 推荐技术 | 用途 |
|
||||
| --- | --- | --- |
|
||||
| 用户端 App | Flutter | 用户设备、安全、商城、订单、钱包、消息和个人中心 |
|
||||
| 服务端 App | Flutter | 安装维修、安检、配送三类工作台;通过角色与能力包控制模块 |
|
||||
| 用户端 App | Flutter 3 / Dart 3 | 首期首页内容、服务归属、商城、订单、合同、工单、钱包、地址和个人中心 |
|
||||
| 服务端 App | Flutter 3 / Dart 3 | 配送、安装维修、安检三类单角色账号工作台、现场取证与受控离线草稿 |
|
||||
| 平台总后台 | Vue 3 + TypeScript | 全局治理、运营、财务、安全、审计等高密度管理页面 |
|
||||
| 可燃气体站管理系统 | Vue 3 + TypeScript | 站点商品、订单、服务、库存与经营管理 |
|
||||
| 配送点管理系统 | Vue 3 + TypeScript | 调度、配送仓、路线、人员和配送运营工作台 |
|
||||
@@ -72,6 +72,13 @@ flowchart LR
|
||||
- 已分配任务、轨迹点、照片/视频元数据、签名、扫描结果和收款确认可在弱网下加密暂存。补传必须携带原始采集时间、服务端接收时间、任务 `identity`、操作者 `identity`、来源、完整性标记与幂等键,禁止以补传时间覆盖采集时间。
|
||||
- 后端负责乱序校正、重复去除、异常速度/精度标记、证据哈希与状态机校验;前端离线缓存、按钮禁用或页面显示不能替代服务端权限、金额、地理围栏和完成条件校验。
|
||||
|
||||
### 4.2 Flutter 工程落地基线
|
||||
|
||||
- 生产工程已落在 `apps/user_app` 与 `apps/service_app`,只生成 Android、iOS 平台目录;`ui` 继续作为视觉和交互原型,不作为运行时依赖。
|
||||
- 两个 App 使用 `MaterialApp.router`、`go_router`、MVVM + Repository 与注入的平台 Service。HTTP 根地址通过 `--dart-define=API_BASE_URL=...` 注入;用户端和工作人员端分别固定访问 `/heqi/client/v1/user` 与 `/heqi/client/v1/staff`,JWT 请求头沿用当前服务端原始令牌契约。
|
||||
- 访问令牌保存在 Android Keystore / iOS Keychain 支持的安全存储。服务端 App 的现场草稿和附件按账号使用 AES-GCM 加密;恢复网络后才上传并执行最终业务提交。
|
||||
- 充值 Mock 确认只允许 Debug/开发联调,Release UI 不注册该入口;未落地的设备控制、收藏、押金、消息和发票能力不得以静态成功状态替代。
|
||||
|
||||
## 5. 研发目录规划(建议)
|
||||
|
||||
```text
|
||||
@@ -105,7 +112,7 @@ platforms/
|
||||
performance/ # 遥测、订单、轨迹与消息积压压测
|
||||
```
|
||||
|
||||
该结构是后续开发建议,不代表本次创建了任何代码目录或代码文件。
|
||||
其中 `apps/user_app`、`apps/service_app`、`backend/{api,worker,iot}` 与当前管理端目录已经落地;其余标记为规划的目录仍不得因局部任务提前创建空壳。
|
||||
|
||||
## 6. 后端领域划分
|
||||
|
||||
@@ -143,8 +150,8 @@ platforms/
|
||||
| 开放接口 | `api_` | `api_product`、`api_client`、`api_subscription` |
|
||||
| 平台任务 | `sys_` | `sys_outbox_event`、`sys_dead_letter_event` |
|
||||
|
||||
- 所有主表必须包含 `identity` 字段,类型为 UUID V7,并作为该表的主键。UUID V7 由应用服务生成,保证时间有序性;禁止使用数据库自增主键、随机 UUID V4 或将业务编号作为主键。
|
||||
- 引用主表时,外键字段命名为 `<实体名>_identity`,例如 `order_identity`、`service_person_identity`。业务展示编号(订单号、设备编码、站点编码等)应使用独立字段并设置唯一约束,不能替代 `identity`。
|
||||
- 每张表必须包含数据库内部使用的 `id bigint` 自增主键;主表还必须包含由应用生成、带唯一索引的 UUID V7 `identity varchar(36)`。HTTP、消息、审计日志、Flutter/Vue 模型和跨服务引用只使用 `identity`,不得暴露或接受内部 `id`。
|
||||
- 数据库内部关联优先使用 `<实体词根>_id` 指向自增主键;跨服务契约、异步事件和审计关联使用 `<实体词根>_identity`。业务展示编号另设唯一字段,不能替代 `id` 或 `identity`。
|
||||
- 每个主表还应按需要包含 `created_at`、`updated_at`、`created_by_identity`、`updated_by_identity`、`status`、`version` 等审计/并发字段;资金流水、安全事件、审计日志等不可变记录不得被物理删除。
|
||||
- 数据库表、字段、索引、约束和枚举必须编写中文注释;注释说明业务含义、取值/单位、脱敏或留存要求。模型注释与接口契约必须同步维护,禁止只在设计文档中说明。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user