news 2026/10/3 19:59:20

【A11】近期实现架构:面向 EPC 工作流企业 QQ 化的第一阶段

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【A11】近期实现架构:面向 EPC 工作流企业 QQ 化的第一阶段

一、总体思路

远期目标是构建一个以 IM 为交互外壳、融合工作流、计划调度、文档增量同步的 EPC 协同平台。
近期只做第一阶段:PC 客户端登录 + 自动采集并上传资产指纹。

核心原则:

  • 近期做薄:只实现 HTTP 短连接、请求-响应模式,不引入 Flare-core。
  • 远期可扩展:用户体系、设备标识、认证方式、事件模型、Service 层全部为后续 IM、流程、计划、同步预留接口。
  • 服务边界清晰:近期是单体 Axum 服务,远期可拆分为 HTTP API、IM 网关、工作流引擎、计划调度器、文档同步服务。
  • 数据模型统一:用户、设备、事件三张核心表贯穿远期。

二、近期架构总览

~~~text
┌──────────────────────────────────────────────────────┐
│ PC 客户端 │
│ 登录模块 | 指纹采集模块 | 资产信息读取模块 | 上报模块 │
└───────────────────────┬──────────────────────────────┘
│ HTTPS / JSON
│ Authorization: Bearer
┌───────────────────────▼──────────────────────────────┐
│ Axum HTTP 服务(近期单体) │
│ │
│ ┌────────────┐ ┌────────────┐ ┌────────────────┐ │
│ │ 认证模块 │ │ 设备指纹接收│ │ 资产信息存储 │ │
│ │ /api/login │ │ /api/device│ │ /api/assets │ │
│ └────────────┘ └────────────┘ └────────────────┘ │
│ │
│ ┌────────────┐ ┌────────────┐ ┌────────────────┐ │
│ │ 设备管理 │ │ 审计日志 │ │ 配置管理 │ │
│ └────────────┘ └────────────┘ └────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────┐ │
│ │ Service 业务层 │ │
│ │ 认证服务 | 设备服务 | 资产服务 | 事件服务 │ │
│ └────────────────────────────────────────────────┘ │
└───────────────────────┬──────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ SQLite │ │ 本地文件存储 │ │ tracing 日志 │
│ sqlx 连接池 │ │ 配置文件/备份 │ │ 审计输出 │
└──────────────┘ └──────────────┘ └──────────────┘
~~~

远期扩展时,在现有 Axum HTTP 服务旁并列增加:

~~~text
┌──────────────────────────────────────────────────────┐
│ 远期服务群 │
│ Flare-core IM 网关 | 工作流引擎 | 计划调度器 │
│ 文档增量同步服务 | 消息队列 Kafka | Redis 缓存 │
└───────────────────────┬──────────────────────────────┘
│ 共享用户、设备、事件模型
┌───────────────────────▼──────────────────────────────┐
│ PostgreSQL / MinIO / Redis / Kafka │
└──────────────────────────────────────────────────────┘
~~~

三、近期模块划分

1. 认证模块

  • 接口:POST /api/login
  • 职责:验证用户名/密码,签发 JWT。
  • 技术:
    • axum提供路由;
    • argon2做密码哈希;
    • jsonwebtoken签发和校验 JWT;
    • JWT 中携带user_id、device_id、exp。
  • 中间件:基于 Axum Extractor 实现 JWT 提取器,保护后续接口。

2. 设备指纹接收模块

  • 接口:POST /api/device/report
  • 职责:接收 PC 客户端上报的设备指纹和资产信息。
  • 技术:
    • serde/serde_json反序列化;
    • 设备指纹由客户端生成,服务器只做校验和去重;
    • 单次上报数据量小,无需分块上传。
  • 关键字段:
    • 设备指纹:Machine GUID + CPU ID 的 SHA-256;
    • 资产信息:23 列中实际可读取字段,如 CPU 型号、核数、频率、内存、磁盘、主板序列号、OS 版本等。

