#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""给 baorui-sales 装配「市场/技术/客户服务」类技能，并把技能目录设为只读。

原则：
  · 只装销售用得上的（市场调研、竞品、产品/技术、文献、客户服务）
  · 不装任何「维护基础设施」的技能（技能编写/知识库治理/工作台/CloudBase/密码/绩效/离职/财务报表）
  · 装完 chmod -R a-w：skill_manage 与文件工具都写不进去（同一 OS 账号下的硬约束）
"""
import os
import shutil
import subprocess
import sys

SEARCH = [os.path.expanduser('~/.hermes/skills'),
          os.path.expanduser('~/.hermes/profiles/zone-b/skills')]
DEST = os.path.expanduser('~/.hermes/profiles/baorui-sales/skills')

# 分类 → 技能名
WANT = {
    'productivity': [
        'baoyu-competitor-analysis', 'baoyu-market-analysis-report', 'baoyu-market-research-card',
        'visit-industry-intel-brief', 'baoyu-product-benchmarking', 'baoyu-product-fact-lookup',
        'baoyu-product-selection-answer', 'baoyu-product-sku-decoding', 'baoyu-tech-evidence-qa',
        'baoyu-technical-literature-deepdive', 'pcr-additives-advisory', 'qpcr-signal-troubleshooting',
        'baoyu-lyophilization-advisory', 'baoyu-mrna-circrna-product', 'baoyu-product-recommendation',
        'baoyu-customer-identity', 'baorui-erp-sku-trace', 'baoyu-visit-card',
        'baoyu-life-science-visit-card', 'molecular-resistance-site-panels',
        'baoyu-customer-analysis', 'baoyu-customer-profile', 'baoyu-product-price-analysis',
    ],
    'research': [
        'baoyu-literature-access', 'literature-research-pipeline', 'arxiv', 'competitor-news-monitor',
    ],
    '.': ['baoyu-customer-special-requirements'],
}


def find(name):
    for base in SEARCH:
        for root, dirs, _ in os.walk(base):
            if os.path.basename(root) == name and 'SKILL.md' in os.listdir(root):
                return root
    return None


def main():
    os.makedirs(DEST, exist_ok=True)
    # 先解锁（上一次可能锁过）
    subprocess.run(['chmod', '-R', 'u+w', DEST], capture_output=True)
    ok, miss = [], []
    for cat, names in WANT.items():
        for n in names:
            src = find(n)
            if not src:
                miss.append(n); continue
            tgt = os.path.join(DEST, n) if cat == '.' else os.path.join(DEST, cat, n)
            os.makedirs(os.path.dirname(tgt), exist_ok=True)
            if os.path.exists(tgt):
                shutil.rmtree(tgt)
            shutil.copytree(src, tgt)
            ok.append((cat, n))
    print('已装 %d 个技能：' % len(ok))
    for cat in WANT:
        got = [n for c, n in ok if c == cat]
        if got:
            print('  [%s] %d 个: %s' % (cat, len(got), '、'.join(got)))
    if miss:
        print('  ⚠️ 未找到:', '、'.join(miss))
    # 锁成只读
    subprocess.run(['chmod', '-R', 'a-w', DEST], capture_output=True)
    r = subprocess.run(['ls', '-ld', DEST], capture_output=True, text=True)
    print()
    print('技能目录权限:', r.stdout.strip())
    probe = os.path.join(DEST, '_write_probe.txt')
    try:
        open(probe, 'w').write('x')
        print('❌ 只读校验失败：仍可写！')
        os.remove(probe)
        return 1
    except PermissionError:
        print('✅ 只读校验通过：写入被拒（skill_manage / 文件工具都改不了）')
    return 0


if __name__ == '__main__':
    sys.exit(main())
