Phase 1 Research Agent 的架构由四条互相强化的取舍决定:关键词规则分类、SQLite 本地落盘、CLI + FastAPI 双轨、Enum 显式本体。显式不做的: LLM、共指消解、向量检索、网页抓取、动态市场模型、自动 PPT, 全部留给 Phase 2 / 3。
接口层薄, 领域层是规则与本体, 持久化层是 SQLite + seed。每个模块单一职责, 改 ontology 只动一个文件。
从原文到入库的完整管线。Classifier 是纯函数, 公司反哺是后处理(classifier 不需要懂"公司"概念)。
从事件表到 markdown 周报的聚合链路。Thread 桶聚合 + 风险提取 + 下周指标三路并发, 最后 render。
每条决策都带"代价说明", 让未来要扩展的人能判断边界。
当前 14 个字段全部落地。橙色行是 Phase 2 待补字段, 直接关系到 Phase 3 决策层能否启动。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | INT PK | 自增主键 |
| title / content | TEXT | 事件标题 / 正文 |
| source / url | TEXT | 来源 / 链接(可空) |
| occurred_at | TEXT (ISO) | 事件发生时间 ISO8601 |
| created_at | TEXT (ISO) | 入库时间 |
| threads / scenarios / dimensions | TEXT (JSON array) | 分类结果, 多标签 |
| thesis_impact | TEXT | 增强 / 削弱 / 中性 |
| confidence | REAL | 0.0–1.0 |
| next_indicators | TEXT (JSON array) | 下周跟踪项 |
| companies | TEXT (JSON array) | 命中公司名 |
| numeric_fields Phase 2 | TEXT (JSON) | 订单金额 / capex / opex 等数字解析, 如 {"order_amount_cny_yi": 5.2, "client": "某军种"} |
| time_window_start/end Phase 2 | TEXT | 事件涉及时间窗(订单交付期 · 政策生效期) |
| quality_flag Phase 2 | TEXT | 数据质量标记(原文 / 二手 / 推算) |
当前 8 个字段。橙色行是 Phase 2 待补字段, 支持 Phase 3 仓位信号与公司相对位势。
| 字段 | 类型 | 说明 |
|---|---|---|
| name | TEXT UNIQUE | 公司名(主键) |
| thread | TEXT | 所属主线(用于公司反哺) |
| products / customers / aliases | JSON array | 产品 · 客户 · 别名 |
| moat / risk / revenue_mapping | TEXT | 护城河 / 风险 / 收入映射 |
| score | REAL | 评分 |
| orders Phase 2 | JSON array | 已披露订单清单 [{"client":..., "amount_cny_yi":..., "signed_at":...}] |
| revenue_actual Phase 2 | JSON object | 财报口径收入按主线 / 季度拆分 |
| peer_rank Phase 2 | JSON object | 同主线 peer 排名 {"by_orders_4w": 2, "by_thesis_4w": 3} |
| position_signal Phase 3 | TEXT | 当前仓位信号 加 / 减 / 持 |