From f61ade107b4b6a0e9ed1f003aeda3ed6b62710c4 Mon Sep 17 00:00:00 2001 From: andyesfly <35127884@qq.com> Date: Wed, 26 Aug 2026 10:55:17 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E9=91=AB=E6=BD=BC?= =?UTF-8?q?=E6=9E=B6=E6=9E=84=E6=96=87=E6=A1=A3=EF=BC=8C=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E8=BF=90=E8=90=A5=E7=AE=A1=E7=90=86APP=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增青色色系变量与对应的样式类 2. 调整图例顺序与文案,拆分运营相关端 3. 重构客户端层描述,从四端改为五端入口 4. 更新API路由分组,新增/ops路由 5. 补充对象存储为RustFS并更新说明 6. 新增运营管理APP模块与权限说明 7. 更新权限设计、权限流转与角色矩阵内容 8. 修正多处文案描述与功能细节 --- 系统设计/xintong-architecture-full.html | 97 ++++++++++++++++--------- 1 file changed, 61 insertions(+), 36 deletions(-) diff --git a/系统设计/xintong-architecture-full.html b/系统设计/xintong-architecture-full.html index 2455399..10b148f 100644 --- a/系统设计/xintong-architecture-full.html +++ b/系统设计/xintong-architecture-full.html @@ -19,6 +19,7 @@ --c-blue:#1d6fff; --c-blue-bg:#e8f1ff; --c-blue-d:#0c4dd1; --c-green:#0d9488; --c-green-bg:#e6f7f5; --c-green-d:#0a7068; --c-purple:#7c3aed; --c-purple-bg:#f0eaff; --c-purple-d:#5b21b6; + --c-teal:#0f766e; --c-teal-bg:#ccfbf1; --c-teal-d:#0d9488; --c-amber:#e0852b; --c-amber-bg:#fef3e2; --c-amber-d:#b5681a; --c-slate:#475569; --c-slate-bg:#f1f5f9; --c-slate-d:#334155; --c-red:#dc2626; --c-red-bg:#fee2e2; @@ -78,8 +79,9 @@ section{padding:40px 0} .dg-block ul li::before{content:"·";font-weight:700;margin-right:4px} .dg-blue{border-color:var(--c-blue);background:var(--c-blue-bg)} .dg-blue .di{background:var(--c-blue)} .dg-blue .dx{color:var(--c-blue-d)} .dg-blue .dt{color:var(--c-blue-d)} -.dg-green{border-color:var(--c-green);background:var(--c-green-bg)} .dg-green .di{background:var(--c-green)} .dg-green .dx{color:var(--c-green-d)} .dg-green .dt{color:var(--c-green-d)} .dg-purple{border-color:var(--c-purple);background:var(--c-purple-bg)} .dg-purple .di{background:var(--c-purple)} .dg-purple .dx{color:var(--c-purple-d)} .dg-purple .dt{color:var(--c-purple-d)} +.dg-teal{border-color:var(--c-teal);background:var(--c-teal-bg)} .dg-teal .di{background:var(--c-teal)} .dg-teal .dx{color:var(--c-teal-d)} .dg-teal .dt{color:var(--c-teal-d)} +.dg-green{border-color:var(--c-green);background:var(--c-green-bg)} .dg-green .di{background:var(--c-green)} .dg-green .dx{color:var(--c-green-d)} .dg-green .dt{color:var(--c-green-d)} .dg-amber{border-color:var(--c-amber);background:var(--c-amber-bg)} .dg-amber .di{background:var(--c-amber)} .dg-amber .dx{color:var(--c-amber-d)} .dg-amber .dt{color:var(--c-amber-d)} .dg-slate{border-color:var(--c-slate);background:var(--c-slate-bg)} .dg-slate .di{background:var(--c-slate)} .dg-slate .dx{color:var(--c-slate-d)} .dg-slate .dt{color:var(--c-slate-d)} .dg-ext{border-style:dashed;border-width:2px} @@ -254,10 +256,11 @@ footer .ft{font-size:13px;color:var(--muted);text-align:center}
运营管理平台 Web
-
共享电工 APP
+
运营管理 APP(业务员)
+
共享电工 APP
客户微信小程序
大华 ICC 外部
-
后端服务 Midway
+
后端服务 Midway
权限控制
@@ -267,15 +270,19 @@ footer .ft{font-size:13px;color:var(--muted);text-align:center}
L1 - 客户端层 — 四端入口 - 不同角色访问不同端 + 客户端层 — 五端入口 + 不同角色访问不同端,运营方双端(Web + APP)
PC
运营管理平台
Vue3 + Ant Design Vue
-
  • 用户:业务员 / 运营管理员
  • 客户/项目/派单/设备管理
  • 统计报表 / 月度报告
  • 系统管理(RBAC 菜单权限)
