# -*- coding: utf-8 -*-
"""依各頁 frontmatter 的 id、title、summary 重建 index.md。用法：python tools/build_index.py"""
import re, glob, os, datetime
ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')
rows = {'map': [], 'concept': [], 'source': [], 'query': []}
for f in sorted(glob.glob(os.path.join(ROOT, '*', '*.md'))):
    rel = os.path.relpath(f, ROOT).replace('\\', '/')
    if rel.startswith(('tools/', 'catalog/', 'raw/')): continue
    m = re.match(r'---\n(.*?)\n---', open(f, encoding='utf-8-sig').read(), re.S)
    if not m: continue          # 沒有 frontmatter 的檔案（例如資料夾說明）不列入索引
    fm = m.group(1)
    g = lambda k: (re.search(rf'^{k}: (.+)$', fm, re.M) or [None, ''])[1]
    if g('type') in rows:
        rows[g('type')].append(f"- [[{os.path.basename(f)[:-3]}]]｜{g('id')}｜{g('title')}｜{g('summary')}")
out = ['---', 'id: INDEX', 'type: index', f'updated: {datetime.date.today()}', '---', '', '# 索引', '',
       '查詢時先讀這一頁，再挑 3–5 頁深入。每頁一行：連結｜ID｜標題｜一句話摘要（取自各頁 frontmatter 的 `summary`）。', '']
for t, h in [('map', '主題地圖'), ('concept', '概念頁'), ('source', '書目頁'), ('query', '問答歸檔')]:
    out += [f'## {h}（{len(rows[t])}）', ''] + rows[t] + ['']
if os.path.exists(os.path.join(ROOT, 'catalog', 'books-catalog.md')):
    out += ['## 全庫書目', '', '- [[books-catalog]]：全部書籍一行一本的總目錄，由 `tools/build_catalog_index.py` 自動產生', '']
open(os.path.join(ROOT, 'index.md'), 'w', encoding='utf-8').write('\n'.join(out))
print('index.md:', sum(len(v) for v in rows.values()), 'pages')
