## Scope - 迭代编号:`AUG26-015`(需求依据 PRD §2.17「已确认的报表基线」;字段与追溯细节见 `111.md` §22)。 ## Why 首期运营分析需要统一的设备激活与套餐续费统计,且历史报表不得因实时状态变化而口径漂移。当前规划把同一能力写成两套互相冲突的方案(按卡首次激活时间的实时 Query 与每日日报快照),指标集、维度集、时间语义与续费口径均与 PRD §2.17 不一致,无法直接实施。 此外,本系统不存在「截至某历史时点是否已实名」的查询能力,`tb_iot_card.real_name_status` 是可逆转的当前状态、`first_realname_at` 只记首次且不再更新,因此实时 Query 方案在事实层面不成立,每日快照是唯一可行解。 ## What Changes - **能力归一**:删除并行方案与 `operations-reporting` 能力,只保留单一能力 `operations-report`;唯一方案为每日日报快照。 - 新增三张快照表:日级头行(一日一行、快照日期唯一)、设备粒度激活行、到期事件粒度续费行,并新增每日生成任务。 - 上线前日期不提供报表、不回填历史;不提供按日期区间批量生成快照的入口。 - 查询与导出只读快照表,不回查设备、卡、套餐使用等实时表;累计类指标一律取所选结束日的快照,结束日无快照时为空且不就近回退。 - 激活指标:采购数量取截至快照日系统内未删除的设备数;累计激活数取「任一当前有效关联卡已实名」的设备数;累计在网数取已实名且存在有效主套餐的设备数;活跃用户数取真流量合计大于零的设备数;累计用量取设备自身与当前有效关联卡当前有效使用记录的真已用量之和并折算 GB。 - 续费指标:以到期日锚定,到期数与续费数按资产去重,续费资产为到期资产的子集,续费率不超过 100% 由构造保证。 - 维度与归属:单分组维度(激活表七项、续费表六项),未选择时汇总为一行;快照行冻结店铺、业务员、用户组,并同时冻结「代理」的两个候选取值。 - 新增六个受控入口:两张报表各自的汇总、趋势与异步导出。 - 时间筛选统一为 `start_time`/`end_time`(带显式时区的 RFC3339 秒级、闭区间),快照日期按「零点落入区间」判定;趋势以 `granularity=day|month` 表达。 不破坏既有行为:全部为新增能力,未引入 **BREAKING** 变更。 ## 非目标 - 不改既有列表、导出、套餐、钱包、订单逻辑;不复用第 12/13/14/15 项报表或导出的粒度与冻结口径。 - 不引入金额口径:本次不含实收续费金额,登记为后续候选。 - 不建采购或入库台账。 - 不回填历史,不提供补跑接口与区间批量生成入口。 - 后端不做图表渲染与自然语言文字总结渲染,只提供数据与合计值。 - 不修既有日流量记录表的结构漂移(独立 Change 处理,本次不以其为数据源)。 - 不新增、不修改既有导出任务表结构,不改导出三段式流水线。 ## Capabilities ### New Capabilities - `operations-report`: 设备激活与套餐续费日报快照的生成、冻结口径、单维度分组与合计、日/月趋势、异步导出与权限数据范围。 ### Modified Capabilities - 无。既有 `export-task`、`operations-audit`、`identity-access` 的行为不变;导出复用既有导出任务与既有审计动作,不新增动作码。 ## Impact - Schema:新增成对迁移与三张快照表(含唯一键与索引)。 - Worker:新增快照生成任务类型、处理器注册、队列映射与每日调度(上海时区)。 - HTTP:新增后台路由与 Handler,需同步运行时文档装配与离线文档生成入口的占位装配。 - 导出:新增两个导出场景常量、两个数据源实现、注册表与支持场景判定、DTO 联合类型白名单、严格时间场景判定,以及两个受控导出端点。 - 权限与审计:新增路由组级门禁(挂功能前缀);查询不写统一审计事件;导出复用既有导出任务审计。 - 文档与证据链:更新架构导航,并同步 `docs/verification/context-reset/` 的两份 JSON(行为 Requirement 证据链与入口—能力—Requirement 矩阵,含 6 条 HTTP 入口与 1 条异步入口)。