Files
smart-project/docs/architecture.md
Jesxion cb0ef8c30c docs: 全面审阅修复
- architecture.md: 全面重写,对齐 Node.js+MySQL 技术栈,
  新增三个模块(隐患随手拍/施工日志/AI分析)到模块列表和架构图,
  更新数据流、租户隔离模型、部署架构、安全设计
- h5.md: 补充 6 个新页面 wireframe(3.7~3.14),
  更新页面清单(15个页面),API endpoint 前缀 /api → /v1,
  更新已知待确认项为已确认状态
- offline.md: 补充 hazards/construction_logs/ai_analyses 三个
  IndexedDB store,更新刷新策略表,
  补充 6 种离线操作类型(action 类型表)
- SPEC.md: 状态升级为"设计完成",版本升至 v0.2.1,
  所有待确认项均已确认(部署地址/推送凭证/OSS路径/JWT/台账)
2026-04-14 16:53:33 +08:00

9.0 KiB
Raw Permalink Blame History

系统架构设计

状态: 设计中


1. 系统架构图

                        ┌─────────────────────────────────────────┐
                        │           阿里云 OSS                    │
                        │  (jesxion-ai-studio, oss-cn-beijing)     │
                        │  隐患照片 / 施工日志照片 / 证书报告       │
                        └───────────────┬─────────────────────────┘
                                        │ upload / download
                                        ▼
┌──────────┐    ┌──────────────────────────────────────┐    ┌──────────────┐
│ 河南三农  │    │          后台 API 服务                 │    │  H5 客户端   │
│ 设备系统  │───▶│      Node.js / Express + TypeScript   │◀───│  (移动端浏览器)│
│          │    │                                      │    │              │
│ (统一推送  │    │  ┌────────────────────────────────┐  │    └──────────────┘
│  /input/  │    │  │  设备数据接入层  (device_adapter)│  │            ▲
│  post/    │    │  │  预警引擎        (alert_handler) │  │            │
│  call)    │    │  │  OSS 文件管理    (file_mgr)     │  │   polling (30s)
│          │    │  │  项目租户中间件  (project_mw)   │  │   JWT Auth
└──────────┘    │  │  REST API Routes              │  │            │
                │  └────────────────────────────────┘  │            │
                └────────────┬───────────────────────────┘            │
                             │                                       │
                             ▼                                       │
                ┌─────────────────────────┐                          │
                │      MySQL 8.0           │◀─────────────────────────┘
                │  (项目级逻辑租户隔离)     │
                │  devices / users         │
                │  hazards / logs         │
                │  ai_analysis_results    │
                └─────────────────────────┘

2. 技术栈

层级 技术选型 说明
后台 API Node.js / Express + TypeScript 轻量、高并发、易维护
数据库 MySQL 8.0 项目级逻辑租户隔离
H5 前端 原生 HTML/CSS/JS无框架依赖 低依赖、离线友好
文件存储 阿里云 OSS 隐患照片、施工日志照片
设备数据 河南三农统一推送接口 POST /input/post/call

3. 模块划分

3.1 后台 API 服务

职责:数据聚合层,统一对接设备推送数据,屏蔽异构数据源差异,对 H5 提供标准化 REST API。

模块 说明
device_adapter 设备 API 适配器:塔吊协议解析、升降机协议解析
alert_handler 预警接收与存储:接收设备推送的预警数据,存入 DB
file_mgr OSS 文件管理:上传凭证签发、下载 URL 签发、文件索引
project_middleware 项目租户中间件:从 JWT 解析 project_id注入所有查询条件
routes/auth 认证接口:登录
routes/devices 设备台账、实时数据、历史数据
routes/alerts 预警列表、详情、处理、忽略
routes/hazards 隐患随手拍:上报、列表、详情、认领、处理
routes/logs 施工日志:新建、列表、详情
routes/ai AI 智能分析:列表、详情
routes/oss OSS 文件:上传凭证、下载链接

3.2 H5 客户端

职责:移动端展示与操作界面,基于响应式 H5 开发,适配手机浏览器。

