chore: 同步本地 v9 整改与运营能力

This commit is contained in:
weijuesen
2026-08-17 21:43:26 +08:00
parent 9a426039b7
commit d205d4845b
58 changed files with 4042 additions and 115 deletions
+24 -11
View File
@@ -4,7 +4,7 @@
系统提供 **Web 后台**、**React Native 移动端 APP**、**微信小程序** 三端界面,后端统一由 **Go 服务**提供 API。
> **最新进度**:AI 巡检闭环、知识库、分子检测、专家会诊、疫病溯源、天气预警、健康画像等已完成;整改 Task 0~14 代码与文档已完成并部署到开发服务器,详见根目录 `AGENTS.md`「已完成功能(截至 2026-08-14)」与 `开发交接记录.md`。
> **最新进度**:AI 巡检闭环、知识库、分子检测、专家会诊、疫病溯源、天气预警、健康画像等已完成;整改 Task 0~14 代码与文档已完成并部署到开发服务器。本地新增 v9 组织/房间对象授权、运营能力和组织管理页面,尚未部署,详见 `开发交接记录.md`。
## 1. 核心能力
@@ -43,7 +43,7 @@
### 1.5 RBAC 权限管理
- 4 个角色:`admin`(管理员)、`operator`(操作员)、`viewer`(查看者)、`farmer`(养殖员)
- 36 个权限码:基础看板/蚕房/设备/阈值/告警/视频/能耗/日志/用户/审计,并扩展知识库、巡检、蚕匾批次、分子检测、耗材、会诊、溯源、天气、订阅等
- 46 个权限码:基础看板/蚕房/设备/阈值/告警/视频/能耗/日志/用户/审计,并扩展知识库、巡检、蚕匾批次、分子检测、耗材、会诊、溯源、天气、订阅、组织、设备维护、产量损失、案例库、实验室
- 后端 `RequirePermission` 中间件校验权限码,admin 自动放行
- 前端路由守卫 + 菜单动态过滤 + `<HasPermission>` 按钮级控制
- 新用户注册默认角色为 `viewer`
@@ -65,6 +65,7 @@
- 蚕匾(`trays`)、蚕种批次(`batches`,含品种/蚕种来源/批次号/检疫证明/龄期/入房/上蔟)、饲养记录(`rearing_records`)三表 + CRUD
- Web「批次管理」页(批次 + 蚕匾 + 饲养记录);小程序蚕房详情展示蚕匾与当前批次
- 生物安全:种源与检疫链、消毒计划/执行、批次/蚕匾/样本二维码身份;小程序可扫码并现场提交消毒执行
- 运营能力:组织/房间级对象授权、设备校准/故障/维护/固件、产量损失统计、脱敏案例库、实验室结构化结果
### 1.9 AI 拍照巡检闭环(计划 #5/#6/#8/#9
@@ -120,6 +121,13 @@
- 用户 openid 绑定与订阅授权(`/wechat/bind|subscribe`);巡检风险非绿异步触发
- 真实推送需配置 `WECHAT_APPID/SECRET/TEMPLATE_*` 并申请订阅消息模板
### 1.18 组织与对象级授权(IAM-003
- `organizations` / `organization_members` + `rooms.org_id` 组成“组织 → 房间 → 业务记录”授权链
- 房间、设备、传感器、阈值、告警、遥测、控制、录像、巡检、检测、会诊、溯源、生物安全等核心对象按组织/房间过滤,越权返回 403
- WebSocket 设备订阅同时校验 RBAC 与组织成员关系
- Web「组织管理」页支持组织新增/编辑、成员添加/移除;默认组织兼容历史数据,新注册用户自动加入
## 2. 技术架构
```text
@@ -355,6 +363,11 @@ Authorization: Bearer <accessToken>
| `GET/POST /wechat/binding``/wechat/bind``/wechat/subscribe` | 微信订阅绑定/授权 |
| `GET/POST/PATCH /consultations(/:id)``/:id/resolve``/:id/archive` | 专家会诊 |
| `GET/POST/PATCH/DELETE /trace-records(/:id)``/:id/auto``/:id/checklist``/region-stats``/monthly-stats` | 疫病溯源与区域/月度统计 |
| `GET/POST/PATCH /organizations(/:id)``GET/POST/DELETE /organizations/:id/members(/:userId)` | 组织与成员数据范围 |
| `GET/POST/PATCH/DELETE /device-maintenance(/:id)` | 设备校准/故障/维护/固件 |
| `GET/POST/PATCH/DELETE /production-loss-records(/:id)``/stats` | 产量/死亡/淘汰/损失/成本 |
| `GET/POST/PATCH /case-studies(/:id)``/from-consultation/:id``/:id/review` | 脱敏案例沉淀与审核发布 |
| `GET/POST/PATCH/DELETE /laboratory-results(/:id)` | 实验室结构化结果/分子分型 |
| `GET /health-profiles/:roomId` | 蚕房健康画像 |
| `GET /detection-methods/recommend` | 多检测方式推荐 |
| `GET/POST/PATCH/DELETE /consumables``/consumables/alerts``/consumables/purchase-suggestions` | 耗材管理 |
@@ -431,7 +444,7 @@ Payload 示例:
### 10.1 PostgreSQL(业务数据)
保存用户、蚕房、设备、传感器、阈值、告警、摄像头、录像片段、审计日志、权限等业务数据。系统启动时先执行 `server-go/migrations/` 下的版本化 SQL 迁移,再初始化权限种子数据;生产环境禁用 AutoMigrate。
保存用户、蚕房、设备、传感器、阈值、告警、摄像头、录像片段、审计日志、权限等业务数据。系统启动时先执行 `server-go/migrations/` 下的版本化 SQL 迁移,再初始化权限种子数据;生产环境禁用 AutoMigrate。本地代码当前为 schema v9(对象授权与运营能力),开发服务器仍为已部署的 schema v8。
```env
PG=postgresql://postgres:pan@localhost:5432/silk
@@ -473,7 +486,7 @@ S3_BUCKET=silk-video-events
├── Go 后端 :3000 API 后端 (Gin)
├── 前端静态服务 :5174 Node.js server.cjs
├── Go 录制服务 :9090 recorder-go
├── PostgreSQL 16 :5432 业务数据库
├── PostgreSQL 14 :5432 业务数据库(实际版本 14
├── IoTDB 2.0.8 :18081 时序数据库
├── Valkey :6379 缓存
├── VerneMQ :1883 MQTT broker
@@ -489,13 +502,13 @@ S3_BUCKET=silk-video-events
```powershell
# 交叉编译
cd e:\silk\server-go
cd D:\silk-master-84e4ddc\server-go
$env:GOOS="linux"; $env:GOARCH="amd64"
go build -o server-go-linux ./cmd/server
$env:GOOS=""; $env:GOARCH=""
# 上传 + 启动(使用 sshpass + ConnectTimeout 避免卡死)
C:\msys64\usr\bin\sshpass.exe -p "pan" C:\msys64\usr\bin\scp.exe -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -o ConnectTimeout=10 e:\silk\server-go\server-go-linux pan@100.83.103.1:/home/pan/silk/server-go/
C:\msys64\usr\bin\sshpass.exe -p "pan" C:\msys64\usr\bin\scp.exe -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -o ConnectTimeout=10 D:\silk-master-84e4ddc\server-go\server-go-linux pan@100.83.103.1:/home/pan/silk/server-go/
C:\msys64\usr\bin\sshpass.exe -p "pan" C:\msys64\usr\bin\ssh.exe -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=ERROR -o ConnectTimeout=10 pan@100.83.103.1 "fuser -n tcp -k 3000 2>/dev/null; sleep 1; chmod +x /home/pan/silk/server-go/server-go-linux; setsid bash /home/pan/silk/server-go/start.sh </dev/null >/home/pan/silk/server-go/server-go.log 2>&1 &"
```
@@ -535,7 +548,7 @@ C:\msys64\usr\bin\sshpass.exe -p "pan" C:\msys64\usr\bin\ssh.exe -o StrictHostKe
### 12.1 Web 前端
```powershell
cd e:\silk\web
cd D:\silk-master-84e4ddc\web
npm install
npm run dev # 开发模式,端口 5173,代理 /api 到 :3000
npm run build # 生产构建
@@ -545,7 +558,7 @@ npm test # Vitest 单元测试
### 12.2 React Native APP
```powershell
cd e:\silk\app
cd D:\silk-master-84e4ddc\app
npm install
# 配置后端地址(.env 文件)
@@ -566,7 +579,7 @@ cd android
### 12.3 微信小程序
```powershell
cd e:\silk\miniapp
cd D:\silk-master-84e4ddc\miniapp
npm install
npm run dev:weapp # 微信小程序开发模式
@@ -578,7 +591,7 @@ npm run build:h5 # H5 生产构建
### 12.4 设备模拟器
```powershell
cd e:\silk\tools\simulator
cd D:\silk-master-84e4ddc\tools\simulator
npm install
npm run start
```
@@ -593,7 +606,7 @@ npm run start
### 12.6 ai-serviceAI 推理服务)
```powershell
cd e:\silk\ai-service
cd D:\silk-master-84e4ddc\ai-service
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt # Linux: .venv/bin/pip install -r requirements.txt
.venv\Scripts\python -m pytest tests -q # 单元测试