chore: establish local platform baseline

This commit is contained in:
Codex Local
2026-08-26 06:41:54 +08:00
commit 29bdf4900f
575 changed files with 95644 additions and 0 deletions
+122
View File
@@ -0,0 +1,122 @@
# 试点运行周报开发说明
> 对应接口契约:OpenAPI 0.55.0
> 适用阶段:阶段8内部试用、家庭试点和灰度复盘
> 适用角色:`ops_operator`、`ops_admin`
## 1. 建设目标与边界
试点运行周报用于落实外部验收清单中的周度复盘要求,把平台内有权威数据来源的内容审核、记忆确认、隐私请求、固件分布和设备配置差异汇总为一份可下载、可审计的脱敏JSON。周报按指定IANA时区、从周一零时开始计算七个自然日,避免服务器时区、UTC日期或夏令时导致跨周错位。
当前平台没有投诉/客服工单权威表,因此周报固定返回`external_evidence=[{"code":"complaints","status":"REQUIRED",...}]`,要求归档人员附客服或CRM脱敏证据。系统不把联调问题、告警或隐私请求推断成用户投诉,也不提供虚假的“投诉为0”结论。
## 2. 功能设计
### 2.1 周期与完整性
请求必须填写候选版本和`sha256:`不可变构建摘要;`week_start`必须是指定时区内的周一且不能晚于当前日期。窗口采用`[week_start, week_start+7个日历日)`,可能因夏令时为167、168或169小时。`window_start/window_end`以UTC返回,`is_complete=false`表示当前自然周尚未结束,只能作为周中快照;完整周结束后重新生成并归档正式周报。候选身份随响应和审计冻结,证据包强制与同包技术验收快照及7份日报一致。
### 2.2 内容审核指标
| 指标 | 权威来源 | 口径 |
|---|---|---|
| 周内生成故事 | `story_draft.created_at` | 所选周创建的候选故事数 |
| 审核触达故事 | `audit_event` | 周内发生修订、确认或拒绝成功动作的去重故事数 |
| 人工修订故事 | `story.revise`、`sharing.story.edit` | 周内至少一次用户修订的去重故事数 |
| 人工修订率 | 上述两项 | 人工修订故事/审核触达故事,四舍五入到基点 |
| 故事确认/拒绝 | `story.confirm`、`story.reject` | 周内成功终态动作数 |
| 故事确认率 | 确认与拒绝动作 | 确认/(确认+拒绝),四舍五入到基点 |
| 正式记忆首版/修订 | `memory_version` | `version_no=1`为首版,后续版本为修订,按`confirmed_at`入周 |
| 当前索引积压 | `memory_index_entry` | 生成时刻当前有效记忆的`PENDING/FAILED`索引数 |
两个比例均包含`*_rate_available`。分母为0时`available=false`且数值保持0,页面显示“—”,避免把“没有审核样本”误读为0%修订或0%确认。
### 2.3 隐私、固件与配置指标
隐私请求按周内创建时间返回固定四类请求和五类状态数组;即使某项为0也保留。`current_open/current_partial_failed`是生成时刻所有未完成请求的积压,不限于所选周。
固件分布只统计当前已绑定且状态为`registered`的设备,按设备型号和`device_twin.firmware_version`汇总,尚未上报的设备归入`UNREPORTED`。输出只有分组数量,不包含设备编号、序列摘要、家庭或长者信息。
配置差异使用同一可用设备集合:`reported_revision=desired_revision`为一致;已上报但不同为差异;没有设备孪生或从未上报为未上报。三项之和必须等于`eligible_devices`。同时返回当前活动和暂停的运行配置投放数量,但不返回配置正文或密钥引用。
### 2.4 权限、脱敏与幂等
输出策略为`ops-pilot-weekly-minimal-v1`,不包含故事/记忆正文、字幕、录音、主体资料、设备编号、供应商任务、配置正文、投诉内容、隐私请求原因或审计原因。接口要求真实OIDC、客户组织选择、`ops_operator/ops_admin`角色、幂等键和最长255字符的归档原因。
首次成功返回201;24小时内以相同幂等键和请求体重试返回200、`Idempotency-Replayed: true`及同一周报编号和生成时间。服务端不持久化周报正文,只保存幂等响应和最小审计;响应带`Cache-Control: no-store`。
## 3. 接口设计
### 3.1 请求
`POST /api/v1/ops/diagnostics/pilot-weekly-snapshots`
```json
{
"candidate_version": "0.55.0-rc.1",
"build_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"week_start": "2026-08-24",
"timezone": "Asia/Shanghai",
"reason": "归档试点周度复盘并补充外部投诉证据"
}
```
| 请求头 | 必填 | 说明 |
|---|---|---|
| `Authorization` | 是 | OIDC Bearer令牌 |
| `X-Tenant-Id` | 是 | 操作人有权访问的客户组织公开编号 |
| `Idempotency-Key` | 是 | 生成动作的重试边界 |
| `X-Request-Id` | 否 | 调用链关联编号 |
响应包含客户组织、候选身份、周界、完整性、内容审核、隐私、固件、配置、外部证据缺口和免责声明。比例采用0—10000基点整数,前端除以100显示百分比。参数错误返回400,权限或租户关系错误返回403,幂等正文冲突返回409。
## 4. 业务流程设计
```mermaid
sequenceDiagram
participant O as 试点运营人员
participant UI as 联调诊断页面
participant API as 周报聚合接口
participant DB as PostgreSQL
participant E as 客服或CRM证据库
O->>UI: 选择周一、时区并填写原因
UI->>API: OIDC + 租户 + 幂等键 + 周报请求
API->>DB: 校验角色和客户组织
API->>DB: 聚合审核、记忆、隐私、固件和配置
API->>DB: 写最小审计和幂等响应
API-->>UI: 周报JSON + 投诉证据REQUIRED
UI-->>O: 展示摘要并下载文件
O->>E: 取得同周期脱敏投诉证据
O->>O: 两份证据共同归档并召开周度复盘
```
复盘时先确认`is_complete=true`,再处理隐私部分失败、记忆索引失败、未上报固件和配置差异。内容比例必须结合样本数阅读,不能只看百分比。投诉证据未附加时周度证据包不完整;周报接口不会因为其他技术指标正常而把该缺口改为完成。
## 5. 数据库设计
本功能不新增迁移和周报表,复用以下数据:
| 表 | 用途 |
|---|---|
| `audit_event` | 故事修订、分享修订、确认和拒绝的不可变成功事件 |
| `story_draft` | 周内生成故事数量 |
| `curated_memory`、`memory_version`、`memory_index_entry` | 正式记忆版本确认与当前索引状态 |
| `privacy_request` | 周内类型/状态分布和当前未完成积压 |
| `device_binding`、`device`、`device_twin` | 当前可用设备、固件分布和期望/上报配置修订 |
| `runtime_config_rollout` | 当前活动/暂停配置投放数量 |
| `idempotency_record`、`audit_event` | 下载重放与生成动作审计 |
各指标使用单条聚合查询保证自身内部口径一致;全部读取、审计和幂等响应在一个数据库事务中提交。审计动作是`ops.diagnostics.pilot_weekly_snapshot.export`,只记录周起始日、时区、UTC窗口、完整性和脱敏策略。
## 6. 精简验证
```powershell
go test ./internal/diagnostics ./internal/httpapi
npm --prefix web run build
powershell -ExecutionPolicy Bypass -File .\scripts\smoke-pilot-weekly-snapshot.ps1
$env:PLAYWRIGHT_REQUIRE_FROM='C:\Users\19926\.cache\codex-runtimes\codex-primary-runtime\dependencies\node\node_modules'
node .\scripts\visual-diagnostics-ui.cjs
.\scripts\check-functional.ps1
```
定向测试验证跨夏令时的七个日历日、非周一和未来周拒绝、基点舍入;真实OIDC烟测验证固定隐私分布、配置与固件设备数守恒、比例可用性、投诉证据缺口、敏感字段排除、幂等重放和烟测清理;浏览器烟测验证周报下载和缺口提示。全仓回归、容量、安全、恢复、真实设备和供应商验证仍在固定发布候选上集中执行。