research-report

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Research Report - Summary Report

研究报告 - 汇总报告

Trigger

触发指令

/research-report
/research-report

Workflow

工作流程

Step 1: Locate Results Directory

步骤1:定位结果目录

Find
*/outline.yaml
in current working directory, read topic and output_dir config.
在当前工作目录中查找
*/outline.yaml
,读取topic和output_dir配置。

Step 2: Scan Optional Summary Fields

步骤2:扫描可选汇总字段

Read all JSON results, extract fields suitable for TOC display (numeric, short metrics), e.g.:
  • github_stars
  • google_scholar_cites
  • swe_bench_score
  • user_scale
  • valuation
  • release_date
Use request_user_input to ask user:
  • Which fields to display in TOC besides item name?
  • Provide dynamic options list (based on actual fields in JSON)
读取所有JSON结果,提取适合在TOC中展示的字段(数值型、短指标),例如:
  • github_stars
  • google_scholar_cites
  • swe_bench_score
  • user_scale
  • valuation
  • release_date
使用request_user_input询问用户:
  • 除项目名称外,哪些字段需要在TOC中展示?
  • 提供动态选项列表(基于JSON中的实际字段)

Step 3: Generate Python Conversion Script

步骤3:生成Python转换脚本

Generate
generate_report.py
in
{topic}/
directory, script requirements:
  • Read all JSON from output_dir
  • Read fields.yaml to get field structure
  • Cover all field values from each JSON
  • Skip fields with values containing [uncertain]
  • Skip fields listed in uncertain array
  • Generate markdown report format: Table of contents (with anchor links + user-selected summary fields) + Detailed content (by field category)
  • Save to
    {topic}/report.md
TOC Format Requirements:
  • Must include every item
  • Each item displays: number, name (anchor link), user-selected summary fields
  • Example:
    1. [GitHub Copilot](#github-copilot) - Stars: 10k | Score: 85%
{topic}/
目录下生成
generate_report.py
脚本,脚本要求:
  • 读取output_dir中的所有JSON文件
  • 读取fields.yaml获取字段结构
  • 覆盖每个JSON中的所有字段值
  • 跳过值包含[uncertain]的字段
  • 跳过uncertain数组中列出的字段
  • 生成Markdown报告格式:目录(含锚点链接 + 用户选择的汇总字段) + 详细内容(按字段分类)
  • 保存至
    {topic}/report.md
TOC格式要求
  • 必须包含所有项目
  • 每个项目展示:编号、名称(锚点链接)、用户选择的汇总字段
  • 示例:
    1. [GitHub Copilot](#github-copilot) - Stars: 10k | Score: 85%

Script Technical Requirements (Must Follow)

脚本技术要求(必须遵守)

1. JSON Structure Compatibility Support two JSON structures:
  • Flat structure: Fields directly at top level
    {"name": "xxx", "release_date": "xxx"}
  • Nested structure: Fields in category sub-dict
    {"basic_info": {"name": "xxx"}, "technical_features": {...}}
Field lookup order: Top level -> category mapping key -> Traverse all nested dicts
2. Category Multi-language Mapping fields.yaml category names and JSON keys can be any combination (CN-CN, CN-EN, EN-CN, EN-EN). Must establish bidirectional mapping:
python
CATEGORY_MAPPING = {
    "Basic Info": ["basic_info", "Basic Info"],
    "Technical Features": ["technical_features", "technical_characteristics", "Technical Features"],
    "Performance Metrics": ["performance_metrics", "performance", "Performance Metrics"],
    "Milestone Significance": ["milestone_significance", "milestones", "Milestone Significance"],
    "Business Info": ["business_info", "commercial_info", "Business Info"],
    "Competition & Ecosystem": ["competition_ecosystem", "competition", "Competition & Ecosystem"],
    "History": ["history", "History"],
    "Market Positioning": ["market_positioning", "market", "Market Positioning"],
}
3. Complex Value Formatting
  • list of dicts (e.g., key_events, funding_history): Format each dict as one line, separate kv with
    |
  • Normal list: Short lists joined with comma, long lists displayed with line breaks
  • Nested dict: Recursive formatting, display with semicolon or line breaks
  • Long text strings (over 100 chars): Add line breaks
    <br>
    or use blockquote format for readability
4. Extra Fields Collection Collect fields that exist in JSON but not defined in fields.yaml, put in "Other Info" category. Note to filter:
  • Internal fields:
    _source_file
    ,
    uncertain
  • Nested structure top-level keys:
    basic_info
    ,
    technical_features
    etc.
  • uncertain
    array: Display each field name on separate line, don't compress into one line
5. Uncertain Value Skipping Skip conditions:
  • Field value contains
    [uncertain]
    string
  • Field name is in
    uncertain
    array
  • Field value is None or empty string
1. JSON结构兼容性 支持两种JSON结构:
  • 扁平结构:字段直接位于顶层
    {"name": "xxx", "release_date": "xxx"}
  • 嵌套结构:字段位于分类子字典中
    {"basic_info": {"name": "xxx"}, "technical_features": {...}}
字段查找顺序:顶层 -> 分类映射键 -> 遍历所有嵌套字典
2. 分类多语言映射 fields.yaml中的分类名称和JSON键可以是任意组合(中-中、中-英、英-中、英-英)。必须建立双向映射:
python
CATEGORY_MAPPING = {
    "Basic Info": ["basic_info", "Basic Info"],
    "Technical Features": ["technical_features", "technical_characteristics", "Technical Features"],
    "Performance Metrics": ["performance_metrics", "performance", "Performance Metrics"],
    "Milestone Significance": ["milestone_significance", "milestones", "Milestone Significance"],
    "Business Info": ["business_info", "commercial_info", "Business Info"],
    "Competition & Ecosystem": ["competition_ecosystem", "competition", "Competition & Ecosystem"],
    "History": ["history", "History"],
    "Market Positioning": ["market_positioning", "market", "Market Positioning"],
}
3. 复杂值格式化
  • 字典列表(如key_events、funding_history):将每个字典格式为一行,键值对用
    |
    分隔
  • 普通列表:短列表用逗号连接,长列表换行展示
  • 嵌套字典:递归格式化,用分号或换行展示
  • 长文本字符串(超过100字符):添加换行符
    <br>
    或使用块引用格式提升可读性
4. 额外字段收集 收集JSON中存在但fields.yaml未定义的字段,放入“Other Info”分类。注意过滤:
  • 内部字段:
    _source_file
    uncertain
  • 嵌套结构顶层键:
    basic_info
    technical_features
  • uncertain
    数组:每个字段名称单独一行展示,不要压缩为一行
5. 不确定值跳过规则 跳过条件:
  • 字段值包含
    [uncertain]
    字符串
  • 字段名称在
    uncertain
    数组中
  • 字段值为None或空字符串

Step 4: Execute Script

步骤4:执行脚本

Run
python {topic}/generate_report.py
运行
python {topic}/generate_report.py

Output

输出

  • {topic}/generate_report.py
    - Conversion script
  • {topic}/report.md
    - Summary report
  • {topic}/generate_report.py
    - 转换脚本
  • {topic}/report.md
    - 汇总报告