From 29a6b57533304df34e72c100910203d2abb162be Mon Sep 17 00:00:00 2001 From: selfrelease Date: Tue, 30 Jun 2026 13:42:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B9=E6=A1=88100%=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=20=E2=80=94=20RBAC=E5=8A=A8=E6=80=81=E6=9D=83?= =?UTF-8?q?=E9=99=90+Grafana=E7=9B=91=E6=8E=A7+=E7=9B=AE=E5=BD=95=E5=BA=93?= =?UTF-8?q?=E7=8B=AC=E7=AB=8B=E5=BE=AE=E6=9C=8D=E5=8A=A1+=E5=85=A8?= =?UTF-8?q?=E5=9B=BD=E7=9B=AE=E5=BD=95=E4=B8=AD=E5=BF=83+=E6=A0=87?= =?UTF-8?q?=E8=AF=86=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 0630-task.md | 168 +++++++++ IPTV系统融合MA码方案介绍.md | 137 +++++++ baidu-backup.sh | 349 ++++++++++++++++++ docs/IPTV系统融合MA码方案介绍(1).pdf | Bin 0 -> 608440 bytes tcs-iptv/cmd/api-svc/main.go | 15 + tcs-iptv/cmd/catalog-svc/main.go | 100 +++++ tcs-iptv/deploy/migrations/0005_admin.sql | 37 ++ tcs-iptv/deploy/monitoring/README.md | 80 ++++ .../deploy/monitoring/grafana-dashboard.json | 181 +++++++++ tcs-iptv/deploy/monitoring/prometheus.yml | 39 ++ tcs-iptv/go.mod | 22 +- tcs-iptv/go.sum | 29 ++ tcs-iptv/internal/api/admin_handlers.go | 160 ++++++++ tcs-iptv/internal/api/catalog_handlers.go | 99 +++++ .../internal/api/catalog_handlers_test.go | 108 ++++++ tcs-iptv/internal/api/handlers.go | 86 +++++ tcs-iptv/internal/api/rbac_handlers.go | 82 ++++ tcs-iptv/internal/catalog/catalog.go | 86 +++++ tcs-iptv/internal/catalog/catalog_test.go | 99 +++++ tcs-iptv/internal/chain/chain.go | 10 + tcs-iptv/internal/chain/chainmaker.go | 64 ++++ tcs-iptv/internal/chain/conformance_test.go | 108 ++++++ tcs-iptv/internal/chain/memory.go | 200 ++++++++++ tcs-iptv/internal/chain/persistent.go | 51 +++ tcs-iptv/internal/config/config.go | 2 + tcs-iptv/internal/httpx/rbac.go | 224 +++++++++++ tcs-iptv/internal/httpx/rbac_test.go | 62 ++++ tcs-iptv/internal/model/admin.go | 57 +++ tcs-iptv/internal/model/model.go | 52 +++ tcs-iptv/internal/monitor/monitor.go | 79 ++++ .../nationalcatalog/nationalcatalog.go | 230 ++++++++++++ .../nationalcatalog/nationalcatalog_test.go | 110 ++++++ tcs-iptv/internal/service/admin.go | 265 +++++++++++++ tcs-iptv/internal/service/admin_test.go | 110 ++++++ tcs-iptv/internal/service/query_admin.go | 73 ++++ tcs-iptv/internal/sync/sync.go | 166 +++++++++ tcs-iptv/internal/sync/sync_test.go | 139 +++++++ 方案对照报告.docx | Bin 0 -> 21513 bytes 方案对照报告.md | 286 ++++++++++++++ 40 files changed, 4159 insertions(+), 7 deletions(-) create mode 100644 0630-task.md create mode 100644 IPTV系统融合MA码方案介绍.md create mode 100755 baidu-backup.sh create mode 100644 docs/IPTV系统融合MA码方案介绍(1).pdf create mode 100644 tcs-iptv/cmd/catalog-svc/main.go create mode 100644 tcs-iptv/deploy/migrations/0005_admin.sql create mode 100644 tcs-iptv/deploy/monitoring/README.md create mode 100644 tcs-iptv/deploy/monitoring/grafana-dashboard.json create mode 100644 tcs-iptv/deploy/monitoring/prometheus.yml create mode 100644 tcs-iptv/internal/api/admin_handlers.go create mode 100644 tcs-iptv/internal/api/catalog_handlers.go create mode 100644 tcs-iptv/internal/api/catalog_handlers_test.go create mode 100644 tcs-iptv/internal/api/rbac_handlers.go create mode 100644 tcs-iptv/internal/catalog/catalog.go create mode 100644 tcs-iptv/internal/catalog/catalog_test.go create mode 100644 tcs-iptv/internal/httpx/rbac.go create mode 100644 tcs-iptv/internal/httpx/rbac_test.go create mode 100644 tcs-iptv/internal/model/admin.go create mode 100644 tcs-iptv/internal/monitor/monitor.go create mode 100644 tcs-iptv/internal/nationalcatalog/nationalcatalog.go create mode 100644 tcs-iptv/internal/nationalcatalog/nationalcatalog_test.go create mode 100644 tcs-iptv/internal/service/admin.go create mode 100644 tcs-iptv/internal/service/admin_test.go create mode 100644 tcs-iptv/internal/service/query_admin.go create mode 100644 tcs-iptv/internal/sync/sync.go create mode 100644 tcs-iptv/internal/sync/sync_test.go create mode 100644 方案对照报告.docx create mode 100644 方案对照报告.md diff --git a/.gitignore b/.gitignore index 70cba93..86813d3 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ node_modules/ # 日志与临时 *.log /tmp/ +pandoc-filter.lua diff --git a/0630-task.md b/0630-task.md new file mode 100644 index 0000000..c1e5733 --- /dev/null +++ b/0630-task.md @@ -0,0 +1,168 @@ +# IPTV系统融合MA码 — 待补足任务清单 + +> 生成日期:2026-06-30 +> 依据:`IPTV系统融合MA码方案介绍.md` 与现有 TCS-IPTV 代码库对比分析 +> 整体匹配度:约 85% + +--- + +## 一、高优先级缺口 + +### 1. 标识查询接口 — 补充多维度查询 + +**现状**:仅支持按 MA 码查询(`GET /content/mappings?ma_code=`),方案要求四种查询维度。 + +**需补足**: + +- [ ] 按 Hash 查询接口 — 根据 `file_sha256` 反查 MA 码及映射关系 +- [ ] 按省级内容编码查询接口 — 根据省内内容编码反查 MA 码 +- [ ] 按片库文件 ID 查询接口 — 根据 `media_asset_id` / 片库文件 ID 反查 MA 码 + +**涉及文件**: + +- `tcs-iptv/internal/api/handlers.go` — 新增 3 个查询 handler +- `tcs-iptv/internal/chain/chain.go` — `Client` 接口新增 3 个查询方法 +- `tcs-iptv/internal/chain/memory.go` / `persistent.go` — 实现反查逻辑 +- `tcs-iptv/internal/service/service.go` — 新增 service 层方法 + +**参考方案原文**: + +> 标识查询接口支持以下查询方式:根据 MA 查询;根据 Hash 查询;根据省级内容编码查询;根据片库文件 ID 查询。 + +--- + +### 2. MA 管理模块 — 补充合并/拆分功能 + +**现状**:已实现 MA 创建、维护、失效、状态管理、一致性校验,但缺少合并与拆分。 + +**需补足**: + +- [ ] MA 合并接口 — 将两个或多个 MA 码合并为一个(如同一内容重复发码后合并) +- [ ] MA 拆分接口 — 将一个 MA 码拆分为多个(如合集拆分为独立剧集) +- [ ] 合并/拆分后的映射关系迁移与一致性校验 + +**涉及文件**: + +- `tcs-iptv/internal/chain/chain.go` — `Client` 接口新增 `MergeMA` / `SplitMA` 方法 +- `tcs-iptv/internal/chain/memory.go` / `persistent.go` — 实现合并/拆分逻辑 +- `tcs-iptv/internal/service/service.go` — 新增 `MergeMACodes` / `SplitMACode` 业务方法 +- `tcs-iptv/internal/api/handlers.go` — 新增 HTTP 路由 +- `tcs-iptv/internal/model/model.go` — 新增合并/拆分请求与结果模型 + +**参考方案原文**: + +> MA 管理模块负责 MA 标识的生命周期管理,包括 MA 创建、维护、合并、拆分、失效、状态管理和一致性校验。 + +--- + +## 二、中优先级缺口 + +### 3. 系统管理模块 — 补充用户管理/组织管理 + +**现状**:已实现权限管理(四角色 + HMAC 鉴权)、配置管理、日志管理(存证),但用户管理和组织管理不完整。 + +**需补足**: + +- [ ] 用户管理 — 用户 CRUD、用户与角色绑定、用户状态管理 +- [ ] 组织管理 — 组织/部门 CRUD、组织与号段关联 +- [ ] RBAC 完善 — 从硬编码四角色扩展为可配置角色权限矩阵 + +**涉及文件**: + +- 新建 `tcs-iptv/internal/service/admin.go` — 用户/组织管理业务逻辑 +- 新建 `tcs-iptv/internal/model/user.go` — 用户与组织模型 +- `tcs-iptv/internal/api/handlers.go` — 新增管理路由组 +- `tcs-iptv/deploy/migrations/` — 新增用户/组织表迁移 + +**参考方案原文**: + +> 系统管理模块负责平台基础管理能力,包括用户管理、组织管理、权限管理、配置管理、日志管理和运行监控。 + +--- + +### 4. 目录库独立部署 + +**现状**:目录库功能通过 `chain.Client`(MemoryChain/PersistentChain)统一存储,未独立拆分为单独的目录库服务。 + +**需补足**: + +- [ ] 评估是否需要将目录库从链客户端中拆分为独立服务 +- [ ] 如拆分:新建 `tcs-iptv/internal/catalog/` 包,独立存储 MA/Hash/文件ID/省内编码映射 +- [ ] 目录库对外提供独立查询 API + +**参考方案原文**: + +> 目录库为本项目新增或扩展建设内容,负责存储 MA、Hash、片库文件 ID、省内内容编码等映射关系。 + +--- + +## 三、低优先级缺口(依赖外部环境或远期规划) + +### 5. 全国目录中心与跨省数据同步 + +**现状**:已实现跨省复用准入(`CrossProvinceAdmit`)和全国统计(`NationalStats`),但缺少全国目录中心和省级数据同步机制。 + +**需补足**: + +- [ ] 全国目录中心服务设计 +- [ ] 省级目录库 ↔ 全国目录中心数据同步机制(增量/全量) +- [ ] 各省内容编码与全国统一 MA 之间的映射同步 +- [ ] 跨省审核记录共享与审核结果回写 + +**依赖**:需多省实际接入环境,架构已预留扩展点。 + +**参考方案原文**: + +> 建设全国目录中心,建立省级目录库与全国目录中心之间的数据同步机制,实现各省内容编码与全国统一 MA 之间的映射关系。 + +--- + +### 6. 运行监控 + +**现状**:未实现运行监控能力。 + +**需补足**: + +- [ ] 接入 Prometheus 指标采集(API 延迟、错误率、链操作耗时) +- [ ] 接入 Grafana 监控面板 +- [ ] 关键指标告警规则(4 金指标:Latency / Traffic / Errors / Saturation) + +**涉及文件**: + +- `tcs-iptv/cmd/api-svc/main.go` — 嵌入 Prometheus middleware +- 新建 `tcs-iptv/deploy/monitoring/` — Grafana 配置 + +**参考方案原文**: + +> 系统管理模块…运行监控。该模块用于保障标识服务平台安全、稳定、可追溯运行。 + +--- + +### 7. 标识同步能力 + +**现状**:标识服务模块已实现 MA 生成、Hash 登记、标识查询、标识映射管理,但标识同步未实现。 + +**需补足**: + +- [ ] 标识同步接口 — 多节点/多省间的标识数据同步 +- [ ] 同步冲突检测与解决策略 + +**依赖**:与全国目录中心建设关联,属第三阶段范围。 + +**参考方案原文**: + +> 标识服务模块…主要功能包括 MA 生成、Hash 登记、标识查询、标识映射管理和标识同步。 + +--- + +## 四、任务优先级总览 + +| 序号 | 任务 | 优先级 | 预估工作量 | 依赖 | +|------|------|--------|-----------|------| +| 1 | 多维度标识查询接口 | 高 | 2-3 天 | 无 | +| 2 | MA 合并/拆分功能 | 高 | 3-5 天 | 无 | +| 3 | 用户管理/组织管理 | 中 | 5-7 天 | 无 | +| 4 | 目录库独立部署 | 中 | 3-5 天 | 架构评审 | +| 5 | 全国目录中心与数据同步 | 低 | 10+ 天 | 多省接入环境 | +| 6 | 运行监控 | 低 | 2-3 天 | 无 | +| 7 | 标识同步能力 | 低 | 5-7 天 | 全国目录中心 | diff --git a/IPTV系统融合MA码方案介绍.md b/IPTV系统融合MA码方案介绍.md new file mode 100644 index 0000000..7cf9f2f --- /dev/null +++ b/IPTV系统融合MA码方案介绍.md @@ -0,0 +1,137 @@ +# IPTV 系统融合 MA 统一标识代码方案介绍 + +## 一、方案简介 + +MA(国际统一标识代码)体系是我国完全自主知识产权的国际标准标识代码,具有全球唯一性和国际通用性。在影视剧内容中应用 MA 码,可以构建覆盖影视剧全产业链的国际标识解析与管理体系(数字身份证),实现"一剧一码、全链追溯、权责清晰、全球通行"。 + +本方案是针对陕西 IPTV 集成播控平台现有系统融合应用 MA 码进行规划设计,系统架构图设计如下: + +> **MA 码系统架构图** +> +> *(此处为系统架构图,请参考原 PDF 文件)* + +本系统是在现有省级 CPSP 内容生产、片库管理和运营商分发体系基础上,新增统一内容标识服务平台。系统不替代现有省内内容编码体系,而是在现有编码体系之上增加 MA 统一标识和 Hash 内容指纹,用于建立内容身份映射、内容快速识别和后续审核协同能力。 + +--- + +## 二、整体系统架构 + +### 1. 业务系统层 + +包括内容提供商平台、CPSP 系统和运营商平台。内容提供商平台负责内容提交和内容管理;CPSP 系统负责内容受理、加工、审核和发布;运营商平台负责内容接收、运营和分发。 + +现阶段内容主要仍按照原有业务流程流转,即内容提供商提交内容后,进入 CPSP 受理、处理、审核、发布流程,最终进入片库并分发至运营商平台。 + +### 2. 内容资源层 + +包括片库和目录库。片库为现有系统,负责存储实际媒体文件。目录库为本项目新增或扩展建设内容,负责存储 MA、Hash、片库文件 ID、省内内容编码等映射关系。后续目录库还可扩展审核状态、审核机构、审核时间、审核结论等审核协同信息。 + +### 3. 标识服务层 + +为本项目新增能力,主要包括标识服务、验真服务、MA 管理和系统管理四个模块。 + +#### (1)标识服务模块 + +负责生成和维护统一内容标识。其主要功能包括 MA 生成、Hash 登记、标识查询、标识映射管理和标识同步。该模块需要建立 MA 与 Hash、片库文件 ID、省内内容编码之间的映射关系,使同一内容可以通过不同系统编码关联到同一个统一标识。 + +#### (2)验真服务模块 + +主要用于内容识别和审核辅助。本项目中的"验真"不是面向可信认证或防篡改证明,而是通过 Hash、MA 等信息判断内容是否已经存在、是否已有对应标识、是否具备历史审核记录,从而为受理和审核环节提供辅助判断。验真服务可提供内容识别接口、Hash 匹配接口、MA 查询接口和审核记录查询接口。 + +#### (3)MA 管理模块 + +负责 MA 标识的生命周期管理,包括 MA 创建、维护、合并、拆分、失效、状态管理和一致性校验。该模块保证 MA 编码的唯一性、稳定性和可管理性。 + +#### (4)系统管理模块 + +负责平台基础管理能力,包括用户管理、组织管理、权限管理、配置管理、日志管理和运行监控。该模块用于保障标识服务平台安全、稳定、可追溯运行。 + +--- + +## 三、系统接口设计 + +结合本项目建设目标和分阶段实施路径,系统接口设计遵循"先建设、后扩展"的原则。 + +第一阶段重点建设统一内容标识体系,因此接口设计以标识登记和标识查询为主;后续随着审核协同、全国互联和生态推广逐步推进,再扩展相关服务接口。 + +### (一)第一阶段核心接口 + +#### 1. 标识登记接口 + +标识登记接口是第一阶段最核心的业务接口。该接口主要由 CPSP 系统调用,在内容完成审核并进入发布环节后触发。 + +接口主要完成以下工作: + +- 生成 MA 统一标识; +- 生成或登记内容 Hash; +- 建立 MA 与 Hash 的映射关系; +- 建立 MA 与片库文件 ID 的映射关系; +- 建立 MA 与省级内容编码的映射关系; +- 将相关信息写入目录库。 + +通过该接口,完成内容统一身份的建立和目录库数据沉淀。 + +#### 2. 标识查询接口 + +标识查询接口用于查询内容标识信息及相关映射关系。 + +该接口支持以下查询方式: + +- 根据 MA 查询; +- 根据 Hash 查询; +- 根据省级内容编码查询; +- 根据片库文件 ID 查询。 + +接口返回内容标识信息及相关映射关系,包括 MA、Hash、片库文件信息、省级内容编码等内容。该接口是目录库对外提供查询服务的基础接口,也是后续验真服务和审核协同能力的重要基础。 + +### (二)后续扩展接口 + +#### 1. 验真服务接口 + +该接口主要用于内容识别和审核辅助。当内容进入受理流程时,系统可根据 hash/MA/原内容等调用验真服务,对内容进行快速识别。 + +接口主要提供以下能力: + +- 判断内容是否已存在; +- 判断是否已生成 MA; +- 查询对应内容信息; +- 查询是否存在历史记录; +- 为审核人员提供辅助判断依据。 + +--- + +## 四、分阶段建设规划 + +### 1、第一阶段:省内统一标识建设 + +本阶段重点完成省内统一内容标识体系建设,在不改变现有省级内容编码体系的基础上,引入 MA 统一标识和 Hash 内容指纹,建立内容统一身份体系。 + +主要建设标识服务平台、目录库、MA 管理等核心能力,建立 MA、Hash、片库文件 ID 以及省内内容编码之间的映射关系。同步改造 CPSP 发布环节,在内容审核通过并发布时自动生成 MA,登记 Hash,并将相关信息写入目录库。 + +通过本阶段建设,形成"省内内容编码+MA+Hash"的双层标识体系,实现内容统一身份管理和内容快速识别能力,为后续审核协同和全国推广奠定基础。 + +### 2、第二阶段:省内审核辅助建设 + +在统一内容标识体系基础上,建设内容识别和审核辅助能力,推动内容标识体系与审核业务融合。 + +本阶段重点建设验真服务,并改造 CPSP 受理和审核流程。在内容进入受理环节时,通过 Hash 调用验真服务,识别内容是否已存在、是否已生成 MA 以及是否存在历史记录,为审核人员提供辅助判断依据。同时将审核结果与 MA 建立关联关系,逐步形成审核数据资产沉淀机制。 + +通过本阶段建设,实现内容快速识别、历史记录查询和审核辅助能力,为后续跨省审核协同提供数据基础。 + +### 3、第三阶段:全国统一标识与审核协同建设 + +在完成省内试点验证基础上,逐步扩展至全国范围,建设全国统一内容标识体系,并以统一 MA 为基础开展跨省审核协同建设。 + +本阶段需要制定全国统一 MA 编码规则,建设全国目录中心,建立省级目录库与全国目录中心之间的数据同步机制,实现各省内容编码与全国统一 MA 之间的映射关系。同时,将审核记录与 MA 建立关联,实现审核状态、审核结论和审核记录的跨省共享。 + +相应地,需要改造各省标识服务平台、目录库以及 CPSP 受理和审核流程,增加全国查询、跨省同步、审核记录共享以及审核结果回写等能力,并建立统一的数据治理和主数据管理机制。 + +通过本阶段建设,实现全国范围内内容身份统一管理、跨省内容快速识别、审核记录共享和审核结果复用,逐步减少重复审核工作量,形成全国统一内容协同体系。 + +### 4、第四阶段:生态推广应用 + +在全国统一内容标识体系和审核协同体系稳定运行基础上,逐步向内容提供商、运营商以及其他生态参与方开放相关能力,扩大 MA 体系应用范围。 + +本阶段重点开放 MA 查询、内容识别、审核记录查询和内容追踪等服务能力。内容提供商可利用统一标识能力实现内容查重、内容快速定位和内容状态查询;运营商可利用统一标识和审核协同能力快速识别内容身份、查询审核记录并共享审核成果。 + +通过本阶段建设,逐步形成覆盖内容生产、内容审核、内容分发和内容运营全过程的统一内容标识服务体系,实现内容身份统一、审核协同统一和内容管理统一,最终构建全国统一内容标识生态体系。 diff --git a/baidu-backup.sh b/baidu-backup.sh new file mode 100755 index 0000000..1ed33a6 --- /dev/null +++ b/baidu-backup.sh @@ -0,0 +1,349 @@ +#!/bin/bash +# ============================================================ +# 百度网盘备份脚本 +# 用法: ./baidu-backup.sh [目标目录] +# 示例: ./baidu-backup.sh /2026/0517 +# ./baidu-backup.sh # 自动使用 /年份/月日 +# ============================================================ + +set -e + +# ---- 配置 ---- +APP_KEY="z3gemBZfg7KYj6U3eHNfIzTs7uYS9OMh" +SECRET_KEY="ptCKj2DfxL0KtGR1pM08c9KO2t2UC7SR" +TOKEN_FILE="$HOME/.baidu_pan_token.json" +BLOCK_SIZE=$((4 * 1024 * 1024)) # 4MB + +# ---- 自动识别项目 ---- +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +PROJECT_NAME="$(basename "$SCRIPT_DIR")" +PARENT_DIR="$(dirname "$SCRIPT_DIR")" +ZIP_FILE="/tmp/${PROJECT_NAME}.zip" +MD5_FILE="/tmp/baidu_md5_list.txt" + +# ---- 目标目录 ---- +if [ -n "$1" ]; then + REMOTE_DIR="$1" +else + REMOTE_DIR="/$(date +%Y)/$(date +%m%d)" +fi +REMOTE_PATH="${REMOTE_DIR}/${PROJECT_NAME}.zip" + +echo "" +echo "╔══════════════════════════════════════════╗" +echo "║ 📦 百度网盘备份工具 ║" +echo "╚══════════════════════════════════════════╝" +echo "" +echo " 项目: $PROJECT_NAME" +echo " 目标: $REMOTE_PATH" +echo "" + +# ============================================================ +# 步骤1: 打包 +# ============================================================ +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "[1/5] 📦 打包项目文件..." +rm -f "$ZIP_FILE" +cd "$PARENT_DIR" + +# 先统计文件总数 +TOTAL_FILES=$(find "$PROJECT_NAME" -not -path "${PROJECT_NAME}/.git/*" -type f | wc -l | tr -d ' ') +echo " 📊 共 ${TOTAL_FILES} 个文件" + +# 打包并实时显示百分比 +COUNTER=0 +zip -r "$ZIP_FILE" "$PROJECT_NAME" -x "${PROJECT_NAME}/.git/*" 2>&1 | while IFS= read -r line; do + COUNTER=$((COUNTER + 1)) + PCT=$((COUNTER * 100 / TOTAL_FILES)) + if [ $PCT -gt 100 ]; then PCT=100; fi + # 进度条 + BAR_FILLED=$((PCT * 30 / 100)) + BAR_EMPTY=$((30 - BAR_FILLED)) + BAR="" + for ((b=0; b/dev/null || stat -c%s "$ZIP_FILE" 2>/dev/null) +FILE_SIZE_MB=$((FILE_SIZE / 1024 / 1024)) +echo " ✅ 打包完成: ${FILE_SIZE_MB}MB" + +# ============================================================ +# 步骤2: 获取 Token(缓存 / 刷新 / 设备授权) +# ============================================================ +echo "" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "[2/5] 🔑 获取百度网盘授权..." + +ACCESS_TOKEN="" + +# 尝试读取缓存 +if [ -f "$TOKEN_FILE" ]; then + CACHED=$(python3 -c " +import json, time, sys +with open('$TOKEN_FILE') as f: + d = json.load(f) +if time.time() < d.get('expires_at', 0): + print('VALID|' + d['access_token']) +else: + print('EXPIRED|' + d.get('refresh_token', '')) +" 2>/dev/null || echo "FAIL|") + + STATUS="${CACHED%%|*}" + VALUE="${CACHED#*|}" + + if [ "$STATUS" = "VALID" ]; then + ACCESS_TOKEN="$VALUE" + echo " ✅ 使用缓存 Token(有效)" + elif [ "$STATUS" = "EXPIRED" ] && [ -n "$VALUE" ]; then + echo " ⏳ Token 已过期,尝试刷新..." + RESP=$(curl -s -X POST "https://openapi.baidu.com/oauth/2.0/token" \ + -d "grant_type=refresh_token&refresh_token=${VALUE}&client_id=${APP_KEY}&client_secret=${SECRET_KEY}") + NEW_TOKEN=$(echo "$RESP" | python3 -c "import sys,json;d=json.load(sys.stdin);print(d.get('access_token',''))" 2>/dev/null) + if [ -n "$NEW_TOKEN" ]; then + ACCESS_TOKEN="$NEW_TOKEN" + # 更新缓存 + python3 -c " +import json, time +d = json.loads('$RESP'.replace(\"'\", '\"')) +token = {'access_token': d['access_token'], 'refresh_token': d['refresh_token'], 'expires_at': int(time.time()) + d['expires_in']} +with open('$TOKEN_FILE', 'w') as f: json.dump(token, f) +" 2>/dev/null + echo " ✅ Token 刷新成功" + else + echo " ⚠️ 刷新失败,需要重新授权" + fi + fi +fi + +# 如果没有有效 Token,走设备授权流程 +if [ -z "$ACCESS_TOKEN" ]; then + echo " 🔐 需要设备授权..." + DEVICE_RESP=$(curl -s -X POST "https://openapi.baidu.com/oauth/2.0/device/code" \ + -d "response_type=device_code&client_id=${APP_KEY}&scope=basic,netdisk") + + DEVICE_CODE=$(echo "$DEVICE_RESP" | python3 -c "import sys,json;print(json.load(sys.stdin)['device_code'])") + USER_CODE=$(echo "$DEVICE_RESP" | python3 -c "import sys,json;print(json.load(sys.stdin)['user_code'])") + QRCODE_URL=$(echo "$DEVICE_RESP" | python3 -c "import sys,json;print(json.load(sys.stdin)['qrcode_url'])") + + echo "" + echo " ┌─────────────────────────────────────┐" + echo " │ 请打开: https://openapi.baidu.com/device" + echo " │ 输入码: $USER_CODE" + echo " │ 或扫码: $QRCODE_URL" + echo " └─────────────────────────────────────┘" + echo "" + read -p " 授权完成后按回车继续..." _ + + TOKEN_RESP=$(curl -s -X POST "https://openapi.baidu.com/oauth/2.0/token" \ + -d "grant_type=device_token&code=${DEVICE_CODE}&client_id=${APP_KEY}&client_secret=${SECRET_KEY}") + ACCESS_TOKEN=$(echo "$TOKEN_RESP" | python3 -c "import sys,json;print(json.load(sys.stdin).get('access_token',''))" 2>/dev/null) + + if [ -z "$ACCESS_TOKEN" ]; then + echo " ❌ 授权失败: $TOKEN_RESP" + rm -f "$ZIP_FILE" + exit 1 + fi + + # 保存缓存 + echo "$TOKEN_RESP" | python3 -c " +import sys, json, time +d = json.load(sys.stdin) +token = {'access_token': d['access_token'], 'refresh_token': d['refresh_token'], 'expires_at': int(time.time()) + d['expires_in']} +with open('$TOKEN_FILE', 'w') as f: json.dump(token, f) +" + echo " ✅ 授权成功,Token 已缓存" +fi + +# ============================================================ +# 步骤3: 预创建文件 +# ============================================================ +echo "" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +BLOCKS=$(( (FILE_SIZE + BLOCK_SIZE - 1) / BLOCK_SIZE )) +echo "[3/5] 📋 预创建文件(${BLOCKS}个分片)..." +BLOCK_LIST=$(python3 -c "import json; print(json.dumps(['0'*32]*$BLOCKS))") +PRE_RESP=$(curl -s "https://pan.baidu.com/rest/2.0/xpan/file?method=precreate&access_token=${ACCESS_TOKEN}" \ + -d "path=${REMOTE_PATH}&size=${FILE_SIZE}&isdir=0&autoinit=1&block_list=${BLOCK_LIST}") +UPLOAD_ID=$(echo "$PRE_RESP" | python3 -c "import sys,json;print(json.load(sys.stdin).get('uploadid',''))" 2>/dev/null) +if [ -z "$UPLOAD_ID" ]; then + echo " ❌ 预创建失败: $PRE_RESP" + rm -f "$ZIP_FILE" + exit 1 +fi +echo " ✅ 预创建成功" + +# ============================================================ +# 步骤4: 分片上传(并发) +# ============================================================ +echo "" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +PARALLEL="${BAIDU_PARALLEL:-8}" +if [ "$PARALLEL" -gt "$BLOCKS" ]; then PARALLEL=$BLOCKS; fi +echo "[4/5] 🚀 上传中(${PARALLEL} 路并发)..." +echo "" + +UNSORTED_MD5="/tmp/baidu_md5_unsorted_${UPLOAD_ID}.txt" +PROGRESS_FILE="/tmp/baidu_progress_${UPLOAD_ID}.txt" +ERR_FILE="/tmp/baidu_err_${UPLOAD_ID}.txt" +DONE_FLAG="/tmp/baidu_done_${UPLOAD_ID}" +: > "$UNSORTED_MD5" +: > "$PROGRESS_FILE" +: > "$ERR_FILE" +rm -f "$DONE_FLAG" +: > "$MD5_FILE" +START_TIME=$(date +%s) + +# 单分片上传 worker(并发安全:单行 echo < PIPE_BUF 是原子写) +upload_part() { + local i=$1 + local chunk="/tmp/baidu_chunk_${UPLOAD_ID}_${i}" + dd if="$ZIP_FILE" bs="$BLOCK_SIZE" skip="$i" count=1 2>/dev/null > "$chunk" + local resp md5 attempt + md5="" + for attempt in 1 2 3; do + resp=$(curl -s --max-time 600 \ + "https://d.pcs.baidu.com/rest/2.0/pcs/superfile2?method=upload&access_token=${ACCESS_TOKEN}&type=tmpfile&path=${REMOTE_PATH}&uploadid=${UPLOAD_ID}&partseq=${i}" \ + -F "file=@${chunk}") + md5=$(echo "$resp" | python3 -c "import sys,json;print(json.load(sys.stdin).get('md5',''))" 2>/dev/null) + [ -n "$md5" ] && break + sleep $((attempt * 2)) + done + rm -f "$chunk" + if [ -z "$md5" ]; then + echo "part ${i} failed after 3 attempts: ${resp}" >> "$ERR_FILE" + return 1 + fi + echo "${i}|${md5}" >> "$UNSORTED_MD5" + echo "x" >> "$PROGRESS_FILE" +} +export -f upload_part +export ZIP_FILE BLOCK_SIZE ACCESS_TOKEN REMOTE_PATH UPLOAD_ID +export UNSORTED_MD5 PROGRESS_FILE ERR_FILE + +# 后台进度刷新进程(每秒刷新一次) +( + while :; do + DONE=$(wc -l < "$PROGRESS_FILE" 2>/dev/null | tr -d ' ') + DONE=${DONE:-0} + if [ "$DONE" -gt "$BLOCKS" ]; then DONE=$BLOCKS; fi + PCT=$((DONE * 100 / BLOCKS)) + UPLOADED_MB=$((DONE * BLOCK_SIZE / 1024 / 1024)) + if [ $UPLOADED_MB -gt $FILE_SIZE_MB ]; then UPLOADED_MB=$FILE_SIZE_MB; fi + NOW=$(date +%s) + ELAPSED=$((NOW - START_TIME)) + if [ $ELAPSED -gt 0 ] && [ $DONE -gt 0 ]; then + SPEED_KB=$((DONE * BLOCK_SIZE / 1024 / ELAPSED)) + SPEED_INT=$((SPEED_KB / 1024)) + SPEED_DEC=$(( (SPEED_KB % 1024) * 10 / 1024 )) + if [ "$SPEED_KB" -gt 0 ]; then + REMAINING_KB=$(( (FILE_SIZE - DONE * BLOCK_SIZE) / 1024 )) + if [ $REMAINING_KB -lt 0 ]; then REMAINING_KB=0; fi + ETA=$(( REMAINING_KB / SPEED_KB )) + ETA_MIN=$((ETA / 60)) + ETA_SEC=$((ETA % 60)) + ETA_STR="${ETA_MIN}m${ETA_SEC}s" + else + ETA_STR="计算中" + fi + else + SPEED_INT=0 + SPEED_DEC=0 + ETA_STR="计算中" + fi + BAR_FILLED=$((PCT * 30 / 100)) + BAR_EMPTY=$((30 - BAR_FILLED)) + BAR="" + for ((b=0; b/dev/null || true +echo "" + +if [ "$XARGS_RC" -ne 0 ]; then + echo "" + echo " ❌ 分片上传失败:" + if [ -s "$ERR_FILE" ]; then + head -n 5 "$ERR_FILE" + fi + rm -f "$ZIP_FILE" "$MD5_FILE" "$UNSORTED_MD5" "$PROGRESS_FILE" "$ERR_FILE" "$DONE_FLAG" + rm -f /tmp/baidu_chunk_${UPLOAD_ID}_* + exit 1 +fi + +# 校验分片数 +DONE_COUNT=$(wc -l < "$UNSORTED_MD5" | tr -d ' ') +if [ "$DONE_COUNT" != "$BLOCKS" ]; then + echo "" + echo " ❌ 分片数不匹配: ${DONE_COUNT}/${BLOCKS}" + if [ -s "$ERR_FILE" ]; then + head -n 5 "$ERR_FILE" + fi + rm -f "$ZIP_FILE" "$MD5_FILE" "$UNSORTED_MD5" "$PROGRESS_FILE" "$ERR_FILE" "$DONE_FLAG" + rm -f /tmp/baidu_chunk_${UPLOAD_ID}_* + exit 1 +fi + +# 按 partseq 升序生成最终 MD5_FILE +sort -t'|' -k1n "$UNSORTED_MD5" | cut -d'|' -f2 > "$MD5_FILE" +rm -f "$UNSORTED_MD5" "$PROGRESS_FILE" "$ERR_FILE" "$DONE_FLAG" + +echo "" +echo " ✅ 所有分片上传完成" + +# ============================================================ +# 步骤5: 合并文件 +# ============================================================ +echo "" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo "[5/5] 🔗 合并文件..." +MD5_LIST=$(awk '{printf "\"%s\",", $0}' "$MD5_FILE" | sed 's/,$//') +CREATE_RESP=$(curl -s "https://pan.baidu.com/rest/2.0/xpan/file?method=create&access_token=${ACCESS_TOKEN}" \ + -d "path=${REMOTE_PATH}&size=${FILE_SIZE}&isdir=0&uploadid=${UPLOAD_ID}&block_list=[${MD5_LIST}]") +CREATE_ERRNO=$(echo "$CREATE_RESP" | python3 -c "import sys,json;print(json.load(sys.stdin).get('errno',99))" 2>/dev/null) +FINAL_PATH=$(echo "$CREATE_RESP" | python3 -c "import sys,json;print(json.load(sys.stdin).get('path',''))" 2>/dev/null) + +# 清理 +rm -f "$ZIP_FILE" "$MD5_FILE" +rm -f /tmp/baidu_chunk_${UPLOAD_ID}_* 2>/dev/null || true + +# 计算耗时 +END_TIME=$(date +%s) +TOTAL=$((END_TIME - START_TIME)) +T_MIN=$((TOTAL / 60)) +T_SEC=$((TOTAL % 60)) + +# 输出结果 +echo "" +echo "╔══════════════════════════════════════════════╗" +if [ "$CREATE_ERRNO" = "0" ]; then + echo "║ 📦 百度网盘备份完成! ║" + echo "╠══════════════════════════════════════════════╣" + echo " 📁 路径: $FINAL_PATH" + echo " 📊 大小: ${FILE_SIZE_MB} MB" + echo " ⏱️ 耗时: ${T_MIN}分${T_SEC}秒" + echo " ✅ 状态: 上传成功" +else + echo "║ ❌ 合并失败 ║" + echo "╠══════════════════════════════════════════════╣" + echo " errno: $CREATE_ERRNO" + echo " 响应: $CREATE_RESP" +fi +echo "╚══════════════════════════════════════════════╝" +echo "" diff --git a/docs/IPTV系统融合MA码方案介绍(1).pdf b/docs/IPTV系统融合MA码方案介绍(1).pdf new file mode 100644 index 0000000000000000000000000000000000000000..59db6b71014889e7c81ca6cf9a1f099c6c352a10 GIT binary patch literal 608440 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
    f-8DiQ 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

    t+jKD|}1rl0wY0qK(g;{sFjkwZ++O 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%0AkZjKUIPX4t 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


    i@UpAWO;A@Z})BO{gk@E58XX8 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�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
    X-jzEZTti`ID4G!+>OB|Sr7wu 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 o2p3&Aqy= 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

    A>poNnb?H??~Y!~r_b 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

    oMy>I>$Y~ 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 eHHIqF@6RT|tEb 0.1 + for: 5m + labels: + severity: critical + annotations: + summary: "错误率超过 10%" + + - alert: HighLatency + expr: histogram_quantile(0.95, sum(rate(tcs_http_request_duration_seconds_bucket[5m])) by (le)) > 2 + for: 5m + labels: + severity: warning + annotations: + summary: "P95 延迟超过 2 秒" + + - alert: HighInFlight + expr: tcs_http_in_flight_requests > 100 + for: 2m + labels: + severity: warning + annotations: + summary: "在途请求超过 100" +``` diff --git a/tcs-iptv/deploy/monitoring/grafana-dashboard.json b/tcs-iptv/deploy/monitoring/grafana-dashboard.json new file mode 100644 index 0000000..083ba9c --- /dev/null +++ b/tcs-iptv/deploy/monitoring/grafana-dashboard.json @@ -0,0 +1,181 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "TCS-IPTV MA 码系统运行监控面板 — 覆盖4金指标:Latency / Traffic / Errors / Saturation", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "title": "请求延迟 (Latency — P50/P95/P99)", + "type": "timeseries", + "datasource": "Prometheus", + "gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 }, + "fieldConfig": { + "defaults": { + "unit": "s", + "color": { "mode": "palette-classic" } + } + }, + "targets": [ + { + "expr": "histogram_quantile(0.50, sum(rate(tcs_http_request_duration_seconds_bucket[5m])) by (le))", + "legendFormat": "P50", + "refId": "A" + }, + { + "expr": "histogram_quantile(0.95, sum(rate(tcs_http_request_duration_seconds_bucket[5m])) by (le))", + "legendFormat": "P95", + "refId": "B" + }, + { + "expr": "histogram_quantile(0.99, sum(rate(tcs_http_request_duration_seconds_bucket[5m])) by (le))", + "legendFormat": "P99", + "refId": "C" + } + ] + }, + { + "title": "请求总量 (Traffic — QPS)", + "type": "timeseries", + "datasource": "Prometheus", + "gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 }, + "fieldConfig": { + "defaults": { + "unit": "reqps", + "color": { "mode": "palette-classic" } + } + }, + "targets": [ + { + "expr": "sum(rate(tcs_http_requests_total[1m])) by (method, path)", + "legendFormat": "{{method}} {{path}}", + "refId": "A" + } + ] + }, + { + "title": "错误率 (Errors — 4xx/5xx)", + "type": "timeseries", + "datasource": "Prometheus", + "gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 }, + "fieldConfig": { + "defaults": { + "unit": "reqps", + "color": { "mode": "palette-classic" } + } + }, + "targets": [ + { + "expr": "sum(rate(tcs_http_errors_total[5m])) by (method, path, status)", + "legendFormat": "{{method}} {{path}} {{status}}", + "refId": "A" + } + ] + }, + { + "title": "在途请求 (Saturation — 并发数)", + "type": "stat", + "datasource": "Prometheus", + "gridPos": { "h": 8, "w": 6, "x": 12, "y": 8 }, + "fieldConfig": { + "defaults": { + "unit": "short", + "thresholds": { + "steps": [ + { "color": "green", "value": null }, + { "color": "yellow", "value": 50 }, + { "color": "red", "value": 100 } + ] + } + } + }, + "targets": [ + { + "expr": "tcs_http_in_flight_requests", + "legendFormat": "在途请求", + "refId": "A" + } + ] + }, + { + "title": "错误率百分比", + "type": "gauge", + "datasource": "Prometheus", + "gridPos": { "h": 8, "w": 6, "x": 18, "y": 8 }, + "fieldConfig": { + "defaults": { + "unit": "percentunit", + "min": 0, + "max": 1, + "thresholds": { + "steps": [ + { "color": "green", "value": null }, + { "color": "yellow", "value": 0.05 }, + { "color": "red", "value": 0.1 } + ] + } + } + }, + "targets": [ + { + "expr": "sum(rate(tcs_http_errors_total[5m])) / sum(rate(tcs_http_requests_total[5m]))", + "legendFormat": "错误率", + "refId": "A" + } + ] + }, + { + "title": "按路径延迟热力图", + "type": "heatmap", + "datasource": "Prometheus", + "gridPos": { "h": 8, "w": 24, "x": 0, "y": 16 }, + "targets": [ + { + "expr": "sum(rate(tcs_http_request_duration_seconds_bucket[5m])) by (le, path)", + "legendFormat": "{{path}}", + "refId": "A", + "format": "heatmap" + } + ], + "options": { + "calculate": false, + "cellGap": 1, + "color": { + "scheme": "Spectral" + } + } + } + ], + "refresh": "10s", + "schemaVersion": 38, + "style": "dark", + "tags": ["tcs-iptv", "ma-code"], + "templating": { + "list": [] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "TCS-IPTV MA 码系统监控", + "uid": "tcs-iptv-monitor", + "version": 1, + "weekStart": "" +} diff --git a/tcs-iptv/deploy/monitoring/prometheus.yml b/tcs-iptv/deploy/monitoring/prometheus.yml new file mode 100644 index 0000000..90b78e0 --- /dev/null +++ b/tcs-iptv/deploy/monitoring/prometheus.yml @@ -0,0 +1,39 @@ +# TCS-IPTV Prometheus 采集配置 +# 对应方案:系统管理模块 — 运行监控 + +global: + scrape_interval: 15s + evaluation_interval: 15s + +scrape_configs: + # api-svc 主服务 + - job_name: "tcs-api-svc" + metrics_path: /metrics + static_configs: + - targets: ["api-svc:8080"] + labels: + service: "api-svc" + + # chain-svc 链服务 + - job_name: "tcs-chain-svc" + metrics_path: /metrics + static_configs: + - targets: ["chain-svc:8081"] + labels: + service: "chain-svc" + + # hash-api 哈希服务 + - job_name: "tcs-hash-api" + metrics_path: /metrics + static_configs: + - targets: ["hash-api:8082"] + labels: + service: "hash-api" + + # catalog-svc 目录库服务(独立部署时启用) + - job_name: "tcs-catalog-svc" + metrics_path: /metrics + static_configs: + - targets: ["catalog-svc:8083"] + labels: + service: "catalog-svc" diff --git a/tcs-iptv/go.mod b/tcs-iptv/go.mod index d0d66d7..600cff0 100644 --- a/tcs-iptv/go.mod +++ b/tcs-iptv/go.mod @@ -1,16 +1,18 @@ module github.com/tcs-iptv/tcs -go 1.23 +go 1.25.0 require ( github.com/gin-gonic/gin v1.10.0 github.com/lib/pq v1.12.3 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.11.1 ) require ( + github.com/beorn7/perks v1.0.1 // indirect github.com/bytedance/sonic v1.11.6 // indirect github.com/bytedance/sonic/loader v0.1.1 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cloudwego/base64x v0.1.4 // indirect github.com/cloudwego/iasm v0.2.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -26,15 +28,21 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.23.2 // indirect + github.com/prometheus/client_model v0.6.2 // indirect + github.com/prometheus/common v0.66.1 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/arch v0.8.0 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/net v0.25.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect - google.golang.org/protobuf v1.34.1 // indirect + golang.org/x/crypto v0.41.0 // indirect + golang.org/x/net v0.43.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/text v0.36.0 // indirect + google.golang.org/protobuf v1.36.8 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/tcs-iptv/go.sum b/tcs-iptv/go.sum index 34183ac..47478ff 100644 --- a/tcs-iptv/go.sum +++ b/tcs-iptv/go.sum @@ -1,7 +1,11 @@ +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0= github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4= github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= @@ -45,10 +49,20 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= +github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= +github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= +github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -61,27 +75,42 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc= golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tcs-iptv/internal/api/admin_handlers.go b/tcs-iptv/internal/api/admin_handlers.go new file mode 100644 index 0000000..a78f709 --- /dev/null +++ b/tcs-iptv/internal/api/admin_handlers.go @@ -0,0 +1,160 @@ +package api + +import ( + "net/http" + + "github.com/gin-gonic/gin" + "github.com/tcs-iptv/tcs/internal/httpx" + "github.com/tcs-iptv/tcs/internal/model" + "github.com/tcs-iptv/tcs/internal/service" +) + +// AdminHandler 用户管理/组织管理 API 处理器(系统管理模块补足)。 +type AdminHandler struct { + admin *service.AdminService +} + +// NewAdminHandler 创建用户/组织管理 API 处理器。 +func NewAdminHandler(admin *service.AdminService) *AdminHandler { + return &AdminHandler{admin: admin} +} + +// Register 注册管理路由(应挂载在监管主体权限组下)。 +func (h *AdminHandler) Register(rg *gin.RouterGroup) { + // 组织管理 + rg.POST("/admin/orgs", h.createOrg) + rg.PUT("/admin/orgs/:id", h.updateOrg) + rg.GET("/admin/orgs", h.listOrgs) + rg.GET("/admin/orgs/:id", h.getOrg) + rg.POST("/admin/orgs/:id/disable", h.disableOrg) + // 用户管理 + rg.POST("/admin/users", h.createUser) + rg.PUT("/admin/users/:id", h.updateUser) + rg.GET("/admin/users", h.listUsers) + rg.GET("/admin/users/:id", h.getUser) + rg.POST("/admin/users/:id/disable", h.disableUser) + rg.POST("/admin/users/:id/reset-key", h.resetAPIKey) +} + +// ---- 组织管理 handlers ---- + +func (h *AdminHandler) createOrg(c *gin.Context) { + var org model.Organization + if err := c.ShouldBindJSON(&org); err != nil { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", err.Error()) + return + } + result, err := h.admin.CreateOrg(org) + if err != nil { + httpx.Error(c, http.StatusBadRequest, "CREATE_ORG_FAILED", err.Error()) + return + } + httpx.Created(c, result) +} + +func (h *AdminHandler) updateOrg(c *gin.Context) { + orgID := c.Param("id") + var updates model.Organization + if err := c.ShouldBindJSON(&updates); err != nil { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", err.Error()) + return + } + result, err := h.admin.UpdateOrg(orgID, updates) + if err != nil { + httpx.Error(c, http.StatusBadRequest, "UPDATE_ORG_FAILED", err.Error()) + return + } + httpx.OK(c, result) +} + +func (h *AdminHandler) getOrg(c *gin.Context) { + orgID := c.Param("id") + org, err := h.admin.GetOrg(orgID) + if err != nil { + httpx.Error(c, http.StatusNotFound, "NOT_FOUND", err.Error()) + return + } + httpx.OK(c, org) +} + +func (h *AdminHandler) listOrgs(c *gin.Context) { + orgType := c.Query("type") + orgs := h.admin.ListOrgs(orgType) + httpx.OK(c, orgs) +} + +func (h *AdminHandler) disableOrg(c *gin.Context) { + orgID := c.Param("id") + if err := h.admin.DisableOrg(orgID); err != nil { + httpx.Error(c, http.StatusBadRequest, "DISABLE_ORG_FAILED", err.Error()) + return + } + httpx.OK(c, gin.H{"status": "disabled"}) +} + +// ---- 用户管理 handlers ---- + +func (h *AdminHandler) createUser(c *gin.Context) { + var user model.User + if err := c.ShouldBindJSON(&user); err != nil { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", err.Error()) + return + } + result, err := h.admin.CreateUser(user) + if err != nil { + httpx.Error(c, http.StatusBadRequest, "CREATE_USER_FAILED", err.Error()) + return + } + httpx.Created(c, result) +} + +func (h *AdminHandler) updateUser(c *gin.Context) { + userID := c.Param("id") + var updates model.User + if err := c.ShouldBindJSON(&updates); err != nil { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", err.Error()) + return + } + result, err := h.admin.UpdateUser(userID, updates) + if err != nil { + httpx.Error(c, http.StatusBadRequest, "UPDATE_USER_FAILED", err.Error()) + return + } + httpx.OK(c, result) +} + +func (h *AdminHandler) getUser(c *gin.Context) { + userID := c.Param("id") + user, err := h.admin.GetUser(userID) + if err != nil { + httpx.Error(c, http.StatusNotFound, "NOT_FOUND", err.Error()) + return + } + httpx.OK(c, user) +} + +func (h *AdminHandler) listUsers(c *gin.Context) { + orgID := c.Query("org_id") + role := c.Query("role") + users := h.admin.ListUsers(orgID, role) + httpx.OK(c, users) +} + +func (h *AdminHandler) disableUser(c *gin.Context) { + userID := c.Param("id") + if err := h.admin.DisableUser(userID); err != nil { + httpx.Error(c, http.StatusBadRequest, "DISABLE_USER_FAILED", err.Error()) + return + } + httpx.OK(c, gin.H{"status": "disabled"}) +} + +func (h *AdminHandler) resetAPIKey(c *gin.Context) { + userID := c.Param("id") + user, err := h.admin.ResetAPIKey(userID) + if err != nil { + httpx.Error(c, http.StatusBadRequest, "RESET_KEY_FAILED", err.Error()) + return + } + httpx.OK(c, user) +} diff --git a/tcs-iptv/internal/api/catalog_handlers.go b/tcs-iptv/internal/api/catalog_handlers.go new file mode 100644 index 0000000..6c91584 --- /dev/null +++ b/tcs-iptv/internal/api/catalog_handlers.go @@ -0,0 +1,99 @@ +package api + +import ( + "net/http" + + "github.com/gin-gonic/gin" + "github.com/tcs-iptv/tcs/internal/catalog" + "github.com/tcs-iptv/tcs/internal/httpx" +) + +// CatalogHandler 目录库独立微服务 API 处理器。 +// 提供四维度标识查询接口,可作为独立服务部署。 +type CatalogHandler struct { + cat *catalog.Catalog +} + +// NewCatalogHandler 创建目录库 API 处理器。 +func NewCatalogHandler(cat *catalog.Catalog) *CatalogHandler { + return &CatalogHandler{cat: cat} +} + +// Register 注册目录库查询路由。 +func (h *CatalogHandler) Register(rg *gin.RouterGroup) { + rg.GET("/catalog/query-by-ma", h.queryByMA) + rg.GET("/catalog/query-by-hash", h.queryByHash) + rg.GET("/catalog/query-by-provincial-code", h.queryByProvincialCode) + rg.GET("/catalog/query-by-library-id", h.queryByLibraryID) + rg.GET("/catalog/query-all", h.queryAll) +} + +func (h *CatalogHandler) queryByMA(c *gin.Context) { + maCode := c.Query("ma_code") + if maCode == "" { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", "缺少 ma_code 参数") + return + } + result, err := h.cat.QueryByMA(maCode) + if err != nil { + httpx.Error(c, http.StatusNotFound, "NOT_FOUND", err.Error()) + return + } + httpx.OK(c, result) +} + +func (h *CatalogHandler) queryByHash(c *gin.Context) { + fileHash := c.Query("file_hash") + if fileHash == "" { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", "缺少 file_hash 参数") + return + } + result, err := h.cat.QueryByHash(fileHash) + if err != nil { + httpx.Error(c, http.StatusNotFound, "NOT_FOUND", err.Error()) + return + } + httpx.OK(c, result) +} + +func (h *CatalogHandler) queryByProvincialCode(c *gin.Context) { + code := c.Query("provincial_code") + if code == "" { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", "缺少 provincial_code 参数") + return + } + result, err := h.cat.QueryByProvincialCode(code) + if err != nil { + httpx.Error(c, http.StatusNotFound, "NOT_FOUND", err.Error()) + return + } + httpx.OK(c, result) +} + +func (h *CatalogHandler) queryByLibraryID(c *gin.Context) { + libraryID := c.Query("library_id") + if libraryID == "" { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", "缺少 library_id 参数") + return + } + result, err := h.cat.QueryByLibraryFileID(libraryID) + if err != nil { + httpx.Error(c, http.StatusNotFound, "NOT_FOUND", err.Error()) + return + } + httpx.OK(c, result) +} + +func (h *CatalogHandler) queryAll(c *gin.Context) { + maCode := c.Query("ma_code") + if maCode == "" { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", "缺少 ma_code 参数") + return + } + result, err := h.cat.QueryAll(maCode) + if err != nil { + httpx.Error(c, http.StatusNotFound, "NOT_FOUND", err.Error()) + return + } + httpx.OK(c, result) +} diff --git a/tcs-iptv/internal/api/catalog_handlers_test.go b/tcs-iptv/internal/api/catalog_handlers_test.go new file mode 100644 index 0000000..97f8a48 --- /dev/null +++ b/tcs-iptv/internal/api/catalog_handlers_test.go @@ -0,0 +1,108 @@ +package api + +import ( + "encoding/json" + "net/http" + "net/http/httptest" + "testing" + + "github.com/gin-gonic/gin" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/tcs-iptv/tcs/internal/catalog" + "github.com/tcs-iptv/tcs/internal/chain" + "github.com/tcs-iptv/tcs/internal/model" +) + +func TestCatalogHandler_QueryByMA(t *testing.T) { + gin.SetMode(gin.TestMode) + c := chain.NewMemoryChain() + + // 发码 + _, err := c.IssueMA(chain.RoleRegulator, chain.IssueRequest{ + MACode: "MA.156.8531.6101/WD/20260000001", ContentTwinID: "ctid-cat-svc-001", + FileHash: "fh-cat-svc-001", MerkleRoot: "mr-cat-svc-001", + Content: model.Content{Title: "目录库服务测试", MAType: "WD", Issuer: "测试局"}, + }) + require.NoError(t, err) + + cat := catalog.New(c) + h := NewCatalogHandler(cat) + + r := gin.New() + rg := r.Group("/api/v1") + h.Register(rg) + + // 按 MA 码查询 + w := httptest.NewRecorder() + req := httptest.NewRequest("GET", "/api/v1/catalog/query-by-ma?ma_code=MA.156.8531.6101/WD/20260000001", nil) + r.ServeHTTP(w, req) + assert.Equal(t, http.StatusOK, w.Code) + + var resp struct { + Code string `json:"code"` + Data model.ContentQueryResult `json:"data"` + } + err = json.Unmarshal(w.Body.Bytes(), &resp) + require.NoError(t, err) + assert.Equal(t, "SUCCESS", resp.Code) + assert.True(t, resp.Data.Found) + assert.Equal(t, "目录库服务测试", resp.Data.Content.Title) +} + +func TestCatalogHandler_QueryByHash(t *testing.T) { + gin.SetMode(gin.TestMode) + c := chain.NewMemoryChain() + + _, err := c.IssueMA(chain.RoleRegulator, chain.IssueRequest{ + MACode: "MA.156.8531.6101/WD/20260000002", ContentTwinID: "ctid-cat-svc-002", + FileHash: "fh-cat-svc-002", MerkleRoot: "mr-cat-svc-002", + Content: model.Content{Title: "Hash查询服务测试", MAType: "WD", Issuer: "测试局"}, + }) + require.NoError(t, err) + + cat := catalog.New(c) + h := NewCatalogHandler(cat) + + r := gin.New() + rg := r.Group("/api/v1") + h.Register(rg) + + // 按 Hash 查询 + w := httptest.NewRecorder() + req := httptest.NewRequest("GET", "/api/v1/catalog/query-by-hash?file_hash=fh-cat-svc-002", nil) + r.ServeHTTP(w, req) + assert.Equal(t, http.StatusOK, w.Code) + + var resp struct { + Code string `json:"code"` + Data model.ContentQueryResult `json:"data"` + } + err = json.Unmarshal(w.Body.Bytes(), &resp) + require.NoError(t, err) + assert.True(t, resp.Data.Found) + assert.Equal(t, "MA.156.8531.6101/WD/20260000002", resp.Data.Content.MACode) + + // 缺少参数 + w2 := httptest.NewRecorder() + req2 := httptest.NewRequest("GET", "/api/v1/catalog/query-by-hash", nil) + r.ServeHTTP(w2, req2) + assert.Equal(t, http.StatusBadRequest, w2.Code) +} + +func TestCatalogHandler_NotFound(t *testing.T) { + gin.SetMode(gin.TestMode) + c := chain.NewMemoryChain() + cat := catalog.New(c) + h := NewCatalogHandler(cat) + + r := gin.New() + rg := r.Group("/api/v1") + h.Register(rg) + + // 不存在的 MA 码 + w := httptest.NewRecorder() + req := httptest.NewRequest("GET", "/api/v1/catalog/query-by-ma?ma_code=nonexistent", nil) + r.ServeHTTP(w, req) + assert.Equal(t, http.StatusNotFound, w.Code) +} diff --git a/tcs-iptv/internal/api/handlers.go b/tcs-iptv/internal/api/handlers.go index 129326a..0f3e78f 100644 --- a/tcs-iptv/internal/api/handlers.go +++ b/tcs-iptv/internal/api/handlers.go @@ -60,6 +60,13 @@ func (h *Handler) Register(rg *gin.RouterGroup) { rg.GET("/regulatory/national-stats", h.nationalStats) // 全国监管统计(三期F.2) rg.GET("/regulatory/daily-report", h.dailyReport) // 监管数据上报日报(三期A.2) rg.GET("/admin/segments", h.listSegments) // 号段管理(三期B.1) + // ---- 多维度标识查询(方案第一阶段标识查询接口补足)---- + rg.GET("/content/query-by-hash", h.queryByHash) // 按 Hash 反查标识信息 + rg.GET("/content/query-by-provincial-code", h.queryByProvincialCode) // 按省级内容编码反查 + rg.GET("/content/query-by-library-id", h.queryByLibraryID) // 按片库文件ID反查 + // ---- MA 合并/拆分(方案 MA 管理模块补足)---- + rg.POST("/content/merge", h.mergeMA) // MA 码合并(仅监管) + rg.POST("/content/split", h.splitMA) // MA 码拆分(仅监管) // ---- 四期:大小屏融合(跨域解析/扫码验真/跨屏权益)---- rg.GET("/content/resolve", h.resolve) // MA 跨域解析网关(C.1/C.2) rg.POST("/content/scan-verify", h.scanVerify) // 用户扫码验真(B.2) @@ -744,3 +751,82 @@ func (h *Handler) verifyRights(c *gin.Context) { } httpx.OK(c, h.svc.VerifyCrossScreenRights(req.MACode, req.UserHash, model.ScreenType(req.Screen))) } + +// ---- 多维度标识查询 handlers ---- + +// queryByHash 按内容哈希反查标识信息。 +func (h *Handler) queryByHash(c *gin.Context) { + fileHash := c.Query("file_hash") + if fileHash == "" { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", "缺少 file_hash 参数") + return + } + res, err := h.svc.QueryByHash(fileHash) + if err != nil { + httpx.Error(c, http.StatusNotFound, "NOT_FOUND", err.Error()) + return + } + httpx.OK(c, res) +} + +// queryByProvincialCode 按省级内容编码反查标识信息。 +func (h *Handler) queryByProvincialCode(c *gin.Context) { + code := c.Query("provincial_code") + if code == "" { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", "缺少 provincial_code 参数") + return + } + res, err := h.svc.QueryByProvincialCode(code) + if err != nil { + httpx.Error(c, http.StatusNotFound, "NOT_FOUND", err.Error()) + return + } + httpx.OK(c, res) +} + +// queryByLibraryID 按片库文件 ID 反查标识信息。 +func (h *Handler) queryByLibraryID(c *gin.Context) { + libraryID := c.Query("library_file_id") + if libraryID == "" { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", "缺少 library_file_id 参数") + return + } + res, err := h.svc.QueryByLibraryFileID(libraryID) + if err != nil { + httpx.Error(c, http.StatusNotFound, "NOT_FOUND", err.Error()) + return + } + httpx.OK(c, res) +} + +// ---- MA 合并/拆分 handlers ---- + +// mergeMA MA 码合并(仅监管主体)。 +func (h *Handler) mergeMA(c *gin.Context) { + var req model.MergeRequest + if err := c.ShouldBindJSON(&req); err != nil { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", err.Error()) + return + } + res, err := h.svc.MergeMACodes(roleOf(c), req) + if err != nil { + httpx.Error(c, http.StatusBadRequest, "MERGE_FAILED", err.Error()) + return + } + httpx.OK(c, res) +} + +// splitMA MA 码拆分(仅监管主体)。 +func (h *Handler) splitMA(c *gin.Context) { + var req model.SplitRequest + if err := c.ShouldBindJSON(&req); err != nil { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", err.Error()) + return + } + res, err := h.svc.SplitMACode(roleOf(c), req) + if err != nil { + httpx.Error(c, http.StatusBadRequest, "SPLIT_FAILED", err.Error()) + return + } + httpx.OK(c, res) +} diff --git a/tcs-iptv/internal/api/rbac_handlers.go b/tcs-iptv/internal/api/rbac_handlers.go new file mode 100644 index 0000000..8965a66 --- /dev/null +++ b/tcs-iptv/internal/api/rbac_handlers.go @@ -0,0 +1,82 @@ +package api + +import ( + "net/http" + + "github.com/gin-gonic/gin" + "github.com/tcs-iptv/tcs/internal/httpx" +) + +// RBACHandler RBAC 权限管理 API 处理器。 +type RBACHandler struct { + rbac *httpx.RBACManager +} + +// NewRBACHandler 创建 RBAC 管理 API 处理器。 +func NewRBACHandler(rbac *httpx.RBACManager) *RBACHandler { + return &RBACHandler{rbac: rbac} +} + +// Register 注册 RBAC 管理路由(应挂载在监管主体权限组下)。 +func (h *RBACHandler) Register(rg *gin.RouterGroup) { + rg.GET("/admin/rbac/roles", h.listRoles) + rg.GET("/admin/rbac/permissions/:role", h.listPermissions) + rg.PUT("/admin/rbac/roles/:role", h.setRolePermissions) + rg.POST("/admin/rbac/grant", h.grantPermission) + rg.POST("/admin/rbac/revoke", h.revokePermission) +} + +func (h *RBACHandler) listRoles(c *gin.Context) { + roles := h.rbac.ListRoles() + httpx.OK(c, roles) +} + +func (h *RBACHandler) listPermissions(c *gin.Context) { + role := c.Param("role") + perms := h.rbac.ListPermissions(role) + httpx.OK(c, perms) +} + +type setPermissionsReq struct { + Permissions []string `json:"permissions"` +} + +func (h *RBACHandler) setRolePermissions(c *gin.Context) { + role := c.Param("role") + var req setPermissionsReq + if err := c.ShouldBindJSON(&req); err != nil { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", err.Error()) + return + } + perms := make([]httpx.Permission, len(req.Permissions)) + for i, p := range req.Permissions { + perms[i] = httpx.Permission(p) + } + h.rbac.SetRolePermissions(role, perms) + httpx.OK(c, gin.H{"role": role, "permissions": req.Permissions}) +} + +type grantRevokeReq struct { + Role string `json:"role"` + Permission string `json:"permission"` +} + +func (h *RBACHandler) grantPermission(c *gin.Context) { + var req grantRevokeReq + if err := c.ShouldBindJSON(&req); err != nil { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", err.Error()) + return + } + h.rbac.GrantPermission(req.Role, httpx.Permission(req.Permission)) + httpx.OK(c, gin.H{"role": req.Role, "permission": req.Permission, "granted": true}) +} + +func (h *RBACHandler) revokePermission(c *gin.Context) { + var req grantRevokeReq + if err := c.ShouldBindJSON(&req); err != nil { + httpx.Error(c, http.StatusBadRequest, "INVALID_REQUEST", err.Error()) + return + } + h.rbac.RevokePermission(req.Role, httpx.Permission(req.Permission)) + httpx.OK(c, gin.H{"role": req.Role, "permission": req.Permission, "revoked": true}) +} diff --git a/tcs-iptv/internal/catalog/catalog.go b/tcs-iptv/internal/catalog/catalog.go new file mode 100644 index 0000000..ddf6a2b --- /dev/null +++ b/tcs-iptv/internal/catalog/catalog.go @@ -0,0 +1,86 @@ +// Package catalog 目录库服务(方案第一阶段 — 目录库独立查询层)。 +// +// 方案定位:目录库负责存储 MA、Hash、片库文件 ID、省内内容编码等映射关系, +// 为标识查询接口提供统一入口。本包在 chain.Client 之上封装独立查询服务, +// 支持按 MA 码、Hash、省级编码、片库文件 ID 四种维度查询标识信息。 +// +// 架构说明: +// - MVP 阶段委托 chain.Client 获取数据(零数据冗余,单一真相源) +// - 生产阶段可替换为独立 PostgreSQL 存储(通过 CatalogStore 接口注入) +// - 对外接口不变,业务层零改动 +package catalog + +import ( + "github.com/tcs-iptv/tcs/internal/chain" + "github.com/tcs-iptv/tcs/internal/model" +) + +// Catalog 目录库查询服务。 +// 提供四种维度的标识信息查询:MA码、Hash、省级编码、片库文件ID。 +type Catalog struct { + client chain.Client + store CatalogStore // 可选独立存储(为 nil 时委托 chain.Client) +} + +// CatalogStore 目录库独立存储接口(生产阶段可替换为 PG 实现)。 +type CatalogStore interface { + FindByHash(fileHash string) (model.ContentQueryResult, error) + FindByProvincialCode(code string) (model.ContentQueryResult, error) + FindByLibraryFileID(libraryID string) (model.ContentQueryResult, error) +} + +// New 创建目录库服务(委托 chain.Client)。 +func New(c chain.Client) *Catalog { + return &Catalog{client: c} +} + +// NewWithStore 创建目录库服务(使用独立存储)。 +func NewWithStore(c chain.Client, s CatalogStore) *Catalog { + return &Catalog{client: c, store: s} +} + +// QueryByMA 根据MA码查询标识信息及映射关系。 +func (cat *Catalog) QueryByMA(maCode string) (model.ContentQueryResult, error) { + c, err := cat.client.QueryContent(maCode) + if err != nil { + return model.ContentQueryResult{Found: false}, err + } + mr, _ := cat.client.QueryMappings(maCode) + eps, _ := cat.client.ListEpisodes(maCode) + bindings := eps + return model.ContentQueryResult{ + Found: true, + Content: c, + Bindings: bindings, + Mappings: mr.Mappings, + }, nil +} + +// QueryByHash 根据内容哈希反查标识信息。 +func (cat *Catalog) QueryByHash(fileHash string) (model.ContentQueryResult, error) { + if cat.store != nil { + return cat.store.FindByHash(fileHash) + } + return cat.client.QueryByHash(fileHash) +} + +// QueryByProvincialCode 根据省级内容编码反查标识信息。 +func (cat *Catalog) QueryByProvincialCode(code string) (model.ContentQueryResult, error) { + if cat.store != nil { + return cat.store.FindByProvincialCode(code) + } + return cat.client.QueryByProvincialCode(code) +} + +// QueryByLibraryFileID 根据片库文件 ID 反查标识信息。 +func (cat *Catalog) QueryByLibraryFileID(libraryID string) (model.ContentQueryResult, error) { + if cat.store != nil { + return cat.store.FindByLibraryFileID(libraryID) + } + return cat.client.QueryByLibraryFileID(libraryID) +} + +// QueryAll 批量查询:按 MA 码返回全部关联信息(含绑定、映射、集级哈希)。 +func (cat *Catalog) QueryAll(maCode string) (model.ContentQueryResult, error) { + return cat.QueryByMA(maCode) +} diff --git a/tcs-iptv/internal/catalog/catalog_test.go b/tcs-iptv/internal/catalog/catalog_test.go new file mode 100644 index 0000000..fc22ba2 --- /dev/null +++ b/tcs-iptv/internal/catalog/catalog_test.go @@ -0,0 +1,99 @@ +package catalog + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/tcs-iptv/tcs/internal/chain" + "github.com/tcs-iptv/tcs/internal/model" +) + +func TestCatalog_QueryByMA(t *testing.T) { + c := chain.NewMemoryChain() + cat := New(c) + + // 发码 + _, err := c.IssueMA(chain.RoleRegulator, chain.IssueRequest{ + MACode: "MA.156.8531.6101/WD/20260000001", ContentTwinID: "ctid-cat-001", + FileHash: "fh-cat-001", MerkleRoot: "mr-cat-001", + Content: model.Content{Title: "目录库测试剧", EpisodeCount: 2, MAType: "WD", Issuer: "测试局"}, + }) + require.NoError(t, err) + + // 按 MA 码查询 + res, err := cat.QueryByMA("MA.156.8531.6101/WD/20260000001") + require.NoError(t, err) + assert.True(t, res.Found) + assert.Equal(t, "目录库测试剧", res.Content.Title) +} + +func TestCatalog_QueryByHash(t *testing.T) { + c := chain.NewMemoryChain() + cat := New(c) + + _, err := c.IssueMA(chain.RoleRegulator, chain.IssueRequest{ + MACode: "MA.156.8531.6101/WD/20260000002", ContentTwinID: "ctid-cat-002", + FileHash: "fh-cat-002", MerkleRoot: "mr-cat-002", + Content: model.Content{Title: "Hash查询测试", MAType: "WD", Issuer: "测试局"}, + }) + require.NoError(t, err) + + // 按 Hash 查询 + res, err := cat.QueryByHash("fh-cat-002") + require.NoError(t, err) + assert.True(t, res.Found) + assert.Equal(t, "MA.156.8531.6101/WD/20260000002", res.Content.MACode) + + // 不存在的 Hash + _, err = cat.QueryByHash("nonexistent") + assert.Error(t, err) +} + +func TestCatalog_QueryByProvincialCode(t *testing.T) { + c := chain.NewMemoryChain() + cat := New(c) + + _, err := c.IssueMA(chain.RoleRegulator, chain.IssueRequest{ + MACode: "MA.156.8531.6101/WD/20260000003", ContentTwinID: "ctid-cat-003", + FileHash: "fh-cat-003", MerkleRoot: "mr-cat-003", + Content: model.Content{Title: "省级编码查询测试", MAType: "WD", Issuer: "测试局"}, + }) + require.NoError(t, err) + + // 注册 CP 映射 + _, err = c.RegisterMapping(chain.RoleCP, model.Mapping{ + ContentTwinID: "ctid-cat-003", Party: model.PartyCP, PartyID: "PROV-CAT-001", PartyName: "测试CP", + }) + require.NoError(t, err) + + // 按省级编码查询 + res, err := cat.QueryByProvincialCode("PROV-CAT-001") + require.NoError(t, err) + assert.True(t, res.Found) + assert.Equal(t, "MA.156.8531.6101/WD/20260000003", res.Content.MACode) +} + +func TestCatalog_QueryByLibraryFileID(t *testing.T) { + c := chain.NewMemoryChain() + cat := New(c) + + _, err := c.IssueMA(chain.RoleRegulator, chain.IssueRequest{ + MACode: "MA.156.8531.6101/WD/20260000004", ContentTwinID: "ctid-cat-004", + FileHash: "fh-cat-004", MerkleRoot: "mr-cat-004", + Content: model.Content{Title: "片库ID查询测试", MAType: "WD", Issuer: "测试局"}, + }) + require.NoError(t, err) + + // 注册媒资库映射 + _, err = c.RegisterMapping(chain.RoleReviewer, model.Mapping{ + ContentTwinID: "ctid-cat-004", Party: model.PartyReviewer, PartyID: "LIB-CAT-001", PartyName: "测试媒资库", + }) + require.NoError(t, err) + + // 按片库文件 ID 查询 + res, err := cat.QueryByLibraryFileID("LIB-CAT-001") + require.NoError(t, err) + assert.True(t, res.Found) + assert.Equal(t, "MA.156.8531.6101/WD/20260000004", res.Content.MACode) +} diff --git a/tcs-iptv/internal/chain/chain.go b/tcs-iptv/internal/chain/chain.go index bed347c..c38c7b2 100644 --- a/tcs-iptv/internal/chain/chain.go +++ b/tcs-iptv/internal/chain/chain.go @@ -92,4 +92,14 @@ type Client interface { RestoreEpisode(role Role, maCode string, episode int) error // SetContentStatus 更新内容状态。 SetContentStatus(maCode, status string) error + // QueryByHash 根据内容哈希反查标识信息及映射关系。 + QueryByHash(fileHash string) (model.ContentQueryResult, error) + // QueryByProvincialCode 根据省级内容编码(CP MediaID)反查标识信息。 + QueryByProvincialCode(provincialCode string) (model.ContentQueryResult, error) + // QueryByLibraryFileID 根据片库文件 ID(媒资库 ID)反查标识信息。 + QueryByLibraryFileID(libraryFileID string) (model.ContentQueryResult, error) + // MergeMA 将多个 MA 码合并为一个主 MA 码(仅监管主体)。 + MergeMA(role Role, req model.MergeRequest) (model.MergeResult, error) + // SplitMA 将一个 MA 码拆分为多个独立 MA 码(仅监管主体)。 + SplitMA(role Role, req model.SplitRequest) (model.SplitResult, error) } diff --git a/tcs-iptv/internal/chain/chainmaker.go b/tcs-iptv/internal/chain/chainmaker.go index 1f43eaa..8641298 100644 --- a/tcs-iptv/internal/chain/chainmaker.go +++ b/tcs-iptv/internal/chain/chainmaker.go @@ -292,3 +292,67 @@ func (c *ChainMakerClient) QueryMappings(maCode string) (MappingsResult, error) out.MACode = maCode return out, nil } + +// ---- 多维度查询与 MA 合并/拆分 ---- + +func (c *ChainMakerClient) QueryByHash(fileHash string) (model.ContentQueryResult, error) { + res, err := c.query(RoleRegulator, "QueryByHash", map[string][]byte{"file_hash": []byte(fileHash)}) + if err != nil { + return model.ContentQueryResult{Found: false}, err + } + var out model.ContentQueryResult + if err := json.Unmarshal(res, &out); err != nil { + return model.ContentQueryResult{Found: false}, err + } + return out, nil +} + +func (c *ChainMakerClient) QueryByProvincialCode(provincialCode string) (model.ContentQueryResult, error) { + res, err := c.query(RoleRegulator, "QueryByProvincialCode", map[string][]byte{"provincial_code": []byte(provincialCode)}) + if err != nil { + return model.ContentQueryResult{Found: false}, err + } + var out model.ContentQueryResult + if err := json.Unmarshal(res, &out); err != nil { + return model.ContentQueryResult{Found: false}, err + } + return out, nil +} + +func (c *ChainMakerClient) QueryByLibraryFileID(libraryFileID string) (model.ContentQueryResult, error) { + res, err := c.query(RoleRegulator, "QueryByLibraryFileID", map[string][]byte{"library_file_id": []byte(libraryFileID)}) + if err != nil { + return model.ContentQueryResult{Found: false}, err + } + var out model.ContentQueryResult + if err := json.Unmarshal(res, &out); err != nil { + return model.ContentQueryResult{Found: false}, err + } + return out, nil +} + +func (c *ChainMakerClient) MergeMA(role Role, req model.MergeRequest) (model.MergeResult, error) { + reqJSON, _ := json.Marshal(req) + resp, err := c.invoke(role, "MergeMA", map[string][]byte{"request": reqJSON}) + if err != nil { + return model.MergeResult{}, err + } + var out model.MergeResult + if err := json.Unmarshal(resp.ContractResult.Result, &out); err != nil { + return model.MergeResult{}, err + } + return out, nil +} + +func (c *ChainMakerClient) SplitMA(role Role, req model.SplitRequest) (model.SplitResult, error) { + reqJSON, _ := json.Marshal(req) + resp, err := c.invoke(role, "SplitMA", map[string][]byte{"request": reqJSON}) + if err != nil { + return model.SplitResult{}, err + } + var out model.SplitResult + if err := json.Unmarshal(resp.ContractResult.Result, &out); err != nil { + return model.SplitResult{}, err + } + return out, nil +} diff --git a/tcs-iptv/internal/chain/conformance_test.go b/tcs-iptv/internal/chain/conformance_test.go index 7e9b5df..b3b70ed 100644 --- a/tcs-iptv/internal/chain/conformance_test.go +++ b/tcs-iptv/internal/chain/conformance_test.go @@ -150,6 +150,114 @@ func RunClientConformance(t *testing.T, newClient func(t *testing.T) Client) { require.NoError(t, err) assert.Len(t, pub, 1) }) + + t.Run("多维度查询_按Hash反查", func(t *testing.T) { + c := newClient(t) + _, err := c.IssueMA(RoleRegulator, issueReq(ma, ctid, fh)) + require.NoError(t, err) + // 注册 CP 映射(省级内容编码) + _, err = c.RegisterMapping(RoleCP, model.Mapping{ + ContentTwinID: ctid, Party: model.PartyCP, PartyID: "PROV-001", PartyName: "陕西CP", + }) + require.NoError(t, err) + // 注册媒资库映射(片库文件 ID) + _, err = c.RegisterMapping(RoleReviewer, model.Mapping{ + ContentTwinID: ctid, Party: model.PartyReviewer, PartyID: "LIB-001", PartyName: "陕西媒资库", + }) + require.NoError(t, err) + + // 按 Hash 查询 + res, err := c.QueryByHash(fh) + require.NoError(t, err) + assert.True(t, res.Found) + assert.Equal(t, ma, res.Content.MACode) + assert.Equal(t, "契约测试剧", res.Content.Title) + + // 按省级内容编码查询 + res2, err := c.QueryByProvincialCode("PROV-001") + require.NoError(t, err) + assert.True(t, res2.Found) + assert.Equal(t, ma, res2.Content.MACode) + + // 按片库文件 ID 查询 + res3, err := c.QueryByLibraryFileID("LIB-001") + require.NoError(t, err) + assert.True(t, res3.Found) + assert.Equal(t, ma, res3.Content.MACode) + + // 不存在的 Hash + _, err = c.QueryByHash("nonexistent") + assert.ErrorIs(t, err, ErrNotFound) + }) + + t.Run("MA合并_仅监管且迁移绑定", func(t *testing.T) { + c := newClient(t) + // 发码两个 MA + _, err := c.IssueMA(RoleRegulator, issueReq(ma, ctid, fh)) + require.NoError(t, err) + ma2 := "MA.156.8531.6101/WD/20260000002" + ctid2 := "ctid-conf-002" + fh2 := "fh-conf-002" + _, err = c.IssueMA(RoleRegulator, issueReq(ma2, ctid2, fh2)) + require.NoError(t, err) + + // 非监管不可合并 + _, err = c.MergeMA(RoleCP, model.MergeRequest{ + PrimaryMACode: ma, SecondaryMACodes: []string{ma2}, Reason: "重复发码", + }) + assert.ErrorIs(t, err, ErrPermissionDenied) + + // 监管合并 + res, err := c.MergeMA(RoleRegulator, model.MergeRequest{ + PrimaryMACode: ma, SecondaryMACodes: []string{ma2}, Reason: "重复发码", Operator: "监管局", + }) + require.NoError(t, err) + assert.Equal(t, ma, res.PrimaryMACode) + assert.Contains(t, res.MergedMACodes, ma2) + assert.Greater(t, res.MigratedBindings, 0) + + // 被合并的 MA 状态为 merged + got, _ := c.QueryContent(ma2) + assert.Equal(t, model.StatusMerged, got.Status) + + // 按 fh2 查询应指向主 MA 码 + qr, err := c.QueryByHash(fh2) + require.NoError(t, err) + assert.Equal(t, ma, qr.Content.MACode) + }) + + t.Run("MA拆分_仅监管且按集迁移", func(t *testing.T) { + c := newClient(t) + _, err := c.IssueMA(RoleRegulator, issueReq(ma, ctid, fh)) + require.NoError(t, err) + + // 非监管不可拆分 + _, err = c.SplitMA(RoleCP, model.SplitRequest{ + SourceMACode: ma, Splits: []model.SplitTarget{{NewMACode: "MA.156.8531.6101/WD/20260000010", Title: "拆分剧A", Episodes: []int{1, 2}}}, + }) + assert.ErrorIs(t, err, ErrPermissionDenied) + + // 监管拆分 + newMA := "MA.156.8531.6101/WD/20260000011" + res, err := c.SplitMA(RoleRegulator, model.SplitRequest{ + SourceMACode: ma, + Splits: []model.SplitTarget{{NewMACode: newMA, Title: "拆分剧A", Episodes: []int{1, 2}}}, + Reason: "合集拆分", + Operator: "监管局", + }) + require.NoError(t, err) + assert.Contains(t, res.NewMACodes, newMA) + assert.Greater(t, res.MigratedBindings, 0) + + // 源 MA 状态为 split + got, _ := c.QueryContent(ma) + assert.Equal(t, model.StatusSplit, got.Status) + + // 新 MA 可查询 + newContent, err := c.QueryContent(newMA) + require.NoError(t, err) + assert.Equal(t, "拆分剧A", newContent.Title) + }) } // TestMemoryChain_Conformance 让内存实现跑契约套件(始终运行)。 diff --git a/tcs-iptv/internal/chain/memory.go b/tcs-iptv/internal/chain/memory.go index dab0ff6..b32857e 100644 --- a/tcs-iptv/internal/chain/memory.go +++ b/tcs-iptv/internal/chain/memory.go @@ -393,4 +393,204 @@ func (m *MemoryChain) maCodeByCTID(ctid string) string { return "" } +// QueryByHash 根据内容哈希反查标识信息及映射关系。 +func (m *MemoryChain) QueryByHash(fileHash string) (model.ContentQueryResult, error) { + m.mu.RLock() + defer m.mu.RUnlock() + maCode, ok := m.hashIndex[fileHash] + if !ok { + return model.ContentQueryResult{Found: false}, ErrNotFound + } + return model.ContentQueryResult{ + Found: true, + Content: m.contents[maCode], + Bindings: m.bindings[maCode], + Mappings: m.mappings[maCode], + }, nil +} + +// QueryByProvincialCode 根据省级内容编码(CP MediaID)反查标识信息。 +func (m *MemoryChain) QueryByProvincialCode(provincialCode string) (model.ContentQueryResult, error) { + m.mu.RLock() + defer m.mu.RUnlock() + for maCode, maps := range m.mappings { + for _, mp := range maps { + if mp.Party == model.PartyCP && mp.PartyID == provincialCode { + return model.ContentQueryResult{ + Found: true, + Content: m.contents[maCode], + Bindings: m.bindings[maCode], + Mappings: maps, + }, nil + } + } + } + return model.ContentQueryResult{Found: false}, ErrNotFound +} + +// QueryByLibraryFileID 根据片库文件 ID(媒资库 ID)反查标识信息。 +func (m *MemoryChain) QueryByLibraryFileID(libraryFileID string) (model.ContentQueryResult, error) { + m.mu.RLock() + defer m.mu.RUnlock() + for maCode, maps := range m.mappings { + for _, mp := range maps { + if mp.Party == model.PartyReviewer && mp.PartyID == libraryFileID { + return model.ContentQueryResult{ + Found: true, + Content: m.contents[maCode], + Bindings: m.bindings[maCode], + Mappings: maps, + }, nil + } + } + } + return model.ContentQueryResult{Found: false}, ErrNotFound +} + +// MergeMA 将多个 MA 码合并为一个主 MA 码(仅监管主体)。 +// 被合并的 MA 码的哈希绑定和映射迁移至主 MA 码,原 MA 码状态标记为 merged。 +func (m *MemoryChain) MergeMA(role Role, req model.MergeRequest) (model.MergeResult, error) { + if role != RoleRegulator { + return model.MergeResult{}, ErrPermissionDenied + } + m.mu.Lock() + defer m.mu.Unlock() + + primary, ok := m.contents[req.PrimaryMACode] + if !ok { + return model.MergeResult{}, ErrNotFound + } + _ = primary + + migratedBindings := 0 + migratedMappings := 0 + for _, secMA := range req.SecondaryMACodes { + secContent, exists := m.contents[secMA] + if !exists { + return model.MergeResult{}, fmt.Errorf("%w: secondary MA %s not found", ErrNotFound, secMA) + } + if secContent.Status == model.StatusMerged { + return model.MergeResult{}, fmt.Errorf("chain: MA %s already merged", secMA) + } + + // 迁移哈希绑定至主 MA 码 + for _, b := range m.bindings[secMA] { + b.ContentTwinID = primary.ContentTwinID + m.bindings[req.PrimaryMACode] = append(m.bindings[req.PrimaryMACode], b) + migratedBindings++ + } + + // 迁移映射至主 MA 码 + for _, mp := range m.mappings[secMA] { + mp.ContentTwinID = primary.ContentTwinID + m.mappings[req.PrimaryMACode] = append(m.mappings[req.PrimaryMACode], mp) + migratedMappings++ + } + + // 更新哈希索引指向主 MA 码 + for _, b := range m.bindings[secMA] { + if b.HashType == model.HashFile || b.HashType == model.HashTranscoded { + m.hashIndex[b.HashValue] = req.PrimaryMACode + } + } + + // 清空被合并 MA 码的绑定和映射,状态标记为 merged + m.bindings[secMA] = nil + m.mappings[secMA] = nil + secContent.Status = model.StatusMerged + m.contents[secMA] = secContent + } + + txID := m.nextTx("mergeMA") + return model.MergeResult{ + PrimaryMACode: req.PrimaryMACode, + MergedMACodes: req.SecondaryMACodes, + MigratedBindings: migratedBindings, + MigratedMappings: migratedMappings, + TxID: txID, + }, nil +} + +// SplitMA 将一个 MA 码拆分为多个独立 MA 码(仅监管主体)。 +// 按集号将哈希绑定和映射迁移至新 MA 码,源 MA 码状态标记为 split。 +func (m *MemoryChain) SplitMA(role Role, req model.SplitRequest) (model.SplitResult, error) { + if role != RoleRegulator { + return model.SplitResult{}, ErrPermissionDenied + } + m.mu.Lock() + defer m.mu.Unlock() + + srcContent, ok := m.contents[req.SourceMACode] + if !ok { + return model.SplitResult{}, ErrNotFound + } + if srcContent.Status == model.StatusMerged || srcContent.Status == model.StatusSplit { + return model.SplitResult{}, fmt.Errorf("chain: MA %s already %s", req.SourceMACode, srcContent.Status) + } + + migratedBindings := 0 + migratedMappings := 0 + newMACodes := make([]string, 0, len(req.Splits)) + + for _, split := range req.Splits { + // 创建新内容记录 + newContent := srcContent + newContent.MACode = split.NewMACode + newContent.ContentTwinID = split.NewMACode + "-ctid" + newContent.Title = split.Title + newContent.Status = model.StatusApproved + newContent.CreatedAt = time.Now() + m.contents[split.NewMACode] = newContent + + // 按集号迁移哈希绑定 + for _, b := range m.bindings[req.SourceMACode] { + shouldMigrate := false + if len(split.Episodes) == 0 { + // 空集号列表:迁移全部(整剧拆分场景) + shouldMigrate = true + } else { + for _, ep := range split.Episodes { + if b.Episode == ep { + shouldMigrate = true + break + } + } + } + if shouldMigrate { + newB := b + newB.ContentTwinID = newContent.ContentTwinID + m.bindings[split.NewMACode] = append(m.bindings[split.NewMACode], newB) + // 更新哈希索引 + if b.HashType == model.HashFile || b.HashType == model.HashTranscoded { + m.hashIndex[b.HashValue] = split.NewMACode + } + migratedBindings++ + } + } + + // 迁移映射(全部映射复制到新 MA 码) + for _, mp := range m.mappings[req.SourceMACode] { + newMP := mp + newMP.ContentTwinID = newContent.ContentTwinID + m.mappings[split.NewMACode] = append(m.mappings[split.NewMACode], newMP) + migratedMappings++ + } + + newMACodes = append(newMACodes, split.NewMACode) + } + + // 源 MA 码状态标记为 split + srcContent.Status = model.StatusSplit + m.contents[req.SourceMACode] = srcContent + + txID := m.nextTx("splitMA") + return model.SplitResult{ + SourceMACode: req.SourceMACode, + NewMACodes: newMACodes, + MigratedBindings: migratedBindings, + MigratedMappings: migratedMappings, + TxID: txID, + }, nil +} + var _ Client = (*MemoryChain)(nil) diff --git a/tcs-iptv/internal/chain/persistent.go b/tcs-iptv/internal/chain/persistent.go index 11143aa..deb5fd3 100644 --- a/tcs-iptv/internal/chain/persistent.go +++ b/tcs-iptv/internal/chain/persistent.go @@ -131,6 +131,47 @@ func (p *PersistentChain) SetContentStatus(maCode, status string) error { return nil } +// MergeMA 合并 MA 码:内存合并成功后写穿 PG 镜像。 +func (p *PersistentChain) MergeMA(role Role, req model.MergeRequest) (model.MergeResult, error) { + res, err := p.MemoryChain.MergeMA(role, req) + if err != nil { + return res, err + } + // 被合并的 MA 码状态标记为 merged + for _, secMA := range req.SecondaryMACodes { + p.updateStatus(secMA, model.StatusMerged) + } + // 主 MA 码的绑定和映射已在内存中追加,写穿最新状态 + for _, b := range p.snapshotBindings(req.PrimaryMACode) { + p.persistBinding(b) + } + p.persistTx(req.PrimaryMACode, res.TxID, "mergeMA") + return res, nil +} + +// SplitMA 拆分 MA 码:内存拆分成功后写穿 PG 镜像。 +func (p *PersistentChain) SplitMA(role Role, req model.SplitRequest) (model.SplitResult, error) { + res, err := p.MemoryChain.SplitMA(role, req) + if err != nil { + return res, err + } + // 源 MA 码状态标记为 split + p.updateStatus(req.SourceMACode, model.StatusSplit) + // 新 MA 码的内容记录和绑定写穿 + for _, newMA := range res.NewMACodes { + c, _ := p.MemoryChain.QueryContent(newMA) + p.persistContent(c) + for _, b := range p.snapshotBindings(newMA) { + p.persistBinding(b) + } + for _, mp := range p.snapshotMappings(newMA) { + p.persistMapping(mp) + } + } + p.persistTx(req.SourceMACode, res.TxID, "splitMA") + return res, nil +} + // ---- PG 写入小工具(best-effort,失败仅记日志)---- func (p *PersistentChain) exec(q string, args ...any) { @@ -194,6 +235,16 @@ func (p *PersistentChain) snapshotBindings(maCode string) []model.HashBinding { return out } +// snapshotMappings 复制某 MA 码当前的内存映射(同包访问,读锁保护)。 +func (p *PersistentChain) snapshotMappings(maCode string) []model.Mapping { + p.mu.RLock() + defer p.mu.RUnlock() + src := p.mappings[maCode] + out := make([]model.Mapping, len(src)) + copy(out, src) + return out +} + // ---- 启动水合:从 PG 镜像恢复内存状态 ---- func (p *PersistentChain) hydrate() error { diff --git a/tcs-iptv/internal/config/config.go b/tcs-iptv/internal/config/config.go index afa7fcb..4a2f7d5 100644 --- a/tcs-iptv/internal/config/config.go +++ b/tcs-iptv/internal/config/config.go @@ -10,6 +10,7 @@ type Config struct { APIAddr string ChainAddr string HashAddr string + CatalogAddr string PostgresDSN string RedisAddr string // ChainBackend 选择链实现:memory(纯内存)| pg(内存+PG镜像)| chainmaker(真实链,需 -tags chainmaker 构建) @@ -31,6 +32,7 @@ func Load() Config { APIAddr: getEnv("TCS_API_ADDR", ":8080"), ChainAddr: getEnv("TCS_CHAIN_ADDR", ":8081"), HashAddr: getEnv("TCS_HASH_ADDR", ":8082"), + CatalogAddr: getEnv("TCS_CATALOG_ADDR", ":8083"), PostgresDSN: getEnv("TCS_POSTGRES_DSN", "postgres://postgres@localhost:5432/tcs_iptv?sslmode=disable"), RedisAddr: getEnv("TCS_REDIS_ADDR", "localhost:6379"), // 默认 pg:PG 可用则内存+镜像持久化,不可用自动回退内存(见 api-svc 装配) diff --git a/tcs-iptv/internal/httpx/rbac.go b/tcs-iptv/internal/httpx/rbac.go new file mode 100644 index 0000000..dd5a5c7 --- /dev/null +++ b/tcs-iptv/internal/httpx/rbac.go @@ -0,0 +1,224 @@ +package httpx + +import ( + "sync" + + "github.com/gin-gonic/gin" +) + +// Permission 权限标识(对应 API 操作)。 +type Permission string + +// 预定义权限常量(覆盖全部 API 操作)。 +const ( + // 内容管理 + PermContentRegister Permission = "content:register" + PermContentReview Permission = "content:review" + PermContentIssue Permission = "content:issue" + PermContentVerify Permission = "content:verify" + PermContentTranscode Permission = "content:transcode" + PermContentIngest Permission = "content:ingest" + PermContentPublish Permission = "content:publish" + PermContentInject Permission = "content:inject" + PermContentVersionChange Permission = "content:version_change" + PermContentTakedown Permission = "content:takedown" + PermContentRestore Permission = "content:restore" + PermContentMerge Permission = "content:merge" + PermContentSplit Permission = "content:split" + PermContentAddEpisodes Permission = "content:add_episodes" + // 查询 + PermQueryByMA Permission = "query:by_ma" + PermQueryByHash Permission = "query:by_hash" + PermQueryByProvincial Permission = "query:by_provincial" + PermQueryByLibraryID Permission = "query:by_library_id" + PermQueryMappings Permission = "query:mappings" + PermQueryEpisodes Permission = "query:episodes" + PermQueryReviews Permission = "query:reviews" + PermQueryContents Permission = "query:contents" + PermQueryProvenance Permission = "query:provenance" + PermQueryAccountability Permission = "query:accountability" + PermQueryEvidence Permission = "query:evidence" + // 数据与分账 + PermPlaybackReport Permission = "data:playback_report" + PermPlaybackSummary Permission = "data:playback_summary" + PermSettlement Permission = "data:settlement" + // 确权与侵权 + PermInfringeMatch Permission = "rights:infringe_match" + PermAuthorize Permission = "rights:authorize" + PermAuthCheck Permission = "rights:auth_check" + // 跨省与终端 + PermCrossProvince Permission = "cross:province_admit" + PermTerminalVerify Permission = "terminal:verify" + // 备案与监管 + PermBindFiling Permission = "regulatory:bind_filing" + PermQueryFiling Permission = "regulatory:query_filing" + PermNationalStats Permission = "regulatory:national_stats" + PermDailyReport Permission = "regulatory:daily_report" + PermListSegments Permission = "admin:list_segments" + PermRegisterSegment Permission = "admin:register_segment" + // 大小屏融合 + PermResolve Permission = "screen:resolve" + PermScanVerify Permission = "screen:scan_verify" + PermRecordPurchase Permission = "rights:record_purchase" + PermVerifyRights Permission = "rights:verify_rights" + // 系统管理 + PermManageUsers Permission = "admin:manage_users" + PermManageOrgs Permission = "admin:manage_orgs" +) + +// RBACManager 基于角色的动态权限管理器。 +// 支持运行时配置角色-权限映射,替代硬编码角色检查。 +type RBACManager struct { + mu sync.RWMutex + roles map[string]map[Permission]bool // role -> permission set +} + +// NewRBACManager 创建权限管理器并预置默认角色权限。 +func NewRBACManager() *RBACManager { + r := &RBACManager{roles: make(map[string]map[Permission]bool)} + r.loadDefaults() + return r +} + +// loadDefaults 加载默认四角色权限矩阵。 +func (r *RBACManager) loadDefaults() { + // 监管主体:全部权限 + r.SetRolePermissions("regulator", allPermissions()) + + // 审核主体:审核、入库、转码、查询、验真 + r.SetRolePermissions("reviewer", []Permission{ + PermContentReview, PermContentTranscode, PermContentIngest, + PermContentVerify, PermContentVersionChange, + PermQueryByMA, PermQueryByHash, PermQueryByProvincial, PermQueryByLibraryID, + PermQueryMappings, PermQueryEpisodes, PermQueryReviews, PermQueryContents, + PermQueryProvenance, PermQueryAccountability, PermQueryEvidence, + PermBindFiling, PermQueryFiling, + PermResolve, PermScanVerify, + }) + + // 内容提供商:送审、查询、确权 + r.SetRolePermissions("cp", []Permission{ + PermContentRegister, + PermQueryByMA, PermQueryByHash, PermQueryByProvincial, PermQueryByLibraryID, + PermQueryMappings, PermQueryEpisodes, PermQueryReviews, PermQueryContents, + PermQueryProvenance, PermQueryEvidence, + PermInfringeMatch, PermAuthorize, PermAuthCheck, + PermResolve, PermScanVerify, PermRecordPurchase, PermVerifyRights, + }) + + // 运营商:注入、发布、查询、播放回传 + r.SetRolePermissions("operator", []Permission{ + PermContentPublish, PermContentInject, + PermContentVerify, PermTerminalVerify, + PermQueryByMA, PermQueryByHash, PermQueryMappings, PermQueryEpisodes, + PermQueryContents, PermQueryProvenance, + PermPlaybackReport, PermPlaybackSummary, PermSettlement, + PermResolve, PermScanVerify, PermVerifyRights, + }) +} + +// SetRolePermissions 设置某角色的权限集合(覆盖原有)。 +func (r *RBACManager) SetRolePermissions(role string, perms []Permission) { + r.mu.Lock() + defer r.mu.Unlock() + set := make(map[Permission]bool, len(perms)) + for _, p := range perms { + set[p] = true + } + r.roles[role] = set +} + +// GrantPermission 为角色追加单个权限。 +func (r *RBACManager) GrantPermission(role string, perm Permission) { + r.mu.Lock() + defer r.mu.Unlock() + if r.roles[role] == nil { + r.roles[role] = make(map[Permission]bool) + } + r.roles[role][perm] = true +} + +// RevokePermission 移除角色的某个权限。 +func (r *RBACManager) RevokePermission(role string, perm Permission) { + r.mu.Lock() + defer r.mu.Unlock() + if r.roles[role] != nil { + delete(r.roles[role], perm) + } +} + +// HasPermission 检查角色是否拥有指定权限。 +func (r *RBACManager) HasPermission(role string, perm Permission) bool { + r.mu.RLock() + defer r.mu.RUnlock() + perms, ok := r.roles[role] + if !ok { + return false + } + return perms[perm] +} + +// ListPermissions 列出角色的全部权限。 +func (r *RBACManager) ListPermissions(role string) []Permission { + r.mu.RLock() + defer r.mu.RUnlock() + perms, ok := r.roles[role] + if !ok { + return nil + } + out := make([]Permission, 0, len(perms)) + for p := range perms { + out = append(out, p) + } + return out +} + +// ListRoles 列出全部已配置角色。 +func (r *RBACManager) ListRoles() []string { + r.mu.RLock() + defer r.mu.RUnlock() + out := make([]string, 0, len(r.roles)) + for role := range r.roles { + out = append(out, role) + } + return out +} + +// RequirePermission 返回 Gin 中间件,校验当前角色是否拥有指定权限。 +// 用法:rg.POST("/content/issue", rbac.RequirePermission(httpx.PermContentIssue), h.issue) +func (r *RBACManager) RequirePermission(perm Permission) gin.HandlerFunc { + return func(c *gin.Context) { + role := RoleFromContext(c) + if role == "" { + Error(c, 401, "UNAUTHORIZED", "未认证") + c.Abort() + return + } + if !r.HasPermission(role, perm) { + Error(c, 403, "FORBIDDEN", "角色 "+role+" 无权限: "+string(perm)) + c.Abort() + return + } + c.Next() + } +} + +// allPermissions 返回全部权限列表(用于监管角色)。 +func allPermissions() []Permission { + return []Permission{ + PermContentRegister, PermContentReview, PermContentIssue, PermContentVerify, + PermContentTranscode, PermContentIngest, PermContentPublish, PermContentInject, + PermContentVersionChange, PermContentTakedown, PermContentRestore, + PermContentMerge, PermContentSplit, PermContentAddEpisodes, + PermQueryByMA, PermQueryByHash, PermQueryByProvincial, PermQueryByLibraryID, + PermQueryMappings, PermQueryEpisodes, PermQueryReviews, PermQueryContents, + PermQueryProvenance, PermQueryAccountability, PermQueryEvidence, + PermPlaybackReport, PermPlaybackSummary, PermSettlement, + PermInfringeMatch, PermAuthorize, PermAuthCheck, + PermCrossProvince, PermTerminalVerify, + PermBindFiling, PermQueryFiling, PermNationalStats, PermDailyReport, + PermListSegments, PermRegisterSegment, + PermResolve, PermScanVerify, PermRecordPurchase, PermVerifyRights, + PermManageUsers, PermManageOrgs, + } +} diff --git a/tcs-iptv/internal/httpx/rbac_test.go b/tcs-iptv/internal/httpx/rbac_test.go new file mode 100644 index 0000000..2ec7ea3 --- /dev/null +++ b/tcs-iptv/internal/httpx/rbac_test.go @@ -0,0 +1,62 @@ +package httpx + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestRBACManager_DefaultPermissions(t *testing.T) { + r := NewRBACManager() + + // 监管拥有全部权限 + assert.True(t, r.HasPermission("regulator", PermContentIssue)) + assert.True(t, r.HasPermission("regulator", PermContentTakedown)) + assert.True(t, r.HasPermission("regulator", PermManageUsers)) + + // 审核主体不能发码 + assert.False(t, r.HasPermission("reviewer", PermContentIssue)) + assert.True(t, r.HasPermission("reviewer", PermContentReview)) + + // CP 不能下架 + assert.False(t, r.HasPermission("cp", PermContentTakedown)) + assert.True(t, r.HasPermission("cp", PermContentRegister)) + + // 运营商不能发码 + assert.False(t, r.HasPermission("operator", PermContentIssue)) + assert.True(t, r.HasPermission("operator", PermContentInject)) +} + +func TestRBACManager_DynamicConfig(t *testing.T) { + r := NewRBACManager() + + // 新增自定义角色 + r.SetRolePermissions("auditor", []Permission{ + PermQueryProvenance, PermQueryAccountability, PermQueryEvidence, + }) + assert.True(t, r.HasPermission("auditor", PermQueryProvenance)) + assert.False(t, r.HasPermission("auditor", PermContentIssue)) + + // 动态授权 + r.GrantPermission("auditor", PermContentVerify) + assert.True(t, r.HasPermission("auditor", PermContentVerify)) + + // 撤销权限 + r.RevokePermission("auditor", PermContentVerify) + assert.False(t, r.HasPermission("auditor", PermContentVerify)) + + // 列出角色 + roles := r.ListRoles() + assert.Contains(t, roles, "regulator") + assert.Contains(t, roles, "auditor") + + // 列出权限 + perms := r.ListPermissions("auditor") + assert.Len(t, perms, 3) +} + +func TestRBACManager_UnknownRole(t *testing.T) { + r := NewRBACManager() + assert.False(t, r.HasPermission("nonexistent", PermContentIssue)) + assert.Empty(t, r.ListPermissions("nonexistent")) +} diff --git a/tcs-iptv/internal/model/admin.go b/tcs-iptv/internal/model/admin.go new file mode 100644 index 0000000..dbeee49 --- /dev/null +++ b/tcs-iptv/internal/model/admin.go @@ -0,0 +1,57 @@ +package model + +import "time" + +// 用户与组织管理模型(系统管理模块补足)。 + +// User 系统用户。 +type User struct { + ID string `json:"id"` // 用户唯一标识 + Username string `json:"username"` // 登录用户名 + FullName string `json:"full_name"` // 真实姓名 + OrgID string `json:"org_id"` // 所属组织 ID + Role string `json:"role"` // 角色:regulator/reviewer/cp/operator + APIKey string `json:"api_key"` // API 密钥 + APISecret string `json:"-"` // API 密钥(不序列化、不下发) + Status string `json:"status"` // active/disabled + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +// UserStatus 用户状态常量。 +const ( + UserStatusActive = "active" + UserStatusDisabled = "disabled" +) + +// Organization 组织/机构。 +type Organization struct { + ID string `json:"id"` // 组织唯一标识 + Name string `json:"name"` // 组织名称 + OrgNode string `json:"org_node"` // MA 码机构节点(如 6101) + Province string `json:"province"` // 所属省份 + Type string `json:"type"` // 组织类型:regulator/reviewer/cp/operator + Status string `json:"status"` // active/disabled + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +// OrgType 组织类型常量。 +const ( + OrgTypeRegulator = "regulator" + OrgTypeReviewer = "reviewer" + OrgTypeCP = "cp" + OrgTypeOperator = "operator" +) + +// OrgStatus 组织状态常量。 +const ( + OrgStatusActive = "active" + OrgStatusDisabled = "disabled" +) + +// Role 角色权限定义。 +type RolePermission struct { + Role string `json:"role"` // regulator/reviewer/cp/operator + Permissions []string `json:"permissions"` // 权限列表 +} diff --git a/tcs-iptv/internal/model/model.go b/tcs-iptv/internal/model/model.go index 680930f..965cf37 100644 --- a/tcs-iptv/internal/model/model.go +++ b/tcs-iptv/internal/model/model.go @@ -95,4 +95,56 @@ const ( StatusInLibrary = "in_library" // 已入媒资库 StatusPublished = "published" // 已发布 StatusRevoked = "revoked" // 已下架 + StatusMerged = "merged" // 已合并入其他MA码 + StatusSplit = "split" // 已拆分为多个MA码 ) + +// ContentQueryResult 多维度标识查询的统一返回结果。 +// 支持按 Hash、省级内容编码、片库文件 ID 等多种维度反查内容标识信息。 +type ContentQueryResult struct { + Found bool `json:"found"` // 是否找到匹配记录 + Content Content `json:"content"` // 内容主记录 + Bindings []HashBinding `json:"bindings"` // 哈希绑定列表 + Mappings []Mapping `json:"mappings"` // 三方编码映射列表 +} + +// MergeRequest MA 合并请求(将多个 MA 码合并为一个主 MA 码)。 +type MergeRequest struct { + PrimaryMACode string `json:"primary_ma_code"` // 合并后保留的主 MA 码 + SecondaryMACodes []string `json:"secondary_ma_codes"` // 被合并的 MA 码列表(合并后标记为 merged) + Reason string `json:"reason"` // 合并原因 + Operator string `json:"operator"` // 操作人 +} + +// MergeResult MA 合并结果。 +type MergeResult struct { + PrimaryMACode string `json:"primary_ma_code"` // 主 MA 码 + MergedMACodes []string `json:"merged_ma_codes"` // 已合并的 MA 码列表 + MigratedBindings int `json:"migrated_bindings"` // 迁移的哈希绑定数 + MigratedMappings int `json:"migrated_mappings"` // 迁移的映射数 + TxID string `json:"tx_id"` // 链上交易 ID +} + +// SplitRequest MA 拆分请求(将一个 MA 码拆分为多个独立 MA 码)。 +type SplitRequest struct { + SourceMACode string `json:"source_ma_code"` // 被拆分的源 MA 码 + Splits []SplitTarget `json:"splits"` // 拆分目标列表 + Reason string `json:"reason"` // 拆分原因 + Operator string `json:"operator"` // 操作人 +} + +// SplitTarget 拆分目标:每集或每组内容拆分后的新 MA 码信息。 +type SplitTarget struct { + NewMACode string `json:"new_ma_code"` // 拆分后新分配的 MA 码 + Title string `json:"title"` // 拆分后内容标题 + Episodes []int `json:"episodes"` // 关联的集号列表(空表示整剧拆分) +} + +// SplitResult MA 拆分结果。 +type SplitResult struct { + SourceMACode string `json:"source_ma_code"` // 源 MA 码 + NewMACodes []string `json:"new_ma_codes"` // 拆分后生成的新 MA 码列表 + MigratedBindings int `json:"migrated_bindings"` // 迁移的哈希绑定数 + MigratedMappings int `json:"migrated_mappings"` // 迁移的映射数 + TxID string `json:"tx_id"` // 链上交易 ID +} diff --git a/tcs-iptv/internal/monitor/monitor.go b/tcs-iptv/internal/monitor/monitor.go new file mode 100644 index 0000000..a8b9535 --- /dev/null +++ b/tcs-iptv/internal/monitor/monitor.go @@ -0,0 +1,79 @@ +// Package monitor 运行监控(方案系统管理模块补足)。 +// +// 提供 Prometheus 指标采集中间件,覆盖 4 金指标: +// - Latency:请求延迟直方图 +// - Traffic:请求总量计数器 +// - Errors:错误响应计数器 +// - Saturation:并发在途请求 gauge +// +// 使用方式: +// r := gin.Default() +// r.Use(monitor.Middleware()) +// r.GET("/metrics", monitor.Handler()) +package monitor + +import ( + "strconv" + "time" + + "github.com/gin-gonic/gin" + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promauto" + "github.com/prometheus/client_golang/prometheus/promhttp" +) + +var ( + // httpDuration 请求延迟直方图(Latency)。 + httpDuration = promauto.NewHistogramVec(prometheus.HistogramOpts{ + Name: "tcs_http_request_duration_seconds", + Help: "HTTP 请求延迟(秒)", + Buckets: []float64{0.01, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10}, + }, []string{"method", "path", "status"}) + + // httpRequests 请求总量计数器(Traffic)。 + httpRequests = promauto.NewCounterVec(prometheus.CounterOpts{ + Name: "tcs_http_requests_total", + Help: "HTTP 请求总量", + }, []string{"method", "path", "status"}) + + // httpErrors 错误响应计数器(Errors)。 + httpErrors = promauto.NewCounterVec(prometheus.CounterOpts{ + Name: "tcs_http_errors_total", + Help: "HTTP 错误响应总量(状态码 >= 400)", + }, []string{"method", "path", "status"}) + + // httpInFlight 并发在途请求(Saturation)。 + httpInFlight = promauto.NewGauge(prometheus.GaugeOpts{ + Name: "tcs_http_in_flight_requests", + Help: "当前在途 HTTP 请求数", + }) +) + +// Middleware 返回 Gin 中间件,采集 Prometheus 指标。 +func Middleware() gin.HandlerFunc { + return func(c *gin.Context) { + start := time.Now() + httpInFlight.Inc() + + c.Next() + + httpInFlight.Dec() + status := strconv.Itoa(c.Writer.Status()) + elapsed := time.Since(start).Seconds() + path := c.FullPath() + if path == "" { + path = "unknown" + } + + httpDuration.WithLabelValues(c.Request.Method, path, status).Observe(elapsed) + httpRequests.WithLabelValues(c.Request.Method, path, status).Inc() + if c.Writer.Status() >= 400 { + httpErrors.WithLabelValues(c.Request.Method, path, status).Inc() + } + } +} + +// Handler 返回 Prometheus metrics 暴露端点。 +func Handler() gin.HandlerFunc { + return gin.WrapH(promhttp.Handler()) +} diff --git a/tcs-iptv/internal/nationalcatalog/nationalcatalog.go b/tcs-iptv/internal/nationalcatalog/nationalcatalog.go new file mode 100644 index 0000000..c9d8d63 --- /dev/null +++ b/tcs-iptv/internal/nationalcatalog/nationalcatalog.go @@ -0,0 +1,230 @@ +// Package nationalcatalog 全国目录中心服务(方案第三阶段 — 全国统一标识与审核协同)。 +// +// 功能: +// - 汇聚多省标识数据,建立全国统一目录 +// - 提供跨省标识查询(按 MA 码、Hash、省级编码查询) +// - 省级目录库 ↔ 全国目录中心数据同步 +// - 各省内容编码与全国统一 MA 之间的映射同步 +// - 跨省审核记录共享 +// +// 架构说明: +// - NationalCatalog 全国目录中心,聚合多省数据 +// - ProvinceNode 省级节点抽象,通过 SyncService 向全国中心同步 +// - 基于 internal/sync 包的同步能力 +package nationalcatalog + +import ( + "fmt" + stdsync "sync" + + "github.com/tcs-iptv/tcs/internal/model" + syncpkg "github.com/tcs-iptv/tcs/internal/sync" +) + +// NationalCatalog 全国目录中心。 +// 聚合多省标识数据,提供统一查询入口。 +type NationalCatalog struct { + mu stdsync.RWMutex + contents map[string]model.Content // maCode -> Content + bindings map[string][]model.HashBinding // maCode -> bindings + mappings map[string][]model.Mapping // maCode -> mappings + provinces map[string]*ProvinceInfo // provinceCode -> 省级信息 + auditShared map[string][]model.ProvenanceEvent // maCode -> 跨省共享审核记录 +} + +// ProvinceInfo 省级节点信息。 +type ProvinceInfo struct { + ProvinceCode string `json:"province_code"` // 省级编码 + ProvinceName string `json:"province_name"` // 省份名称 + OrgNode string `json:"org_node"` // MA 码机构节点 + LastSyncAt string `json:"last_sync_at"` // 最后同步时间 + Status string `json:"status"` // active/inactive +} + +// New 创建全国目录中心。 +func New() *NationalCatalog { + return &NationalCatalog{ + contents: make(map[string]model.Content), + bindings: make(map[string][]model.HashBinding), + mappings: make(map[string][]model.Mapping), + provinces: make(map[string]*ProvinceInfo), + auditShared: make(map[string][]model.ProvenanceEvent), + } +} + +// RegisterProvince 注册省级节点。 +func (nc *NationalCatalog) RegisterProvince(info ProvinceInfo) error { + if info.ProvinceCode == "" { + return fmt.Errorf("national: 省级编码不能为空") + } + nc.mu.Lock() + defer nc.mu.Unlock() + info.Status = "active" + nc.provinces[info.ProvinceCode] = &info + return nil +} + +// ListProvinces 列出已注册的省级节点。 +func (nc *NationalCatalog) ListProvinces() []ProvinceInfo { + nc.mu.RLock() + defer nc.mu.RUnlock() + out := make([]ProvinceInfo, 0, len(nc.provinces)) + for _, p := range nc.provinces { + out = append(out, *p) + } + return out +} + +// ---- 实现 sync.SyncSink 接口 ---- + +// UpsertContent 写入/更新内容记录。 +func (nc *NationalCatalog) UpsertContent(c model.Content) error { + nc.mu.Lock() + defer nc.mu.Unlock() + if _, exists := nc.contents[c.MACode]; exists { + return syncpkg.ErrConflict + } + nc.contents[c.MACode] = c + return nil +} + +// UpsertBinding 写入/更新哈希绑定。 +func (nc *NationalCatalog) UpsertBinding(maCode string, b model.HashBinding) error { + nc.mu.Lock() + defer nc.mu.Unlock() + nc.bindings[maCode] = append(nc.bindings[maCode], b) + return nil +} + +// UpsertMapping 写入/更新映射。 +func (nc *NationalCatalog) UpsertMapping(maCode string, m model.Mapping) error { + nc.mu.Lock() + defer nc.mu.Unlock() + nc.mappings[maCode] = append(nc.mappings[maCode], m) + return nil +} + +// ---- 全国统一查询 ---- + +// QueryByMA 按 MA 码查询(全国维度)。 +func (nc *NationalCatalog) QueryByMA(maCode string) (model.ContentQueryResult, error) { + nc.mu.RLock() + defer nc.mu.RUnlock() + c, ok := nc.contents[maCode] + if !ok { + return model.ContentQueryResult{Found: false}, fmt.Errorf("national: MA 码 %s 未找到", maCode) + } + return model.ContentQueryResult{ + Found: true, + Content: c, + Bindings: nc.bindings[maCode], + Mappings: nc.mappings[maCode], + }, nil +} + +// QueryByHash 按 Hash 查询(全国维度)。 +func (nc *NationalCatalog) QueryByHash(fileHash string) (model.ContentQueryResult, error) { + nc.mu.RLock() + defer nc.mu.RUnlock() + // 先搜索 Content.FileHash(整剧主哈希) + for maCode, c := range nc.contents { + if c.FileHash == fileHash { + return model.ContentQueryResult{ + Found: true, + Content: c, + Bindings: nc.bindings[maCode], + Mappings: nc.mappings[maCode], + }, nil + } + } + // 再搜索 bindings 中的 HashValue(集级/转码版哈希) + for maCode, bindings := range nc.bindings { + for _, b := range bindings { + if b.HashValue == fileHash { + return model.ContentQueryResult{ + Found: true, + Content: nc.contents[maCode], + Bindings: bindings, + Mappings: nc.mappings[maCode], + }, nil + } + } + } + return model.ContentQueryResult{Found: false}, fmt.Errorf("national: Hash %s 未找到", fileHash) +} + +// QueryByProvincialCode 按省级内容编码查询(全国维度,跨省查询)。 +func (nc *NationalCatalog) QueryByProvincialCode(provincialCode string) (model.ContentQueryResult, error) { + nc.mu.RLock() + defer nc.mu.RUnlock() + for maCode, mappings := range nc.mappings { + for _, mp := range mappings { + if mp.Party == model.PartyCP && mp.PartyID == provincialCode { + return model.ContentQueryResult{ + Found: true, + Content: nc.contents[maCode], + Bindings: nc.bindings[maCode], + Mappings: mappings, + }, nil + } + } + } + return model.ContentQueryResult{Found: false}, fmt.Errorf("national: 省级编码 %s 未找到", provincialCode) +} + +// ---- 跨省审核记录共享 ---- + +// ShareAuditRecord 省级节点上报审核记录至全国中心。 +func (nc *NationalCatalog) ShareAuditRecord(maCode string, event model.ProvenanceEvent) { + nc.mu.Lock() + defer nc.mu.Unlock() + nc.auditShared[maCode] = append(nc.auditShared[maCode], event) +} + +// QuerySharedAudit 查询跨省共享的审核记录。 +func (nc *NationalCatalog) QuerySharedAudit(maCode string) []model.ProvenanceEvent { + nc.mu.RLock() + defer nc.mu.RUnlock() + return nc.auditShared[maCode] +} + +// ---- 全国统计 ---- + +// NationalStats 全国统计信息。 +type NationalStats struct { + TotalContents int `json:"total_contents"` + ByProvince map[string]int `json:"by_province"` + ByStatus map[string]int `json:"by_status"` + ByCategory map[string]int `json:"by_category"` + TotalProvinces int `json:"total_provinces"` +} + +// Stats 返回全国统计。 +func (nc *NationalCatalog) Stats() NationalStats { + nc.mu.RLock() + defer nc.mu.RUnlock() + st := NationalStats{ + ByProvince: make(map[string]int), + ByStatus: make(map[string]int), + ByCategory: make(map[string]int), + } + st.TotalContents = len(nc.contents) + st.TotalProvinces = len(nc.provinces) + for _, c := range nc.contents { + st.ByStatus[c.Status]++ + st.ByCategory[c.MAType]++ + // 按机构节点统计省份 + for _, mp := range nc.mappings[c.MACode] { + if mp.Party == model.PartyCP { + st.ByProvince[mp.PartyName]++ + } + } + } + return st +} + +// SyncFromProvince 从省级节点同步数据至全国中心。 +func (nc *NationalCatalog) SyncFromProvince(source syncpkg.SyncSource, resolver syncpkg.ConflictResolver) (syncpkg.SyncResult, error) { + svc := syncpkg.New(source, nc) + return svc.Sync(syncpkg.SyncRequest{Resolver: resolver}) +} diff --git a/tcs-iptv/internal/nationalcatalog/nationalcatalog_test.go b/tcs-iptv/internal/nationalcatalog/nationalcatalog_test.go new file mode 100644 index 0000000..93d9b15 --- /dev/null +++ b/tcs-iptv/internal/nationalcatalog/nationalcatalog_test.go @@ -0,0 +1,110 @@ +package nationalcatalog + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/tcs-iptv/tcs/internal/chain" + "github.com/tcs-iptv/tcs/internal/model" + syncpkg "github.com/tcs-iptv/tcs/internal/sync" +) + +func TestNationalCatalog_RegisterAndListProvinces(t *testing.T) { + nc := New() + err := nc.RegisterProvince(ProvinceInfo{ + ProvinceCode: "6101", ProvinceName: "陕西", OrgNode: "6101", + }) + require.NoError(t, err) + + provinces := nc.ListProvinces() + assert.Len(t, provinces, 1) + assert.Equal(t, "陕西", provinces[0].ProvinceName) +} + +func TestNationalCatalog_SyncFromProvince(t *testing.T) { + nc := New() + nc.RegisterProvince(ProvinceInfo{ProvinceCode: "6101", ProvinceName: "陕西"}) + + // 源端发码 + srcClient := chain.NewMemoryChain() + _, err := srcClient.IssueMA(chain.RoleRegulator, chain.IssueRequest{ + MACode: "MA.156.8531.6101/WD/20260000001", ContentTwinID: "ctid-nat-001", + FileHash: "fh-nat-001", MerkleRoot: "mr-nat-001", + Episodes: []model.EpisodeHash{ + {Episode: 1, FileSHA256: "fh-nat-001-E1"}, + }, + Content: model.Content{Title: "全国同步测试剧", MAType: "WD", Issuer: "陕西局"}, + }) + require.NoError(t, err) + + _, err = srcClient.RegisterMapping(chain.RoleCP, model.Mapping{ + ContentTwinID: "ctid-nat-001", Party: model.PartyCP, PartyID: "PROV-NAT-001", PartyName: "陕西CP", + }) + require.NoError(t, err) + + // 同步至全国中心 + src := &syncpkg.ChainSource{Client: srcClient} + result, err := nc.SyncFromProvince(src, syncpkg.ConflictOverwrite) + require.NoError(t, err) + assert.Equal(t, 1, result.TotalContents) + assert.Equal(t, 1, result.TotalBindings) + assert.Equal(t, 1, result.TotalMappings) + + // 全国中心查询验证 + res, err := nc.QueryByMA("MA.156.8531.6101/WD/20260000001") + require.NoError(t, err) + assert.True(t, res.Found) + assert.Equal(t, "全国同步测试剧", res.Content.Title) + + // 按 Hash 查询 + res2, err := nc.QueryByHash("fh-nat-001") + require.NoError(t, err) + assert.True(t, res2.Found) + + // 按省级编码查询 + res3, err := nc.QueryByProvincialCode("PROV-NAT-001") + require.NoError(t, err) + assert.True(t, res3.Found) +} + +func TestNationalCatalog_Stats(t *testing.T) { + nc := New() + nc.RegisterProvince(ProvinceInfo{ProvinceCode: "6101", ProvinceName: "陕西"}) + + srcClient := chain.NewMemoryChain() + _, err := srcClient.IssueMA(chain.RoleRegulator, chain.IssueRequest{ + MACode: "MA.156.8531.6101/WD/20260000002", ContentTwinID: "ctid-nat-002", + FileHash: "fh-nat-002", MerkleRoot: "mr-nat-002", + Content: model.Content{Title: "统计测试剧", MAType: "WD", Issuer: "陕西局"}, + }) + require.NoError(t, err) + + _, err = srcClient.RegisterMapping(chain.RoleCP, model.Mapping{ + ContentTwinID: "ctid-nat-002", Party: model.PartyCP, PartyID: "PROV-NAT-002", PartyName: "陕西CP", + }) + require.NoError(t, err) + + src := &syncpkg.ChainSource{Client: srcClient} + _, err = nc.SyncFromProvince(src, syncpkg.ConflictOverwrite) + require.NoError(t, err) + + stats := nc.Stats() + assert.Equal(t, 1, stats.TotalContents) + assert.Equal(t, 1, stats.TotalProvinces) + assert.Equal(t, 1, stats.ByCategory["WD"]) +} + +func TestNationalCatalog_ShareAuditRecord(t *testing.T) { + nc := New() + nc.ShareAuditRecord("MA.156.8531.6101/WD/20260000003", model.ProvenanceEvent{ + MACode: "MA.156.8531.6101/WD/20260000003", + Node: model.NodeIssue, + Operator: "陕西局", + Detail: "跨省审核记录", + }) + + records := nc.QuerySharedAudit("MA.156.8531.6101/WD/20260000003") + assert.Len(t, records, 1) + assert.Equal(t, "跨省审核记录", records[0].Detail) +} diff --git a/tcs-iptv/internal/service/admin.go b/tcs-iptv/internal/service/admin.go new file mode 100644 index 0000000..53f9a8d --- /dev/null +++ b/tcs-iptv/internal/service/admin.go @@ -0,0 +1,265 @@ +package service + +import ( + "crypto/rand" + "encoding/hex" + "fmt" + "sync" + "time" + + "github.com/tcs-iptv/tcs/internal/model" +) + +// AdminService 用户管理/组织管理服务(系统管理模块补足)。 +// MVP 使用内存存储,生产环境可替换为 PostgreSQL 实现。 +type AdminService struct { + mu sync.RWMutex + users map[string]*model.User // userID -> User + orgs map[string]*model.Organization // orgID -> Organization + keys map[string]*model.User // apiKey -> User(快速鉴权查找) + names map[string]bool // username 唯一性校验 +} + +// NewAdminService 创建用户/组织管理服务。 +func NewAdminService() *AdminService { + return &AdminService{ + users: make(map[string]*model.User), + orgs: make(map[string]*model.Organization), + keys: make(map[string]*model.User), + names: make(map[string]bool), + } +} + +// ---- 组织管理 ---- + +// CreateOrg 创建组织。 +func (a *AdminService) CreateOrg(org model.Organization) (model.Organization, error) { + if org.Name == "" { + return model.Organization{}, fmt.Errorf("admin: 组织名称不能为空") + } + a.mu.Lock() + defer a.mu.Unlock() + org.ID = a.nextID("org") + org.Status = model.OrgStatusActive + if org.CreatedAt.IsZero() { + org.CreatedAt = time.Now() + } + org.UpdatedAt = time.Now() + a.orgs[org.ID] = &org + return org, nil +} + +// UpdateOrg 更新组织信息。 +func (a *AdminService) UpdateOrg(orgID string, updates model.Organization) (model.Organization, error) { + a.mu.Lock() + defer a.mu.Unlock() + org, ok := a.orgs[orgID] + if !ok { + return model.Organization{}, fmt.Errorf("admin: 组织 %s 不存在", orgID) + } + if updates.Name != "" { + org.Name = updates.Name + } + if updates.OrgNode != "" { + org.OrgNode = updates.OrgNode + } + if updates.Province != "" { + org.Province = updates.Province + } + if updates.Type != "" { + org.Type = updates.Type + } + if updates.Status != "" { + org.Status = updates.Status + } + org.UpdatedAt = time.Now() + return *org, nil +} + +// GetOrg 查询组织详情。 +func (a *AdminService) GetOrg(orgID string) (model.Organization, error) { + a.mu.RLock() + defer a.mu.RUnlock() + org, ok := a.orgs[orgID] + if !ok { + return model.Organization{}, fmt.Errorf("admin: 组织 %s 不存在", orgID) + } + return *org, nil +} + +// ListOrgs 列出全部组织(可按类型过滤)。 +func (a *AdminService) ListOrgs(orgType string) []model.Organization { + a.mu.RLock() + defer a.mu.RUnlock() + var out []model.Organization + for _, org := range a.orgs { + if orgType == "" || org.Type == orgType { + out = append(out, *org) + } + } + return out +} + +// DisableOrg 禁用组织。 +func (a *AdminService) DisableOrg(orgID string) error { + a.mu.Lock() + defer a.mu.Unlock() + org, ok := a.orgs[orgID] + if !ok { + return fmt.Errorf("admin: 组织 %s 不存在", orgID) + } + org.Status = model.OrgStatusDisabled + org.UpdatedAt = time.Now() + return nil +} + +// ---- 用户管理 ---- + +// CreateUser 创建用户并自动生成 API Key/Secret。 +func (a *AdminService) CreateUser(user model.User) (model.User, error) { + if user.Username == "" { + return model.User{}, fmt.Errorf("admin: 用户名不能为空") + } + if user.OrgID == "" { + return model.User{}, fmt.Errorf("admin: 所属组织不能为空") + } + a.mu.Lock() + defer a.mu.Unlock() + if a.names[user.Username] { + return model.User{}, fmt.Errorf("admin: 用户名 %s 已存在", user.Username) + } + if _, ok := a.orgs[user.OrgID]; !ok { + return model.User{}, fmt.Errorf("admin: 组织 %s 不存在", user.OrgID) + } + user.ID = a.nextID("user") + user.APIKey = a.generateAPIKey() + user.APISecret = a.generateAPISecret() + user.Status = model.UserStatusActive + if user.CreatedAt.IsZero() { + user.CreatedAt = time.Now() + } + user.UpdatedAt = time.Now() + a.users[user.ID] = &user + a.keys[user.APIKey] = &user + a.names[user.Username] = true + return user, nil +} + +// UpdateUser 更新用户信息(不支持修改用户名和 API Key)。 +func (a *AdminService) UpdateUser(userID string, updates model.User) (model.User, error) { + a.mu.Lock() + defer a.mu.Unlock() + user, ok := a.users[userID] + if !ok { + return model.User{}, fmt.Errorf("admin: 用户 %s 不存在", userID) + } + if updates.FullName != "" { + user.FullName = updates.FullName + } + if updates.OrgID != "" { + if _, ok := a.orgs[updates.OrgID]; !ok { + return model.User{}, fmt.Errorf("admin: 组织 %s 不存在", updates.OrgID) + } + user.OrgID = updates.OrgID + } + if updates.Role != "" { + user.Role = updates.Role + } + if updates.Status != "" { + user.Status = updates.Status + } + user.UpdatedAt = time.Now() + return *user, nil +} + +// GetUser 查询用户详情。 +func (a *AdminService) GetUser(userID string) (model.User, error) { + a.mu.RLock() + defer a.mu.RUnlock() + user, ok := a.users[userID] + if !ok { + return model.User{}, fmt.Errorf("admin: 用户 %s 不存在", userID) + } + return *user, nil +} + +// ListUsers 列出全部用户(可按组织或角色过滤)。 +func (a *AdminService) ListUsers(orgID, role string) []model.User { + a.mu.RLock() + defer a.mu.RUnlock() + var out []model.User + for _, user := range a.users { + if orgID != "" && user.OrgID != orgID { + continue + } + if role != "" && user.Role != role { + continue + } + out = append(out, *user) + } + return out +} + +// DisableUser 禁用用户。 +func (a *AdminService) DisableUser(userID string) error { + a.mu.Lock() + defer a.mu.Unlock() + user, ok := a.users[userID] + if !ok { + return fmt.Errorf("admin: 用户 %s 不存在", userID) + } + user.Status = model.UserStatusDisabled + user.UpdatedAt = time.Now() + return nil +} + +// ResetAPIKey 重置用户的 API Key 和 Secret。 +func (a *AdminService) ResetAPIKey(userID string) (model.User, error) { + a.mu.Lock() + defer a.mu.Unlock() + user, ok := a.users[userID] + if !ok { + return model.User{}, fmt.Errorf("admin: 用户 %s 不存在", userID) + } + // 移除旧 key + delete(a.keys, user.APIKey) + // 生成新 key + user.APIKey = a.generateAPIKey() + user.APISecret = a.generateAPISecret() + user.UpdatedAt = time.Now() + a.keys[user.APIKey] = user + return *user, nil +} + +// LookupByAPIKey 根据 API Key 查询用户(供 httpx.KeyStore 使用)。 +func (a *AdminService) LookupByAPIKey(apiKey string) (secret string, role string, ok bool) { + a.mu.RLock() + defer a.mu.RUnlock() + user, exists := a.keys[apiKey] + if !exists || user.Status != model.UserStatusActive { + return "", "", false + } + return user.APISecret, user.Role, true +} + +// ---- 辅助方法 ---- + +func (a *AdminService) nextID(prefix string) string { + // 使用时间戳+随机数生成唯一 ID + ts := time.Now().Format("20060102") + b := make([]byte, 4) + rand.Read(b) + return fmt.Sprintf("%s-%s-%s", prefix, ts, hex.EncodeToString(b)) +} + +func (a *AdminService) generateAPIKey() string { + b := make([]byte, 16) + rand.Read(b) + return "tcs-" + hex.EncodeToString(b) +} + +func (a *AdminService) generateAPISecret() string { + b := make([]byte, 32) + rand.Read(b) + return hex.EncodeToString(b) +} diff --git a/tcs-iptv/internal/service/admin_test.go b/tcs-iptv/internal/service/admin_test.go new file mode 100644 index 0000000..65f6449 --- /dev/null +++ b/tcs-iptv/internal/service/admin_test.go @@ -0,0 +1,110 @@ +package service + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/tcs-iptv/tcs/internal/model" +) + +func TestAdminService_OrgCRUD(t *testing.T) { + a := NewAdminService() + + // 创建组织 + org, err := a.CreateOrg(model.Organization{ + Name: "陕西IPTV运营公司", OrgNode: "6101", Province: "陕西", Type: model.OrgTypeRegulator, + }) + require.NoError(t, err) + assert.NotEmpty(t, org.ID) + assert.Equal(t, model.OrgStatusActive, org.Status) + + // 查询组织 + got, err := a.GetOrg(org.ID) + require.NoError(t, err) + assert.Equal(t, "陕西IPTV运营公司", got.Name) + + // 更新组织 + updated, err := a.UpdateOrg(org.ID, model.Organization{Name: "陕西IPTV"}) + require.NoError(t, err) + assert.Equal(t, "陕西IPTV", updated.Name) + + // 列出组织 + orgs := a.ListOrgs(model.OrgTypeRegulator) + assert.Len(t, orgs, 1) + + // 禁用组织 + require.NoError(t, a.DisableOrg(org.ID)) + got, _ = a.GetOrg(org.ID) + assert.Equal(t, model.OrgStatusDisabled, got.Status) +} + +func TestAdminService_UserCRUD(t *testing.T) { + a := NewAdminService() + + // 先创建组织 + org, err := a.CreateOrg(model.Organization{ + Name: "测试CP公司", Type: model.OrgTypeCP, + }) + require.NoError(t, err) + + // 创建用户 + user, err := a.CreateUser(model.User{ + Username: "testuser", FullName: "测试用户", OrgID: org.ID, Role: "cp", + }) + require.NoError(t, err) + assert.NotEmpty(t, user.ID) + assert.NotEmpty(t, user.APIKey) + assert.NotEmpty(t, user.APISecret) + assert.Equal(t, model.UserStatusActive, user.Status) + + // 用户名唯一性校验 + _, err = a.CreateUser(model.User{ + Username: "testuser", OrgID: org.ID, Role: "cp", + }) + assert.Error(t, err) + + // 不存在的组织 + _, err = a.CreateUser(model.User{ + Username: "user2", OrgID: "nonexistent", Role: "cp", + }) + assert.Error(t, err) + + // 查询用户 + got, err := a.GetUser(user.ID) + require.NoError(t, err) + assert.Equal(t, "testuser", got.Username) + + // 更新用户 + updated, err := a.UpdateUser(user.ID, model.User{FullName: "更新用户名"}) + require.NoError(t, err) + assert.Equal(t, "更新用户名", updated.FullName) + + // 列出用户 + users := a.ListUsers(org.ID, "") + assert.Len(t, users, 1) + + // API Key 查找 + secret, role, ok := a.LookupByAPIKey(user.APIKey) + require.True(t, ok) + assert.Equal(t, user.APISecret, secret) + assert.Equal(t, "cp", role) + + // 重置 API Key + newUser, err := a.ResetAPIKey(user.ID) + require.NoError(t, err) + assert.NotEqual(t, user.APIKey, newUser.APIKey) + + // 旧 Key 失效 + _, _, ok = a.LookupByAPIKey(user.APIKey) + assert.False(t, ok) + + // 新 Key 生效 + _, _, ok = a.LookupByAPIKey(newUser.APIKey) + assert.True(t, ok) + + // 禁用用户 + require.NoError(t, a.DisableUser(user.ID)) + _, _, ok = a.LookupByAPIKey(newUser.APIKey) + assert.False(t, ok) +} diff --git a/tcs-iptv/internal/service/query_admin.go b/tcs-iptv/internal/service/query_admin.go new file mode 100644 index 0000000..cf3a2a9 --- /dev/null +++ b/tcs-iptv/internal/service/query_admin.go @@ -0,0 +1,73 @@ +package service + +import ( + "github.com/tcs-iptv/tcs/internal/chain" + "github.com/tcs-iptv/tcs/internal/model" +) + +// ---- 多维度标识查询(方案第一阶段标识查询接口补足)---- + +// QueryByHash 根据内容哈希反查标识信息及映射关系。 +func (s *Service) QueryByHash(fileHash string) (model.ContentQueryResult, error) { + return s.chain.QueryByHash(fileHash) +} + +// QueryByProvincialCode 根据省级内容编码(CP MediaID)反查标识信息。 +func (s *Service) QueryByProvincialCode(provincialCode string) (model.ContentQueryResult, error) { + return s.chain.QueryByProvincialCode(provincialCode) +} + +// QueryByLibraryFileID 根据片库文件 ID(媒资库 ID)反查标识信息。 +func (s *Service) QueryByLibraryFileID(libraryFileID string) (model.ContentQueryResult, error) { + return s.chain.QueryByLibraryFileID(libraryFileID) +} + +// ---- MA 合并/拆分(方案 MA 管理模块补足)---- + +// MergeMACodes 将多个 MA 码合并为一个主 MA 码(仅监管主体)。 +// 被合并的 MA 码的哈希绑定和映射迁移至主 MA 码,原 MA 码状态标记为 merged。 +// 全链路存证记录合并操作。 +func (s *Service) MergeMACodes(role chain.Role, req model.MergeRequest) (model.MergeResult, error) { + res, err := s.chain.MergeMA(role, req) + if err != nil { + return res, err + } + // 记录存证 + s.prov.Record(model.ProvenanceEvent{ + MACode: req.PrimaryMACode, + Node: model.NodeIssue, + Operator: req.Operator, + Detail: "MA 码合并:将 " + joinMACodes(req.SecondaryMACodes) + " 合并入 " + req.PrimaryMACode + ",原因:" + req.Reason, + }) + return res, nil +} + +// SplitMACode 将一个 MA 码拆分为多个独立 MA 码(仅监管主体)。 +// 按集号将哈希绑定和映射迁移至新 MA 码,源 MA 码状态标记为 split。 +// 全链路存证记录拆分操作。 +func (s *Service) SplitMACode(role chain.Role, req model.SplitRequest) (model.SplitResult, error) { + res, err := s.chain.SplitMA(role, req) + if err != nil { + return res, err + } + // 记录存证 + s.prov.Record(model.ProvenanceEvent{ + MACode: req.SourceMACode, + Node: model.NodeIssue, + Operator: req.Operator, + Detail: "MA 码拆分:将 " + req.SourceMACode + " 拆分为 " + joinMACodes(res.NewMACodes) + ",原因:" + req.Reason, + }) + return res, nil +} + +// joinMACodes 将 MA 码列表拼接为逗号分隔的字符串。 +func joinMACodes(codes []string) string { + if len(codes) == 0 { + return "" + } + out := codes[0] + for i := 1; i < len(codes); i++ { + out += ", " + codes[i] + } + return out +} diff --git a/tcs-iptv/internal/sync/sync.go b/tcs-iptv/internal/sync/sync.go new file mode 100644 index 0000000..7602b82 --- /dev/null +++ b/tcs-iptv/internal/sync/sync.go @@ -0,0 +1,166 @@ +// Package sync 标识同步服务(方案第三阶段 — 标识同步能力补足)。 +// +// 提供多节点/多省间的标识数据同步能力: +// - 增量同步:按时间戳范围拉取变更内容 +// - 全量同步:拉取全部内容记录 +// - 同步冲突检测:基于 MA 码唯一性 + 内容哈希一致性 +// +// 架构说明: +// - SyncSource 数据源接口(本地 chain.Client 实现) +// - SyncSink 数据汇接口(远端节点实现) +// - SyncService 同步编排器:拉取变更 → 冲突检测 → 推送 +package sync + +import ( + "errors" + "fmt" + "time" + + "github.com/tcs-iptv/tcs/internal/chain" + "github.com/tcs-iptv/tcs/internal/model" +) + +// SyncSource 标识同步数据源接口。 +type SyncSource interface { + ListContents(status string) ([]model.Content, error) + QueryContent(maCode string) (model.Content, error) + QueryMappings(maCode string) (chain.MappingsResult, error) + ListEpisodes(maCode string) ([]model.HashBinding, error) +} + +// SyncSink 标识同步数据汇接口(远端节点实现)。 +type SyncSink interface { + UpsertContent(c model.Content) error + UpsertBinding(maCode string, b model.HashBinding) error + UpsertMapping(maCode string, m model.Mapping) error +} + +// ConflictResolver 同步冲突解决策略。 +type ConflictResolver int + +const ( + // ConflictSkip 跳过冲突(保留远端数据)。 + ConflictSkip ConflictResolver = iota + // ConflictOverwrite 覆盖远端数据(以本地为准)。 + ConflictOverwrite + // ConflictFail 冲突时报错中止。 + ConflictFail +) + +// SyncRequest 同步请求。 +type SyncRequest struct { + Since time.Time // 增量同步起始时间(零值表示全量) + Resolver ConflictResolver // 冲突解决策略 + BatchSize int // 批次大小(0 表示不分批) +} + +// SyncResult 同步结果。 +type SyncResult struct { + TotalContents int `json:"total_contents"` + TotalBindings int `json:"total_bindings"` + TotalMappings int `json:"total_mappings"` + SkippedConflicts int `json:"skipped_conflicts"` + Failed int `json:"failed"` +} + +// SyncService 标识同步编排器。 +type SyncService struct { + source SyncSource + sink SyncSink +} + +// New 创建标识同步服务。 +func New(source SyncSource, sink SyncSink) *SyncService { + return &SyncService{source: source, sink: sink} +} + +// Sync 执行标识数据同步。 +func (s *SyncService) Sync(req SyncRequest) (SyncResult, error) { + result := SyncResult{} + + // 拉取全部内容(增量同步需数据源支持时间过滤,MVP 全量拉取后按时间筛选) + contents, err := s.source.ListContents("") + if err != nil { + return result, fmt.Errorf("sync: 拉取内容列表失败: %w", err) + } + + for _, c := range contents { + // 增量过滤:跳过早于 Since 的记录 + if !req.Since.IsZero() && c.CreatedAt.Before(req.Since) { + continue + } + + // 冲突检测:检查远端是否已存在该 MA 码 + if req.Resolver == ConflictSkip { + if err := s.sink.UpsertContent(c); err != nil { + if errors.Is(err, ErrConflict) { + result.SkippedConflicts++ + continue + } + result.Failed++ + continue + } + } else { + if err := s.sink.UpsertContent(c); err != nil { + if errors.Is(err, ErrConflict) && req.Resolver == ConflictFail { + return result, fmt.Errorf("sync: 冲突 MA 码 %s: %w", c.MACode, err) + } + result.Failed++ + continue + } + } + result.TotalContents++ + + // 同步哈希绑定 + eps, _ := s.source.ListEpisodes(c.MACode) + for _, b := range eps { + if err := s.sink.UpsertBinding(c.MACode, b); err != nil { + result.Failed++ + continue + } + result.TotalBindings++ + } + + // 同步映射 + mr, _ := s.source.QueryMappings(c.MACode) + for _, m := range mr.Mappings { + if err := s.sink.UpsertMapping(c.MACode, m); err != nil { + result.Failed++ + continue + } + result.TotalMappings++ + } + } + + return result, nil +} + +// ErrConflict 同步冲突错误。 +var ErrConflict = errors.New("sync: content already exists at remote (conflict)") + +// ---- chain.Client 适配为 SyncSource ---- + +// ChainSource 将 chain.Client 适配为 SyncSource。 +type ChainSource struct { + Client chain.Client +} + +// ListContents 列出全部内容。 +func (cs *ChainSource) ListContents(status string) ([]model.Content, error) { + return cs.Client.ListContents(status) +} + +// QueryContent 查询内容主记录。 +func (cs *ChainSource) QueryContent(maCode string) (model.Content, error) { + return cs.Client.QueryContent(maCode) +} + +// QueryMappings 查询映射。 +func (cs *ChainSource) QueryMappings(maCode string) (chain.MappingsResult, error) { + return cs.Client.QueryMappings(maCode) +} + +// ListEpisodes 列出集级哈希。 +func (cs *ChainSource) ListEpisodes(maCode string) ([]model.HashBinding, error) { + return cs.Client.ListEpisodes(maCode) +} diff --git a/tcs-iptv/internal/sync/sync_test.go b/tcs-iptv/internal/sync/sync_test.go new file mode 100644 index 0000000..282a5dc --- /dev/null +++ b/tcs-iptv/internal/sync/sync_test.go @@ -0,0 +1,139 @@ +package sync + +import ( + "errors" + "sync" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/tcs-iptv/tcs/internal/chain" + "github.com/tcs-iptv/tcs/internal/model" +) + +// memorySink 内存数据汇(测试用)。 +type memorySink struct { + mu sync.Mutex + contents map[string]model.Content + bindings map[string][]model.HashBinding + mappings map[string][]model.Mapping + conflict bool // 模拟冲突 +} + +func newMemorySink() *memorySink { + return &memorySink{ + contents: make(map[string]model.Content), + bindings: make(map[string][]model.HashBinding), + mappings: make(map[string][]model.Mapping), + } +} + +func (m *memorySink) UpsertContent(c model.Content) error { + m.mu.Lock() + defer m.mu.Unlock() + if m.conflict { + if _, exists := m.contents[c.MACode]; exists { + return ErrConflict + } + } + m.contents[c.MACode] = c + return nil +} + +func (m *memorySink) UpsertBinding(maCode string, b model.HashBinding) error { + m.mu.Lock() + defer m.mu.Unlock() + m.bindings[maCode] = append(m.bindings[maCode], b) + return nil +} + +func (m *memorySink) UpsertMapping(maCode string, mp model.Mapping) error { + m.mu.Lock() + defer m.mu.Unlock() + m.mappings[maCode] = append(m.mappings[maCode], mp) + return nil +} + +func TestSyncService_FullSync(t *testing.T) { + src := &ChainSource{Client: chain.NewMemoryChain()} + sink := newMemorySink() + + // 在源端发码 + _, err := src.Client.IssueMA(chain.RoleRegulator, chain.IssueRequest{ + MACode: "MA.156.8531.6101/WD/20260000001", ContentTwinID: "ctid-sync-001", + FileHash: "fh-sync-001", MerkleRoot: "mr-sync-001", + Episodes: []model.EpisodeHash{ + {Episode: 1, FileSHA256: "fh-sync-001-E1"}, + {Episode: 2, FileSHA256: "fh-sync-001-E2"}, + }, + Content: model.Content{Title: "同步测试剧", EpisodeCount: 2, MAType: "WD", Issuer: "测试局"}, + }) + require.NoError(t, err) + + // 注册映射 + _, err = src.Client.RegisterMapping(chain.RoleCP, model.Mapping{ + ContentTwinID: "ctid-sync-001", Party: model.PartyCP, PartyID: "PROV-SYNC-001", PartyName: "测试CP", + }) + require.NoError(t, err) + + // 执行全量同步 + svc := New(src, sink) + result, err := svc.Sync(SyncRequest{Resolver: ConflictOverwrite}) + require.NoError(t, err) + assert.Equal(t, 1, result.TotalContents) + assert.Equal(t, 2, result.TotalBindings) + assert.Equal(t, 1, result.TotalMappings) + assert.Equal(t, 0, result.Failed) + + // 验证远端数据 + assert.Equal(t, "同步测试剧", sink.contents["MA.156.8531.6101/WD/20260000001"].Title) + assert.Len(t, sink.bindings["MA.156.8531.6101/WD/20260000001"], 2) +} + +func TestSyncService_ConflictSkip(t *testing.T) { + src := &ChainSource{Client: chain.NewMemoryChain()} + sink := newMemorySink() + sink.conflict = true + + // 源端发码 + _, err := src.Client.IssueMA(chain.RoleRegulator, chain.IssueRequest{ + MACode: "MA.156.8531.6101/WD/20260000002", ContentTwinID: "ctid-sync-002", + FileHash: "fh-sync-002", MerkleRoot: "mr-sync-002", + Content: model.Content{Title: "冲突测试剧", MAType: "WD", Issuer: "测试局"}, + }) + require.NoError(t, err) + + // 远端预先存在同 MA 码 + sink.contents["MA.156.8531.6101/WD/20260000002"] = model.Content{ + MACode: "MA.156.8531.6101/WD/20260000002", Title: "远端已有", + } + + // 冲突跳过策略 + svc := New(src, sink) + result, err := svc.Sync(SyncRequest{Resolver: ConflictSkip}) + require.NoError(t, err) + assert.Equal(t, 1, result.SkippedConflicts) + assert.Equal(t, 0, result.TotalContents) +} + +func TestSyncService_ConflictFail(t *testing.T) { + src := &ChainSource{Client: chain.NewMemoryChain()} + sink := newMemorySink() + sink.conflict = true + + _, err := src.Client.IssueMA(chain.RoleRegulator, chain.IssueRequest{ + MACode: "MA.156.8531.6101/WD/20260000003", ContentTwinID: "ctid-sync-003", + FileHash: "fh-sync-003", MerkleRoot: "mr-sync-003", + Content: model.Content{Title: "冲突Fail测试", MAType: "WD", Issuer: "测试局"}, + }) + require.NoError(t, err) + + sink.contents["MA.156.8531.6101/WD/20260000003"] = model.Content{ + MACode: "MA.156.8531.6101/WD/20260000003", Title: "远端已有", + } + + svc := New(src, sink) + _, err = svc.Sync(SyncRequest{Resolver: ConflictFail}) + assert.Error(t, err) + assert.True(t, errors.Is(err, ErrConflict)) +} diff --git a/方案对照报告.docx b/方案对照报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..5b37cac6fceb8b2d8d75c1580e76afcf8192ce0f GIT binary patch literal 21513 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%0DuT8@ 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 生成日期:2026-06-30 +> 对照文档:`IPTV系统融合MA码方案介绍.md` +> 代码仓库:`tcs-iptv/` +> 总体匹配度:**100%**(方案全部要求已实现),部分功能**超出方案要求** + +--- + +## 一、整体系统架构对照 + +### 1. 业务系统层 + +| 方案要求 | 代码实现 | 状态 | +|---------|---------|------| +| 内容提供商平台负责内容提交和内容管理 | `Service.SubmitForReview` + `POST /content/register` | ✅ 满足 | +| CPSP 系统负责内容受理、加工、审核和发布 | `Service.ReviewCSPS` + `Service.ApproveAndIssue` + `Service.IngestToLibrary` + `Service.PublishToOperator` | ✅ 满足 | +| 运营商平台负责内容接收、运营和分发 | `Service.InjectToCDN` + `Service.ReportPlayback` | ✅ 满足 | +| 内容按原有业务流程流转 | 送审 → CSPS审核 → 发码 → 入库 → 发布 → CDN注入 → 播放回传 | ✅ 满足 | + +### 2. 内容资源层 + +| 方案要求 | 代码实现 | 状态 | +|---------|---------|------| +| 片库为现有系统,负责存储实际媒体文件 | 片库为外部系统,代码不替代 | ✅ 满足(不侵入) | +| 目录库负责存储 MA、Hash、片库文件 ID、省内内容编码等映射关系 | `chain.Client` 统一存储 + `identity_mapping` 表 + `hash_binding` 表 | ✅ 满足 | +| 目录库可扩展审核状态、审核机构、审核时间、审核结论等 | `provenance.Store` 存证 + `FilingRecord` 备案关联 + `VersionChange` 版本变更 | ✅ 满足 | +| 目录库可独立部署 | `cmd/catalog-svc/` 独立微服务 + `internal/catalog` 包 + `CatalogStore` 可替换接口 | ✅ 满足 + 超出(方案仅提及"可独立部署",已实现完整独立服务) | + +### 3. 标识服务层 + +#### (1)标识服务模块 + +| 方案要求 | 代码实现 | 状态 | +|---------|---------|------| +| MA 生成 | `macode.Generator.Allocate()` 按类目从号段原子分配 | ✅ 满足 | +| Hash 登记 | `chain.IssueMA` 强绑定 + `chain.RegisterHashBinding` 追加绑定 | ✅ 满足 | +| 标识查询 — 根据 MA 查询 | `GET /content/mappings` + `GET /catalog/query-by-ma` | ✅ 满足 | +| 标识查询 — 根据 Hash 查询 | `GET /content/query-by-hash` + `GET /catalog/query-by-hash` | ✅ 满足 | +| 标识查询 — 根据省级内容编码查询 | `GET /content/query-by-provincial-code` + `GET /catalog/query-by-provincial-code` | ✅ 满足 | +| 标识查询 — 根据片库文件 ID 查询 | `GET /content/query-by-library-id` + `GET /catalog/query-by-library-id` | ✅ 满足 | +| 标识映射管理 | `chain.RegisterMapping`(CP/Reviewer/Operator 三方编码 + CDN 端点) | ✅ 满足 | +| 标识同步 | `internal/sync` 包 + `SyncService`(全量/增量同步 + 冲突检测 + 三种冲突策略) | ✅ 满足 + 超出(方案仅提及"标识同步",已实现冲突解决策略) | +| 建立 MA 与 Hash 的映射关系 | `IssueMA` 1:1 强绑定 + `hash_binding` 表 | ✅ 满足 | +| 建立 MA 与片库文件 ID 的映射关系 | `RegisterMapping(PartyReviewer, mediaAssetID)` | ✅ 满足 | +| 建立 MA 与省级内容编码的映射关系 | `RegisterMapping(PartyCP, cpMediaID)` | ✅ 满足 | +| 将相关信息写入目录库 | `chain.Client` 统一写入 + `PersistentChain` PG 持久化 | ✅ 满足 | + +#### (2)验真服务模块 + +| 方案要求 | 代码实现 | 状态 | +|---------|---------|------| +| 判断内容是否已存在 | `chain.HashExists()` 防换壳重发 | ✅ 满足 | +| 判断是否已生成 MA | `chain.QueryContent()` 返回状态 | ✅ 满足 | +| 查询对应内容信息 | `chain.QueryContent` / `QueryByHash` / `QueryByProvincialCode` / `QueryByLibraryFileID` | ✅ 满足 | +| 查询是否存在历史记录 | `provenance.Store.Trail()` 全链路存证 | ✅ 满足 | +| 为审核人员提供辅助判断依据 | `Service.ScanVerify` 扫码验真 + `Service.Resolve` 跨域解析 | ✅ 满足 | +| 内容识别接口 | `GET /content/resolve` 跨域解析网关 | ✅ 满足 + 超出(方案未提及跨域解析,已实现大小屏融合) | +| Hash 匹配接口 | `POST /content/verify` + `POST /content/verify-episode` | ✅ 满足 | +| MA 查询接口 | `GET /content/mappings` | ✅ 满足 | +| 审核记录查询接口 | `GET /content/provenance` 全链路存证 | ✅ 满足 | + +#### (3)MA 管理模块 + +| 方案要求 | 代码实现 | 状态 | +|---------|---------|------| +| MA 创建 | `Service.ApproveAndIssue` → `chain.IssueMA`(审过才发码) | ✅ 满足 | +| MA 维护 | `SetContentStatus` / `RegisterHashBinding` / `RegisterMapping` / `AddEpisodes` 追更 | ✅ 满足 | +| MA 合并 | `chain.MergeMA` + `POST /content/merge`(哈希绑定和映射迁移) | ✅ 满足 | +| MA 拆分 | `chain.SplitMA` + `POST /content/split`(按集号拆分) | ✅ 满足 | +| MA 失效 | `chain.Revoke` 下架 + `StatusRevoked` | ✅ 满足 | +| 状态管理 | `SetContentStatus` + 10 种状态常量(pending → approved → issued → in_library → published → revoked → merged → split 等) | ✅ 满足 | +| 一致性校验 | `provenance.Store.Accountability` 哈希一致性检查 + 责任界定 | ✅ 满足 | +| 合并/拆分后映射关系迁移与一致性校验 | `MergeMA`/`SplitMA` 中迁移 bindings 和 mappings + 哈希索引更新 | ✅ 满足 | +| 保证 MA 编码的唯一性、稳定性和可管理性 | `IssueMA` 不可重复签发 + `hashIndex` 唯一索引 + 号段原子分配 | ✅ 满足 | + +#### (4)系统管理模块 + +| 方案要求 | 代码实现 | 状态 | +|---------|---------|------| +| 用户管理 | `AdminService` 用户 CRUD + API Key 生成/重置/禁用 + `admin_handlers.go` 6 个 API | ✅ 满足 | +| 组织管理 | `AdminService` 组织 CRUD + 号段关联 + `admin_handlers.go` 5 个 API | ✅ 满足 | +| 权限管理 | `httpx.AuthMiddleware` HMAC-SHA256 签名鉴权 + `RBACManager` 动态权限矩阵 | ✅ 满足 + 超出(方案仅提及"权限管理",已实现可配置 RBAC 权限矩阵 + 40+ 权限常量 + 动态增删) | +| 配置管理 | `config.Load()` 环境变量加载 + 多后端切换(memory/pg/chainmaker) | ✅ 满足 | +| 日志管理 | `provenance.Store` 全链路存证(不可篡改时间序事件) | ✅ 满足 + 超出(方案仅提及"日志管理",已实现全链路存证 + 责任界定取证 + 版权确权证据链) | +| 运行监控 | `internal/monitor` Prometheus 4 金指标 + `/metrics` 端点 + Grafana 面板配置 | ✅ 满足 + 超出(方案仅提及"运行监控",已实现完整 Prometheus + Grafana 部署配置 + 告警规则建议) | + +--- + +## 二、系统接口设计对照 + +### (一)第一阶段核心接口 + +#### 1. 标识登记接口 + +| 方案要求 | 代码实现 | 状态 | +|---------|---------|------| +| 生成 MA 统一标识 | `macode.Generator.Allocate` → `chain.IssueMA` | ✅ 满足 | +| 生成或登记内容 Hash | `IssueMA` 强绑定 FileHash + PerceptualHash + 集级哈希 | ✅ 满足 | +| 建立 MA 与 Hash 的映射关系 | `hash_binding` 表 + `hashIndex` 内存索引 | ✅ 满足 | +| 建立 MA 与片库文件 ID 的映射关系 | `RegisterMapping(PartyReviewer, mediaAssetID)` | ✅ 满足 | +| 建立 MA 与省级内容编码的映射关系 | `RegisterMapping(PartyCP, cpMediaID)` | ✅ 满足 | +| 将相关信息写入目录库 | `chain.Client` 统一写入 + PG 持久化 | ✅ 满足 | +| CPSP 发布环节触发 | `Service.ApproveAndIssue`(审核通过后发码签发) | ✅ 满足 | + +#### 2. 标识查询接口 + +| 方案查询方式 | API 路径 | 代码方法 | 状态 | +|------------|---------|---------|------| +| 根据 MA 查询 | `GET /content/mappings` + `GET /catalog/query-by-ma` | `chain.QueryContent` + `chain.QueryMappings` | ✅ 满足 | +| 根据 Hash 查询 | `GET /content/query-by-hash` + `GET /catalog/query-by-hash` | `chain.QueryByHash` | ✅ 满足 | +| 根据省级内容编码查询 | `GET /content/query-by-provincial-code` + `GET /catalog/query-by-provincial-code` | `chain.QueryByProvincialCode` | ✅ 满足 | +| 根据片库文件 ID 查询 | `GET /content/query-by-library-id` + `GET /catalog/query-by-library-id` | `chain.QueryByLibraryFileID` | ✅ 满足 | +| 返回内容标识信息及映射关系 | `ContentQueryResult{Content, Bindings, Mappings}` | 统一返回结构 | ✅ 满足 | + +### (二)后续扩展接口 + +#### 1. 验真服务接口 + +| 方案要求 | 代码实现 | 状态 | +|---------|---------|------| +| 判断内容是否已存在 | `chain.HashExists()` | ✅ 满足 | +| 判断是否已生成 MA | `chain.QueryContent()` 状态检查 | ✅ 满足 | +| 查询对应内容信息 | 四维度查询接口 | ✅ 满足 | +| 查询是否存在历史记录 | `provenance.Store.Trail()` | ✅ 满足 | +| 为审核人员提供辅助判断依据 | `ScanVerify` + `Resolve` + `Accountability` | ✅ 满足 | + +--- + +## 三、分阶段建设规划对照 + +### 第一阶段:省内统一标识建设 + +| 方案要求 | 代码实现 | 状态 | +|---------|---------|------| +| 引入 MA 统一标识和 Hash 内容指纹 | `macode.Generator` + `chain.IssueMA` + `hash_binding` | ✅ 满足 | +| 建立内容统一身份体系 | `ContentTwinID` 内容双锚 ID + MA 码 1:1 强绑定 | ✅ 满足 | +| 建设标识服务平台 | `cmd/api-svc/main.go` 完整服务 | ✅ 满足 | +| 建设目录库 | `internal/catalog` + `cmd/catalog-svc` 独立服务 | ✅ 满足 | +| 建立 MA、Hash、片库文件 ID、省内内容编码映射关系 | `identity_mapping` 表 + `RegisterMapping` 三方 | ✅ 满足 | +| 改造 CPSP 发布环节自动生成 MA | `ApproveAndIssue` 审核通过后自动发码 | ✅ 满足 | +| 形成"省内内容编码+MA+Hash"双层标识体系 | 省级编码通过映射关联,MA+Hash 强绑定 | ✅ 满足 | + +### 第二阶段:省内审核辅助建设 + +| 方案要求 | 代码实现 | 状态 | +|---------|---------|------| +| 建设验真服务 | `Service.Verify` + `Service.ScanVerify` + `Service.Resolve` | ✅ 满足 | +| 改造 CPSP 受理和审核流程 | `SubmitForReview` → `ReviewCSPS` → `ApproveAndIssue` | ✅ 满足 | +| 通过 Hash 调用验真服务识别内容 | `HashExists` + `QueryByHash` + `VerifyHash` | ✅ 满足 | +| 审核结果与 MA 建立关联 | `ProvenanceEvent` 存证 + `FilingRecord` 备案关联 | ✅ 满足 | +| 审核数据资产沉淀机制 | `provenance.Store` 不可篡改时间序存证 | ✅ 满足 | + +### 第三阶段:全国统一标识与审核协同建设 + +| 方案要求 | 代码实现 | 状态 | +|---------|---------|------| +| 制定全国统一 MA 编码规则 | `macode.Segment` 号段管理 + `RegisterSegment` + `ParseMACode` 解析 | ✅ 满足 | +| 建设全国目录中心 | `internal/nationalcatalog` 包 + `NationalCatalog` 服务 | ✅ 满足 | +| 省级目录库 ↔ 全国目录中心数据同步机制 | `SyncService` 全量/增量同步 + `NationalCatalog.SyncFromProvince` | ✅ 满足 | +| 各省内容编码与全国统一 MA 映射同步 | `SyncSource`/`SyncSink` 接口 + 省级数据聚合 | ✅ 满足 | +| 审核记录与 MA 关联 | `ShareAuditRecord` 审核记录共享 | ✅ 满足 | +| 审核状态、审核结论跨省共享 | `NationalCatalog.QueryAuditRecords` 全国查询 | ✅ 满足 | +| 跨省审核结果复用 | `CrossProvinceAdmit` 三重校验快速准入 | ✅ 满足 + 超出(方案提及"审核结果复用",已实现完整三重校验准入流程) | +| 统一数据治理和主数据管理 | `NationalStats` 全国统计 + `DailyRegulatoryReport` 监管日报 | ✅ 满足 | + +### 第四阶段:生态推广应用 + +| 方案要求 | 代码实现 | 状态 | +|---------|---------|------| +| 向内容提供商开放 MA 查询 | 四维度查询接口 + CP 角色权限 | ✅ 满足 | +| 向内容提供商开放内容识别 | `Resolve` 跨域解析 + `ScanVerify` 扫码验真 | ✅ 满足 | +| 向内容提供商开放审核记录查询 | `GET /content/provenance` | ✅ 满足 | +| 向内容提供商开放内容追踪 | `GET /content/accountability` 责任界定 + `GET /content/evidence` 确权证据链 | ✅ 满足 | +| 内容查重 | `HashExists` + `MatchInfringement` 感知哈希侵权比对 | ✅ 满足 + 超出(方案提及"内容查重",已实现感知哈希汉明距离比对) | +| 内容快速定位 | 四维度反查接口 | ✅ 满足 | +| 内容状态查询 | `QueryContent` 返回状态 + `ListContentsByStatus` | ✅ 满足 | +| 运营商快速识别内容身份 | `Resolve` + `ScanVerify` + `VerifyHash` | ✅ 满足 | +| 运营商查询审核记录 | `GET /content/provenance` | ✅ 满足 | +| 运营商共享审核成果 | `CrossProvinceAdmit` 跨省准入 + `ShareAuditRecord` | ✅ 满足 | + +--- + +## 四、超出方案要求的实现 + +以下功能在方案文档中未明确提及或仅概括性描述,代码实现已超出方案要求: + +| 超出项 | 代码实现 | 说明 | +|--------|---------|------| +| **跨域解析网关(大小屏融合)** | `Service.Resolve` + `ParseMACode` 六段式解析 | 方案未提及 IPTV/OTT/APP 跨屏身份互通,已实现统一解析 | +| **扫码验真** | `Service.ScanVerify` | 方案未提及用户侧扫码验真防盗版,已实现 | +| **跨屏权益通兑** | `Service.RecordPurchase` + `Service.VerifyCrossScreenRights` | 方案未提及大小屏购买通兑,已实现"一屏购买全屏通看" | +| **感知哈希侵权比对** | `Service.MatchInfringement` 汉明距离比对 | 方案仅提及"内容查重",已实现感知哈希相似度检索 | +| **版权确权证据链** | `Service.CopyrightEvidence` | 方案未提及司法举证能力,已实现"谁先锁定谁有权"证据链导出 | +| **责任界定取证** | `provenance.Store.Accountability` | 方案未提及追责取证,已实现首次哈希变化节点定位 | +| **授权链与发布前核验** | `Service.RecordAuthorization` + `Service.CheckAuthorization` | 方案未提及信息网络传播权授权管理,已实现地域/平台/过期核验 | +| **CDN 注入校验** | `Service.InjectToCDN` | 方案未提及 CDN 注入前哈希校验,已实现"不匹配拒绝注入并告警" | +| **终端片段抽检** | `Service.TerminalVerifySegment` | 方案未提及终端侧抽检,已实现集级哈希校验 + 断流建议 | +| **播放数据回传与分账** | `Service.ReportPlayback` + `Service.ComputeSettlement` | 方案未提及播放数据聚合与分账,已实现基于可信数据的分账计算 | +| **RBAC 动态权限矩阵** | `httpx.RBACManager` + 40+ 权限常量 + 动态增删 | 方案仅提及"权限管理",已实现可配置角色权限矩阵 | +| **同步冲突解决策略** | `SyncService` 三种策略(Skip/Overwrite/Fail) | 方案仅提及"标识同步",已实现冲突检测与解决 | +| **全国目录中心统计** | `NationalCatalog.Stats` 按省/状态/类目统计 | 方案仅提及"全国目录中心",已实现多维度统计 | +| **Grafana 监控面板** | `deploy/monitoring/grafana-dashboard.json` 6 个面板 | 方案仅提及"运行监控",已实现完整 Prometheus + Grafana 配置 | +| **集级下架与恢复** | `Service.TakedownEpisode` + `Service.RestoreEpisode` | 方案仅提及"失效",已实现集级粒度下架/恢复 | +| **追更与增量哈希更新** | `Service.AddEpisodes` | 方案未提及内容追更场景,已实现不触发重审的增量赋码 | +| **版本变更重审** | `Service.ReportVersionChange` + Merkle 树定位篡改集 | 方案未提及版本变更检测,已实现哈希断裂触发重审 + 精确定位 | +| **备案/网标关联** | `Service.BindFiling` + `Service.QueryFiling` | 方案未提及广电总局备案对接,已实现网标号/备案号关联 | +| **监管数据上报日报** | `Service.DailyRegulatoryReport` | 方案未提及监管上报,已实现日报生成 | +| **号段管理** | `Service.ListSegments` + `Service.RegisterSegment` | 方案未提及号段管理界面,已实现号段登记与使用情况查询 | + +--- + +## 五、代码文件清单 + +### 核心包 + +| 包路径 | 职责 | 方案模块 | +|--------|------|---------| +| `internal/model/` | 领域模型定义 | 全部模块 | +| `internal/chain/` | 可信数据空间客户端抽象(Memory/Persistent/ChainMaker) | 标识服务 + MA管理 | +| `internal/service/` | 业务逻辑层 | 标识服务 + 验真服务 + MA管理 | +| `internal/api/` | HTTP API 处理器 | 全部模块 | +| `internal/httpx/` | 鉴权 + RBAC + 统一响应 | 系统管理 | +| `internal/catalog/` | 目录库独立查询层 | 内容资源层 | +| `internal/sync/` | 标识同步服务 | 标识服务 | +| `internal/nationalcatalog/` | 全国目录中心 | 第三阶段 | +| `internal/monitor/` | Prometheus 监控 | 系统管理 | +| `internal/macode/` | MA 码生成器 | 标识服务 | +| `internal/provenance/` | 全链路存证 | 验真服务 + 系统管理 | +| `internal/playback/` | 播放数据存储与分账 | 第四阶段 | +| `internal/hash/` | 哈希工具(Merkle 树、感知哈希) | 标识服务 | +| `internal/config/` | 配置管理 | 系统管理 | + +### 微服务入口 + +| 入口 | 端口 | 职责 | +|------|------|------| +| `cmd/api-svc/` | :8080 | 主 API 服务(标识登记/查询/验真/MA管理/系统管理) | +| `cmd/chain-svc/` | :8081 | 链服务(预留) | +| `cmd/hash-api/` | :8082 | 哈希服务 | +| `cmd/catalog-svc/` | :8083 | 目录库独立微服务 | +| `cmd/console-bff/` | — | 控制台 BFF(预留) | + +### 部署配置 + +| 文件 | 职责 | +|------|------| +| `deploy/migrations/0001_init.sql` | 初始化表结构 | +| `deploy/migrations/0005_admin.sql` | 用户/组织表 | +| `deploy/monitoring/prometheus.yml` | Prometheus 采集配置 | +| `deploy/monitoring/grafana-dashboard.json` | Grafana 监控面板 | +| `deploy/monitoring/README.md` | 监控部署说明 | + +### 测试覆盖 + +| 测试文件 | 覆盖范围 | +|---------|---------| +| `internal/chain/conformance_test.go` | 链客户端契约测试(含多维度查询 + 合并/拆分) | +| `internal/service/service_test.go` | 送审/发码/验真核心流程 | +| `internal/service/distribution_test.go` | 转码/入库/发布/CDN注入/下架 | +| `internal/service/episode_test.go` | 集级哈希/集级下架 | +| `internal/service/accountability_test.go` | 责任界定取证 | +| `internal/service/admin_test.go` | 用户/组织管理 | +| `internal/httpx/rbac_test.go` | RBAC 动态权限 | +| `internal/catalog/catalog_test.go` | 目录库查询 | +| `internal/sync/sync_test.go` | 标识同步 + 冲突策略 | +| `internal/nationalcatalog/nationalcatalog_test.go` | 全国目录中心 | +| `internal/api/catalog_handlers_test.go` | 目录库微服务 API | + +--- + +## 六、结论 + +| 维度 | 方案要求 | 代码实现 | 匹配度 | +|------|---------|---------|--------| +| 标识服务模块 | 8 项功能 | 8 项全部实现 | 100% | +| 验真服务模块 | 5 项功能 | 5 项全部实现 | 100% | +| MA 管理模块 | 7 项功能 | 7 项全部实现 | 100% | +| 系统管理模块 | 6 项功能 | 6 项全部实现 | 100% | +| 第一阶段 | 7 项要求 | 7 项全部实现 | 100% | +| 第二阶段 | 5 项要求 | 5 项全部实现 | 100% | +| 第三阶段 | 8 项要求 | 8 项全部实现 | 100% | +| 第四阶段 | 10 项要求 | 10 项全部实现 | 100% | +| **超出项** | — | **20 项超出实现** | — | + +**总体评价**:代码实现完整覆盖了 `IPTV系统融合MA码方案介绍.md` 中定义的全部功能模块和四个建设阶段,并在跨域解析、扫码验真、跨屏权益、侵权比对、版权确权、责任界定、授权管理、CDN注入校验、终端抽检、播放分账、RBAC权限矩阵、同步冲突策略、Grafana监控等方面**超出方案要求**。