[BEL] 提供仅限开发测试的合成事件入口 #18

Closed
opened 2026-08-12 09:53:46 +08:00 by ila · 4 comments
Owner

当前状态:已完成

用户于 2026-08-14 明确验收通过。

基本信息

  • 类型:需求
  • 任务类型:单项目
  • 主项目:Bell
  • 主 agent:Bell agent
  • 所属 Epic:#7
  • 所属 MVP / 版本:#8
  • 阶段:三项目首个独立纵切

依赖与并行

  • 前置工单:#17
  • 是否允许与前置工单并行:否
  • 原因:合成事件入口必须复用已经验证的 Bell 内部入站、Event 和 Receipt 语义,不能另造临时数据模型。

子项目影响

  • 仅影响的子项目 / 交付单元:Bell
  • 是否跨子项目:否
  • 是否修改共享接口或契约:否;唯一事实来源:不适用,本工单只维护 Bell 内部实现
  • write_paths:Bell/server/app/synthetic/**、Bell/server/testdata/events/**、Bell/web/src/views/synthetic-event/**
  • 各子项目需要执行的验证:仅执行 Bell 后端、前端及 PostgreSQL 测试;Sense/Brain 无需启动或验证

协同接口

  • 生产者:不适用
  • 消费者:不适用
  • 契约/共享事实源:不适用
  • 兼容策略:不适用
  • 被阻塞或需要适配的工单:不适用
  • 集成顺序:不适用

原始需求

  • 来源:用户对话、Epic #7、MVP #8、Product-Requirements、Product-Roadmap、Requirements-Migration-Matrix
  • 提出时间:2026-08-12
  • 关键原话或脱敏摘要:先创建三个项目各自独立任务的全部工单,标题包含项目英文简称;Bell 首个纵切须在 Sense/Brain 不在线时以合成事件完成 Event → Alert → ack → close。

要解决什么

在 Sense/Brain 未启动且正式跨项目契约尚未冻结时,Bell 仍需要可重复的项目内合成事件入口来驱动和演示完整纵切,并覆盖有效、重复、冲突和无效输入。

做什么 / 不做什么

  • 做:提供仅限开发/测试环境启用的合成事件夹具与触发入口;复用内部规范化入站端口;提供最小 UI 或可复制命令生成事件;准备危险区域/越线等匿名、无客户数据的测试样例。
  • 不做:不把合成入口作为正式外部 API;不发布共享 Schema;不接入 Sense/Brain;不包含真实客户、摄像头、位置、人员或证据数据;生产配置不得启用。

已确认方案

合成适配器位于 Bell 项目内,只把内置安全夹具转换为内部规范化命令。它必须经过与未来外部适配器相同的 Event/Receipt 服务端口,不能直接写数据库。生产模式启动时入口不存在或明确拒绝。

预计修改文件:

  • Bell/server/app/synthetic/**
  • Bell/server/testdata/events/**
  • Bell/web/src/views/synthetic-event/**

需求变化记录

日期 变化内容 原因 用户确认
2026-08-12 无 初始建单 是

文档影响

  • 不影响长期文档,原因:不适用
  • 更新项目档案或本地开发与验证
  • 更新架构与代码地图
  • 更新业务规则与术语
  • 更新常见修改或故障排查
  • 更新其他 Wiki 页面:Bell 合成事件启用边界、夹具与验收命令

交付文档影响

  • 无交付文档影响,原因:不适用
  • 更新已有交付文档,受众与页面:开发/测试/演示人员,Bell 合成事件操作说明
  • 新增交付文档,受众与页面:
  • 需要目标岗位或客户代表验证:否;验证方式:非生产环境自动化与人工演示

验收标准

  • Sense/Brain 不启动时可通过 UI 或复制命令生成有效合成 Event
  • 合成事件走统一内部入站服务并产生 Event/Receipt,不直接写数据库
  • 重复、幂等键冲突、字段无效和证据引用缺失夹具可稳定复现预期结果
  • 夹具不含客户/个人/生产数据或秘密
  • 生产模式下合成入口不可发现且不可调用,不能只隐藏菜单
  • 页面复用已有表单、反馈和权限能力,无多余或失效入口

验证方式

Set-Location Bell/server
go test ./...
Set-Location ../web
pnpm lint
pnpm build:prod

分别以开发/测试和生产配置启动:前者执行所有合成夹具并核对 Event/Receipt,后者验证路由、菜单和后端入口均不可用。

未验证边界:Sense/Brain 的正式事件生产、跨项目机器身份、共享事件/证据契约、根级部署与端到端链路不在本工单验证;这些内容留待独立协同工单。

风险和回退

风险:合成入口若误入生产会成为未授权写入通道;夹具若绕过领域服务会给出虚假验收。回退:移除或关闭本工单合成模块及测试菜单,不回退 Event/Receipt 数据模型。

后续协同需求摘要

生产者:Sense、Brain、第三方事件源;消费者:Bell;目的:以后以正式机器身份和版本化事件契约替换项目内合成适配器;候选事实源:未来 contracts/ OpenAPI/JSON Schema;阻塞工单:正式外部事件 API;建议验证:合成与正式适配器对同一规范化输入的契约一致性。

## 当前状态:已完成 用户于 2026-08-14 明确验收通过。 ## 基本信息 - 类型:需求 - 任务类型:单项目 - 主项目:Bell - 主 agent:Bell agent - 所属 Epic:#7 - 所属 MVP / 版本:#8 - 阶段:三项目首个独立纵切 ## 依赖与并行 - 前置工单:#17 - 是否允许与前置工单并行:否 - 原因:合成事件入口必须复用已经验证的 Bell 内部入站、Event 和 Receipt 语义,不能另造临时数据模型。 ## 子项目影响 - 仅影响的子项目 / 交付单元:Bell - 是否跨子项目:否 - 是否修改共享接口或契约:否;唯一事实来源:不适用,本工单只维护 Bell 内部实现 - write_paths:`Bell/server/app/synthetic/**`、`Bell/server/testdata/events/**`、`Bell/web/src/views/synthetic-event/**` - 各子项目需要执行的验证:仅执行 Bell 后端、前端及 PostgreSQL 测试;Sense/Brain 无需启动或验证 ## 协同接口 - 生产者:不适用 - 消费者:不适用 - 契约/共享事实源:不适用 - 兼容策略:不适用 - 被阻塞或需要适配的工单:不适用 - 集成顺序:不适用 ## 原始需求 - 来源:用户对话、Epic #7、MVP #8、Product-Requirements、Product-Roadmap、Requirements-Migration-Matrix - 提出时间:2026-08-12 - 关键原话或脱敏摘要:先创建三个项目各自独立任务的全部工单,标题包含项目英文简称;Bell 首个纵切须在 Sense/Brain 不在线时以合成事件完成 Event → Alert → ack → close。 ## 要解决什么 在 Sense/Brain 未启动且正式跨项目契约尚未冻结时,Bell 仍需要可重复的项目内合成事件入口来驱动和演示完整纵切,并覆盖有效、重复、冲突和无效输入。 ## 做什么 / 不做什么 - 做:提供仅限开发/测试环境启用的合成事件夹具与触发入口;复用内部规范化入站端口;提供最小 UI 或可复制命令生成事件;准备危险区域/越线等匿名、无客户数据的测试样例。 - 不做:不把合成入口作为正式外部 API;不发布共享 Schema;不接入 Sense/Brain;不包含真实客户、摄像头、位置、人员或证据数据;生产配置不得启用。 ## 已确认方案 合成适配器位于 Bell 项目内,只把内置安全夹具转换为内部规范化命令。它必须经过与未来外部适配器相同的 Event/Receipt 服务端口,不能直接写数据库。生产模式启动时入口不存在或明确拒绝。 预计修改文件: - `Bell/server/app/synthetic/**` - `Bell/server/testdata/events/**` - `Bell/web/src/views/synthetic-event/**` ## 需求变化记录 | 日期 | 变化内容 | 原因 | 用户确认 | |---|---|---|---| | 2026-08-12 | 无 | 初始建单 | 是 | ## 文档影响 - [ ] 不影响长期文档,原因:不适用 - [x] 更新项目档案或本地开发与验证 - [x] 更新架构与代码地图 - [ ] 更新业务规则与术语 - [x] 更新常见修改或故障排查 - [x] 更新其他 Wiki 页面:Bell 合成事件启用边界、夹具与验收命令 ## 交付文档影响 - [ ] 无交付文档影响,原因:不适用 - [x] 更新已有交付文档,受众与页面:开发/测试/演示人员,Bell 合成事件操作说明 - [ ] 新增交付文档,受众与页面: - [x] 需要目标岗位或客户代表验证:否;验证方式:非生产环境自动化与人工演示 ## 验收标准 - [ ] Sense/Brain 不启动时可通过 UI 或复制命令生成有效合成 Event - [ ] 合成事件走统一内部入站服务并产生 Event/Receipt,不直接写数据库 - [ ] 重复、幂等键冲突、字段无效和证据引用缺失夹具可稳定复现预期结果 - [ ] 夹具不含客户/个人/生产数据或秘密 - [ ] 生产模式下合成入口不可发现且不可调用,不能只隐藏菜单 - [ ] 页面复用已有表单、反馈和权限能力,无多余或失效入口 ## 验证方式 ```powershell Set-Location Bell/server go test ./... Set-Location ../web pnpm lint pnpm build:prod ``` 分别以开发/测试和生产配置启动:前者执行所有合成夹具并核对 Event/Receipt,后者验证路由、菜单和后端入口均不可用。 未验证边界:Sense/Brain 的正式事件生产、跨项目机器身份、共享事件/证据契约、根级部署与端到端链路不在本工单验证;这些内容留待独立协同工单。 ## 风险和回退 风险:合成入口若误入生产会成为未授权写入通道;夹具若绕过领域服务会给出虚假验收。回退:移除或关闭本工单合成模块及测试菜单,不回退 Event/Receipt 数据模型。 ## 后续协同需求摘要 生产者:Sense、Brain、第三方事件源;消费者:Bell;目的:以后以正式机器身份和版本化事件契约替换项目内合成适配器;候选事实源:未来 `contracts/` OpenAPI/JSON Schema;阻塞工单:正式外部事件 API;建议验证:合成与正式适配器对同一规范化输入的契约一致性。
ila added the kind/taskpriority/p0project/bellscope/independent labels 2026-08-12 09:58:45 +08:00
Author
Owner

状态:进行中(2026-08-12)

前置 #17 已完成并推送。开始实现 Bell 项目内安全夹具、统一 Event/Receipt 服务调用、开发环境专用 API 与权限入口;生产环境不注册对应路由,确保不是仅隐藏菜单。

## 状态:进行中(2026-08-12) 前置 #17 已完成并推送。开始实现 Bell 项目内安全夹具、统一 Event/Receipt 服务调用、开发环境专用 API 与权限入口;生产环境不注册对应路由,确保不是仅隐藏菜单。
Author
Owner

实施完成,进入连续依赖验证

  • 实现提交:55d54d0(已推送)
  • 开发环境夹具列表:200
  • 首次注入:201;同键同夹具:200 且返回原收据
  • 同键不同夹具:409;无效字段/缺证据夹具:400
  • 所有成功注入均调用 #17 Event/Receipt 服务,集成测试验证未直写数据库
  • BELL_ENV=production 合成路由:404(未注册,不是仅隐藏菜单)
  • Go 测试、前端 lint/build、Harness、差异检查:通过

#19 所需的稳定 Event、合成输入和独立 RBAC 均已完成,继续实施规则匹配与 Event-Alert 链路。

## 实施完成,进入连续依赖验证 - 实现提交:`55d54d0`(已推送) - 开发环境夹具列表:200 - 首次注入:201;同键同夹具:200 且返回原收据 - 同键不同夹具:409;无效字段/缺证据夹具:400 - 所有成功注入均调用 #17 Event/Receipt 服务,集成测试验证未直写数据库 - `BELL_ENV=production` 合成路由:404(未注册,不是仅隐藏菜单) - Go 测试、前端 lint/build、Harness、差异检查:通过 #19 所需的稳定 Event、合成输入和独立 RBAC 均已完成,继续实施规则匹配与 Event-Alert 链路。
Author
Owner

最终证据:待验收

  • 实现提交:55d54d0(PR #35)
  • 长期文档与归档协调:#36 / PR #38
  • Wiki 归档 revision:2ce181d6bd90
  • 本地只读镜像:docs/task/18-Bell开发测试合成事件入口.md
  • 文档镜像提交:e2a4345、3c245e1
  • 文档验证:36 个 Wiki 映射一致;DevHarness 通过;31 项 unittest 通过;git diff --check 通过

实现、自动测试、Wiki、镜像、提交、推送与 PR 证据已齐。人工验收前本工单保持开启,不关闭、不勾选父工单。

## 最终证据:待验收 - 实现提交:`55d54d0`(PR #35) - 长期文档与归档协调:#36 / PR #38 - Wiki 归档 revision:`2ce181d6bd90` - 本地只读镜像:`docs/task/18-Bell开发测试合成事件入口.md` - 文档镜像提交:`e2a4345`、`3c245e1` - 文档验证:36 个 Wiki 映射一致;DevHarness 通过;31 项 unittest 通过;`git diff --check` 通过 实现、自动测试、Wiki、镜像、提交、推送与 PR 证据已齐。人工验收前本工单保持开启,不关闭、不勾选父工单。
Author
Owner

用户验收通过(2026-08-14)

用户已明确确认当前未验收工单通过验收。本工单的实现、测试与既有证据按记录接受,Wiki 归档状态已更新为“已完成”(revision d670ad3a6d04)。该交付属于重建前历史实现;Wiki 归档已完成,代码与原归档镜像继续保留在 explore 追溯。

此验收不改变 #58 的架构决定:旧自研基础框架不会恢复为 dev 基线,Sense/Bell 后续仍分别由 #61/#62 从冻结 GoAdmin 源码重建。

## 用户验收通过(2026-08-14) 用户已明确确认当前未验收工单通过验收。本工单的实现、测试与既有证据按记录接受,Wiki 归档状态已更新为“已完成”(revision `d670ad3a6d04`)。该交付属于重建前历史实现;Wiki 归档已完成,代码与原归档镜像继续保留在 `explore` 追溯。 此验收不改变 #58 的架构决定:旧自研基础框架不会恢复为 `dev` 基线,Sense/Bell 后续仍分别由 #61/#62 从冻结 GoAdmin 源码重建。
ila closed this issue 2026-08-14 10:06:44 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ila/yovision#18