# -*- coding: utf-8 -*-
"""
把 KMDB 的 book_knowledge_catalog.json 轉成「一行一本」的總目錄 catalog/books-catalog.md。
用法：python tools/build_catalog_index.py <KMDB 資料夾路徑>
這是 Wiki 最便宜的一層：AI 先讀這份總目錄判斷要看哪幾本，再進入書目頁或原始層。
"""
import json, sys, os, re, datetime

kmdb = sys.argv[1] if len(sys.argv) > 1 else '../../Books/KMDB'
here = os.path.dirname(os.path.abspath(__file__))
out = os.path.join(here, '..', 'catalog', 'books-catalog.md')
os.makedirs(os.path.dirname(out), exist_ok=True)
cat = json.load(open(os.path.join(kmdb, 'book_knowledge_catalog.json'), encoding='utf-8-sig'))

def first_sentence(s, n=60):
    s = re.sub(r'^【[^】]+】', '', s or '').strip()
    s = re.split(r'(?<=。)', s)[0]
    return s[:n] + ('…' if len(s) > n else '')

rows = []
for b in cat:
    slug = re.split(r'[\\/]', b['cleaned_md'])[-2]
    kw = '、'.join((b.get('關鍵字') or '').split('；')[:4])
    rows.append((slug, f"- **{b['書名']}**｜{b['作者']}｜{first_sentence(b.get('摘要'))}｜{kw}｜`books/{slug}/`"))
rows.sort()
head = ['---', 'id: CATALOG', 'type: index', f'title: KMDB 全庫書目（{len(rows)} 本）',
        'summary: 一行一本，供 AI 先判斷要讀哪幾本', 'status: generated', f'updated: {datetime.date.today()}', '---', '',
        f'# KMDB 全庫書目（{len(rows)} 本）', '',
        '本頁由 `tools/build_catalog_index.py` 從 `book_knowledge_catalog.json` 自動產生，請勿手改。',
        '每行：書名｜作者｜摘要首句｜關鍵字｜原始層資料夾。', '']
open(out, 'w', encoding='utf-8').write('\n'.join(head + [r for _, r in rows]) + '\n')
print('wrote', out, len(rows), 'books', os.path.getsize(out), 'bytes')
