"""Rollback the auto-generated Thomas Sabo charm descriptions.
- Clears column 104 (Rövid) and 105 (Hosszú) cells for those leaders/variants
- Removes them from done_leaders and done_cikks in _progress.json
- Adjusts next_index back

The Thomas Sabo charms were generated by generate_thomas_sabo.py with templates.
We identify them by: leader_name contains 'Thomas Sabo' AND leader was added recently
(i.e., currently in done_leaders but came from the bulk script).

Strategy: just clear ALL Thomas Sabo charms from done_leaders/cikks regardless of when
they were processed - this is safe because the 19 manually-done ones can be re-processed
the same way. But for safety, we read _targets.json and check.
"""
import openpyxl, json, os, sys, io, time
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

BASE = os.path.dirname(os.path.abspath(__file__))
DST = os.path.join(BASE, 'merged_master_v2_updated.xlsx')
PROGRESS = os.path.join(BASE, '_progress.json')
TARGETS = os.path.join(BASE, '_targets.json')

with open(TARGETS, encoding='utf-8') as f:
    targets = json.load(f)
with open(PROGRESS, encoding='utf-8') as f:
    prog = json.load(f)

done_leaders = set(prog.get('done_leaders', []))
done_cikks = set(prog.get('done_cikks', []))

# Find all Thomas Sabo leaders and their cikks
ts_leaders = set()
ts_cikks = set()
ts_rows = []
for t in targets:
    if 'Thomas Sabo' in t.get('leader_name', ''):
        if t['leader'] in done_leaders:
            ts_leaders.add(t['leader'])
            for v in t.get('variants', []):
                ts_cikks.add(v['cikk'])
                ts_rows.append(v['row'])

print(f'Visszavonandó Thomas Sabo leader-ek: {len(ts_leaders)}')
print(f'Visszavonandó Thomas Sabo cikkek/sorok: {len(ts_rows)}')

# Clear cells
wb = openpyxl.load_workbook(DST)
ws = wb['Sheet1']
for r in ts_rows:
    ws.cell(row=r, column=104, value=None)
    ws.cell(row=r, column=105, value=None)

tmp = DST + '.tmp'
wb.save(tmp); wb.close()
for i in range(30):
    try:
        os.replace(tmp, DST)
        break
    except PermissionError:
        if i == 0: print('File locked, retrying...')
        time.sleep(2)
else:
    raise PermissionError(f'Could not replace {DST}')

# Update progress
done_leaders -= ts_leaders
done_cikks -= ts_cikks
prog['done_leaders'] = list(done_leaders)
prog['done_cikks'] = list(done_cikks)
prog['next_index'] = len(done_leaders)  # recompute from scratch
tmp = PROGRESS + '.tmp'
with open(tmp, 'w', encoding='utf-8') as f:
    json.dump(prog, f, ensure_ascii=False, indent=1)
os.replace(tmp, PROGRESS)

print(f'OK: visszavontunk {len(ts_leaders)} leader-t. Új done_leaders: {len(done_leaders)}, next_index: {prog["next_index"]}')
