docs(nav): 完成 四篇核心文档(阅读地图、项目总览、项目当前状态、代码仓协作边界

This commit is contained in:
lzh
2026-04-06 22:33:57 +08:00
parent 58bcb7b90b
commit b8fb5ad761
4 changed files with 802 additions and 93 deletions

View File

@@ -1,45 +1,281 @@
# 00-阅读地图 (Reading Roadmap)
# 00-阅读地图
本文档是 AIoT 项目的 onboarding 核心指南。不要像无头苍蝇一样翻阅所有文档,请对号入座,根据你的角色和当前任务,按照推荐的先后顺序和时间分配进行阅读
这不是目录清单,而是 `开发者文档` 的使用说明
如果你刚接手 AIOT 项目,或者刚准备处理一个具体任务,不要从头到尾乱翻。先确认你现在扮演什么角色、要解决什么问题,再按下面路线走。
当前项目处于 **Ops 持续迭代、IoT 逐步转主线** 的阶段,因此阅读优先级也不是平均分配:
- 如果你要尽快进入当前交付主线,先看 Ops 相关
- 如果你要做下一阶段能力建设,重点转到 IoT 相关
- 如果你要排障、联调、提 PR先看边界和规范不要先看业务描述
---
## 🐣 新人 Onboarding 路线 (建议耗时30分钟)
无论你是什么岗位,入职第一天请先花半小时理清全局:
1. **[必读] README.md** (5分钟):了解文档中心定位和项目大方向。
2. **[必读] 02-项目当前状态.md** (10分钟)了解目前团队重点在打哪场仗Ops 还是 IoT系统哪些部分是可用的。
3. **[必读] 03-代码仓与协作边界.md** (10分钟):认清三大主仓 (`aiot-platform-cloud` / `yudao-ui-admin-vben` / `aiot-uniapp`) 的边界,知道在哪提 PR在哪报 Bug。
4. **[选读] 08-附录/术语表** (5分钟):快速扫一眼行业黑话(如果有),防止开会听天书。
## 一、所有人都先看的 4 篇
无论你是谁,第一次进入这个文档仓,先看这 4 篇:
1. `README.md`
- 解决“这套文档是干什么的、当前项目重心在哪”
2. `01-项目总览.md`
- 解决“这个项目为什么会同时有 Ops 和 IoT 两条线”
3. `02-项目当前状态.md`
- 解决“现在哪些东西已经成型,哪些还在建设”
4. `03-代码仓与协作边界.md`
- 解决“我该去哪改、去哪查、出了问题谁先接”
如果这 4 篇都没看,就直接进正文写代码,基本等于盲开。
---
## 💻 研发人员路线 (建议耗时:半天)
当你准备 clone 代码开始干活时,请花半天时间吃透相关规范:
## 二、新人 30 分钟路线
### 后端开发 (Backend)
1. **07-协作规范/01-不同项目的基本规范.md**:重点看**后端规范**,理解分包逻辑、异常处理和日志要求。
2. **06-平台支撑/**查阅本地环境配置、Nacos/Redis/MySQL 连接说明。
3. **01-业务与架构/**:阅读全局架构图,理解服务拆分。
4. **具体业务模块**:如果你负责 Ops保洁/安保),去 `02-Ops领域/` 找业务方案;如果负责硬件,去 `03-IoT领域/`
适合:
- 第一次接触项目的人
- 被临时拉来支援的人
- 需要快速知道项目基本盘的人
### 前端/移动端开发 (FE/Mobile)
1. **07-协作规范/01-不同项目的基本规范.md**:重点看**前端/移动端规范**,理解目录划分和状态管理。
2. **04-前端开发/ 或 05-移动端开发/**查阅具体框架Vben / Uniapp的脚手架运行指南与组件规范。
3. **接口契约**:查阅前后端联调的 YApi/Swagger 地址及通用的错误码处理逻辑。
### 第 1 步:先搞清项目在打哪场仗
看:
- `README.md`
- `02-项目当前状态.md`
目标:
- 知道现在不是“纯 IoT 项目”也不是“纯 Ops 项目”
- 知道当前交付仍然以 Ops 为基本盘,但研发重心正在向 IoT 倾斜
### 第 2 步:搞清三仓和文档的关系
看:
- `03-代码仓与协作边界.md`
目标:
- 知道 `aiot-platform-cloud``yudao-ui-admin-vben``aiot-uniapp` 各自负责什么
- 知道问题先去哪查,不要一上来就群里甩锅
### 第 3 步:按你的角色分流
- 后端:转去 `01-业务与架构/` + `02-Ops领域/` / `03-IoT领域/`
- 前端:转去 `04-前端开发/`
- 移动端:转去 `05-移动端开发/`
- 测试/运维:转去 `06-平台支撑/` + `07-协作规范/`
30 分钟的目标不是看完全部,而是**建立正确地图**。
---
## 🧪 测试与联调路线 (针对 QA & 测试同学)
当你准备介入测试时,你需要关注系统的“流转与可用性”:
1. **02-项目当前状态.md**:明确哪些模块是“已完成可测”的,哪些还在“建设中”,避免提无效 Bug。
2. **03-代码仓与协作边界.md**:当你发现一个 Bug需要根据此文档快速判断是前端展示问题、接口报错还是设备端无响应从而将 Bug 指派给对应仓库的负责人。
3. **业务方案的“测试用例基准”**:深入阅读 `02-Ops领域``03-IoT领域` 中的具体设计文档,重点看业务流转图(状态机)和前置条件。
## 三、后端阅读路线
适合:
- 后端开发
- 接口联调负责人
- 需要判断模块边界的人
### 如果你要做业务功能
先看:
1. `03-代码仓与协作边界.md`
2. `07-协作规范/01-不同项目的基本规范.md`
3. `01-业务与架构/01-总体架构设计.md`
4. 再按业务域进入:
- Ops`02-Ops领域/`
- IoT`03-IoT领域/`
### 如果你要排查线上/联调问题
先看:
1. `03-代码仓与协作边界.md`
2. `06-平台支撑/00-支撑平台总览.md`
3. `07-协作规范/01-需求开发与文档回补流程.md`
重点不是先读长篇业务说明,而是先确定:
- 问题在哪条链路上
- 是接口问题、状态流问题,还是环境问题
---
## 🛠️ 运维与排障路线 (针对 DevOps & SRE)
线上部署或处理紧急故障时的速查路径:
1. **06-平台支撑/CI-CD规范.md**(如已补充):查看发布流水线和环境变量注入规则。
2. **06-平台支撑/中间件配置.md**核对消息队列RabbitMQ/Kafka、Redis 集群、数据库路由等基础依赖。
3. **07-协作规范/01-不同项目的基本规范.md**:重点查看后端**日志规范**章节,了解遇到问题时该去哪里抓取 TraceId如何通过日志定位链路。
4. **03-代码仓与协作边界.md**:通过异常堆栈中的包名,快速对应到对应的代码仓库。
## 四、前端阅读路线
适合:
- Web 管理端开发
- 负责表单、列表、看板、后台业务页面的人
### 第一轮必须看
1. `03-代码仓与协作边界.md`
2. `04-前端开发/01-前端工程结构与协作边界.md`
3. `07-协作规范/01-不同项目的基本规范.md`
### 第二轮按任务进入
- 如果做 Ops 后台:先看 `02-Ops领域/`
- 如果做 IoT 管理台:先看 `03-IoT领域/`
- 如果做系统/平台配置页:补看 `06-平台支撑/`
前端最容易踩的坑不是不会写页面,而是:
- 没搞清字段和状态是谁定义的
- 没搞清这个页面属于哪个业务域
- 把共享组件和业务页面混着写
所以前端不要只盯 `views`,要先看协作边界。
---
## 五、移动端阅读路线
适合:
- `aiot-uniapp` 相关开发
- 现场作业流、扫码、抢单、执行反馈相关开发
### 第一轮必须看
1. `03-代码仓与协作边界.md`
2. `05-移动端开发/01-移动端工程结构与页面分域.md`
3. `07-协作规范/01-不同项目的基本规范.md`
### 第二轮按业务域进入
- 工单/巡检/现场执行:先看 `02-Ops领域/`
- 设备状态、设备交互:补看 `03-IoT领域/`
移动端的重点不是“页面多”,而是“流程闭环要稳”。
尤其涉及:
- 接单
- 执行中
- 完成回传
- 图片/定位/状态更新
这些都要回到 Ops 主线文档理解,不然容易把页面做成孤岛。
---
## 六、测试阅读路线
适合:
- QA
- 联调测试
- 需要判断问题归属的人
### 先看
1. `02-项目当前状态.md`
2. `03-代码仓与协作边界.md`
3. `07-协作规范/01-需求开发与文档回补流程.md`
### 再看对应业务域
- Ops 测试:`02-Ops领域/`
- IoT 测试:`03-IoT领域/`
测试最重要的不是“把页面点一遍”,而是先知道:
- 这块功能目前是不是已经进入可测状态
- 这条链路是完整闭环,还是还在建设中
- 问题应该先找前端、移动端、后端还是平台支撑
---
## 七、运维 / 平台支撑阅读路线
适合:
- 运维
- DevOps
- 环境、部署、基础设施排障
### 第一轮先看
1. `03-代码仓与协作边界.md`
2. `06-平台支撑/00-支撑平台总览.md`
3. `01-业务与架构/01-总体架构设计.md`
### 第二轮补看
- `07-协作规范/01-不同项目的基本规范.md`
- `07-协作规范/01-需求开发与文档回补流程.md`
运维视角下,最先需要明确的是:
- 哪些服务/模块是核心链路
- 哪些问题属于部署/环境,哪些属于业务逻辑
- 改了环境或中间件后,哪些文档必须回补
---
## 八、产品 / 项目负责人阅读路线
适合:
- 产品
- 项目负责人
- 需要把控当前阶段节奏的人
### 先看
1. `01-项目总览.md`
2. `02-项目当前状态.md`
3. `03-代码仓与协作边界.md`
### 再看
- `02-Ops领域/`:理解当前已成型业务
- `03-IoT领域/`:理解接下来投入重点
产品和负责人不一定要钻到代码细节,但必须知道:
- 当前基本盘靠什么撑住
- 现在哪些地方能承诺,哪些还不能承诺
- 文档里哪些内容是阶段性结论,不是最终版
---
## 九、AI 助手 / Agent 阅读路线
适合:
- AI 助手
- 需要根据文档协助生成、梳理、排查的人
### 最小必读集合
1. `README.md`
2. 本文
3. `02-项目当前状态.md`
4. `03-代码仓与协作边界.md`
5. `07-协作规范/01-不同项目的基本规范.md`
6. `07-协作规范/01-需求开发与文档回补流程.md`
### 工作原则
- 先判断自己当前处理的是哪个业务域
- 先判断问题落在哪个仓
- 先区分“已确认事实”和“合理建议”
- 不要把模板化通用文档当成项目事实
Agent 最容易犯的错就是:
- 写出看起来很顺但不够贴项目的文档
- 没先看边界,就直接补正文
- 没先看状态,就默认所有模块都成熟
这个目录就是专门用来防这个错的。
---
## 十、当前阶段的推荐阅读优先级
如果你只准备花半天建立有效理解,推荐顺序是:
### 第一优先级
- `README.md`
- `00-导航与总览/01-项目总览.md`
- `00-导航与总览/02-项目当前状态.md`
- `00-导航与总览/03-代码仓与协作边界.md`
### 第二优先级
- `01-业务与架构/01-总体架构设计.md`
- `07-协作规范/01-不同项目的基本规范.md`
### 第三优先级
- `02-Ops领域/`
- `03-IoT领域/`
- `04-前端开发/`
- `05-移动端开发/`
- `06-平台支撑/`
理由很简单:
先建立地图,再进具体领域;先搞清边界,再进实现细节。
---
## 十一、别怎么读
### 不要这样
- 从某篇业务文档开始一路乱点
- 只看自己熟悉的技术栈,不看协作边界
- 直接开始写代码,再回头补认知
### 应该这样
- 先看导航与总览
- 再确认自己当前任务属于哪个域
- 再进入对应目录
- 过程中发现边界变化,回头更新文档
这才是这份阅读地图存在的意义。

View File

@@ -1,11 +1,172 @@
# 01-项目总览
## 项目背景
本项目是一个综合性的 AIoT 平台旨在结合物联网设备与日常运营Ops提供高效、智能的管理方案。
## 项目定位
## 核心业务板块
- **Ops 领域**:工单、保洁、安保等日常运营管理(一阶段核心业务)。
- **IoT 领域**:设备接入、数据采集与控制(后续重点)。
AIOT 是一个面向物联网设备与运营业务整合的综合平台,核心目标是打通「设备感知 → 平台处理 → 人工/自动响应」的完整链路。
当前阶段,平台同时承载两条主线:
- **Ops 运营线**:工单、保洁、安保等人工业务流程管理
- **IoT 设备线**:设备接入、数据采集、远程控制、规则联动
这两条线在架构上共享同一套后端、同一套前端/移动端框架,但在业务节奏上处于不同阶段:
- Ops 是基本盘,已经跑通主流程,当前是持续迭代和深化
- IoT 是下一阶段重点,正在从设计阶段进入建设阶段
## 为什么把 Ops 和 IoT 放在同一套文档体系
### 1. 技术底座共享
- 同一套后端微服务架构(`aiot-platform-cloud`
- 同一套前端框架(`yudao-ui-admin-vben`
- 同一套移动端框架(`aiot-uniapp`
- 同一套 DevOps 基础设施
### 2. 业务场景联动
- Ops 工单最终要联动 IoT 设备(例如:设备告警自动生成工单)
- IoT 设备状态要反馈到 Ops 作业流(例如:保洁员查看设备状态后再执行)
- 两者共享用户体系、权限体系、通知体系
### 3. 团队协同需要
- 同一批后端研发同时支持 Ops 和 IoT
- 同一批前端/移动端同时对接 Ops 和 IoT 接口
- 同一套测试和运维流程覆盖两端
如果强行拆成两个独立项目文档,会导致:
- 边界重复描述
- 协作规范不一致
- 跨域联调时认知不统一
因此,文档体系统一,但业务域分开描述。
## 三大主仓与文档的关系
| 仓库 | 定位 | 对应文档目录 |
|------|------|-------------|
| `aiot-platform-cloud` | 后端核心业务逻辑 | `02-Ops领域/``03-IoT领域/``06-平台支撑/` |
| `yudao-ui-admin-vben` | Web 管理后台 | `04-前端开发/` |
| `aiot-uniapp` | 移动端作业工具 | `05-移动端开发/` |
### 关键原则
- **文档不是代码的说明书,而是协作的契约**
- 代码仓里的实现是最终真相,但文档里的边界和约定是协作前提
- 当文档和代码冲突时,以代码为准,但必须同步更新文档
## 当前阶段的工作重心
### Ops 线(当前基本盘)
**状态**:主流程已闭环,进入持续迭代
**当前重点**
- 工单状态机的健壮性(异常分支、回滚、并发)
- 保洁/安保业务场景的覆盖(排班、巡检、验收)
- 数据看板和报表能力
- 与 IoT 的初步联动(设备告警 → 工单)
**文档需求**
- 业务流程必须文档化(状态机、时序图、边界条件)
- 接口变更必须同步更新契约
- 测试用例必须对齐文档描述
### IoT 线(下一阶段重点)
**状态**:从设计阶段进入建设阶段
**当前重点**
- 设备接入协议选型与网关建设
- 物模型标准定义(属性、事件、服务)
- 设备注册、认证、生命周期管理
- 数据采集、存储、可视化
- 规则引擎(告警、联动)
**文档需求**
- 协议和物模型是核心,必须文档先行
- 设备端、网关、后端三端的边界必须清晰
- 与 Ops 的联动场景需要提前设计
### 平台支撑(贯穿两端)
**状态**:基座已稳固,持续优化
**当前重点**
- 本地开发环境标准化
- CI/CD 流程优化
- 中间件配置和监控
- 安全、日志、审计
## 文档覆盖范围与不覆盖范围
### 覆盖
- 业务架构设计Ops、IoT
- 代码仓协作边界
- 开发规范与流程
- 本地环境搭建
- 核心业务流程(状态机、时序图)
- 接口契约API 定义、错误码)
### 不覆盖
- 详细的产品需求文档PRD
- 完整的测试用例库
- 线上运维手册(监控、告警、应急)
- 设备端固件开发文档
- 硬件规格说明书
**原因**
- 文档仓的定位是「研发协作基线」,不是「全量知识库」
- 产品需求、测试用例、运维手册有各自的工具和流程
- 设备端和硬件有独立的文档体系
## 目标受众
- 系统架构师、后端研发、前端研发、移动端研发及产品经理。
### 必须依赖本文档的人群
- 后端研发(业务实现、接口设计、状态机维护)
- 前端/移动端研发(页面实现、接口对接、联调排障)
- 测试测试策略、边界条件、Bug 归属)
- 运维(环境搭建、部署流程、中间件配置)
- AI 助手(代码生成、文档补全、问题排查)
### 可参考但不依赖的人群
- 产品(业务需求、用户场景)
- 项目经理(进度、资源、风险)
- 硬件工程师(设备端开发)
## 当前文档体系的成熟度
| 目录 | 成熟度 | 说明 |
|------|--------|------|
| `00-导航与总览/` | 🟡 可用 | 入口文档已成型,持续维护 |
| `01-业务与架构/` | 🟡 可用 | 架构图已定型,细节待补 |
| `02-Ops领域/` | 🟡 可用 | 主流程已文档化,边缘场景待补 |
| `03-IoT领域/` | 🔴 建设中 | 框架已搭,正文待补 |
| `04-前端开发/` | 🟡 可用 | 工程结构已文档化 |
| `05-移动端开发/` | 🟡 可用 | 工程结构已文档化 |
| `06-平台支撑/` | 🔴 建设中 | 框架已搭,正文待补 |
| `07-协作规范/` | 🟡 可用 | 核心规范已成型 |
| `08-附录/` | 🟡 可用 | 术语表等辅助内容 |
**成熟度定义**
- 🟢 成熟:内容完整,可直接指导开发
- 🟡 可用:核心内容已覆盖,边缘待补
- 🔴 建设中:框架已搭,正文待补
## 如何使用本文档
### 如果你是新人
1. 先看 `README.md`
2. 再看本文
3. 再看 `02-项目当前状态.md`
4. 再看 `03-代码仓与协作边界.md`
5. 然后按角色进入对应目录
### 如果你要处理具体任务
1. 先确认任务属于 Ops 还是 IoT
2. 先看对应业务域的边界文档
3. 再看具体实现文档
4. 过程中发现文档缺失或过期,顺手补或提 Issue
### 如果你是 AI 助手
1. 必须先看 `00-导航与总览/` 全部
2. 必须先看 `07-协作规范/`
3. 然后按任务进入对应业务域
4. 生成内容时必须区分「已确认事实」和「合理建议」
5. 不要编造代码实现细节,只写文档里已确认的内容
---
**最后更新时间**2026-04-06

View File

@@ -1,34 +1,209 @@
# 02-项目当前状态
本文档实时反映 AIoT 项目的真实进度基线,帮助团队在联调和规划时拉齐认知,避免“以为做完了实际还没开始”的坑
本文档是研发团队的认知基线,不是项目汇报材料
## 1. 核心业务节奏Ops 与 IoT 的关系
当前项目处于**「Ops 深化迭代」与「IoT 攻坚破局」的双线交汇期**。
- **Ops 领域(工单、保洁、安保)**:是第一阶段的核心,目前**基础建设已完成**。它已经具备了闭环能力,当前的节奏是持续的业务逻辑迭代、体验优化和边缘场景覆盖。
- **IoT 领域(设备接入、物模型)**:是接下来的**核心战场**。前期的重心在 Ops 上,现在研发火力正逐渐向 IoT 倾斜,目标是打通硬件到平台的双向控制链路,让 Ops 能够真正与物理设备联动。
它的作用是:
- 让所有人知道现在哪些东西已经可用,哪些还在建设
- 让联调、测试、排障时有个共同参考
- 让规划下一阶段工作时基于事实,而不是假设
## 2. 业务与功能状态矩阵
**更新时间**2026-04-06
以下是系统核心域的当前成熟度评估,分为三个维度:
- **业务能力状态**:该领域的业务逻辑是否闭环?
- **功能状态**:代码实现了多少?
- **可用状态**:能否在线上/测试环境跑通?
---
### [A] Ops 领域(工单/保洁/安保)
- **业务能力状态**:🟢 **基础闭环**。保洁与安保的派单、抢单、执行、验收标准主干流程已确立。
- **功能状态**:🟡 **持续迭代**。RBAC 权限、工单流转、基础通知等核心功能已落地;复杂状态机流转、排班策略、数据看板仍在开发或迭代中。
- **可用状态**:🟢 **核心可用**。前后端已能进行主流程联调,可支撑基础的业务演示与测试。
## 一、整体节奏
### [B] IoT 领域(设备/物模型/通信)
- **业务能力状态**:🟡 **设计与探索中**。物模型标准、设备接入协议MQTT等、数据流向规则正在制定。
- **功能状态**:🔴 **起步阶段**。设备注册、网关对接、指令下发等底层链路处于 Demo 或初期研发阶段。
- **可用状态**:🔴 **不可用/内部测试**。目前尚无法提供稳定的前后端联动环境,需依赖 Mock 数据。
当前项目处于 **Ops 持续迭代、IoT 逐步转主线** 的阶段。
### [C] 平台支撑与基础设施
- **业务能力状态**:🟢 **标准已定**。开发规范、认证鉴权、字典与系统配置标准已确立。
- **功能状态**:🟢 **基座稳固**。基于 `aiot-platform-cloud` 和 Vben 的底层脚手架、ORM、缓存、安全过滤已基本建设完毕。
- **可用状态**:🟢 **高可用**。各端开发者拉取代码即可运行环境,基础 CRUD 无碍。
具体表现:
- Ops 主流程已跑通,当前是业务深化和边缘场景覆盖
- IoT 从设计阶段进入建设阶段,研发重心正在转移
- 平台支撑基座已稳固,当前是优化和标准化
## 3. 研发关注重点提示
- **如果你在做 Ops**:请关注代码的健壮性、状态机的严谨性,以及历史数据的兼容性。
- **如果你在做 IoT**:请关注架构的扩展性、协议的通用性,容忍一定程度的推翻重构,快速试错。
这不是「Ops 做完了做 IoT」的串行节奏而是「Ops 保基本盘、IoT 开新战场」的并行节奏。
---
## 二、分域状态
### A. Ops 领域(工单、保洁、安保)
#### 业务现状
- 工单主流程(创建 → 分配 → 执行 → 完成 → 验收)已闭环
- 保洁/安保的业务场景已覆盖基础派单、抢单、巡检
- 复杂状态流转(转派、申诉、超时处理)已设计,部分实现
- 排班策略、数据看板处于迭代中
#### 功能现状
- RBAC 权限体系已落地
- 工单状态机已实现主干流程
- 基础通知(短信、推送)已接入
- 复杂状态机、排班算法、数据报表仍在开发
#### 可用现状
- 核心流程前后端已能联调
- 测试环境可跑通主流程
- 生产环境已支撑基础业务演示
- 边缘场景(弱网、并发、异常分支)仍在打磨
#### 当前短板
- 状态机异常分支处理不够健壮
- 历史数据兼容性方案待明确
- 与 IoT 的联动(设备告警 → 工单)刚起步
#### 当前重点
- 状态机健壮性(异常处理、回滚、并发控制)
- 保洁/安保业务深化(排班、巡检、验收标准)
- 数据看板和报表能力
- 与 IoT 的初步联动打通
---
### B. IoT 领域(设备、物模型、数据、联动)
#### 业务现状
- 物模型标准(属性、事件、服务)正在制定
- 设备接入协议MQTT/HTTP已选型网关建设中
- 数据流向规则(采集 → 存储 → 可视化)正在设计
- 规则引擎(告警、联动)框架搭建中
#### 功能现状
- 设备注册、认证接口已设计
- 网关对接、指令下发处于 Demo 阶段
- 数据采集、存储链路处于初期研发
- 规则引擎、场景联动处于框架搭建
#### 可用现状
- 尚无法提供稳定的前后端联动环境
- 设备端与后端的通信链路处于内部测试
- 前端/移动端展示依赖 Mock 数据
- 真实设备接入尚未开放
#### 当前短板
- 协议层细节MQTT Topic 设计、QoS 策略)待确定
- 物模型与业务模型的映射关系待明确
- 设备生命周期管理(注册 → 激活 → 离线 → 注销)待完整实现
- 与 Ops 的联动场景(告警 → 工单)待打通
#### 当前重点
- 设备接入网关建设与协议适配
- 物模型标准定义与文档化
- 设备生命周期管理实现
- 数据采集、存储、可视化链路打通
- 规则引擎(告警、联动)框架落地
---
### C. 平台支撑基础设施、DevOps、中间件
#### 业务现状
- 开发规范、认证鉴权、字典配置标准已确立
- 本地开发环境搭建流程已标准化
- CI/CD 流程已建立,持续优化中
#### 功能现状
- 基于 `aiot-platform-cloud` 的脚手架、ORM、缓存、安全过滤已完备
- Nacos 注册中心、配置中心已接入
- Redis 缓存、MySQL 主从已配置
- Jenkins、Docker、Nginx 等基础设施已就绪
#### 可用现状
- 各端开发者拉取代码即可运行环境
- 基础 CRUD 无碍
- 测试环境、预发环境、生产环境已区分
- 监控、日志、告警体系已搭建
#### 当前短板
- 中间件RabbitMQ/Kafka的使用规范待完善
- 生产环境应急手册待补充
- 性能基线和压测方案待建立
#### 当前重点
- CI/CD 流程优化(构建速度、回滚能力)
- 中间件配置和使用规范文档化
- 监控、日志、告警体系完善
- 安全审计和合规检查
---
## 三、三仓成熟度
| 仓库 | 当前状态 | 主要风险 |
|------|----------|----------|
| `aiot-platform-cloud` | 🟡 可用 | 复杂状态机、并发控制、IoT 新模块稳定性 |
| `yudao-ui-admin-vben` | 🟡 可用 | 与后端接口契约同步、复杂表单性能 |
| `aiot-uniapp` | 🟡 可用 | 分包体积控制、离线缓存策略、跨端兼容性 |
**状态定义**
- 🟢 成熟:代码稳定,可直接用于生产
- 🟡 可用:核心功能已覆盖,边缘场景待打磨
- 🔴 建设中:框架已搭,核心功能待实现
---
## 四、当前阶段的关键判断
### 判断 1Ops 不是做完了,而是进入深水区
- 主流程闭环只是开始
- 复杂状态机、并发控制、历史数据兼容才是真正的难点
- 与 IoT 的联动是下一步增长点
### 判断 2IoT 不是从零开始,而是需要加速建设
- 架构设计已完成
- 协议选型已确定
- 现在需要快速实现、快速试错、快速迭代
### 判断 3平台支撑不是一劳永逸而是持续优化
- 基座已稳固,但性能、安全、可观测性需要持续提升
- 中间件使用规范需要文档化
- 应急和回滚能力需要演练
### 判断 4文档不是写完就完而是需要持续回补
- 代码实现会超前于文档
- 文档更新是研发流程的一部分,不是额外负担
- 发现文档过期,立即更新或提 Issue
---
## 五、给不同角色的当前重点提示
### 后端研发
- **Ops 方向**:关注状态机健壮性、并发控制、历史数据兼容
- **IoT 方向**:关注协议细节、物模型映射、设备生命周期
- **通用**:关注接口契约同步、日志规范、异常处理
### 前端/移动端研发
- **当前重点**:与后端接口契约对齐、复杂表单性能、分包体积控制
- **下一步**IoT 设备状态展示、实时数据可视化
### 测试
- **当前重点**Ops 主流程回归、边界条件覆盖、并发场景测试
- **下一步**IoT 设备模拟、协议层测试、联动场景测试
### 运维
- **当前重点**环境稳定性、监控告警有效性、CI/CD 可靠性
- **下一步**:中间件性能调优、应急演练、安全合规
### AI 助手
- **当前重点**:基于文档生成代码时,必须区分「已确认事实」和「合理建议」
- **下一步**:协助 IoT 文档补全、协议细节文档化
---
## 六、如何更新本文档
当以下情况发生时,必须更新本文档:
1. 某业务域从「建设中」进入「可用」或「成熟」
2. 某功能从「不可用」进入「可用」
3. 发现新的短板或风险
4. 阶段重心发生转移
更新流程:
1. 修改本文档
2. 同步更新 `README.md` 中的项目阶段描述
3. 在 Git 提交中说明状态变更原因
4. 在团队内同步
---
**本文档是研发团队的共同认知基线,请保持更新。**

View File

@@ -1,50 +1,187 @@
# 03-代码仓与协作边界
项目的成功在于清晰的边界。当跨端联调或出现 Bug 时,必须知道“这是谁的锅,该去哪提 PR”。本项目严格围绕三大主仓进行协作。
本文档解决一个核心问题:**出了问题该去哪查、该去哪改、该找谁。**
## 1. 三大主仓职责定义
项目围绕三大主仓展开,但真正的协作成本往往不在「写代码」,而在「找边界」。
---
## 一、三大主仓职责定义
### 📦 后端核心仓:`aiot-platform-cloud`
- **定位**:整个系统的大脑与数据中枢。
- **职责**
- 承载 Ops工单/保洁/安保)的所有业务逻辑。
- 承载 IoT 设备接入、物模型解析、设备控制指令下发。
- 提供统一的权限认证RBAC、系统基础配置与 Open API。
- **主要干系人**:后端研发团队。
**定位**:整个系统的大脑与数据中枢
**职责范围**
- Ops 业务逻辑:工单、保洁、安保的所有后端逻辑
- IoT 业务逻辑:设备接入、物模型解析、控制指令下发
- 基础能力权限认证RBAC、系统配置、Open API
- 数据层:与 MySQL、Redis、Nacos 的交互
**主要干系人**:后端研发团队
**关键目录**(基于现有文档):
- `viewsh-gateway`API 网关,统一入口
- `viewsh-framework`:公共框架层
- `viewsh-server`:主服务启动模块
- `viewsh-module-system`:系统管理(用户、角色、权限、部门、字典)
- `viewsh-module-infra`:基础设施(文件、配置、代码生成、定时任务)
- `viewsh-module-iot`IoT 核心(设备、数据、协议、告警、联动)
- `viewsh-module-ops`:运维管理(工单、巡检、告警、维保)
**协作原则**
- 所有业务逻辑必须在 Service 层Controller 只负责路由和参数校验
- Ops 与 IoT 逻辑必须隔离在不同包/模块,禁止交叉污染
- 接口变更必须同步更新 Swagger/YApi 契约
---
### 📦 Web 管理端仓:`yudao-ui-admin-vben`
- **定位**:运营人员与管理员的控制台。
- **职责**
- 平台基础数据管理(用户、角色、字典、菜单)。
- Ops 业务的管理后台(排班分配、工单审核、数据报表)。
- IoT 设备的运维台(设备注册、实时状态监控、指令测试)。
- **主要干系人**:前端研发团队。
**定位**:运营人员与管理员的控制台
**职责范围**
- 平台基础数据管理:用户、角色、字典、菜单
- Ops 业务管理后台:排班分配、工单审核、数据报表
- IoT 设备运维台:设备注册、实时状态监控、指令测试
**主要干系人**:前端研发团队
**关键目录**(基于现有文档):
- `apps/admin`:管理后台主应用
- `packages/components`:通用业务组件
- `packages/utils`:工具函数
- `packages/types`TypeScript 类型定义
**协作原则**
- 按业务域组织页面(`views/ops/``views/iot/`),禁止平铺
- 组件分层:共享组件放 `packages`,业务组件放对应 `views`
- API 调用必须封装在 `api/` 目录,禁止页面直接写 `axios.get`
---
### 📦 移动端仓:`aiot-uniapp`
- **定位**:一线业务人员(保安、保洁员、维修工)的作业工具。
- **职责**
- 承载高频移动端操作:扫码、抢单、工单执行反馈、图片上传。
- 现场设备状态快速查看与简易控制。
- **主要干系人**:移动端研发团队。
## 2. 跨仓协作关系
**定位**:一线业务人员(保安、保洁员、维修工)的作业工具
- **API 契约优先**:所有跨仓交互(前端/移动端对接后端)必须先定 API 文档Swagger/YApi。后端未提供契约前前端/移动端可依赖契约进行 Mock 开发,禁止“边写接口边联调”。
- **多端一致性**:当一个业务实体(如“工单状态”)发生变更时,**后端发起变更通告**`yudao-ui-admin-vben``aiot-uniapp` 需同步评估改动范围,禁止一端暗改。
**职责范围**
- 高频移动端操作:扫码、抢单、工单执行反馈、图片上传
- 现场设备状态快速查看与简易控制
## 3. Bug 定位与认领指南
**主要干系人**:移动端研发团队
为了避免扯皮,遇到问题请遵循以下优先级在不同仓库定位
**关键目录**(基于现有文档)
- `src/pages-ops`Ops 现场执行(巡检、工单)
- `src/pages-system`:用户、角色、通知、租户
- `src/pages-infra`:配置、日志、任务、文件
- `src/pages-bpm`:流程能力
- `src/api`:后端 API 调用
- `src/store`Pinia 状态管理
**协作原则**
- 分包策略主包仅含登录和工作台首页Ops 和 IoT 业务分别独立分包
- 核心提交操作(工单完工等)必须做防抖和 Loading 遮罩
- 字典数据和基础权限做好本地缓存
---
## 二、跨仓协作关系
### API 契约优先
- 所有跨仓交互(前端/移动端对接后端)必须先定 API 文档Swagger/YApi
- 后端未提供契约前,前端/移动端可依赖契约进行 Mock 开发
- **禁止「边写接口边联调」**
### 多端一致性
- 当一个业务实体(如「工单状态」)发生变更时,**后端发起变更通告**
- `yudao-ui-admin-vben``aiot-uniapp` 需同步评估改动范围
- **禁止一端暗改**
### 文档同步义务
- 无论改了哪个仓的业务主逻辑,都必须回到 `开发者文档` 仓库同步更新对应的 Markdown 文档
- 接口变更 → 更新 API 文档
- 状态机变更 → 更新业务领域文档
- 新增依赖 → 更新环境搭建文档
---
## 三、Bug 定位与认领指南
遇到问题请遵循以下优先级在不同仓库定位:
| 问题现象 | 定位优先级与排查路径 | 对应仓库 |
| :--- | :--- | :--- |
|----------|---------------------|----------|
| **界面错位、样式崩塌、按钮点不动** | 纯展现问题。优先检查本地代码/组件状态。 | `yudao``uniapp` |
| **业务流程卡死、页面报 "Network Error"** | 前端先抓包F12 / 代理)如果接口没发出去或参数拼错,前端修。 | 首查 `yudao` / `uniapp` |
| **抓包显示后端返回 HTTP 500 或业务错误提示** | 明确的后端抛错。后端通过 TraceId 看日志,定位是逻辑 Bug 还是数据脏了。 | `aiot-platform-cloud` |
| **业务流程卡死、页面报 "Network Error"** | 前端先抓包F12 / 代理)如果接口没发出去或参数拼错,前端修。 | 首查 `yudao` / `uniapp` |
| **抓包显示后端返回 HTTP 500 或业务错误提示** | 明确的后端抛错。后端通过 TraceId 看日志,定位是逻辑 Bug 还是数据问题。 | `aiot-platform-cloud` |
| **App 上某个功能比 Web 上少字段** | 确认 API 契约是否有该字段。有则查移动端渲染;无则查后端接口适配。 | 跨仓联调确认 |
| **设备上线了但页面没刷新** | 确认链路:设备 -> 后端 (IoT) -> DB/MQ -> 后端接口 -> 前端。先看后端日志有没有收到报文。 | 首查 `cloud` 硬件链路 |
| **设备上线了但页面没刷新** | 确认链路:设备 后端 (IoT) DB/MQ 后端接口 前端。先看后端日志有没有收到报文。 | 首查 `cloud` 硬件链路 |
| **权限控制不生效(能看到不该看的菜单/按钮)** | 先确认前端权限指令是否正确使用;再确认后端接口是否有权限校验。 | 两端都要查 |
| **数据展示不一致Web 和 App 显示同一数据不同)** | 先确认两端调用的是同一接口;再确认接口返回是否一致;最后确认两端渲染逻辑。 | 跨仓联调确认 |
## 4. 文档与仓库的对应关系
- 有关 **表结构设计、API 定义、架构流转图** 的文档修改,通常伴随着 `aiot-platform-cloud` 的代码变更。
- 有关 **组件库规范、页面路由、打包脚本** 的问题,直接对应 `yudao-ui-admin-vben``aiot-uniapp`
- **强行规矩**:无论改了哪个仓的业务主逻辑,都必须回到 `开发者文档` 仓库同步更新对应的 Markdown 文档!
**核心原则**
- 先定位链路,再定位仓库
- 先确认现象,再确认根因
- 不要凭感觉甩锅,要凭证据认领
---
## 四、文档与仓库的对应关系
| 文档变更类型 | 通常伴随的代码变更 | 必须同步的文档位置 |
|-------------|-------------------|-------------------|
| 新增/修改/废弃接口 | `aiot-platform-cloud` 的 Controller/Service | Swagger/YApi + 对应业务域文档 |
| 核心业务状态机变更 | `aiot-platform-cloud` 的 Service/Enum | `02-Ops领域/``03-IoT领域/` 的状态图和说明 |
| 新增外部依赖或中间件 | `aiot-platform-cloud` 的 pom.xml / yml | `06-平台支撑/` + `README.md` 架构依赖 |
| 表结构重大重构 | `aiot-platform-cloud` 的 Entity/Mapper | 团队群内通报 + 实体关系说明文档 |
| 前端组件库变更 | `yudao-ui-admin-vben``packages/` | `04-前端开发/` 组件规范 |
| 移动端分包策略调整 | `aiot-uniapp``pages.json` | `05-移动端开发/` 工程结构 |
**强制规矩**
- 代码提交和文档更新必须在同一批次完成
- 如果文档更新滞后,必须在提交信息中标注「文档待补」并创建跟进任务
- 禁止「只改代码不改文档」
---
## 五、常见协作问题与解法
### 问题 1接口改了前端不知道
**解法**
- 后端在改接口前,必须先在 Swagger/YApi 标注「即将变更」
- 变更后,必须在团队群 @ 前端/移动端负责人
- 前端/移动端在联调前,必须先确认接口版本
### 问题 2状态枚举值不一致
**解法**
- 所有状态枚举必须在后端统一定义,前端/移动端禁止硬编码
- 后端提供 `/dict` 接口或常量文件,供前端/移动端同步
- 状态变更必须在后端发起,禁止前端/移动端私自改状态
### 问题 3Bug 归属扯皮
**解法**
- 按本文档第三章的表格先自查
- 自查后仍不明确,抓包/日志贴出来,团队一起判
- 判完后,责任人认领,其他人协助
### 问题 4文档过期没人管
**解法**
- 发现文档过期,立即提 Issue 或顺手更新
- 代码评审时,评审人必须检查「是否有文档同步」
- 把文档更新纳入 Definition of Done
---
## 六、给 AI 助手的特别提示
当你协助生成代码或排查问题时:
1. **先确认边界**:这个问题涉及哪个仓?不要默认是后端问题
2. **先查契约**:接口定义在哪?状态枚举在哪?不要硬编码
3. **区分事实和建议**:文档里写的是「已实现」还是「待补充」?
4. **不要编造代码细节**:如果没看过真实代码,不要写「具体实现如下」
5. **变更必须提醒文档同步**:如果你建议修改了接口或状态机,必须提醒同步更新文档
---
**本文档是协作的契约,不是参考材料。请严格遵守。**