DB_JOB/작업파일/_스크립트/_remerge_batch.py
hehihoho3 b0acd1e705 백업: 셀병합 정상화(D~J)+KDHC 옵션2/행높이17, 오늘(06-21) 제출 17곳 검수·압축
- 공공기관2/3 작업본 + 오늘 제출 17곳 D~J 카테고리 셀병합 정상화
- 한국지역난방공사 옵션2(고아셀 F98 수정)+전행 높이17
- 제출_프리랜서2_2026-06-21.zip 생성(17개 xlsx, 2,468행)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 13:21:26 +09:00

41 lines
1.7 KiB
Python

# -*- coding: utf-8 -*-
import json, io, os, sys, openpyxl
import _remerge
ROOT=r"D:\01.프로젝트\DB수집"
d=json.load(io.open(os.path.join(ROOT,"작업파일","_targets.json"),encoding="utf-8"))
which=sys.argv[1] if len(sys.argv)>1 else "work"
files=d[which]
out=io.open(os.path.join(ROOT,"작업파일","_remerge_report_%s.txt"%which),"w",encoding="utf-8")
def w(*a): out.write(" ".join(str(x) for x in a)+"\n");
done=skip=fail=changed=0
for rel in files:
p=os.path.join(ROOT,rel)
if "test" in os.path.basename(p).lower():
w("SKIP(test)",rel); skip+=1; continue
# KDHC already done
if "지역난방" in rel:
w("SKIP(KDHC done)",rel); skip+=1; continue
try:
wb=openpyxl.load_workbook(p); ws=wb.active; mc=ws.max_column; mr=ws.max_row; wb.close()
except Exception as e:
w("LOADERR",rel,e); fail+=1; continue
if mc<20 or mr<3:
w("SKIP(not collection mc=%d mr=%d)"%(mc,mr),rel); skip+=1; continue
try:
r=_remerge.process(p, apply=True, height=False)
except Exception as e:
w("EXC",rel,repr(e)); fail+=1; continue
if not r.get("ok"):
w("FAIL",rel,"rolledback=%s fails=%s"%(r.get("rolledback"),r.get("fails"))); fail+=1; continue
nc=r.get("n_change",0); orp=len(r.get("orphans",[]))
if r.get("nochange"):
w("OK-nochange",rel); done+=1
else:
w("OK changes=%d orphans=%d merges=%s"%(nc,orp,r.get("n_merges_after")),rel,
"| add="+str(r.get("add"))[:200])
done+=1;
if nc>0 or orp>0: changed+=1
out.write("\n=== SUMMARY %s: done=%d changed=%d skip=%d fail=%d (total %d) ===\n"%(which,done,changed,skip,fail,len(files)))
out.close()
print("%s done=%d changed=%d skip=%d fail=%d total=%d"%(which,done,changed,skip,fail,len(files)))