[SEN] 实现 MediaMTX 分片分配与故障范围可观察 #77

Closed
opened 2026-08-14 10:29:14 +08:00 by ila · 5 comments
Owner

状态

已完成(用户已验收)

基本信息

  • 类型:需求 / Sense 单项目独立任务
  • 任务类型:单项目
  • 主项目:Sense
  • 主 agent:Sense agent
  • 所属 Epic:#7
  • 所属 MVP / 版本:#80
  • 前置工单:#67、#75、#76
  • 是否允许与前置工单并行:否;必须先冻结前置领域接口
  • 独立运行:Brain、Bell 均不启动时完成实现和验收
  • 需求编号:SEN-013(仅 Sense Media 分片部分)

原始需求与追溯

  • 来源:用户于 2026-08-14 要求建立 Sense 全部独立任务;Product-Requirements、Requirements-Migration-Matrix 和 Sense/AGENTS.md。
  • 摘要:Sense 单产品能够独立完成的后续能力全部建单;跨项目正式契约、Brain 控制和 Bell connector 留给协调工单。
  • 旧 explore 只用于需求、行为与测试对照,不复制自研基础框架。

目标

在 Sense 内管理多个 MediaMTX 分片的容量、路径分配和故障影响范围,使容量来自压测与配置而非硬编码。

范围

实现媒体分片台账、容量指标、稳定分配、故障范围展示和只读迁移预检。

非目标

不实现 Brain 分片;不执行跨分片高风险迁移;不修改根级部署;不发布共享控制契约。

GoAdmin 复用要求

复用 #61/#64 建立的 GoAdmin/go-admin-ui 认证、RBAC、审计、Router、Store、Axios、Layout、表格、表单、分页、Dialog、Tag 和权限按钮;实施前读取相关冻结 go-admin-doc 并在评论记录采用方式。业务专用组件必须说明复用缺口并保持整体风格。