+
  • 用户:运营管理员
  • 审批/配置/报表/系统设置
  • 全量数据查看与管理
  • RBAC 菜单级权限
+
APP
运营管理 APP
uni-app → iOS / Android
+
  • 用户:业务员(运营方)
  • 客户管理 / 项目跟进
  • 勘察/回访/现场巡查
  • 共享 sys_user 表 + 角色区分
+
+
APP
共享电工 APP
uni-app → iOS / Android
  • 用户:共享电工
  • 五类派单接单处理
  • 现场水印拍照取证上传
  • 领料管理 / 报酬查询
@@ -301,7 +308,7 @@ footer .ft{font-size:13px;color:var(--muted);text-align:center}

统一鉴权

JWT 双 Token
多端统一登录态

-

API 路由分发

/admin · /worker
/customer 分组路由

+

API 路由分发

/admin · /ops · /worker
/customer 分组路由

接口数据权限

Interceptor 注入过滤
给什么数据看什么

限流与日志

rate-limiter
操作审计 winston

@@ -342,7 +349,7 @@ footer .ft{font-size:13px;color:var(--muted);text-align:center}
🐘

PostgreSQL 主库

业务数据(customer_id 逻辑隔离)
用电采集数据(按月分区)
TypeORM + 声明式分区

⚡

Redis 缓存

JWT 会话 Token
数据字典/热点配置
BullMQ 队列底层

-
📁

对象存储

取证照片(水印)
合同/验收/方案文件
月度报告文档

+
📁

对象存储 RustFS

取证照片(水印)
合同/验收/方案文件
月度报告文档
国产 · S3 兼容 · Apache 2.0

📬

BullMQ 消息队列

ICC 拉取数据缓冲
报警事件异步处理
基于 Redis 轻量级

@@ -378,7 +385,8 @@ footer .ft{font-size:13px;color:var(--muted);text-align:center}

🔒 权限控制方案(贯穿 L1 → L3)

-
运营后台(Web)— RBAC 菜单级
角色绑定菜单/按钮:运营管理员(全菜单)、业务员(客户/项目/方案/合同/回访)
+
运营管理平台(Web)— RBAC 菜单级
运营管理员:审批/配置/报表/系统设置,全量数据,全部菜单
+
运营管理 APP — 角色 + 数据权限
业务员:客户管理/项目跟进/勘察回访,按 salesman_id 过滤自己负责的数据
共享电工 APP — 接口级数据权限
接口按 worker_id 过滤:仅自己接的派单、个人报酬明细,给什么看什么
客户小程序 — 接口级数据权限
接口按 customer_id 过滤:仅本客户设备/用电/报警/月报/报修记录
@@ -396,12 +404,15 @@ footer .ft{font-size:13px;color:var(--muted);text-align:center}
-
CLIENT客户端层 · 四端入口不同角色访问不同端,统一鉴权
+
CLIENT客户端层 · 五端入口运营方双端(Web+APP),统一鉴权
-

运营管理平台(Web)

鑫潼内部人员使用:业务员、运营管理员

