3-backend_architecture.md 3.21 KB

⚙️ 后端架构师 | 步骤 3/7 | 24.5s


1. 推荐后端技术栈

  • .NET 8 / ASP.NET Core Web API:性能好、适合内网企业系统,类型安全,便于长期维护。
  • PostgreSQL:支持复杂查询、JSONB、事务、索引、分区,适合追溯与审计数据。
  • EF Core + Dapper:常规业务用 EF Core;追溯链路、报表查询用 Dapper 优化。
  • Redis 可选:缓存工艺路线、权限、设备状态。
  • Hangfire/Quartz.NET:报表导出、归档、补偿任务。
  • MinIO/文件服务器:保存测试附件、日志文件,数据库仅存 hash 与路径。

2. 后端分层架构

  • Controller/API:REST 接口、参数校验、鉴权、统一响应。
  • Application Service:编排用例,如扫码开工、提交测试、返修闭环。
  • Domain:工单、SN、工序任务、异常、返修等聚合与状态机规则。
  • Repository:封装 PostgreSQL 访问,避免业务层直接写 SQL。
  • Integration:MES/ERP/PLC/测试设备适配器,隔离外部协议。
  • Infrastructure:认证、审计、日志、缓存、文件、消息、定时任务。

3. 核心模块

工单管理、SN 管理、工序流转、扫码开工、测试结果/采集、异常返修、追溯查询、RBAC 权限、报表导出、系统配置、设备/工位/物料基础数据。

4. API 设计

选择 REST,流程型业务清晰、易审计。命名采用资源 + 动作:

  • POST /api/work-orders/{id}/release
  • POST /api/sn/{sn}/scan-start
  • POST /api/operations/{id}/test-results
  • GET /api/trace/sn/{sn}

鉴权:内网账号密码 + JWT,RBAC 控制角色与工序权限。
幂等:提交类接口支持 Idempotency-Key;扫码、测试提交用唯一约束防重复。统一返回 success、state、nextAction、errorCode

5. 集成边界

  • MES/ERP:通过 Integration 层同步工单、物料、入库状态。
  • PLC/测试设备:先支持文件/API 导入,后续扩展 TCP/OPC UA/MQTT。
  • 扫码枪:前端输入设备,后端只接收 SN 并校验。
  • 外部系统失败不阻断核心流程,采用任务重试与补偿。

6. 非功能设计

  • 事务一致性:扫码、状态变更、测试结果、事件日志同事务提交。
  • 并发控制:工序任务使用 row_version 乐观锁,关键状态加唯一约束。
  • 审计日志:事件表只追加,含 previous_hash/current_hash,管理员更正生成新事件。
  • 归档:按工单完成时间分区/归档事件与测试明细。
  • 限流:按用户/IP/设备限流,防止重复扫码和异常刷写。
  • 安全:最小权限、操作留痕、附件 hash 校验、内网 HTTPS。

7. 目录结构示例

src/
  RobotTrace.Api/
    Controllers/
    Middlewares/
  RobotTrace.Application/
    WorkOrders/
    Operations/
    Scan/
    Tests/
    Exceptions/
    Trace/
  RobotTrace.Domain/
    Entities/
    ValueObjects/
    Events/
    StateMachines/
  RobotTrace.Infrastructure/
    Persistence/
    Repositories/
    Auth/
    Audit/
    Files/
    Jobs/
  RobotTrace.Integration/
    Mes/
    Erp/
    Plc/
    TestDevices/
  RobotTrace.Contracts/
    Requests/
    Responses/
    ErrorCodes/