#!/usr/bin/env python3.12
"""阶段4（0929）：写 hero_summary + strategy_actions；周一→生成后 clear（留 []）"""
import json, re, sys

CN = '/data/news/json/0929data.json'
d = json.load(open(CN, encoding='utf-8'))
def cl(s): return len(re.sub(r'[^\w]', '', s or '', flags=re.UNICODE))

HERO = [
    "霸王茶姬联名米菲推桂花新品;智界R7上市23.98万",          # [0] 品牌 + 车型
    "电车维修费被指是油车1.7倍;全固态电池2030规模化",         # [1] 社会（heat 降序前2：97 / 96）
    "现代起亚美国RV破1500万辆;艾尼氪V于29日上市",            # [2] 现代板块（国际 + 国内）
]

SA = [
    {
        "core_topic": "新车密集上市 官方降价替代终端让利",
        "decision_advice": (
            "9月28日多款新车集中落地：智界R7售23.98万起并全系升级、大众ID.ERA 8X开启预售、"
            "捷达M6限时预售价8.08万起；奥德赛更把18.48—24.18万的官方定价直接替代终端让利。"
            "对现代而言，合资定价透明化已成常态，终端若仍靠暗降换量会持续侵蚀品牌溢价，"
            "应把官方价差与配置升级放在同一套话术里讲清楚。"
        ),
        "actions": [
            "梳理同价位竞品的官方价与终端价差",
            "把配置升级做成可对比的清单给终端",
            "评估终端价格话术的透明化改造路径",
        ],
    },
    {
        "core_topic": "全固态电池政策时间表正式落地",
        "decision_advice": (
            "七部门《新型电池产业发展“十五五”规划》明确到2030年全固态电池初步实现规模化应用，"
            "长寿命锂电池循环寿命达15000次；同日现代汽车集团研发负责人表态固态电池不能放弃、"
            "五年内先上高端车。对现代而言，技术路线的对外口径要跟上政策节奏："
            "既讲清现有三电的可靠性，也要给出固态电池的落地时点预期。"
        ),
        "actions": [
            "整理固态电池政策要点与时间节点",
            "准备固态电池路线图的对外说明口径",
            "把三电质保卖点写进终端应答话术",
        ],
    },
    {
        "core_topic": "智驾与机器人新品密集首发",
        "decision_advice": (
            "智界R7把华为乾崑ADS 5作为上市核心卖点、售价下探至23.98万；"
            "Sharpa在IROS一次发布三款机器人新品，覆盖本体、灵巧手与数据手套。"
            "对现代而言，智驾配置的比拼已从“有没有”转向“版本与体验”，"
            "终端需要用可现场演示的场景说明差异，而不是罗列参数。"
        ),
        "actions": [
            "核实本品智驾版本的功能差异清单",
            "准备智驾实车演示的标准动线与话术",
            "把机器人技术叙事纳入品牌内容储备",
        ],
    },
]

print('=== hero_summary 校验（≤25 内容字 / 严格 2 事件）===')
ok = True
for i, h in enumerate(HERO):
    n, ev = cl(h), h.count(';') + 1
    f = '✅' if n <= 25 and ev == 2 else '⛔'
    ok &= (f == '✅')
    print(f'  {f} [{i}] {n} 字 / {ev} 事件 :: {h}')

print('=== strategy_actions 校验（core_topic 10-20字无品牌名 / actions 15-20字）===')
for i, a in enumerate(SA):
    ct = cl(a['core_topic']); ac = [cl(x) for x in a['actions']]
    f1 = '✅' if 10 <= ct <= 20 else '⛔'
    f2 = '✅' if all(15 <= x <= 20 for x in ac) else '⛔'
    ok &= (f1 == '✅' and f2 == '✅')
    print(f'  {f1} core_topic {ct}字: {a["core_topic"]}')
    print(f'  {f2} actions {ac}')

if not ok:
    print('\n⛔ 校验未通过，未写入'); sys.exit(1)

d['hero_summary'] = HERO
d['strategy_actions'] = SA
json.dump(d, open(CN, 'w', encoding='utf-8'), ensure_ascii=False, indent=2)
print(f'\n✅ 已写入 {CN}')
print('  report_date:', d.get('report_date'), '| data_time_range:', d.get('data_time_range'))
