#!/usr/bin/python3.12
"""批量修复 0817 缺失/不合格 summary + focus_point（基于已抓正文）"""
import json, urllib.request, time

API_URL = 'https://api.deepseek.com/v1/chat/completions'
KEY = 'sk-00d69ca50b124474b02236121d4cf147'

def call_deepseek(prompt, max_tokens=600):
    payload = json.dumps({
        "model": "deepseek-chat",
        "messages": [{"role": "user", "content": prompt}],
        "temperature": 0.3,
        "max_tokens": max_tokens
    }).encode('utf-8')
    req = urllib.request.Request(API_URL, data=payload, headers={
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {KEY}'
    })
    for attempt in range(3):
        try:
            with urllib.request.urlopen(req, timeout=60) as r:
                return json.loads(r.read().decode('utf-8'))['choices'][0]['message']['content']
        except Exception as e:
            print(f"  ⚠️ 重试{attempt+1}: {e}")
            time.sleep(3)
    return None

# (板块, idx, 标题, 正文素材, 需要summary, 需要focus)
targets = [
    ("hyundai_buzz_topics_domestic", 0,
     "现代汽车计划2027年推出第五代途胜 采用全新设计",
     "现代汽车计划2027年推出第五代途胜，采用全新设计，外观线条更硬朗，与现款显著差异。第五代途胜将取消柴油发动机选项，聚焦电气化动力系统。2026年年底前正式亮相，2027年上半年率先在韩国上市，随后登陆欧洲等主要市场。途胜全球累计销量已超700万辆。",
     True, True),
    ("hyundai_buzz_topics_domestic", 1,
     "起亚赛图斯黑武士版8月亮相",
     "2026年8月，新一代起亚赛图斯Black Warrior黑武士版曝光：全套原厂暗黑套件，18寸黑化轮毂配红色运动卡钳、流水式转向灯、Black Warrior专属标识，内饰Nappa纹真皮双拼座椅+10.25英寸双联屏暗黑机甲开机动画。搭载1.4T发动机最大功率140马力，峰值扭矩242牛米，配CVT。2026款赛图斯7月2日上市8款配置，官方指导价10.99-15.99万元，限时售价低至7.79万元起。黑武士版预计12-15万元区间，竞争对手瑞虎8、吉利星越L、本田XR-V、丰田锋兰达。",
     True, True),
    ("hyundai_buzz_topics_domestic", 2,
     "搜狐汽车营销创新大奖揭晓 北京现代获事件营销创新优秀奖",
     "8月14日第二十三届搜狐汽车营销首脑风暴·六安论坛举行，同期揭晓2026搜狐汽车营销创新大奖。北京现代获事件营销创新优秀奖（同奖还有长安启源、AIVA汽车）。北京现代总经理李凤刚分享《以差异化战略破局内卷》，认为不能用手机等电子消费品理念看待汽车行业，汽车不会成为快消品。论坛聚焦规模-效率-盈利黄金三角、出海升级为国际化等议题。",
     True, True),
    ("hyundai_buzz_topics_international", 0,
     "郑义宣上半年薪酬45亿韩元",
     "韩国财阀掌门人上半年薪酬集中披露：现代汽车集团会长郑义宣合计约45亿韩元，其中现代汽车22.5亿韩元（约合人民币1075万元）、起亚13.5亿韩元（约合645万元）、现代摩比斯9亿韩元（约合430万元）。三星电子会长李在镕继续零薪酬（自2017年延续），斗山集团朴正元455.8亿韩元居首。",
     True, True),
    ("hyundai_buzz_topics_international", 1,
     "现代汽车集团泰国子公司下半年启动纯电动汽车出口澳大利亚",
     "现代汽车集团泰国子公司宣布2026年下半年启动纯电动汽车出口澳大利亚业务，旨在提升工厂产能利用率。现代汽车将泰国作为东南亚生产基地，通过向澳大利亚出口纯电动车扩大右舵车市场覆盖。",
     True, True),
    ("hyundai_buzz_topics_international", 2,
     "现代汽车在华出口业务成核心支柱",
     "现代汽车在华出口业务成为核心支柱，依托北京现代和悦达起亚两大合资基地，定位全球出口枢纽。现代起亚中国工厂生产并出口海外，主要出口基地含土耳其和印度。现代汽车践行在中国、为中国、向全球战略，中国产现代汽车出口全球。",
     True, True),
    ("social_hotspots", 0,
     "绿色算力（人工智能）大会将举行",
     "呼和浩特市人民政府8月12日宣布，2026绿色算力（人工智能）大会将于8月22日在呼和浩特举行，主题为共筑算电协同之路、共商词元经济新局、共创人工智能未来。大会将发布《绿色算力发展研究报告（2026年）》等成果，字节跳动、中金数据、协鑫能科、寒武纪、宁德时代等头部企业将签约一批百亿级项目，正式落成全国视频大模型算力基地。",
     True, True),
    ("social_hotspots", 1,
     "宇树发超人 可跳高2米",
     "8月17日宇树科技（688836.SH）发布人形机器人超人30秒视频：可原地跳高2米，极限速度12.66m/s（0.85米腿长），超越全世界全人类原地跳高和奔跑速度记录。",
     True, True),
    ("social_hotspots", 2,
     "具身智能开始进入下半场",
     "雷峰网报道：具身智能行业2026年上半年国内融资935亿元、322笔，同比增长137%，但头部人形机器人企业出货刚过万台。行业从会干活转向干完活，强调设备回执不等于现场结果、单机动作跑通不等于跨设备链路闭环，需要分层智能架构（Agent Harness+Agentic Runtime+Device-side）而非让大模型直接成为工业执行器。",
     True, True),
    ("social_hotspots", 4,
     "市监总局发布汽车芯片五项认证认可行业标准",
     "市场监管总局（国家认监委）批准发布汽车芯片认证认可五项行业标准，其中《汽车芯片机构认证审查 通用评价要求》是全球首个面向汽车芯片全产业链相关机构的国家级能力评价标准体系，解决国产芯片上车应用准入壁垒高、市场信任度低问题，助力形成万亿级汽车芯片产业生态。",
     True, True),
    ("vehicle_hotspots", 0,
     "全新奔驰长轴距GLE SUV更多官图 将于8月21日成都车展发布",
     "8月17日梅赛德斯-奔驰发布全新长轴距GLE SUV更多官图：长5051mm、轴距3115mm（加长），三联屏内饰，内置豆包AI大模型虚拟助手，后排双娱乐屏，搭载AI赋能智能座舱，后续OTA将成首批搭载Momenta R7世界模型的豪华燃油车型。GLE 350 L 2.0T 190kW，GLE 450 L 3.0T 280kW，全系4MATIC四驱。8月21日成都车展首发。",
     True, True),
    ("vehicle_hotspots", 1,
     "权益后售21.99万起 阿维塔07L开启批量交付",
     "8月17日阿维塔07L在东莞华为松山湖园区批量交付，售价22.99-27.99万元，限时权益价21.99-26.99万。全系标配华为乾崑896线激光雷达、27个高感知智驾传感器，上市即搭载华为乾崑智驾ADS5（WEWA 2.0架构）。增程版纯电续航197-270公里，纯电版650-725公里。轴距2990mm。",
     True, True),
    ("vehicle_hotspots", 2,
     "2027款宝马X3官图 将于8月21日成都车展正式亮相",
     "8月17日宝马发布2027款X3官图：全新M风格横向辐条前格栅、沙丘灰新配色，8月21日成都车展正式亮相，9月交付。宝马AI个人助理基于云端大语言模型，支持车辆状态解答、餐饮推荐、家庭出行规划及深度思考模式，8月底推送至所有第9代宝马操作系统车辆。现款X3售价31.80-39.80万元。",
     True, True),
    ("vehicle_hotspots", 3,
     "尊界V800/V680获批合肥市L3级自动驾驶测试牌照 首搭ADS5.0",
     "8月17日尊界汽车宣布尊界V800/V680获批合肥市L3级自动驾驶测试牌照，将开展全场景深度测试，首搭ADS5.0自动驾驶系统。两款车8月5日上市，V680尊享版64.8万元，V800三款76.6-101.6万元，上市24小时大定突破3500台。V800轴距3430mm，综合续航1335km，华为巨鲸电池65kWh支持6C快充。",
     False, True),
]

