chore: 同步本地 v9 整改与运营能力
This commit is contained in:
@@ -9,6 +9,100 @@
|
||||
- 《后续工作计划》(2026-08-11 更新)确定混合架构:现有 Go 底座 + Python AI 微服务(`ai-service/`,规划中);生产环境全部上云,本地仅开发/训练/测试。
|
||||
- **YOLO 训练相关(计划 #1-4:数据集修复、训练环境、上传、基线训练)因物理机问题挂起**,当前按用户要求优先做「独立性强、见效快」的模块。
|
||||
- 开发服务器:`100.83.103.1`(Ubuntu 22.04,用户 `pan`),通过 NetBird VPN 访问;部署规则见 AGENTS.md「部署到开发服务器」章节。
|
||||
- 当前工作区:本地 v9 对象授权、运营能力、组织管理代码已实现但未提交;开发服务器仍为已部署的 schema v8。
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-16 补充:组织管理 Web 页面与成员列表接口
|
||||
|
||||
### 做了什么
|
||||
|
||||
- 后端新增 `GET /api/v1/organizations/:id/members`,返回成员及其用户用户名/姓名/邮箱/加入时间,并对非管理员做组织归属校验;
|
||||
- 新增 `web/src/pages/Organizations.tsx` 与 `web/src/dal/organization.ts`:组织列表、新增/编辑、成员抽屉、添加成员、移除成员;
|
||||
- Web 新增 `/organizations` 路由和「组织管理」菜单,权限为 `organization:manage`;
|
||||
- 组织成员角色限定为 `member/admin`,避免误填任意字符串。
|
||||
|
||||
### 设计思路与决策依据
|
||||
|
||||
- IAM-003 需要管理员可见的“组织 → 成员”操作界面,因此先补齐成员列表接口,再接入页面;
|
||||
- 页面复用现有 Ant Design + ProTable 风格,成员抽屉直接展示当前组织成员,添加时过滤已在组织内的用户;
|
||||
- 组织成员权限仍沿用现有后端 `organization:manage`,不在前端保存或修改授权规则。
|
||||
|
||||
### 验证结果
|
||||
|
||||
- `go test ./...`、`go build ./...` 通过;
|
||||
- `npm run build`、`npm run lint` 通过(仅既有无关 warning);
|
||||
- 未部署开发服务器,未执行 v9 迁移和真实组织成员管理联调。
|
||||
|
||||
### 回滚点
|
||||
|
||||
- 本任务尚未提交;删除 `web/src/pages/Organizations.tsx`、`web/src/dal/organization.ts`、路由/菜单,并还原 `organization.go` 即可;
|
||||
- 数据库无新增 schema;如已部署 v9,回滚仍按 v9 down migration 处理。
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-15 补充:对象授权覆盖设备链路与运营能力前端闭环
|
||||
|
||||
### 做了什么
|
||||
|
||||
- IAM-003 从“房间/设备/业务记录”扩展到完整设备链路:`sensors`、`thresholds`、`alarms`、`telemetry`、`control`、`video record`、`alarm clip` 均按设备所属蚕房/组织过滤或返回 403;
|
||||
- WebSocket 设备订阅改为 RBAC + `organization_members` 双重校验,跨组织用户不能再订阅同设备遥测;
|
||||
- 通知列表按当前用户隔离,管理员保留全局查看;
|
||||
- 案例草稿/待审核/驳回内容按来源蚕房组织或创建者可见,已发布案例仍全局共享;案例编辑和审核增加对象访问校验;
|
||||
- 修复 `firstAccessibleRoomID` 在无 `roomId` 创建摄像头时错误按 `rooms.room_id` 过滤的 SQL 缺陷,改为 `rooms.org_id`;
|
||||
- Web「运营能力」页补齐设备维护、产量损失的编辑/删除闭环,原有列表、新增、统计、案例库和实验室结果保持不变。
|
||||
|
||||
### 设计思路与决策依据
|
||||
|
||||
- 对象授权继续使用“组织 → 房间 → 业务对象”主链;`deviceKey` 作为遥测、告警、控制的统一入口,先解析到设备房间再判断;
|
||||
- WS 订阅不允许仅凭 `device:read` 角色权限跨组织访问,与 HTTP 对象授权保持一致;
|
||||
- 案例库是知识共享资产,因此已发布内容保持公开;非发布内容才按来源组织和创建者隔离;
|
||||
- 设备维护/产量损失延续现有后端状态与权限种子,不在前端引入新的数据访问层。
|
||||
|
||||
### 验证结果
|
||||
|
||||
- `scripts/verify.ps1` exit 0:Go test/vet/build、Web test/lint/build、小程序 test/typecheck/build、APP typecheck/lint、AI pytest 均通过;
|
||||
- 新增单测覆盖 sensor→device 归属解析、跨组织设备 403、`firstAccessibleRoomID` 组织范围、WS 组织成员放行/拒绝;
|
||||
- 未部署开发服务器,未执行 v9 迁移和真实多组织账号越权联调。
|
||||
|
||||
### 回滚点
|
||||
|
||||
- 本任务尚未提交;回滚代码时恢复工作区对应修改即可;
|
||||
- 若已执行 v9,数据库回滚执行 `migrations/000009_object_authority_and_business_capabilities.down.sql` 或恢复迁移前 `pg_dump`,随后回退旧二进制。
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-14 补充:对象授权与后续计划 P2 业务能力
|
||||
|
||||
### 做了什么
|
||||
|
||||
- 新增 schema v9:`organizations`、`organization_members`、`rooms.org_id`、`device_maintenance_records`、`production_loss_records`、`case_studies`、`laboratory_results`,并给 `rearing_records` 增加死亡/淘汰字段;
|
||||
- 实现 IAM-003 对象级授权底座:默认组织兼容历史数据、用户成员关系、房间/设备/视频/巡检/检测/会诊/溯源/生物安全等核心记录按组织房间过滤,列表隐藏、详情和写操作越权返回 403;
|
||||
- 新增组织管理接口:`GET/POST/PATCH /organizations`、组织成员添加/移除;
|
||||
- 新增 ENV-006 设备资产能力:`GET/POST/PATCH/DELETE /device-maintenance`,覆盖校准/故障/维护/固件记录;
|
||||
- 新增 FARM-006 产量损失能力:`GET/POST/PATCH/DELETE /production-loss-records` 与 `/production-loss-records/stats`;
|
||||
- 新增 KB-003 脱敏案例沉淀:`/case-studies` CRUD、从会诊生成草稿、`POST /case-studies/:id/review` 审核发布状态机;
|
||||
- 新增 TRACE-004 实验室结构化数据:`GET/POST/PATCH/DELETE /laboratory-results`,关联溯源/发病事件/样本并支持病原、分型、环境样本和报告字段;
|
||||
- Web 新增「运营能力」页:设备维护、产量损失统计、案例库审核、实验室结果四个工作区,路由 `/business`;
|
||||
- 新增权限种子:`organization:manage`、`device:write`、`farm:read/write`、`case:read/write`、`lab:read/write`,并按角色补入权限映射。
|
||||
|
||||
### 设计思路与决策依据
|
||||
|
||||
- 对象授权以“组织 → 房间 → 业务记录”为主链,设备、视频、批次、检测、会诊和溯源统一通过房间归属收敛,避免给每张表重复维护对象权限;
|
||||
- 历史数据通过 `default` 组织自动回填,新注册用户自动加入默认组织,避免升级后现有非管理员账号立刻失去可见性;
|
||||
- 新增业务能力沿用现有 CRUD、权限中间件和版本化 SQL 迁移模式,不引入新的数据访问层。
|
||||
|
||||
### 验证结果
|
||||
|
||||
- 已执行 `go test ./...` 通过;`go build ./...` 通过;
|
||||
- 已执行 `go vet ./...` 通过;`npm run lint`、`npm run build` 通过;
|
||||
- 新增单测覆盖对象授权查询、设备维护/产量损失/案例状态机/实验室结果校验、产量损失聚合;
|
||||
- 未部署开发服务器,schema 仍为本地 v9 迁移文件;服务器部署前需按 AGENTS.md 先备份、记录回滚点并执行迁移。
|
||||
|
||||
### 回滚点
|
||||
|
||||
- 本任务尚未提交;回滚代码时恢复工作区对应修改即可;
|
||||
- 若已在开发库执行 v9,回滚需先恢复迁移前 `pg_dump`,或执行 `migrations/000009_object_authority_and_business_capabilities.down.sql` 后再恢复旧二进制。
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user