3. 资产信息存储模块

  • 职责:持久化设备与资产数据,支持查询和版本记录。
  • 技术:
    • 起步用SQLite + sqlx;
    • 连接池SqlitePoolOptions;
    • 通过 sqlx 迁移管理表结构。
  • 表设计:
    • users:用户账户;
    • devices:设备注册与最后上线;
    • asset_info:资产详情;
    • audit_log:操作审计;
    • events:预留统一事件表。

4. 设备管理模块

  • 职责:
    • 设备首次上报自动注册;
    • 记录最后上线时间;
    • 支持按用户、部门查询设备列表。
  • 远期衔接:
    • device_id将成为 IM 消息发送者、流程参与者、计划执行者的标识。

5. 审计与日志模块

  • 技术:tracing+tracing-subscriber。
  • 记录:
    • 登录成功/失败;
    • 设备上报;
    • 资产变更;
    • 配置下发。
  • 审计日志写入audit_log表,包含操作者、时间、类型、变更前后哈希。

6. 配置管理模块

  • 技术:config-rs或figment。
  • 支持:
    • 环境变量;
    • 配置文件;
    • 默认值分层。
  • 管理服务器自身配置,也为远期客户端配置下发预留结构。

四、近期数据模型

~~~sql
– 用户表
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
password_hash TEXT NOT NULL,
display_name TEXT,
department TEXT,
created_at TEXT NOT NULL DEFAULT (datetime(‘now’))
);

– 设备表
CREATE TABLE devices (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
device_fingerprint TEXT NOT NULL UNIQUE,
hostname TEXT,
last_seen_at TEXT,
created_at TEXT NOT NULL DEFAULT (datetime(‘now’)),
FOREIGN KEY (user_id) REFERENCES users(id)
);

– 资产信息表
CREATE TABLE asset_info (
id INTEGER PRIMARY KEY AUTOINCREMENT,
device_id INTEGER NOT NULL UNIQUE,
cpu_model TEXT,
cpu_physical_cores INTEGER,
cpu_logical_cores INTEGER,
cpu_frequency_mhz INTEGER,
memory_total_gb REAL,
disk_total_gb REAL,
disk_serial TEXT,
board_serial TEXT,
os_name TEXT,
os_version TEXT,
hostname TEXT,
reported_at TEXT NOT NULL DEFAULT (datetime(‘now’)),
FOREIGN KEY (device_id) REFERENCES devices(id)
);

– 审计日志表
CREATE TABLE audit_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
device_id INTEGER,
action TEXT NOT NULL,
detail TEXT,
created_at TEXT NOT NULL DEFAULT (datetime(‘now’))
);

– 预留统一事件表
CREATE TABLE events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
event_type TEXT NOT NULL,
source_id TEXT,
target_id TEXT,
payload TEXT,
created_at TEXT NOT NULL DEFAULT (datetime(‘now’))
);
~~~

五、客户端采集与上报

  • 采集库:
    • sysinfo:CPU、内存、磁盘、OS、主机名;
    • device-fingerprint:Windows Machine GUID + CPU 特征,生成 SHA-256 指纹。
  • 上报流程:

~~~text
PC 客户端 服务器
│ │
│── POST /api/login ──────────────────→│
│←── { token, user_id, device_id } ────│
│ │
│ 本地采集指纹 + 资产信息 │
│ │
│── POST /api/device/report ──────────→│
│ Authorization: Bearer │
│←── { status: “ok” } ─────────────────│
~~~

  • 数据量:单次 JSON 通常几 KB,无需消息队列或后台任务。

六、近期接口清单

方法路径说明认证
POST/api/login用户登录,签发 JWT否
POST/api/device/report上报设备指纹与资产是
GET/api/devices/me查询当前用户设备列表是
GET/api/assets/:device_id查询指定设备资产是
GET/api/health健康检查否

七、与远期目标的衔接

1. 用户与设备标识统一

  • users.id、devices.id、device_fingerprint从第一阶段就稳定。
  • 远期 Flare-core 的HttpHookTokenValidator可直接调用现有认证接口。
  • IM 消息中的sender_id、device_id直接复用。

2. 认证体系复用

  • 近期 JWT 由 Axum 签发。
  • 远期 Flare-core IM 网关可校验同一套 JWT。
  • 无需重建用户体系。

