# PJ2026-0201 资讯源需求规格

## 修改历史

| 版本 | 更新日期 | 变更说明 |
| --- | --- | --- |
| v0.1 | 2026-07-13 | 定义公开 Feed、Hacker News、人工来源和期次来源清单的目标能力。 |

## 正文

## PJ2026-0201 资讯源需求规格

## 1. 文档控制

| 字段 | 内容 |
| --- | --- |
| 编号 | PJ2026-0201 |
| 短名 | 资讯源 |
| 层级 | L1 方向 |
| 规格状态 | 已生效 |
| 需求规格模板 | [ISO/IEC/IEEE 29148 需求规格模板](../../templates/iso-iec-ieee-29148-requirements-spec-template.md) |
| 上级规格 | [PJ2026-02 智媒工厂总规格](PJ2026-02-smart-media-factory.md) |
| 规格治理索引 | [PJ2026-02 智媒工厂总规格](PJ2026-02-smart-media-factory.md) 第 7 章 |

本文采用 ISO/IEC/IEEE 29148 需求规格模板的项目裁剪版。

正文只定义：

- 资讯发现、采集、证据、分类、排序和使用边界的预期终态；
- 对应验收契约。

## 2. 目的和范围

### 2.1 目的

资讯源的目标是：

- 提供可信、及时、可追溯的候选事实；
- 主动发现嵌入式与 AI 交叉、纯嵌入式、AI 和实用优惠信息；
- 明确区分发布者原文、媒体报道、社区线索和预印本；
- 避免下游把线索误当结论或把媒体改写为一手来源。

### 2.2 范围内

- 来源目录、启停策略、抓取类型、优先级、标签、信任层级、来源角色和视觉使用提示。
- RSS、Atom、公开 API、GitHub Releases/Changelog 和人工来源的采集与归一化。
- 原始响应留存、规范链接、去重、分类、排序、摘要证据和抓取失败记录。
- 嵌入式与 AI、纯嵌入式、AI 的优先级，以及硬件开发 Harness 和 AI Agent/Coding Harness 分类。
- 官方优惠、折扣、优惠券、样片计划、开发板赠送和免费额度的条件化表达。
- 新闻媒体、Hacker News、大学论文、官方公告和开源项目发布记录的归因边界。
- 供下游视觉制作使用的页面策略和版权提示，不负责实际画面制作。

### 2.3 范围外

- 选题取舍、叙事角度和最终口播表达，归 [编辑策划](PJ2026-0202-editorial-planning.md)。
- 网页截图、滚动动效、演示文稿和封面，归 [视觉制作](PJ2026-0203-visual-production.md)。
- 自动绕过登录、验证码、付费墙、反爬机制或站点条款获取正文和媒体。
- 保存或再发布第三方全文、原视频、原音频、大量图片或不必要的个人信息。
- 用搜索排名、社交热度或单一媒体观点替代事实证据和编辑判断。

## 3. 术语表

| 术语 | 定义 |
| --- | --- |
| 来源目录 | 由 owning YAML 管理的允许来源、抓取方式、角色、优先级、标签和风险提示集合。 |
| 来源角色 | `primary` 表示一手事实入口，`discovery` 表示发现线索或编辑背景入口。 |
| 信任层级 | 对第一方、混合第一方、预印本、编辑媒体和社区发现等来源性质的显式标记。 |
| 规范链接 | 去除可安全忽略的跟踪参数并保持资源身份稳定的链接，用于去重和追溯。 |
| 证据摘要 | 从允许获取的元数据和短摘录中保留的事实线索，不等价于复制原文。 |
| 人工来源 | 因无稳定自动入口或需人工核验而写入期次输入的结构化来源项。 |
| 预印本 | 尚不能默认视为已经同行评审的论文发布形态。 |
| 实用优惠 | 具有明确发布者、期限、地区、资格和条件的折扣、样片、赠送或免费额度信息。 |
| 状态边界 | beta、预览、分阶段开放、预印本、临时调整、地区限定等不能在下游丢失的事实限制。 |

## 4. 系统边界和接口

本规格把资讯源作为智媒工厂的事实入口看待，不负责内容表达和媒体制作。

