#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""生成 m3_keyword_matrix.csv：8家竞品 × 5类动态 的检索词矩阵。

股票代码只写已核实者：
- 诺唯赞 688105（巨潮 topSearch 实测返回，delisted=false）
- 宝生物 4974.T（东证Prime，2026-06-12已退市，官网IR信息页一手公告）
- 罗氏 ROG / 赛默飞 TMO 为通用市场代码；CIK 未在本次实测中确认，标待确认
- 翌圣/菲鹏/全式金/迈迪安 均未上市，无代码
"""
import csv
import os

OUT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "m3_keyword_matrix.csv")

BRANDS = {
    "诺唯赞": {"cn": "诺唯赞", "abbr": "Vazyme", "en": "Vazyme Biotech",
             "code": "688105", "extra": ["南京诺唯赞生物科技股份有限公司"]},
    "翌圣": {"cn": "翌圣生物", "abbr": "Yeasen", "en": "Yeasen Biotech",
             "code": "未上市", "extra": ["翌圣（上海）生物科技有限公司"]},
    "菲鹏": {"cn": "菲鹏生物", "abbr": "Fapon", "en": "Fapon Biotech",
             "code": "未上市", "extra": ["深圳市菲鹏生物科技有限公司"]},
    "全式金": {"cn": "全式金生物", "abbr": "TransGen", "en": "Beijing TransGen Biotech",
               "code": "未上市", "extra": ["北京全式金生物科技有限公司"]},
    "迈迪安": {"cn": "迈迪安生物", "abbr": "Meridian", "en": "Meridian Bioscience",
               "code": "未上市", "extra": []},
    "罗氏诊断": {"cn": "罗氏诊断", "abbr": "Roche Diagnostics", "en": "Roche Diagnostics",
                 "code": "ROG（六瑞交易所）/ ADR: RHHBY", "extra": ["Roche Holding AG"]},
    "宝生物": {"cn": "宝生物", "abbr": "Takara Bio", "en": "Takara Bio Inc.",
               "code": "4974.T（东证Prime，2026-06-12已退市）", "extra": ["タカラバイオ"]},
    "赛默飞": {"cn": "赛默飞", "abbr": "Thermo Fisher", "en": "Thermo Fisher Scientific",
               "code": "TMO（纽交所）", "extra": ["Thermo Fisher Scientific Inc."]},
}

# 每类动态的中英文检索词模板；{b}=简称 {cn}=中文全称 {en}=英文全称
TEMPLATES = {
    "新品发布": {
        "cn": ["{b} 新产品发布", "{cn} 新品上市", "{b} 新品 推出", "{b} 推出 新系列",
               "{b} 发布 新品", "{cn} 全新 产品线", "{b} 可冻干 新品", "{b} 无动物源 新品"],
        "en": ["{b} launches new product", "{en} new product launch",
               "{b} unveils", "{en} introduces new reagent",
               "{b} lyophilized product launch", "{b} glycerol-free product launch",
               "{b} Lyo-ready launch", "{b} product release announcement"],
        "platform": "竞品官网新闻列表页 / sitemap；行业媒体（动脉网、生物谷）",
    },
    "战略合作": {
        "cn": ["{b} 战略合作", "{cn} 签约", "{b} 签署 合作协议", "{b} 联合实验室",
               "{b} 共建 中心", "{cn} 与 战略 伙伴", "{b} 授权 代理 协议", "{b} 经销 合作"],
        "en": ["{en} strategic partnership", "{en} signs agreement",
               "{en} collaboration agreement", "{en} joint venture",
               "{en} distribution agreement", "{en} exclusive distribution",
               "{en} co-development agreement"],
        "platform": "竞品官网新闻列表页；行业媒体；巨潮公告API（仅诺唯赞）",
    },
    "经营数据": {
        "cn": ["{b} 营业收入", "{cn} 营收 同比", "{b} 净利润", "{b} 业绩 增长",
               "{b} 经营 数据", "{cn} 销售 数据", "{b} 月度 出货", "{b} 产能 扩产"],
        "en": ["{en} revenue", "{en} net profit", "{en} results announcement",
               "{en} quarterly results", "{en} sales growth", "{en} operating data",
               "{en} capacity expansion"],
        "platform": "巨潮公告API（上交所/深交所）；公司IR页；行业媒体",
    },
    "财报季报年报半年报": {
        "cn": ["{b} 年度报告", "{cn} 半年度报告", "{b} 季度报告", "{b} 季报",
               "{cn} 财报", "{b} 业绩预告", "{b} 业绩快报"],
        "en": ["{en} annual report", "{en} half-year report", "{en} quarterly report",
               "{en} financial results", "{en} earnings release", "{en} Q1 Q2 Q3 Q4 results"],
        "platform": "巨潮公告API（上交所/深交所）；巨潮资讯；各交易所披露页；公司IR页",
    },
    "中标投标": {
        "cn": ["{b} 中标公告", "{cn} 中标", "{b} 成交公告", "{b} 招标 采购 中标",
               "{b} 政府采购 中标", "{cn} 采购 项目 成交", "{b} 框架协议 采购"],
        "en": ["{en} tender win", "{en} awarded contract",
               "{en} procurement award", "{en} supply agreement hospital"],
        "platform": "全国公共资源交易平台 ggzy.gov.cn；省级公共资源交易中心；中国政府采购网（403）",
    },
}


def rows():
    for brand, meta in BRANDS.items():
        for etype, tpl in TEMPLATES.items():
            for kw in tpl["cn"]:
                yield [brand, etype, kw.format(b=meta["abbr"], cn=meta["cn"], en=meta["en"]),
                       "中文", tpl["platform"]]
            for kw in tpl["en"]:
                yield [brand, etype, kw.format(b=meta["abbr"], cn=meta["cn"], en=meta["en"]),
                       "英文", tpl["platform"]]
            # 品牌标识词（简称/全称/股票代码）单独成行，便于直接投喂检索接口
            yield [brand, etype, meta["abbr"], "标识", tpl["platform"]]
            if meta["cn"] != meta["abbr"]:
                yield [brand, etype, meta["cn"], "标识", tpl["platform"]]
            if meta["en"] != meta["abbr"]:
                yield [brand, etype, meta["en"], "标识", tpl["platform"]]
            for ex in meta["extra"]:
                yield [brand, etype, ex, "标识", tpl["platform"]]
            if meta["code"] != "未上市":
                yield [brand, etype, meta["code"].split("（")[0].strip(),
                       "股票代码", tpl["platform"]]


if __name__ == "__main__":
    with open(OUT, "w", encoding="utf-8-sig", newline="") as f:
        w = csv.writer(f)
        w.writerow(["品牌", "动态类型", "检索词", "语言", "建议平台"])
        n = 0
        for r in rows():
            w.writerow(r)
            n += 1
    print(f"m3_keyword_matrix.csv 写入完成，共 {n} 行检索词")