3. Service 层解耦

  • 资产上报逻辑写在独立 Service 中。
  • Axum Handler 只做参数提取和调用 Service。
  • 远期 Flare-core 扩展点、工作流回调、计划任务可直接调用同一 Service。

4. 事件模型预留

  • events表可扩展为:
    • 聊天消息事件;
    • 流程节点事件;
    • 计划触发事件;
    • 文档同步完成事件。
  • 近期只写入资产上报事件,远期平滑扩展。

5. 存储演进

  • 近期:SQLite + 本地文件。
  • 远期:迁移到 PostgreSQL + MinIO + Redis + Kafka。
  • sqlx 支持多数据库,迁移成本可控。

6. 服务拆分路径

~~~text
近期:
Axum HTTP 单体
├── 认证
├── 设备
├── 资产
└── 审计

远期:
Axum HTTP API Flare-core IM 网关
工作流引擎 计划调度器
文档增量同步服务 消息队列 / 缓存
~~~

八、部署形态

  • 近期:
    • 单个 Rust 二进制;
    • SQLite 文件随服务部署;
    • systemd 或 Docker 运行;
    • 可选 Nginx/Caddy 反向代理并启用 HTTPS。
  • 远期:
    • HTTP API、IM 网关、工作流、调度器、同步服务独立部署;
    • 共享 PostgreSQL、Redis、MinIO、Kafka;
    • 按需水平扩展。

九、近期不启用 Flare-core 的理由

  • 当前是 HTTP 短连接,不需要 WebSocket/QUIC 长连接。
  • Flare-core 的价值在 IM 阶段:心跳、重连、消息路由、扩展点。
  • 过早引入会增加调试成本和框架锁定风险。
  • 远期在文字聊天开始时,将 Flare-core 作为独立 IM 网关引入,与现有 Axum 服务并列。

十、演进路线

  1. 第一阶段:PC 登录 + 资产指纹上报 + SQLite 存储。
  2. 第二阶段:设备管理、配置下发、审计完善。
  3. 第三阶段:引入 Flare-core,实现文字聊天与实时通知。
  4. 第四阶段:接入工作流引擎,流程即特殊聊天。
  5. 第五阶段:计划调度器驱动多流程定时发生。
  6. 第六阶段:文档增量同步后台管道,小时级同步。

十一、关键注意点

  • 不要在第一阶段引入 Flare-core。
  • 认证、用户、设备、事件模型要一次设计好。
  • Service 层与 Axum 解耦,为远期扩展点复用。
  • 数据库从 SQLite 起步,但 SQL 尽量保持 PostgreSQL 兼容。
  • 所有上报行为写入审计日志,满足企业资产追溯要求。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 19:55:07

HoloCubic_AIO LVGL8.3移植实战:显示、输入与文件系统初始化详解

HoloCubic_AIO LVGL8.3移植实战:显示、输入与文件系统初始化详解 【免费下载链接】HoloCubic_AIO HoloCubic超多功能AIO固件 基于esp32-arduino的天气时钟、相册、视频播放、桌面投屏、web服务、bilibili粉丝等 项目地址: https://gitcode.com/GitHub_Trending/ho…

作者头像 李华
网站建设 2026/10/3 19:54:35

如何用 LLM API 批量生成短视频脚本?一套可落地的 AI 生文工作流

如何用 LLM API 批量生成短视频脚本?一套可落地的 AI 生文工作流 我做内容时经常遇到一个很具体的卡点:素材已经有了,选题也记在表格里,但轮到写口播稿,光是把同一件事改成不同平台能用的表达,就要耗掉一整…

作者头像 李华
网站建设 2026/10/3 19:53:16

161万个WPT测试全通过:Moli的Web平台标准兼容性建设蓝图

161万个WPT测试全通过:Moli的Web平台标准兼容性建设蓝图 【免费下载链接】moli Best headless browser for AI agents. Lite, Fast, High-Compatibility. Built in Rust 项目地址: https://gitcode.com/gh_mirrors/moli/moli Moli 是一款用 Rust 编写的开源、…

作者头像 李华