Vue3 + Ant Design Vue
+

运营管理平台(Web)

运营管理员使用:审批、配置、报表、系统设置

Vue3 + Ant Design Vue
+

运营管理 APP

业务员移动办公:客户管理、项目跟进、现场勘察回访

uni-app (iOS / Android)

共享电工 APP

共享电工接单、现场拍照取证、报酬查询

uni-app (iOS / Android)

客户微信小程序

客户查看用电/报警/月报、报修申请、评分

uni-app → 微信小程序
-

大华 ICC 管理平台

设备数据采集平台(厂家后台,非自研)

外部系统 · API 对接
+
+
+

大华 ICC 管理平台

设备数据采集平台(厂家后台,非自研)· API 对接

外部系统 · HTTP REST
▼
@@ -410,7 +421,7 @@ footer .ft{font-size:13px;color:var(--muted);text-align:center}
GATEWAY接入网关层 · 统一入口认证、路由、限流、日志

统一鉴权服务

JWT Token 签发与校验,多端统一登录态

Midway Guard + JWT
-

API 路由分发

按端区分路由前缀:/admin · /worker · /customer

Midway Controller 分组
+

API 路由分发

按端区分路由前缀:/admin · /ops · /worker · /customer

Midway Controller 分组

接口级数据权限

接口决定可见数据范围,APP/小程序给什么看什么

Guard + Interceptor

限流与日志

常规 ERP 并发量,请求日志与操作审计

rate-limiter + winston
@@ -439,7 +450,7 @@ footer .ft{font-size:13px;color:var(--muted);text-align:center}

PostgreSQL 主库

业务数据(逻辑隔离)+ 用电采集数据(按月分区)

TypeORM + 声明式分区

Redis 缓存

会话 Token、数据字典、热点配置、限流计数

ioredis
-

对象存储

取证照片、合同/验收/方案电子文件、月度报告

MinIO / 阿里云 OSS
+

对象存储

取证照片、合同/验收/方案电子文件、月度报告

RustFS(国产 · S3 兼容)

消息队列

ICC 拉取数据缓冲、报警事件异步处理

BullMQ (Redis 队列)
@@ -458,7 +469,7 @@ footer .ft{font-size:13px;color:var(--muted);text-align:center}

架构设计要点

-

① 不直接对接硬件:所有设备数据通过大华 ICC 平台 API 拉取,鑫潼系统只做数据消费方。② 四端共享一套后端:Midway.js 统一提供 /admin、/worker、/customer 三组路由,避免重复开发。③ ICC 内部虽实时推送,但鑫潼侧采用主动拉取,通过定时任务按采集频次拉取,进入 BullMQ 队列缓冲后写入分区表。

+

① 不直接对接硬件:所有设备数据通过大华 ICC 平台 API 拉取,鑫潼系统只做数据消费方。② 五端共享一套后端:Midway.js 统一提供 /admin(Web管理台)、/ops(运营APP)、/worker(电工APP)、/customer(小程序)四组路由,避免重复开发。③ 运营方双端同一套账号:运营管理平台(Web)和运营管理 APP(业务员)共用 sys_user 表,通过角色区分权限,共用 RBAC 体系。④ ICC 内部虽实时推送,但鑫潼侧采用主动拉取,通过定时任务按采集频次拉取,进入 BullMQ 队列缓冲后写入分区表。