写路径

  • Sense/server/app/sense/media_shard/**
  • Sense/server/database/migrations/*media_shard*
  • Sense/ui/src/views/sense/media-shard/**
  • Sense/ui/src/api/sense/media-shard*
  • Sense/tests/media_shard/**

禁止写入:Brain/**、Bell/**、contracts/**、根级构建/部署、docs/**、wiki-docs.json。需要共享路径时停止并转协调工单。

文档影响

更新对应 Sense Wiki 业务规则、配置、运行、排错和验收页面;本地镜像由单一协调工单同步。

验收标准

  • 多 MediaMTX 分片容量和路径归属可观察
  • 分配稳定且不以 16/128 作为硬编码上限
  • 单分片故障的设备/Profile 影响范围可定位
  • 跨分片迁移仅预检并提示需独立高风险工单
  • Brain/Bell 不启动时可用多个测试 MediaMTX 验收

验证方式

  • 分配稳定性、容量、故障投影和并发测试
  • 多 MediaMTX 进程集成 smoke
  • 前端分片列表、详情和影响范围测试

风险与回退

错误分配可扩大视频中断。迁移默认禁用,分配变更需审计;回退到原分片映射。

协同需求摘要

本工单只实现 Sense 内部端口和夹具。涉及 Sense→Brain、Brain→Sense、Sense/Brain→Bell 的正式 schema、机器身份、部署或 E2E 时另建协调工单。

## 状态 已完成(用户已验收) ## 基本信息 - 类型:需求 / Sense 单项目独立任务 - 任务类型:单项目 - 主项目:Sense - 主 agent:Sense agent - 所属 Epic:#7 - 所属 MVP / 版本:#80 - 前置工单:#67、#75、#76 - 是否允许与前置工单并行:否;必须先冻结前置领域接口 - 独立运行:Brain、Bell 均不启动时完成实现和验收 - 需求编号:SEN-013(仅 Sense Media 分片部分) ## 原始需求与追溯 - 来源:用户于 2026-08-14 要求建立 Sense 全部独立任务;Product-Requirements、Requirements-Migration-Matrix 和 Sense/AGENTS.md。 - 摘要:Sense 单产品能够独立完成的后续能力全部建单;跨项目正式契约、Brain 控制和 Bell connector 留给协调工单。 - 旧 `explore` 只用于需求、行为与测试对照,不复制自研基础框架。 ## 目标 在 Sense 内管理多个 MediaMTX 分片的容量、路径分配和故障影响范围,使容量来自压测与配置而非硬编码。 ## 范围 实现媒体分片台账、容量指标、稳定分配、故障范围展示和只读迁移预检。 ## 非目标 不实现 Brain 分片;不执行跨分片高风险迁移;不修改根级部署;不发布共享控制契约。 ## GoAdmin 复用要求 复用 #61/#64 建立的 GoAdmin/go-admin-ui 认证、RBAC、审计、Router、Store、Axios、Layout、表格、表单、分页、Dialog、Tag 和权限按钮;实施前读取相关冻结 go-admin-doc 并在评论记录采用方式。业务专用组件必须说明复用缺口并保持整体风格。 ## 写路径 - `Sense/server/app/sense/media_shard/**` - `Sense/server/database/migrations/*media_shard*` - `Sense/ui/src/views/sense/media-shard/**` - `Sense/ui/src/api/sense/media-shard*` - `Sense/tests/media_shard/**` 禁止写入:`Brain/**`、`Bell/**`、`contracts/**`、根级构建/部署、`docs/**`、`wiki-docs.json`。需要共享路径时停止并转协调工单。 ## 文档影响 更新对应 Sense Wiki 业务规则、配置、运行、排错和验收页面;本地镜像由单一协调工单同步。 ## 验收标准 - [x] 多 MediaMTX 分片容量和路径归属可观察 - [x] 分配稳定且不以 16/128 作为硬编码上限 - [x] 单分片故障的设备/Profile 影响范围可定位 - [x] 跨分片迁移仅预检并提示需独立高风险工单 - [x] Brain/Bell 不启动时可用多个测试 MediaMTX 验收 ## 验证方式 - 分配稳定性、容量、故障投影和并发测试 - 多 MediaMTX 进程集成 smoke - 前端分片列表、详情和影响范围测试 ## 风险与回退 错误分配可扩大视频中断。迁移默认禁用,分配变更需审计;回退到原分片映射。 ## 协同需求摘要 本工单只实现 Sense 内部端口和夹具。涉及 Sense→Brain、Brain→Sense、Sense/Brain→Bell 的正式 schema、机器身份、部署或 E2E 时另建协调工单。
ila added the kind/taskproject/sensescope/independent labels 2026-08-14 10:29:14 +08:00
Author
Owner

设计证据门禁:原型 v0.1 待审核(2026-08-28)

前置工单 #67、#75、#76 均已关闭,依赖满足。由于本工单新增“媒体分片”列表、详情、故障影响范围与迁移预检交互,按双门禁先提交可审阅原型;用户确认前不实施生产代码。

版本与识别

  • 版本:v0.1
  • 生成日期:2026-08-28(Asia/Shanghai)
  • 审核载体:当前 Codex 对话内 Sense 媒体分片 交互原型
  • 仓库外源文件:D:\OPC\yovision-visualizations\issue-77\sense-media-shards.html
  • 状态:等待用户审核
  • 未导出到仓库 prototypes/;用户未要求离线原型交付

覆盖范围

  • 复用 GoAdmin/go-admin-ui 应用外壳:侧边栏、顶部栏、TagsView、页面容器、表格、分页、Dialog、Tag、Alert、按钮与固定右侧操作列。
  • 新增“本地运维 / 媒体分片”入口;展示分片名称、受管/外部运行方式、Control API 可达状态、配置容量、路径归属、正常/等待/故障路径和最近采集时间。
  • 支持三种审核场景:运行稳定、单分片故障、容量紧张。
  • 单分片故障时汇总受影响路径,并在详情中定位设备、Profile 和路径引用;其他分片保持独立状态。
  • 容量明确来自各分片配置与压测结论,不使用 16/128 作为硬编码上限;路径归属以稳定哈希概念展示。
  • “跨分片迁移预检”只读展示候选目标、剩余容量、源状态和授权/回退缺口;页面没有执行迁移入口,并提示必须另建高风险工单。
  • Brain/Bell 不进入页面状态或依赖链。

原型验证

  • 已验证稳定、单分片故障、容量紧张三种场景切换。
  • 已验证故障分片详情、受影响设备/Profile 列表、只读迁移预检及关闭路径。
  • 已验证动态概览、故障 Alert、容量进度、固定右侧详情入口、ARIA 状态与键盘语义控件。
  • 默认宽度无页面级横向溢出;宽表由局部横向滚动承载;移动断点将场景按钮和主要操作提升至至少 44px。
  • 浏览器 DOM 与主要交互检查通过,没有出现脚本运行错误。

设计取舍

ui-ux-pro-max 用于校准数据密度、故障影响表达、非颜色单一编码、加载反馈、响应式与可访问性;视觉仍严格沿用已确认的 GoAdmin/Element Plus 管理端风格,没有采用其建议中与现有产品不一致的玫红配色或独立字体。

非目标

原型不实现数据库模型、稳定分配算法、多个真实 MediaMTX 进程、迁移执行、Brain 分片、共享控制契约、根级部署或生产容量承诺。

## 设计证据门禁:原型 v0.1 待审核(2026-08-28) 前置工单 #67、#75、#76 均已关闭,依赖满足。由于本工单新增“媒体分片”列表、详情、故障影响范围与迁移预检交互,按双门禁先提交可审阅原型;用户确认前不实施生产代码。 ### 版本与识别 - 版本:v0.1 - 生成日期:2026-08-28(Asia/Shanghai) - 审核载体:当前 Codex 对话内 `Sense 媒体分片` 交互原型 - 仓库外源文件:`D:\OPC\yovision-visualizations\issue-77\sense-media-shards.html` - 状态:等待用户审核 - 未导出到仓库 `prototypes/`;用户未要求离线原型交付 ### 覆盖范围 - 复用 GoAdmin/go-admin-ui 应用外壳:侧边栏、顶部栏、TagsView、页面容器、表格、分页、Dialog、Tag、Alert、按钮与固定右侧操作列。 - 新增“本地运维 / 媒体分片”入口;展示分片名称、受管/外部运行方式、Control API 可达状态、配置容量、路径归属、正常/等待/故障路径和最近采集时间。 - 支持三种审核场景:运行稳定、单分片故障、容量紧张。 - 单分片故障时汇总受影响路径,并在详情中定位设备、Profile 和路径引用;其他分片保持独立状态。 - 容量明确来自各分片配置与压测结论,不使用 16/128 作为硬编码上限;路径归属以稳定哈希概念展示。 - “跨分片迁移预检”只读展示候选目标、剩余容量、源状态和授权/回退缺口;页面没有执行迁移入口,并提示必须另建高风险工单。 - Brain/Bell 不进入页面状态或依赖链。 ### 原型验证 - 已验证稳定、单分片故障、容量紧张三种场景切换。 - 已验证故障分片详情、受影响设备/Profile 列表、只读迁移预检及关闭路径。 - 已验证动态概览、故障 Alert、容量进度、固定右侧详情入口、ARIA 状态与键盘语义控件。 - 默认宽度无页面级横向溢出;宽表由局部横向滚动承载;移动断点将场景按钮和主要操作提升至至少 44px。 - 浏览器 DOM 与主要交互检查通过,没有出现脚本运行错误。 ### 设计取舍 `ui-ux-pro-max` 用于校准数据密度、故障影响表达、非颜色单一编码、加载反馈、响应式与可访问性;视觉仍严格沿用已确认的 GoAdmin/Element Plus 管理端风格,没有采用其建议中与现有产品不一致的玫红配色或独立字体。 ### 非目标 原型不实现数据库模型、稳定分配算法、多个真实 MediaMTX 进程、迁移执行、Brain 分片、共享控制契约、根级部署或生产容量承诺。
Author
Owner

原型 v0.1 用户审核通过

  • 确认人:用户
  • 确认时间:2026-08-28(Asia/Shanghai)
  • 用户明确指令:#77 原型 v0.1通过审核
  • 版本识别:当前 Codex 对话内 Sense 媒体分片 原型 v0.1;仓库外源文件 D:\OPC\yovision-visualizations\issue-77\sense-media-shards.html
  • 状态:已确认,可进入正式实现
  • 覆盖范围:GoAdmin 页面外壳、分片台账、受管/外部方式、配置容量、稳定路径归属、运行/故障/容量紧张场景、故障设备/Profile 影响范围、只读迁移预检、响应式与可访问性。
  • 非目标保持:不执行跨分片迁移、不实现 Brain 分片、不发布共享控制契约、不修改根级部署、不作未经压测的生产容量承诺。
## 原型 v0.1 用户审核通过 - 确认人:用户 - 确认时间:2026-08-28(Asia/Shanghai) - 用户明确指令:`#77 原型 v0.1通过审核` - 版本识别:当前 Codex 对话内 `Sense 媒体分片` 原型 v0.1;仓库外源文件 `D:\OPC\yovision-visualizations\issue-77\sense-media-shards.html` - 状态:已确认,可进入正式实现 - 覆盖范围:GoAdmin 页面外壳、分片台账、受管/外部方式、配置容量、稳定路径归属、运行/故障/容量紧张场景、故障设备/Profile 影响范围、只读迁移预检、响应式与可访问性。 - 非目标保持:不执行跨分片迁移、不实现 Brain 分片、不发布共享控制契约、不修改根级部署、不作未经压测的生产容量承诺。
Author
Owner

正式实现基线(原型 v0.1 审核后)

  • GoAdmin 冻结参考:goadmin-baseline.json;已阅读冻结 go-admin-doc 的 Router、API、Models、DTO、Service、DB 主题。
  • 继承方式:复用 Gin + JWT + AuthCheckRole + PermissionAction、API → Service → GORM 分层、动态菜单/Casbin,以及 go-admin-ui 的 BasicLayout、Element Plus 表格/分页/Dialog/Tag/Alert/Progress、Axios 和权限指令。
  • 默认模块:不新增或暴露框架演示模块;只新增“媒体分片”只读入口和读权限。
  • 数据模型:sense_media_shards 保存 Sense 自有分片台账与健康投影;sense_media_shard_assignments 保存 route→shard 稳定归属。现有 sense_media_routes 继续是路径运行状态事实源,不复制凭据或 Stream URI。
  • 配置入口:现有 MediaMTX 作为默认分片;可选仓库外 JSON 文件配置额外回环 Control API 测试/外部分片。单分片容量必须来自配置;默认分片未单独配置时读取 #75 的数据库配额事实源,不在算法写死 16/128。
  • 分配:已有有效归属保持不变;新路径仅在健康且有配置容量的分片间使用确定性 rendezvous hash 选择。分片故障不自动搬迁已有路径,因此影响范围可稳定定位。
  • 运行:默认受管分片仍复用现有 Supervisor;额外分片按外部实例健康探测和路由,不由本工单启动多个受管进程。测试可用多个本地 MediaMTX/HTTP 夹具验证。
  • 迁移:仅提供 GET 预检,检查候选 Control API、配置容量、源状态和授权/回退缺口;不提供执行 API、按钮或自动迁移。
  • 审计:列表、详情、预检读取写入脱敏 GoAdmin 操作审计;不记录 Control API 完整地址、设备地址、Profile token、Stream URI 或凭据。
  • 合成夹具:只供显式测试/开发调用,迁移与生产启动不自动写入演示分片。

更正实际写路径

原工单仍使用旧目录描述;按当前 GoAdmin 派生结构,正式实现需要:

  • Sense/server/app/sense/media_shard/**
  • Sense/server/app/sense/media/{runtime.go,service.go,service_test.go,dto.go}(接入稳定归属与按分片 Controller;不重写媒体内核)
  • Sense/server/app/admin/router/sense_media_shard*.go
  • Sense/server/cmd/migrate/migration/version/*media_shard*.go
  • Sense/ui/src/views/sense/media-shard/**
  • Sense/ui/src/api/sense/media-shard.js
  • Sense/ui/tests/unit/sense/mediaShard*.spec.js
  • Sense/config/*.example、Sense/scripts/runtime/** 中现有 SENSE_* 白名单/示例(如新增分片配置字段确有需要)
  • 长期事实按流程先更新 Gitea Wiki,再同步对应 docs/ 镜像。

不写入 Brain/Bell/contracts 或根级部署;额外受管多进程、真实迁移执行、Brain 分片和跨项目协议继续排除。

## 正式实现基线(原型 v0.1 审核后) - GoAdmin 冻结参考:`goadmin-baseline.json`;已阅读冻结 `go-admin-doc` 的 Router、API、Models、DTO、Service、DB 主题。 - 继承方式:复用 Gin + JWT + AuthCheckRole + PermissionAction、API → Service → GORM 分层、动态菜单/Casbin,以及 go-admin-ui 的 BasicLayout、Element Plus 表格/分页/Dialog/Tag/Alert/Progress、Axios 和权限指令。 - 默认模块:不新增或暴露框架演示模块;只新增“媒体分片”只读入口和读权限。 - 数据模型:`sense_media_shards` 保存 Sense 自有分片台账与健康投影;`sense_media_shard_assignments` 保存 route→shard 稳定归属。现有 `sense_media_routes` 继续是路径运行状态事实源,不复制凭据或 Stream URI。 - 配置入口:现有 MediaMTX 作为默认分片;可选仓库外 JSON 文件配置额外回环 Control API 测试/外部分片。单分片容量必须来自配置;默认分片未单独配置时读取 #75 的数据库配额事实源,不在算法写死 16/128。 - 分配:已有有效归属保持不变;新路径仅在健康且有配置容量的分片间使用确定性 rendezvous hash 选择。分片故障不自动搬迁已有路径,因此影响范围可稳定定位。 - 运行:默认受管分片仍复用现有 Supervisor;额外分片按外部实例健康探测和路由,不由本工单启动多个受管进程。测试可用多个本地 MediaMTX/HTTP 夹具验证。 - 迁移:仅提供 GET 预检,检查候选 Control API、配置容量、源状态和授权/回退缺口;不提供执行 API、按钮或自动迁移。 - 审计:列表、详情、预检读取写入脱敏 GoAdmin 操作审计;不记录 Control API 完整地址、设备地址、Profile token、Stream URI 或凭据。 - 合成夹具:只供显式测试/开发调用,迁移与生产启动不自动写入演示分片。 ### 更正实际写路径 原工单仍使用旧目录描述;按当前 GoAdmin 派生结构,正式实现需要: - `Sense/server/app/sense/media_shard/**` - `Sense/server/app/sense/media/{runtime.go,service.go,service_test.go,dto.go}`(接入稳定归属与按分片 Controller;不重写媒体内核) - `Sense/server/app/admin/router/sense_media_shard*.go` - `Sense/server/cmd/migrate/migration/version/*media_shard*.go` - `Sense/ui/src/views/sense/media-shard/**` - `Sense/ui/src/api/sense/media-shard.js` - `Sense/ui/tests/unit/sense/mediaShard*.spec.js` - `Sense/config/*.example`、`Sense/scripts/runtime/**` 中现有 SENSE_* 白名单/示例(如新增分片配置字段确有需要) - 长期事实按流程先更新 Gitea Wiki,再同步对应 `docs/` 镜像。 不写入 Brain/Bell/contracts 或根级部署;额外受管多进程、真实迁移执行、Brain 分片和跨项目协议继续排除。
ila closed this issue 2026-08-28 16:10:22 +08:00
ila reopened this issue 2026-08-28 16:10:45 +08:00
Author
Owner

实现完成,转待验收

最终差异

  • 新增 sense_media_shards 与 sense_media_shard_assignments,保留既有 sense_media_routes 为路径状态事实源。
  • 主分片继续复用现有 Supervisor;额外分片由仓库外 JSON 配置为 external,本工单不启停外部实例。
  • 新路径在健康且有剩余配置容量的分片间使用 rendezvous-v1 确定性分配;候选分片行加锁后统计占用,避免并发超配。已有归属在故障时保持稳定,不自动迁移。
  • 新增只读列表、详情、故障影响和迁移预检 API;可定位设备、位置、Profile 与路径。API 不返回 Control API、RTSP URI 或凭据。
  • 迁移预检不写归属、不提供执行入口,并固定声明实际迁移需要独立高风险工单和人工确认。
  • 新增 GoAdmin 动态菜单、JWT/Casbin/PermissionAction、implementation_operator/site_admin/viewer 只读权限和脱敏操作审计。
  • 新增 go-admin-ui “媒体分片”页面,复用 BasicLayout、Axios、Element Plus 表格/进度/Dialog/Tag/Alert/权限按钮;覆盖容量、状态陈旧、故障影响和只读预检。
  • Windows 配置白名单新增 SENSE_MEDIAMTX_CAPACITY、SENSE_MEDIAMTX_SHARDS_FILE,相对路径按包根解析;交付包包含无秘密 JSON 示例。
  • 没有修改 Brain、Bell、contracts 或根级部署。

验证结果

  • go test ./...:通过。
  • go vet ./...:通过。
  • go test -race ./app/sense/media ./app/sense/media_shard ./cmd/migrate/migration/version:通过。
  • 容量/稳定性/故障/预检单测:通过,使用 1、2、3、4、7、11、23 等配置容量验证,不以 16/128 为算法上限。
  • 真实双 MediaMTX smoke:通过。使用本机 MediaMTX v1.19.3 启动两个独立 TCP-only 测试实例,两个分片均健康,4 条路径按各自容量完成分配;原有单实例 Control API 生命周期测试同时通过。测试结束已停止自有进程。
  • 前端 pnpm lint:0 error(32 条既有 warning)。
  • 前端单测:29 suites / 70 tests 全通过。
  • 前端 pnpm build:prod:通过(既有 Sass、codemirror 与体积 warning)。
  • Windows 包脚本:PowerShell 5.1 下 23 个断言通过;PowerShell 7 的既有 JSON HTML 字符转义断言差异仍存在,与本次分片改动无关。
  • python dev_scripts/harness.py check --strict:通过。
  • Wiki sync --check:全部核心镜像一致。
  • 专用 SENSE_MEDIA_SHARD_MIGRATION_TEST_DATABASE_URL 未提供,因此 PostgreSQL 隔离 schema 迁移测试未执行;SQLite 迁移、权限与无夹具验证通过。没有使用现有生产/开发库代替专用测试库。

文档

已在线更新并回读:

  • Architecture-and-Code-Map:578ddbaae3d7e846037d958085e40609cd398bef
  • Business-Rules-and-Glossary:999eb1aee3558ff75cfa929acac77841af20b742
  • Deployment-and-Operations:ce246054849b5b797dc4da0a55116238a4c00d7e
  • Local-Development-and-Verification:05435d53528271a866c525655486689afc198762

核心镜像已随实现提交。无任务归档:用户未要求导出。

Git / PR

  • 实现提交:d681fd13450f47b4f27efc0e8fd46383df0ee08a
  • PR:#121
  • 合入 dev:e06904272ad7cacfc6e79f92c76e2fdb0668458e
  • PR 描述中的自动关闭语义导致合并时工单被 Gitea 自动关闭;已立即重新打开并恢复为“待验收”。工单不会在用户明确验收前关闭。

回退

回退该合并提交与对应 Wiki 变更;数据库表为新增投影表。不要手工移动既有路径归属。若需实施跨分片迁移,必须另建高风险工单。

## 实现完成,转待验收 ### 最终差异 - 新增 `sense_media_shards` 与 `sense_media_shard_assignments`,保留既有 `sense_media_routes` 为路径状态事实源。 - 主分片继续复用现有 Supervisor;额外分片由仓库外 JSON 配置为 external,本工单不启停外部实例。 - 新路径在健康且有剩余配置容量的分片间使用 `rendezvous-v1` 确定性分配;候选分片行加锁后统计占用,避免并发超配。已有归属在故障时保持稳定,不自动迁移。 - 新增只读列表、详情、故障影响和迁移预检 API;可定位设备、位置、Profile 与路径。API 不返回 Control API、RTSP URI 或凭据。 - 迁移预检不写归属、不提供执行入口,并固定声明实际迁移需要独立高风险工单和人工确认。 - 新增 GoAdmin 动态菜单、JWT/Casbin/PermissionAction、implementation_operator/site_admin/viewer 只读权限和脱敏操作审计。 - 新增 go-admin-ui “媒体分片”页面,复用 BasicLayout、Axios、Element Plus 表格/进度/Dialog/Tag/Alert/权限按钮;覆盖容量、状态陈旧、故障影响和只读预检。 - Windows 配置白名单新增 `SENSE_MEDIAMTX_CAPACITY`、`SENSE_MEDIAMTX_SHARDS_FILE`,相对路径按包根解析;交付包包含无秘密 JSON 示例。 - 没有修改 Brain、Bell、contracts 或根级部署。 ### 验证结果 - `go test ./...`:通过。 - `go vet ./...`:通过。 - `go test -race ./app/sense/media ./app/sense/media_shard ./cmd/migrate/migration/version`:通过。 - 容量/稳定性/故障/预检单测:通过,使用 1、2、3、4、7、11、23 等配置容量验证,不以 16/128 为算法上限。 - 真实双 MediaMTX smoke:通过。使用本机 MediaMTX v1.19.3 启动两个独立 TCP-only 测试实例,两个分片均健康,4 条路径按各自容量完成分配;原有单实例 Control API 生命周期测试同时通过。测试结束已停止自有进程。 - 前端 `pnpm lint`:0 error(32 条既有 warning)。 - 前端单测:29 suites / 70 tests 全通过。 - 前端 `pnpm build:prod`:通过(既有 Sass、codemirror 与体积 warning)。 - Windows 包脚本:PowerShell 5.1 下 23 个断言通过;PowerShell 7 的既有 JSON HTML 字符转义断言差异仍存在,与本次分片改动无关。 - `python dev_scripts/harness.py check --strict`:通过。 - Wiki `sync --check`:全部核心镜像一致。 - 专用 `SENSE_MEDIA_SHARD_MIGRATION_TEST_DATABASE_URL` 未提供,因此 PostgreSQL 隔离 schema 迁移测试未执行;SQLite 迁移、权限与无夹具验证通过。没有使用现有生产/开发库代替专用测试库。 ### 文档 已在线更新并回读: - Architecture-and-Code-Map:`578ddbaae3d7e846037d958085e40609cd398bef` - Business-Rules-and-Glossary:`999eb1aee3558ff75cfa929acac77841af20b742` - Deployment-and-Operations:`ce246054849b5b797dc4da0a55116238a4c00d7e` - Local-Development-and-Verification:`05435d53528271a866c525655486689afc198762` 核心镜像已随实现提交。无任务归档:用户未要求导出。 ### Git / PR - 实现提交:`d681fd13450f47b4f27efc0e8fd46383df0ee08a` - PR:#121 - 合入 `dev`:`e06904272ad7cacfc6e79f92c76e2fdb0668458e` - PR 描述中的自动关闭语义导致合并时工单被 Gitea 自动关闭;已立即重新打开并恢复为“待验收”。工单不会在用户明确验收前关闭。 ### 回退 回退该合并提交与对应 Wiki 变更;数据库表为新增投影表。不要手工移动既有路径归属。若需实施跨分片迁移,必须另建高风险工单。
Author
Owner

用户验收通过

  • 验收人:用户
  • 验收时间:2026-08-28(Asia/Shanghai)
  • 用户明确指令:#77通过验收
  • 验收结论:工单 #77 全部验收标准通过。
  • 交付基线:dev 合并提交 e06904272ad7cacfc6e79f92c76e2fdb0668458e,PR #121。
  • 边界保持:不包含实际跨分片迁移、Brain 分片、跨项目契约或 dev → main 合并。
  • 长期 Wiki 已在实施阶段更新并同步,验收本身没有产生新的长期事实,不重复修改。
  • 未创建任务归档:用户未要求导出。
## 用户验收通过 - 验收人:用户 - 验收时间:2026-08-28(Asia/Shanghai) - 用户明确指令:`#77通过验收` - 验收结论:工单 #77 全部验收标准通过。 - 交付基线:`dev` 合并提交 `e06904272ad7cacfc6e79f92c76e2fdb0668458e`,PR #121。 - 边界保持:不包含实际跨分片迁移、Brain 分片、跨项目契约或 `dev → main` 合并。 - 长期 Wiki 已在实施阶段更新并同步,验收本身没有产生新的长期事实,不重复修改。 - 未创建任务归档:用户未要求导出。
ila closed this issue 2026-08-28 16:14:56 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ila/yovision#77