模块 说明
dashboard 首页仪表盘:设备统计、预警统计、快捷入口
device_list 设备列表:塔吊/升降机分类展示
device_detail 设备详情实时数据面板、历史曲线ECharts
alert_list 预警列表:危险/警告/已处理筛选
alert_detail 预警详情:处理/忽略操作
report 隐患随手拍:拍照 + 表单提交
reports 隐患列表:状态/类别/严重程度筛选
report_detail 隐患详情:认领/处理操作
log 施工日志:新建日志(含照片上传)
logs 日志列表:日期筛选
log_detail 日志详情:查看日志
ai_analyses AI 分析列表:类型筛选
ai_analysis_detail AI 分析详情:建议措施
profile 个人中心:账号信息、设置

4. 数据流向

4.1 设备数据采集(厂家 → 后台)

河南三农厂家系统(推送)
     │ (POST /input/post/call, Bearer Token)
     ▼
device_adapter (协议解析,统一入口)
     │
     ├── 基础信息 pushBasicInfo → 写入/更新 devices 表
     ├── 实时数据 pushRealTimeInfo → 写入 device_realtimeUPSERT
     ├── 工作循环 pushWorkCycleInfo → 写入 device_history
     ├── 塔吊报警 pushAlarmInfo → 写入 alert_records
     └── 升降机报警 pushAlarmInfo → 写入 alert_records

注:数据为主动推送,无需后台定时轮询。推送频率由厂家控制。 AI 分析结果同样通过厂家系统推送至 POST /input/post/call,写入 ai_analysis_results 表。

4.2 H5 数据请求H5 → 后台)

H5 浏览器
    │ GET /v1/devices
    │ GET /v1/devices/{id}/realtime
    │ GET /v1/alerts
    │ POST /v1/hazards
    │ GET /v1/logs
    │ GET /v1/ai/analyses
    ▼
JWT Auth Middleware (验证 token注入 project_id)
    │
    ▼
REST API Routes (Express)
    │
    ├──────────────┐
    ▼              ▼
MySQL             OSS
(结构化数据)      (文件 URLGET /v1/oss/download-url)

4.3 文件上传流程H5 → OSS

H5 客户端
    │ 1. POST /v1/oss/upload-token  → 获取预签名上传 URL
    │ 2. PUT {upload_url} + file   → 直传 OSS
    │
    ▼
后台 API记录索引
    └── oss_files 表写入 object_key + metadata

5. 租户隔离模型

项目级逻辑租户 — 所有表通过 project_id 字段区分项目归属。

请求进入
    │
    ▼
JWT 解析 → 获取 user.project_id
    │
    ▼
project_middleware 注入 project_id 条件
    │
    ▼
所有 DB 查询自动附加 WHERE project_id = ?
  • 用户注册/创建时绑定 project_id
  • API 中间件从 JWT Token 解析用户 project_id,注入到所有查询条件
  • 所有数据表均以 project_id 为隔离字段
  • 设备数据通过 devices.project_id 间接隔离

6. 部署架构

MVP 阶段采用轻量部署:

组件 部署方式
后台 API 阿里云函数计算FC或轻量服务器
MySQL 阿里云 RDS 或轻量服务器自建
OSS 阿里云 OSS 标准存储jesxion-ai-studio, oss-cn-beijing
H5 静态资源 Nginx 反向代理,或 OSS + CDN

前后端同域API 和静态资源共用同一域名Nginx 反向代理到后端服务。


7. 安全设计

措施 说明
HTTPS 全链路 HTTPS证书由阿里云管理
JWT Token 认证 有效期 7 天API 请求携带 Authorization: Bearer ***
项目隔离中间件 中间件层强制注入 project_id 过滤条件
CORS 限制允许的 H5 域名
OSS 鉴权 H5 通过后台签发临时 URL 访问 OSS 文件(有效 1 小时)
输入校验 Express + Joi 参数校验,参数化查询防 SQL 注入

8. 文档索引

文档 说明
SPEC.md 产品设计规格书
api.md 后台 API 接口设计
database.md 数据库表结构设计
h5.md H5 页面结构与交互设计
offline.md 离线数据方案

9. 待确认

  • 预警阈值配置 → 设备 API 自带预警判断,本系统仅做聚合展示
  • 设备 API 协议细节 → 河南三农统一推送接口8个接口已确认
  • 多租户隔离方案 → 项目级逻辑租户project_id 字段)
  • 后台 API 公网部署地址(阿里云服务器,部署时配置)
  • JWT Secret 管理(环境变量,部署时配置)