@@ -476,13 +487,14 @@ footer .ft{font-size:13px;color:var(--muted);text-align:center} 后端框架Midway.jsNode.js · IoC + TypeORM阿里出品,TypeScript 原生支持,装饰器风格,模块化清晰 前端框架Vue 3 + Ant Design VueComposition APIAntDV 组件丰富,适合中后台 ERP 型管理系统 - APP 框架uni-app跨 iOS / Android一套代码多端发布,共享电工端仅需移动 App + 共享电工 APPuni-app跨 iOS / Android一套代码多端发布,共享电工端仅需移动 App + 运营管理 APPuni-app跨 iOS / Android业务员移动办公,共用 sys_user 表,复用 uni-app 技术栈 小程序uni-app → 微信小程序客户端使用复用 uni-app 技术栈,降低学习成本 数据库PostgreSQL15+时序数据分区成熟、多维聚合分析强、JSONB 灵活(详见下方对比) ORMTypeORMMidway 内置集成与 Midway 深度集成,支持 PostgreSQL 分区表 缓存Redis7.x会话、字典缓存、限流、BullMQ 队列底层 消息队列BullMQ基于 Redis轻量级,无需额外引入 Kafka,满足常规 ERP 并发 - 对象存储MinIO / 阿里云 OSS—取证照片、合同/验收文件、月度报告存档 + 对象存储RustFS(国产)S3 兼容 · Apache 2.0取证照片、合同/验收文件、月度报告存档,替代 MinIO 鉴权JWT双 Token 刷新多端统一,无状态易扩展 @@ -527,13 +539,13 @@ footer .ft{font-size:13px;color:var(--muted);text-align:center}
04 -

四端功能模块拆解

- 后端 · 前端 · APP · 小程序 +

五端功能模块拆解

+ 后端 · Web前端 · 运营APP · 电工APP · 小程序
-
BE

后端服务(Midway.js)

四端共享 · 统一 API
+
BE

后端服务(Midway.js)

五端共享 · 统一 API

客户管理服务

客户信息(省市县分类)、客户部门、客户访问账号分配

项目管理服务

建筑/房间、勘察派单、智电方案、合同、安装、验收、回访

@@ -551,14 +563,26 @@ footer .ft{font-size:13px;color:var(--muted);text-align:center}
-
PC

运营管理平台(Web 前端)

业务员 / 运营管理员
+
PC

运营管理平台(Web 前端)

运营管理员
-

客户管理

客户录入(省市县)、部门、建筑/房间配置、访问账号分配

-

项目管理

勘察派单、方案制定上传、合同登记、安装派单、验收管理、回访

+

运营工作台

全局数据概览、报警总览、派单总览、待办事项

+

审批与配置

方案审批、合同审批、派单规则配置、数据字典

运营派单

报警派单(从 ICC 拉取报警)、报修派单、维保派单、评分管理

设备监控

设备列表、线路分配(部门/房间)、设备状态、报警查询

统计报表

多维度用电统计、月度报告生成下载、共享电工报酬统计

-

系统管理

用户/角色/菜单权限配置、数据字典、日志审计

+

系统管理

用户/角色/菜单权限配置、员工管理、日志审计

+
+
+ +
+
APP

运营管理 APP(uni-app)

业务员(运营方)
+
+

客户管理

客户档案查看、联系人管理、客户项目列表(和后台功能一致,移动端适配)

+

项目管理

项目跟进、勘察任务、方案查看、合同查看、验收与回访

+

派单查看

负责客户的派单进度跟踪、报警处理进度、报修处理进度

+

现场巡查

现场拍照记录、巡查日志提交、问题上报

+

消息通知

派单提醒、报警推送、客户消息、系统通知

+

我的

个人信息、修改密码、负责客户统计、业绩查看

@@ -731,36 +755,36 @@ flowchart LR

权限设计原则

-

现阶段权限粗放管理:运营后台采用 RBAC 菜单级权限(角色绑定菜单/按钮);APP 和小程序的数据权限由接口定义——接口返回什么数据,端上就只能看到什么数据,不在端上做复杂权限判断。

+

现阶段权限粗放管理:运营方双端(Web + APP)共用 sys_user 表,采用 RBAC 菜单级权限(角色绑定菜单/按钮);共享电工 APP 和客户小程序的数据权限由接口定义——接口返回什么数据,端上就只能看到什么数据,不在端上做复杂权限判断。

权限流转链路

-
STEP 1

用户登录

运营后台:账号密码
APP:账号密码
小程序:微信 openid

