设计说明
Ingot Chat 设计
问题与当前页面信息
→ 类型化查询计划
→ 权限、范围与工具白名单校验
→ check_data_quality / get_cycle_trace
→ 数字与结果与原始记录核对
→ 流式回答
Chat 的模型负责语言理解和回答组织。Platform 的确定性代码负责数据查询、权限、工具执行、数字和结果与原始记录核对。Chat 运行按用户 隔离,只能通过 /api/v1/chat/* 访问。
事件接入设计
使用方将任意来源映射为 ProductionEvent 批次,并调用 /api/v1/events:batch。Platform 负责以下确定性工作:
- 校验 Edge 令牌、
edgeId、批次大小和事件字段; - 校验
source前缀、事件 ID 与序号唯一性; - 以
eventId和(edgeId, seq)处理重复提交; - 保存中心数据并返回
ackSeq; - 提供查询、SSE 和按
correlationId的周期事件链。
数据源协议、现场缓存、重试时机和进程监管由使用方决定。标准契约避免把这些实现细节耦合到 Platform。
质量检验工作流
质量检验是生产周期的后续工作流,不把空白“检测录入”表单作为独立业务对象:
cycle.completed按产品、配方、设备和生效时间匹配已发布的InspectionPlan;没有匹配方案时不臆造待检任务;- 方案引用版本化
InspectionDefinition,配置必检项目、顺序、原始附件和复核要求;操作人员选择任务后带入只读的工件与生产周期号; - 原图先上传到受控长期存储,由服务端计算 SHA-256,再随检测记录保存引用;
- 历史检测记录可重新打开原图并追加不可变的复核结论,原图访问和复核动作写入审计日志,派生缩略图不能替代原图;
- 检测结果只表示观测结果,不等同于 QMS 放行或设备控制。
全局导航使用“质量检验”作为工作台入口;“新建检验记录”只是工作台中的动作。工件和生产周期号只能来自待检任务,不提供手工周期录入。检验提交、原图访问与复核统一使用 Platform 登录身份和角色,不设置检验专用用户或访问密码。
“质量方案”配置页维护检测定义和方案版本。已发布方案与检测定义版本不可覆盖;修改必须创建新版本。光学玻璃模压的视觉检查和人工终检只存在于可选样例配置,不是 Platform 默认规则。
角色由统一身份的声明提供:quality.inspector 可提交检测,quality.reviewer 可复核原图,process.engineer 可查询记录和历史比较,platform.admin 具有平台管理权限。开发环境可使用内置身份便于试用;生产环境必须由宿主认证建立用户身份。
同系列历史周期比较
GET /api/v1/cycle-comparisons/{correlationId} 以一个周期为基准,只选择 context.product_series 相同的历史周期。比较服务会读取每个周期的全量分页数据,计算采样完整率、配置要求的阶段完整性和已标记 useInComparison 的信号统计,并关联配方版本、检测结果及最新原图复核结论。阶段数量、信号代码和显示名称均来自已发布工艺配置,不由 Platform 写死。页面中的 50 是历史周期选择数量上限,不是单周期采样行数上限。
全量记录与有界传输
Web 时间线和 Chat 周期分析不能以 500 条作为业务范围上限。API 可以继续按 500 条分页传输,但页面与确定性分析工具必须持续翻页直至范围结束。模型只接收全量数据计算后的有界摘要,不直接处理无限原始行。
隔离与恢复
- Chat 的创建、列表、读取、SSE 和取消均按用户 鉴权;
- SSE 使用单调事件序号,客户端通过
Last-Event-ID恢复; - 服务重启后,中断的 Chat 运行进入明确终态;
- 事件提交按批校验,调用方应保存已提交序号并基于
ackSeq处理重试; - Chat 不持有数据源凭据,也不调用现场网络或设备接口。
参见 Ingot Chat 与生产事件规范。