#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""定点更正：仅把 2026-09-20 分派的 8 个客户的归属改到新销售员，其余一律不动。
（教训：不要用 _cust_sp.json 全量回贴历史 activity_owner —— 那是部分映射，会把大量行改错。）
"""
import json, io, os, shutil
from collections import Counter

ROOT = '/Users/liuxinyuan/Desktop/Hermes输出-工作类'
BAK = '.bak_before_ka_sr_pointfix_20260920'

ASSIGN = {
    '郑州纳克智造生物科技有限公司': '赵云浩',
    '郑州中道生物技术有限公司': '赵云浩',
    '河南鼎月生物科技有限公司': '赵云浩',
    '河南干士生物科技有限公司': '赵云浩',
    '河南信华生物技术有限公司': '赵云浩',
    '长沙浩牧科技有限公司': '赵云浩',
    '河南中纳生物技术有限公司': '赵云浩',
    '艾康生物技术（杭州）有限公司': '杨天雄',
    '中国人民解放军陆军军医大学第一附属医院': '刘子研',
    '迈克生物股份有限公司': '陈溪子',
    '深圳市锦瑞生物科技股份有限公司': '林潇',
    '深圳市朗瑞生物科技有限公司': '林潇',
    '武汉千湖上品水产有限公司': '赵云浩',
}
KA = {'刘子研', '赵云浩'}

def p(*a): return os.path.join(ROOT, *a)
def backup(rel):
    if os.path.exists(p(rel)) and not os.path.exists(p(rel) + BAK):
        shutil.copy(p(rel), p(rel) + BAK)

# ① 工作台 Tab 数据（owner）
backup('数据/customer_special_requirements.json')
d = json.load(io.open(p('数据/customer_special_requirements.json'), encoding='utf-8'))
n1 = 0
for x in d['items']:
    t = ASSIGN.get(x.get('customer') or '')
    if t and x.get('owner') != t:
        x['owner'] = t; n1 += 1
io.open(p('数据/customer_special_requirements.json'), 'w', encoding='utf-8').write(
    json.dumps(d, ensure_ascii=False, indent=1))
print('  ① customer_special_requirements.json：定点更正 %d 条' % n1)

# ② 复核数据集（activity_owner / salesperson）
backup('数据/sr_review.json')
sr = json.load(io.open(p('数据/sr_review.json'), encoding='utf-8'))
rows = sr if isinstance(sr, list) else sr.get('rows', [])
n2 = 0
for r in rows:
    t = ASSIGN.get(r.get('customer') or '')
    if t and r.get('activity_owner') != t:
        r['activity_owner'] = t; r['salesperson'] = t; n2 += 1
io.open(p('数据/sr_review.json'), 'w', encoding='utf-8').write(json.dumps(sr, ensure_ascii=False, indent=1))
print('  ② sr_review.json：定点更正 %d 行' % n2)

# ③ 重建大客户1/2 专版数据集
ka = [dict(r) for r in rows if r.get('activity_owner') in KA]
backup('数据/sr_review_kac.json')
io.open(p('数据/sr_review_kac.json'), 'w', encoding='utf-8').write(json.dumps(ka, ensure_ascii=False, indent=1))
print('  ③ sr_review_kac.json：%d 行 / %d 客户' % (len(ka), len({r['customer'] for r in ka})))
print('     按销售员:', Counter(r['activity_owner'] for r in ka).most_common())
print('     按分类:', Counter(r.get('category') for r in ka).most_common())