+
STEP 1

用户登录

运营方双端:账号密码(sys_user)
电工APP:账号密码(worker)
小程序:微信 openid

→
-
STEP 2

JWT 签发

Token 携带:userId、role、customerId
双 Token 刷新

+
STEP 2

JWT 签发

Token 携带:userId、user_type、role、customerId
双 Token 刷新

→
-
STEP 3

菜单权限(后台)

RBAC:角色 → 菜单/按钮
后台根据角色渲染菜单

+
STEP 3

菜单/路由权限

运营方双端:RBAC 角色 → 菜单
电工APP/小程序:固定功能页

→
-
STEP 4

接口数据权限

接口根据 Token 身份过滤数据
APP/小程序给什么看什么

+
STEP 4

接口数据权限

接口根据 user_type + role 过滤数据
给什么看什么

角色与权限矩阵

- + - - - - + + + +
角色使用端菜单权限(RBAC)接口数据权限
角色使用端账号表菜单权限(RBAC)接口数据权限
运营管理员运营管理平台全部菜单:客户/项目/派单/设备/报表/系统管理可查看所有客户数据,全量派单管理
业务员运营管理平台客户/项目/方案/合同/回访(按需配置)仅自己负责的客户(user_id 过滤)
共享电工共享电工 APP—(APP 无菜单权限,固定功能)仅分配给自己的派单、个人报酬明细
客户微信小程序—(小程序固定功能页)仅本客户设备/用电/报警/月报/报修记录
运营管理员运营管理平台(Web)sys_user全部菜单:工作台/审批/派单/设备/报表/系统管理全量数据,所有客户和派单
业务员运营管理平台(Web)+ 运营管理 APPsys_user客户/项目/派单查看/报表查看(按需配置)仅自己负责的客户(salesman_id 过滤)
共享电工共享电工 APPworker—(APP 固定功能页)仅分配给自己的派单、个人报酬明细
客户微信小程序customer_account—(小程序固定功能页)仅本客户设备/用电/报警/月报/报修记录

接口级数据权限实现要点

-

① 共享电工:查询派单接口自动按 worker_id = 当前用户 过滤;报酬接口只返回本人数据。② 客户:查询设备/用电/报警接口自动按 customer_id = 当前客户 过滤;报修只能提交本客户的。③ 业务员:查询客户/项目接口按 salesman_id = 当前用户 过滤(运营管理员不受限)。通过 Midway Interceptor 统一注入过滤条件,避免每个接口手动处理。

+

① 共享电工:查询派单接口自动按 worker_id = 当前用户 过滤;报酬接口只返回本人数据。② 客户:查询设备/用电/报警接口自动按 customer_id = 当前客户 过滤;报修只能提交本客户的。③ 业务员(运营管理 APP + Web):查询客户/项目/派单接口按 salesman_id = 当前用户 过滤,只能看自己负责的客户数据(运营管理员不受限)。④ 运营方双端共用一套 RBAC:Web 管理台和运营管理 APP 共用 sys_user 表 + 角色体系,菜单权限由后端统一返回,前端/APP 根据返回动态渲染。通过 Midway Interceptor 统一注入过滤条件,避免每个接口手动处理。

@@ -825,7 +849,8 @@ flowchart TB ICC 接口文档待研究,按通用 REST API 模式预留用户确认 后台权限RBAC 菜单级,现阶段粗放管理用户确认 APP/小程序数据权限接口定义数据范围,给什么看什么用户确认 - APP 技术栈uni-app 跨 iOS/Android用户确认 + 共享电工 APP 技术栈uni-app 跨 iOS/Android用户确认 + 运营管理 APPuni-app,业务员使用,功能与后台一致,共用 sys_user 表用户确认 客户小程序微信小程序,运营后台分配账号用户确认 子账号待定,当前按单账号预留扩展用户确认(待定) 电子签章不需要,但需取证拍照(水印)用户确认