| 边界项 | 内容 |
| --- | --- |
| 外部使用者 | 编辑策划、视觉制作、发布运营和人工来源维护者。 |
| 外部输入 | owning YAML 来源目录、公开 Feed/API/网页、GitHub 发布记录、人工来源条目和期次日期。 |
| 受控资源 | 原始网络响应、规范化来源项、来源清单、分类排序、抓取状态和版权提示。 |
| 外部输出 | 按优先级排序的候选池、可解析来源标识、原始链接、短证据、状态边界和来源视觉策略。 |
| 用户接口 | TypeScript CLI 的采集单步、来源清单文件、结构化日志和 Web 来源视图。 |
| 系统边界 | 资讯源负责“候选事实从哪里来、是什么角色、能否追溯”；不决定“节目最终说什么”。 |

## 5. 内部分工与下级索引

| 编号 | 模块或课题 | 规格位置 | 主责边界 | 上游依赖 | 下游支撑 |
| --- | --- | --- | --- | --- | --- |
| PJ2026-020101 | 来源目录 | 本规格 6.1 | 来源身份、抓取策略、角色、信任、优先级和使用提示 | 编辑规则、公开来源 | 网络采集、分类排序 |
| PJ2026-020102 | 网络采集 | 本规格 6.2 | Feed/API 获取、超时、并发、原始响应和失败状态 | 来源目录、公开网络 | 证据归一 |
| PJ2026-020103 | 证据归一 | 本规格 6.3 | 标题、链接、日期、摘要、规范链接、去重和来源标识 | 网络采集、人工来源 | 分类排序、编辑策划 |
| PJ2026-020104 | 分类排序 | 本规格 6.4 | 主题分类、内容优先级、一手优先和候选池排序 | 证据归一、栏目规则 | 编辑策划 |
| PJ2026-020105 | 优惠信息 | 本规格 6.5 | 期限、地区、资格、条件、过期和返利边界 | 官方公告、人工核验 | 编辑策划、发布运营 |
| PJ2026-020106 | 来源治理 | 本规格 6.6 | 归因、预印本、版权、失败和过期来源处置 | 全部来源环节 | 视觉制作、发布运营 |

本章图形描述资讯源的预期终态数据面。

### 5.1 目标数据面架构图

```mermaid
flowchart LR
  subgraph Inputs[外部来源]
    Feed[RSS / Atom]
    API[Hacker News API]
    Manual[人工来源]
  end
  subgraph SourcePlane[资讯源数据面]
    Registry[来源目录与策略]
    Fetcher[受控采集器]
    Normalizer[证据归一与去重]
    Classifier[分类与价值排序]
    Store[原始响应与来源清单]
  end
  Registry --> Fetcher
  Feed --> Fetcher
  API --> Fetcher
  Manual --> Normalizer
  Fetcher --> Normalizer
  Fetcher --> Store
  Normalizer --> Classifier
  Classifier --> Store
  Store --> Editorial[编辑策划]
  Store --> Visual[视觉制作]
  Store --> Publish[发布运营]
```

来源目录决定允许连接什么入口以及如何解释结果。采集器不拥有选题，来源清单不拥有最终叙事。

### 5.2 目标数据流图

```mermaid
flowchart LR
  Registry[owning YAML 来源目录] --> Fetch[Feed / API 采集]
  Manual[人工来源] --> Normalize[证据归一]
  Fetch --> Raw[原始响应存档]
  Fetch --> Normalize
  Normalize --> Dedupe[规范链接与去重]
  Dedupe --> Classify[分类与优先级]
  Classify --> Manifest[期次来源清单]
  Manifest --> Editorial[编辑策划]
  Manifest --> Visual[来源视觉]
  Manifest --> Publish[最终引用]
```

原始响应和规范化来源清单必须分开保存。下游使用来源清单中的稳定标识和链接，不直接依赖临时抓取对象或未登记页面内容。

### 5.3 关键时序图

