同步调用 · 拿到结果才进下一步 异步事件 · 业务已受理,后续继续跑 本次新增 现有平台
用户接入层 · Vue 3 + Cesium

浏览器前端静态资源

三维地图圈选 · 自然语言输入 · 计划与确认界面 · SSE 客户端

网关基础设施层

前端经网关访问后端;日志、监控、密钥与网络都在这一层

Copilot 应用 · 独立 Spring Boot 模块化单体

业务应用层管权限、规则与业务接口,AI 能力层管理解与编排;两层初期同进程部署,代码包与职责仍分开。

会话与权限

校验请求格式与登录身份,加载会话上下文

意图与编排

Spring AI ChatClient · 工具调用 · RAG 检索 · 结构化输出校验

工具适配器

把设备、空域、航线、任务包成有契约的业务接口

草稿与确认

保存草稿及版本;确认时重查权限、空域与执行条件

模型服务层
  • 对话模型
  • Embedding 模型
  • 视觉模型
  • 外部推理端点
  • API Key 只在服务端

Spring AI 是 Java 应用调用模型的抽象,模型服务层是实际提供推理的端点,两者不是一回事;Spring AI Alibaba 只在确有需要时经适配层引入。

现有业务服务 · 权威操作,不为接 AI 而合并

设备服务

无人机、载荷、在线状态与可用性

空域服务

禁飞区、限飞区、授权与飞行约束

航线服务

生成航线、检查参数与约束

任务服务

创建任务、维护状态机、下发

遥测与告警

飞行状态、视觉告警、异常事件

报告服务

汇总任务、航迹、告警与影像

无人机与机场 · 真实设备

沿用平台既有的设备接入与遥测回传链路。Copilot 不直接操纵设备,起飞由任务服务在校验与确认之后驱动。

数据层 · 不同类型的数据交给合适的存储
异步链路 · 用户点确认之后怎么跑
  1. 任务状态变更与待发布事件写进同一个 PG 事务(outbox_event)
  2. Outbox 再发到 RocketMQ——事务与发消息不是同一个原子操作,靠可靠重试 + 幂等消费兜住
  3. 执行消费者调现有任务服务与设备控制链路下发
  4. 遥测与告警产生事件,消费者回写任务状态
  5. 任务结束发布完成事件,报告服务汇总生成
  6. Copilot 用 SSE 推状态、告警与报告进度
系统边界
模型超时或不可用返回明确的规划失败状态,不自动执行。
设备/空域服务超时标记待重试或失败,不把「未查询到」当成「没有限制」。
MQ 积压或重复投递按事件 ID 或业务幂等键去重;积压期间任务状态不变。
SSE 断开用任务查询接口恢复状态,必要时按事件 ID 补取。