系统总览 #

这一页说明系统里每个模块负责什么、不负责什么,以及它们如何在运行时协作。当前阶段的目标不是把边界画得极其复杂,而是先把职责分开,避免后续代码和流程互相越界。

系统背景 #

lab-edu 是一个面向高校师生的实验教学平台,解决传统实验教学中设备资源受限、实验过程难以追踪、结果评估依赖人工的问题。平台的主要用户包括:学生(完成实验、提交结果、查看反馈)、教师(设计实验任务、监控进度、评估成绩)以及实验室管理员(管理设备资源、调度实验环境)。

web #

  • 负责页面展示、表单交互、前端状态管理与请求发起
  • 只通过接口调用 core,不直接访问数据库
  • 不承载业务规则的最终判断,不承担数据持久化

core #

  • 负责业务规则、权限校验、数据读写与对外 API
  • 为 web 提供统一的 HTTP 接口
  • 未来如果接入 ai-service 或 fpga-service,也由 core 作为协调层进行调用

ai-service #

  • 预留给智能分析、模型推理、内容生成等能力
  • 目前只定义边界,不要求马上落实现有业务
  • 与 core 的交互方式先按接口通信预留,具体协议后续再定

fpga-service #

  • 预留给硬件实验、加速执行或专用设备能力
  • 负责封装底层执行细节,对外只暴露稳定接口
  • 不直接暴露给 web,由 core 统一编排

边界原则 #

  • 模块之间只通过接口通信
  • 模块内部实现不跨仓库共享
  • 业务逻辑优先放在 core,前端只做展示和交互
  • 预留模块先定义名字和职责,不提前塞进复杂实现

系统拓扑 #

运行时各模块之间的连接关系如下:

  • web → nginx → core → db:用户浏览器请求经由 nginx 反向代理到达 core,core 负责业务处理并读写数据库。
  • core → ai-service:当需要智能分析、模型推理或内容生成时,core 作为协调层调用 ai-service 的接口。
  • core → fpga-service:当实验涉及硬件加速或专用设备时,core 统一编排并调用 fpga-service 的接口,web 不直接访问 fpga-service。

核心原则是:所有外部请求必须经过 core 进行权限校验和业务编排,其他服务不直接暴露给 web 层。

关联阅读 #