```mermaid
sequenceDiagram
  participant E as 编辑者
  participant P as 流水线平台
  participant R as 来源目录
  participant F as 公开 Feed / API
  participant N as 归一与排序
  participant A as 期次来源工件
  E->>P: 提交 collect 单步
  P->>R: 读取并校验允许来源
  loop 每个启用来源
    P->>F: 按策略获取元数据
    alt 来源成功
      F-->>P: 原始响应
      P->>A: 保存响应与抓取状态
      P->>N: 归一来源项
    else 来源失败
      F-->>P: 超时或错误
      P->>A: 保存失败状态
    end
  end
  P->>N: 合并人工来源并去重排序
  N->>A: 写入来源清单
  P-->>E: 返回计数、分类与失败摘要
```

采集失败必须在同一作业和来源清单中可见。是否继续整期由质量门判断，不能把失败来源记录为零条成功。

## 6. 原子需求

### 6.1 SOURCE-L1-REQ-001 可治理来源目录

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| SOURCE-L1-REQ-001 | 来源目录 | PJ2026-020101 来源目录 | [编辑策划](PJ2026-0202-editorial-planning.md)、[视觉制作](PJ2026-0203-visual-production.md) |

系统应以 owning YAML 管理允许来源。每个来源必须明确标识：

- 名称、类型、入口和启停状态；
- 采集策略、信任层级和来源角色；
- 默认分类、分类方式、优先级和标签；
- 视觉策略、版权提示和已知问题。

来源目录必须支持：

- 第一方厂商和开源项目；
- 国际嵌入式媒体、Hacker News 和 arXiv；
- 人工维护页面。

没有稳定公开入口的来源应声明为 `manual-only`，不能在代码中私自增加隐藏抓取路径。

来源目录至少应覆盖：

- Arm、NXP、MicroPython、LVGL、Arm-2D 和 PikaPython；
- NI、Analog Devices、ST、NVIDIA、Arduino 和嘉立创相关入口；
- AI Agent/Coding Harness 和硬件 Development/Test Harness；
- 国际嵌入式媒体和 arXiv。

具体名单可以演进，但字段和角色边界必须保持可校验。

### 6.2 SOURCE-L1-REQ-002 可审计采集

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| SOURCE-L1-REQ-002 | 可审计采集 | PJ2026-020102 网络采集 | PJ2026-020103 证据归一、[流水线平台](PJ2026-0205-pipeline-platform.md) |

系统应通过公开且允许使用的 Feed、API 或人工输入采集资讯，并为每个自动来源记录成功、失败、响应状态、获取时间和原始响应摘要。

网络采集必须遵循以下边界：

- 明确并发、超时和失败语义；
- 单个来源失败时不得伪造成功；
- 是否允许整期继续由质量门决定；
- Hacker News 只作为发现来源；
- 不得把提交者或讨论内容改写为项目官方事实。

原始 Feed、Atom、API 响应应：

- 按期次存档；
- 带哈希或等价完整性线索。

人工来源必须保留登记者可复核的原始链接、日期和短证据，不得只写无法追溯的总结。

### 6.3 SOURCE-L1-REQ-003 稳定证据模型

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| SOURCE-L1-REQ-003 | 证据模型 | PJ2026-020103 证据归一 | PJ2026-020102 网络采集、[编辑策划](PJ2026-0202-editorial-planning.md) |

系统应把不同来源归一为稳定来源项。来源项至少包含：

- 来源标识、来源名称、标题和链接；
- 发布日期、抓取时间和摘要证据；
- 分类、标签、角色和信任层级；
- 是否预印本、发现入口和视觉策略。

规范链接和去重应：

- 消除安全可忽略的跟踪差异；
- 不把不同版本、不同公告或不同语言页面错误合并；
- 保留最可信、最接近一手发布者且证据更完整的候选。

媒体或社区发现项如果能定位到一手页面，应同时保留发现关系和一手来源；如果暂时只有媒体报道，必须在来源项和文稿中明确媒体归因。

### 6.4 SOURCE-L1-REQ-004 主题与价值排序

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| SOURCE-L1-REQ-004 | 分类排序 | PJ2026-020104 分类排序 | [编辑策划](PJ2026-0202-editorial-planning.md) |

系统应按照栏目 owning YAML 对候选资讯分类和排序。

默认排序规则如下：

- 依次优先嵌入式与 AI、纯嵌入式、AI；
- 同类中优先一手来源、明确状态、近期发布和可行动价值。