path = '/data/news/json/yes_data/0817data.json'
d = json.load(open(path))

def find_section(data, name):
    for s in data:
        if s.get('name') == name:
            return s
    return None

for sect_name, idx, title, material, need_sum, need_focus in targets:
    sec = find_section(d, sect_name)
    if not sec or idx >= len(sec['list']):
        print(f"❌ 找不到 {sect_name}[{idx}]")
        continue
    it = sec['list'][idx]
    print(f"\n=== {sect_name}[{idx}] {title[:30]} ===")
    
    if need_sum:
        prompt = f"""请根据以下新闻正文素材，写一条中文摘要（summary），要求：
1. 从正文提炼，包含具体信息（谁+做了什么+关键数据）
2. 不要标题扩写，不要口号
3. 字数：hyundai板块35-40字，其他板块不超过45字
4. 只输出摘要文本，不要其他内容

新闻标题：{title}
正文素材：{material}"""
        resp = call_deepseek(prompt)
        if resp:
            summary = resp.strip().replace('\n', '')
            # 清理异常开头（如 "摘要："）
            for prefix in ['摘要：', '摘要:', 'summary：', 'summary:']:
                if summary.startswith(prefix):
                    summary = summary[len(prefix):]
            it['summary'] = summary
            print(f"  ✅ summary({len(summary)}字): {summary}")
        else:
            print(f"  ❌ summary 生成失败")
            time.sleep(2)
            continue
    
    if need_focus:
        prompt2 = f"""请根据以下新闻内容，写一条营销启示（focus_point），要求：
1. 站在现代汽车营销角度，20-35字
2. 具体可落地的营销启示，不要空话
3. 只输出启示文本，不要其他内容

新闻标题：{title}
内容：{material}"""
        resp2 = call_deepseek(prompt2)
        if resp2:
            focus = resp2.strip().replace('\n', '')
            for prefix in ['启示：', '启示:', 'focus_point：', 'focus_point:']:
                if focus.startswith(prefix):
                    focus = focus[len(prefix):]
            it['focus_point'] = focus
            print(f"  ✅ focus({len(focus)}字): {focus}")
        else:
            print(f"  ❌ focus 生成失败")
        time.sleep(1)

json.dump(d, open(path, 'w'), ensure_ascii=False, indent=2)
print("\n✅ 已保存")
