docs: 记录 connector 验收 (#152 #153)

This commit is contained in:
QiuSW
2026-08-31 15:36:19 +08:00
parent 130087a1ba
commit 9055f2522c
6 changed files with 170 additions and 52 deletions
+34 -29
View File
@@ -2,8 +2,8 @@
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Architecture-and-Code-Map
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Architecture-and-Code-Map.-
wiki_revision: 41c2193b2f1edb37abe1e8994d65d02207549039
synchronized_at: 2026-08-31T03:18:12Z
wiki_revision: b25498f58c690f787f0b572788617ef6b0d8ea7d
synchronized_at: 2026-08-31T07:23:02Z
<!-- gitea-wiki-mirror:end -->
# 架构与代码地图
@@ -298,51 +298,56 @@ Brain 解码层位于 `Brain/src/yovision_brain/decode/`,只依赖 #11 的内
<!-- brain-local-events-v1:end -->
<!-- sense-brain-contracts-v1:start -->
## Sense↔Brain v1 契约边界
## Sense↔Brain v1 connector 结构
- Sense→Brain 配置:`contracts/source-config/v1/source-config.schema.json`;版本 `yovision.source-config/v1`。
- Brain→Sense 状态:`contracts/runtime-status/v1/runtime-status.schema.json`;版本 `yovision.runtime-status/v1`。
- 共同测试:`contracts/tests/source-config-v1/`、`contracts/tests/runtime-status-v1/`。
- 生产者/消费者 mapper 责任分别记录在 `mapper-fields.md` 与 `mapping.md`;产品 adapter 后续由 #152 实现。
共享协议仍位于 `contracts/source-config/v1/**` 与 `contracts/runtime-status/v1/**`。#152 的产品实现位于:
数据流固定为:
- Sense:`Sense/server/app/sense/integration/brain_control/**`;运行投影迁移为 `2026083112000_brain_runtime.go`。
- Brain:`Brain/src/yovision_brain/integration/sense_control/**`。
- 双端集成测试:`Sense/tests/integration/brain_control/**`、`Brain/tests/integration/sense_control/**`。
数据流为:
```text
Sense Device/Profile/Area 内部事实
→ source-config/v1 mapper
→ Brain adapter(后续 #152)
→ Brain 内部配置与运行
→ runtime-status/v1 mapper
→ Sense 只读运维投影(后续 #152)
Sense Device/Profile/Area
→ source-config/v1 mapper + revision store
→ machine identity transport adapter
→ Brain strict consumer + last-known-good + persistent replay
→ runtime-status/v1 mapper + monotonic sequence
→ Sense read-only runtime projection + stale/offline/recovery
```
共享契约统一使用 snake_case 与 `schema_version: yovision.<contract>/v1`。源配置使用 `config_id + integer revision`;运行状态以 `configurations[]` 按 `config_id` 回报实际应用 revision。未知主版本、重复配置 ID、倒序状态、摘要失败或敏感字段必须拒绝,且不得覆盖最后已知有效配置/投影。
配置以 `config_id + integer revision` 唯一标识,状态以 Brain instance + sequence 保证时序。未知主版本、摘要失败、过期 revision、错误 Profile/几何或倒序状态拒绝且不覆盖最后有效事实。双端不共享数据库、用户会话、摄像头凭据或内部模型。
协议不得包含摄像头凭据、RTSP URL、query token、内部绝对路径、数据库模型、用户/JWT/Cookie 或 Bell Alert 语义。当前只冻结契约,没有新增网络端点、机器身份或跨端 connector。
#152 提供可注入传输 adapter 和持久恢复边界;根级进程编排及部署级 HTTP hosting 由 #154 绑定,#155 验证真实跨进程故障隔离。
<!-- sense-brain-contracts-v1:end -->
<!-- standard-event-evidence-v1:start -->
## 标准事件与证据 v1 契约边界
## 标准事件与证据 v1 connector 结构
- Event Schema:`contracts/events/v1/event.schema.json`,版本 `yovision.event/v1`。
- Bell 接入描述:`contracts/events/v1/openapi.json`,返回创建、重复、幂等冲突和不支持版本等明确结果。
- Evidence Schema/API:`contracts/evidence/v1/evidence-reference.schema.json`、`openapi.json`,版本 `yovision.evidence-reference/v1`。
- 共同测试:`contracts/tests/events-v1/`、`contracts/tests/evidence-v1/`。
共享协议仍位于 `contracts/events/v1/**`、`contracts/evidence/v1/**`,机器身份位于 `contracts/machine-identity/v1/**`。#153 的产品实现位于:
后续 #153 的映射流固定为:
- Brain producer:`Brain/src/yovision_brain/integration/event_export/**`,由 CLI `app/__main__.py` 按配置启用。
- Sense gateway/relay:`Sense/server/app/sense/integration/bell_connector/**`,由 API 启动链注册 `POST /v1/events`、`GET /v1/evidence/:evidence_id` 和 Bell Outbox Worker。
- Bell consumer:`Bell/server/app/bell/integration/event_ingress/**`,由 router registry 注册 `POST /v1/events`。
- 正式迁移:Sense/Bell 各自的 `2026083112000_*connector*.go` / `*event_ingress.go`。
默认数据流为:
```text
Brain internal candidate / Sense local event
→ yovision.event/v1 producer mapper
→ Sense Outbox relay(默认拓扑,保持原 producer/source ID)
→ Bell v1 ingress
→ Bell private immutable Event + permanent Receipt
Brain internal candidate
→ canonical yovision.event/v1
→ Sense authenticated ingress
→ Sense InboundEvent + EvidenceRecord + Bell Outbox(同事务)
→ HTTPS relay(原 payload/producer/source ID 不变)
→ Bell authenticated ingress
→ permanent Receipt + immutable Event + conflict audit
→ Bell private Rule / Alert / ack / close
```
规范载荷使用 RFC 8785 JCS 与 SHA-256 形成稳定摘要。同键同摘要返回原 Event;同键不同摘要返回冲突并审计,不覆盖原事实。Evidence 只提供逻辑引用与状态/完整性元数据,不授予访问权限,不包含本机路径、签名 URL 或凭据;取证授权由后续机器身份和 connector 工单实现。
规范载荷使用 RFC 8785 JCS 与 SHA-256。同键同摘要返回 duplicate;同键异摘要稳定冲突并审计。机器令牌 replay 与业务幂等分别持久化,传输重试签发新 jti,但不改变业务 ID。证据解析失败或不可用只更新独立降级状态,不允许上游写 Alert 语义。
Brain candidate、Sense candidate/Outbox 与 Bell Event/Receipt/Alert 继续是各自内部模型。当前没有新增可运行的跨端 ingress/relay,不能把冻结 Schema 解释为端到端链路已完成。
Sense 与 Bell 只使用各自默认数据库;连接器关闭时不注册相应入口/Worker,三端继续独立启动。根级部署、真实 PKI/网络和最终 E2E 属于 #154/#155。
<!-- standard-event-evidence-v1:end -->
<!-- machine-identity-v1:start -->