分类必须基于来源默认值和内容证据：

- 不能因媒体栏目名称或单个宽泛关键词把普通 AI 新闻误归为嵌入式；
- 不能把汽车线束等无关 `wire harness` 混入硬件 Development/Test Harness。

排序只决定候选池顺序，不替代编辑选择。来源热度、Hacker News 排名和媒体标题可以作为线索，但不能覆盖证据质量、受众相关性和状态边界。

### 6.5 SOURCE-L1-REQ-005 有条件实用优惠

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| SOURCE-L1-REQ-005 | 实用优惠 | PJ2026-020105 优惠信息 | [编辑策划](PJ2026-0202-editorial-planning.md)、[发布运营](PJ2026-0206-publishing-operations.md) |

系统应识别并结构化官方优惠、折扣、优惠券、样片计划、开发板赠送和免费额度，使编辑者可以判断其是否仍然有效并适合目标受众。

每条优惠至少应保留：

- 类型；
- 截止时间或有效期；
- 适用地区、资格和条件；
- 官方链接。

已过期、缺失日期、条件不清或使用返利链接的条目应降权或剔除，不能以“限时福利”掩盖无法核验的限制。

发布时必须重查活动状态。资讯源只提供采集时证据，不保证平台库存、价格、地区资格或用户最终能获得优惠。

### 6.6 SOURCE-L1-REQ-006 来源和版权边界

| 编号 | 短名 | 主责模块 | 关联模块 |
| --- | --- | --- | --- |
| SOURCE-L1-REQ-006 | 来源治理 | PJ2026-020106 来源治理 | [视觉制作](PJ2026-0203-visual-production.md)、[发布运营](PJ2026-0206-publishing-operations.md) |

系统应在来源清单中保留可供编辑、视觉和发布环节消费的归因、版权和状态提示，并禁止把“可访问”解释为“可自由再发布”。

来源许可必须分层判断：

- Feed 和 API 默认只授权其明确允许的元数据用途；
- 正文、图片、论文图表、品牌素材和页面截图应按来源条款与发布场景单独复核；
- arXiv 元数据与单篇论文内容的许可不能混为一谈。

来源不可访问、页面变化或视觉采集失败时，应保留失败状态并提供无图降级，不得使用无关图库或旧截图冒充当前来源。

## 7. 过程控制

### 7.1 追溯契约

- 每个候选来源应能追溯到来源目录、采集响应、规范链接、来源角色和期次采用决策。
- 自动生成文件、纯配置、锁文件和二进制工件应由对应生成器、校验器或 owning YAML 提供稳定归属。

### 7.2 原入口验收

- 使用 TypeScript CLI 单步运行 `collect`。
- 核对来源总数、自动来源成功数、人工来源数、一手与发现来源数、分类分布和抓取失败。
- 随机抽取来源项，验证规范链接、发布日期、角色、信任层级、证据摘要、原始响应和视觉策略可解析。
- 对优惠信息单独验证截止时间、地区、资格、条件和过期处置。
- 对媒体、Hacker News 和预印本单独验证归因和状态没有被提升。

### 7.3 变更和失败控制

- 新增或修改来源先改 owning YAML，再运行配置校验和有界采集。
- 来源结构字段、角色语义、分类优先级或优惠接受标准变化时，先更新本规格。
- 单个来源临时故障保留为运行证据，不直接修改稳定规格。
- 连续失败、条款变化、入口停用或数据质量长期下降时，应在 owning YAML 中禁用或改为人工来源。
- 来源数量不能作为完成标准；完成标准是进入下游的候选可追溯、可归因、状态清楚且对栏目有用。

### 7.4 回写边界

- 选题和文稿问题回写 [编辑策划](PJ2026-0202-editorial-planning.md)。
- 来源页面画面和截图使用问题回写 [视觉制作](PJ2026-0203-visual-production.md)。
- 最终引用、活动复核和平台披露问题回写 [发布运营](PJ2026-0206-publishing-operations.md)。
- 调度、日志、作业和工件可见性问题回写 [流水线平台](PJ2026-0205-pipeline-platform.md)。
