# Membuat data/seed.json dari Silsilah.xlsx (Sheet2: Turunan Kanolo >< Dawo)
import re, json, uuid
from openpyxl import load_workbook
ws = load_workbook('/home/claude/w/Silsilah.xlsx')['Sheet2']
P = []
def add(name, parent=None, gender='', note=''):
    p = {'id': uuid.uuid4().hex[:8], 'nama': name, 'parent': parent, 'gender': gender, 'catatan': note, 'tahunLahir': '', 'domisili': ''}
    P.append(p); return p
def clean(s):
    s = re.sub(r'^\s*[\d\.]+\s*', '', str(s)).strip()
    m = re.match(r'^(.*?)\s*\((.*?)\)\s*$', s)
    return (m.group(1).strip(), 'Pasangan: ' + m.group(2).strip()) if m else (s, '')
root = add('Kanolo', None, 'L', 'Leluhur utama. Menikah dengan Dawo.')
for c in range(1, 13):
    hdr = ws.cell(4, c).value
    if not hdr: continue
    lvl1 = add(hdr.strip(), root['id'])
    kids = {}
    for r in range(5, 15):
        v = ws.cell(r, c).value
        if v and str(v).strip():
            n, note = clean(v); k = add(n, lvl1['id'], '', note)
            kids[int(re.match(r'\s*(\d+)', str(v)).group(1))] = k
    # blok generasi berikutnya (baris 16+): penanda "k.1" di awal blok
    cur = None
    for r in range(16, 90):
        v = ws.cell(r, c).value
        if not v or not str(v).strip(): continue
        m = re.match(r'\s*(\d+)\.(\d+)', str(v))
        if m and m.group(2) == '1' and ('.1' in str(v)[:6]): cur = kids.get(int(m.group(1))) or cur
        if cur and re.match(r'\s*\d', str(v)):
            n, note = clean(v)
            if n: add(n, cur['id'], '', note)
json.dump(P, open('data/seed.json', 'w'), ensure_ascii=False, indent=1)
print(len(P), 'orang')
