백업: 공공기관3 작업현황 갱신·검수 진행 + 06-25 제출 패키지, 임시 작업파일 정리

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
hehihoho3 2026-06-26 09:47:44 +09:00
parent b0acd1e705
commit dbdb6b1831
1230 changed files with 195512 additions and 245134 deletions

View File

@ -1 +0,0 @@
{"sessionId":"3c6000fc-2299-4a1f-993b-223dcca20883","pid":20156,"acquiredAt":1779975159075}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,26 +0,0 @@
# -*- coding: utf-8 -*-
import os, io, json
ROOT=r"D:\01.프로젝트\DB수집"
SKIP_DIR={"_backup","backup","_temp","_스크립트","_nshots","_naudit","_shots",".git","_gnb","__pycache__"}
def skipname(b):
bl=b.lower()
if b.startswith("~$"): return True
if "backup" in bl or "conflicted" in bl: return True
for s in ("_작업현황","작업현황","_취합","취합본","예시","자료_취합","교육청_작업현황"):
if s in b: return True
return b.startswith("_")
work=[]; sub=[]; other=[]
for dp,dn,fn in os.walk(ROOT):
dn[:]=[d for d in dn if d not in SKIP_DIR and "backup" not in d.lower()]
for f in fn:
if not f.endswith(".xlsx"): continue
if skipname(f): continue
p=os.path.join(dp,f)
rel=os.path.relpath(p,ROOT)
if "제출폴더" in rel: sub.append(rel)
elif "참고파일" in rel: other.append(rel)
else: work.append(rel)
io.open(r"D:\01.프로젝트\DB수집\작업파일\_targets.json","w",encoding="utf-8").write(json.dumps({"work":work,"sub":sub,"other":other},ensure_ascii=False,indent=0))
print("WORK",len(work),"SUB",len(sub),"OTHER",len(other))
print("\n--- WORK (기존문서) ---")
for x in work: print(" ",x)

View File

@ -1,76 +0,0 @@
# -*- coding: utf-8 -*-
import openpyxl, io, os, glob
from collections import defaultdict
ROOT=r"D:\01.프로젝트\DB수집"
out=io.open(r"D:\01.프로젝트\DB수집\작업파일\_dupname_sweep_out.txt","w",encoding="utf-8")
def w(*a): out.write(" ".join(str(x) for x in a)+"\n")
SKIP_DIR=("_backup","backup","_temp","제출폴더","_스크립트","_nshots","_naudit","_shots",".git")
SKIP_NAME=("backup","conflicted","_작업현황","작업현황","_취합_예시","자료_취합","예시","~$")
def is_target(p):
pl=p.replace("/","\\")
for s in SKIP_DIR:
if "\\"+s in pl or "\\"+s+"\\" in pl: return False
base=os.path.basename(p)
for s in SKIP_NAME:
if s in base: return False
return base.endswith(".xlsx")
files=[]
for dp,dn,fn in os.walk(ROOT):
# prune skip dirs
dn[:]=[d for d in dn if d not in SKIP_DIR and "backup" not in d.lower()]
for f in fn:
p=os.path.join(dp,f)
if is_target(p): files.append(p)
w("scanned candidate files:",len(files));w("")
def eff_leaf_dups(ws):
eff={}
for r in range(3,ws.max_row+1):
for c in range(4,11):
eff[(r,c)]=ws.cell(r,c).value
for mr in ws.merged_cells.ranges:
if mr.min_col>=4 and mr.max_col<=10:
v=ws.cell(mr.min_row,mr.min_col).value
for r in range(mr.min_row,mr.max_row+1):
for c in range(mr.min_col,mr.max_col+1):
eff[(r,c)]=v
byleaf=defaultdict(list)
for r in range(3,ws.max_row+1):
# skip empty rows
path=[str(eff[(r,c)]).strip() for c in range(4,11) if eff[(r,c)] not in (None,"")]
if not path: continue
byleaf[path[-1]].append(r)
return {k:v for k,v in byleaf.items() if len(v)>1}
summary=[]
for p in sorted(files):
try:
wb=openpyxl.load_workbook(p,read_only=False,data_only=True)
except Exception as e:
w("LOADERR",p,e); continue
ws=wb.active
if ws.max_row<3:
wb.close(); continue
dups=eff_leaf_dups(ws)
rel=os.path.relpath(p,ROOT)
ngroups=len(dups); nduprows=sum(len(v) for v in dups.values())
summary.append((ngroups,nduprows,rel,dups,ws.max_row))
wb.close()
summary.sort(reverse=True)
w("=== FILES WITH DUPLICATE MENU NAMES (sorted by #groups) ===")
for ng,nr,rel,dups,mx in summary:
if ng==0: continue
w(f"\n[{ng} groups / {nr} rows] {rel} (max_row={mx})")
for nm,rs in sorted(dups.items(), key=lambda x:-len(x[1])):
w(f" '{nm}' x{len(rs)} rows={rs}")
clean=[s for s in summary if s[0]==0]
w("\n=== FILES WITH NO DUPLICATE MENU NAMES ===",len(clean))
for ng,nr,rel,dups,mx in clean:
w(" OK",rel)
out.close()
print("done; files:",len(files),"with dups:",sum(1 for s in summary if s[0]>0))

View File

@ -1,436 +0,0 @@
scanned candidate files: 34
=== FILES WITH DUPLICATE MENU NAMES (sorted by #groups) ===
[190 groups / 551 rows] 참고파일\★공공저작물 실태조사 조사원 자료 취합본(관리자)_2605212137.xlsx (max_row=3150)
'공지사항' x28 rows=[91, 185, 352, 727, 742, 832, 880, 957, 1030, 1059, 1158, 1301, 1374, 1387, 1462, 1515, 1597, 1937, 2141, 2231, 2257, 2413, 2486, 2720, 2789, 2883, 2909, 2919]
'자료실' x20 rows=[728, 881, 958, 1031, 1060, 1118, 1159, 1302, 1388, 1463, 1516, 1598, 1638, 1846, 1973, 2171, 2283, 2604, 2886, 2923]
'민원행정서비스현장' x14 rows=[2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480]
'보도자료' x13 rows=[3, 580, 1474, 1941, 2150, 2228, 2414, 2494, 2556, 2884, 2910, 2921, 3007]
'연혁' x10 rows=[710, 2065, 2203, 2329, 2420, 2627, 2772, 2876, 2913, 3029]
'업무추진비' x8 rows=[645, 2046, 2082, 2548, 2619, 2769, 2776, 2907]
'시험공고 및 안내' x8 rows=[1689, 1691, 1692, 1694, 1696, 1697, 1699, 1701]
'입법예고' x6 rows=[23, 587, 1543, 1677, 1894, 2051]
'찾아오시는 길' x6 rows=[508, 2213, 2652, 2880, 2900, 2917]
'합격자발표' x6 rows=[1690, 1693, 1695, 1698, 1700, 1702]
'인사말' x6 rows=[2419, 2615, 2690, 2707, 2728, 2770]
'사전정보공표' x5 rows=[106, 618, 2887, 2924, 2978]
'조직도' x5 rows=[502, 690, 2074, 2210, 3036]
'이용안내' x5 rows=[571, 815, 2108, 2111, 2118]
'개요' x5 rows=[1265, 1834, 2169, 2198, 2250]
'입찰공고' x4 rows=[25, 584, 1579, 1757]
'정보공개청구' x4 rows=[110, 2043, 2314, 2543]
'세입세출예산서' x4 rows=[118, 647, 2577, 3011]
'유관기관 안내' x4 rows=[506, 1293, 1603, 1627]
'설문조사' x4 rows=[547, 2024, 2123, 2270]
'정보공개 청구' x4 rows=[617, 2084, 2906, 2976]
'국민신청실명제' x4 rows=[632, 1742, 2086, 2558]
'관련기관' x4 rows=[859, 866, 1057, 1257]
'신청하기' x4 rows=[1526, 2109, 2112, 2119]
'국민제안' x4 rows=[1918, 2021, 2120, 2271]
'카드뉴스' x4 rows=[2136, 2153, 2238, 2256]
'조직안내' x4 rows=[2334, 2422, 2642, 2771]
'사진첩' x4 rows=[2721, 2768, 2814, 2818]
'전자관보' x3 rows=[12, 2308, 2498]
'개찰결과' x3 rows=[27, 1580, 1758]
'계약현황' x3 rows=[28, 1581, 1753]
'업무계획' x3 rows=[100, 2061, 2332]
'정보공개제도 안내' x3 rows=[105, 2905, 2969]
'공공데이터 개방' x3 rows=[115, 2601, 2987]
'지방재정공시' x3 rows=[121, 1720, 3013]
'중기지방재정계획' x3 rows=[124, 1728, 2570]
'본청' x3 rows=[140, 636, 1650]
'지방공기업이란' x3 rows=[147, 672, 2853]
'주민참여예산' x3 rows=[165, 556, 3014]
'규제입증요청' x3 rows=[167, 1562, 2034]
'청소년 헌장' x3 rows=[206, 999, 3068]
'자주 묻는 질문' x3 rows=[232, 466, 2416]
'행정심판' x3 rows=[477, 1889, 2057]
'자치법규' x3 rows=[479, 2598, 3019]
'정부24' x3 rows=[544, 1910, 2441]
'행정서비스헌장' x3 rows=[570, 1897, 2957]
'마을세무사' x3 rows=[638, 1902, 2448]
'제도소개' x3 rows=[1532, 1535, 2135]
'찾아오시는길' x3 rows=[1655, 2078, 2343]
'세입세출결산서' x3 rows=[1730, 2578, 3016]
'정책실명제 안내' x3 rows=[1741, 2049, 2557]
'의료기관' x3 rows=[1849, 2752, 3050]
'칭찬합시다' x3 rows=[1926, 2042, 2990]
'정책토론' x3 rows=[2022, 2122, 2269]
'전자공청회' x3 rows=[2023, 2121, 2268]
'정보목록' x3 rows=[2083, 2317, 2541]
'민원신청' x3 rows=[2102, 2417, 2945]
'자유게시판' x3 rows=[2527, 2725, 2989]
'인사발령' x2 rows=[19, 2258]
'대가지급' x2 rows=[29, 1585]
'시험통계' x2 rows=[42, 840]
'타기관 채용정보' x2 rows=[48, 836]
'무인민원발급기' x2 rows=[59, 2438]
'교통불편신고' x2 rows=[65, 1423]
'부실공사신고' x2 rows=[67, 2288]
'예산낭비신고' x2 rows=[70, 2948]
'비공개 세부기준' x2 rows=[111, 1735]
'정책실명제' x2 rows=[113, 2085]
'기금운용계획' x2 rows=[120, 648]
'감사결과' x2 rows=[145, 2977]
'업무제휴 및 협약' x2 rows=[158, 1749]
'전자책' x2 rows=[161, 576]
'적극행정' x2 rows=[168, 1904]
'공유시설 예약' x2 rows=[179, 203]
'청년' x2 rows=[214, 3071]
'아이돌봄지원사업 안내' x2 rows=[225, 3066]
'위기임산부 지원' x2 rows=[250, 971]
'예방접종' x2 rows=[296, 2738]
'위해식품 회수정보' x2 rows=[305, 1857]
'버스정보시스템' x2 rows=[339, 345]
'본부소개' x2 rows=[351, 356]
'환경영향평가' x2 rows=[369, 1368]
'부동산개발업' x2 rows=[389, 1843]
'측량업 등록' x2 rows=[397, 1141]
'규제정보포털' x2 rows=[434, 1575]
'투자유치' x2 rows=[438, 3106]
'민방위' x2 rows=[451, 3119]
'위원회 회의록' x2 rows=[531, 1738]
'여권안내' x2 rows=[542, 2968]
'국민생각함' x2 rows=[550, 2519]
'찾아가는 현장규제신고센터' x2 rows=[559, 1569]
'홍보게시판' x2 rows=[574, 2995]
'채용공고' x2 rows=[582, 1939]
'고시공고' x2 rows=[586, 2144]
'분묘개장공고' x2 rows=[588, 3006]
'주요업무계획' x2 rows=[592, 2508]
'불복구제절차' x2 rows=[612, 2973]
'물가정보' x2 rows=[644, 3138]
'부패공직자 제재현황' x2 rows=[666, 2555]
'지방공기업 현황' x2 rows=[673, 2854]
'지방공기업 경영정보' x2 rows=[674, 2855]
'기본현황' x2 rows=[679, 1505]
'역대시장' x2 rows=[709, 2618]
'부산 지역사 도서관' x2 rows=[711, 1605]
'도시브랜드' x2 rows=[714, 2624]
'사업개요' x2 rows=[745, 1115]
'착한가격업소' x2 rows=[775, 3145]
'일자리지원사업' x2 rows=[833, 3110]
'채용정보' x2 rows=[835, 2232]
'노인맞춤돌봄서비스' x2 rows=[919, 1800]
'응급안전안심서비스' x2 rows=[920, 1801]
'노인복지시설' x2 rows=[934, 3082]
'교육' x2 rows=[978, 1859]
'지역아동센터' x2 rows=[1008, 1773]
'청소년 방과후 아카데미' x2 rows=[1010, 1781]
'구강보건사업' x2 rows=[1035, 2744]
'Q&A' x2 rows=[1105, 1256]
'전세피해지원' x2 rows=[1119, 1864]
'관련법규' x2 rows=[1152, 1441]
'도시침수 통합정보시스템' x2 rows=[1167, 1260]
'시민안전보험' x2 rows=[1182, 2491]
'한파쉼터' x2 rows=[1207, 3121]
'고시/공고' x2 rows=[1390, 3001]
'세무안내' x2 rows=[1451, 1531]
'홍보영상' x2 rows=[1459, 1769]
'농업인단체' x2 rows=[1511, 2779]
'고향사랑기부제' x2 rows=[1528, 2605]
'알림·소식' x2 rows=[1533, 1536]
'적극행정 공무원 추천' x2 rows=[1534, 2565]
'국가법령정보센터' x2 rows=[1540, 1892]
'행정소송' x2 rows=[1553, 2058]
'주민e직접' x2 rows=[1558, 1895]
'규제혁신 자료실' x2 rows=[1571, 1574]
'발주계획' x2 rows=[1578, 1756]
'수의계약현황' x2 rows=[1582, 1754]
'위치와 면적' x2 rows=[1659, 2637]
'지세와 기후' x2 rows=[1660, 2638]
'인구 및 세대' x2 rows=[1661, 2639]
'행정구역' x2 rows=[1662, 2640]
'역사' x2 rows=[1663, 2628]
'전북특별자치도' x2 rows=[1672, 1675]
'타기관' x2 rows=[1673, 1676]
'재정용어사전' x2 rows=[1712, 3015]
'성과계획서' x2 rows=[1722, 3018]
'지방 출자-출연기관' x2 rows=[1729, 1898]
'감사결과공개' x2 rows=[1761, 2309]
'기초연금' x2 rows=[1799, 3086]
'도로명주소' x2 rows=[1848, 2689]
'선정 대리인 제도' x2 rows=[1901, 2449]
'민원실안내' x2 rows=[1909, 2437]
'전북 소통대로' x2 rows=[1919, 1922]
'국민신문고' x2 rows=[1920, 2581]
'게시판명/카테고리(소-세부사항3)' x2 rows=[1936, 2436]
'제대군인' x2 rows=[1962, 1991]
'공공기관' x2 rows=[2001, 3048]
'협동조합 경영공시' x2 rows=[2014, 2324]
'적극행정 추진방안' x2 rows=[2037, 2280]
'장관과의 대화' x2 rows=[2069, 2208]
'연설문' x2 rows=[2071, 2207]
'직원안내' x2 rows=[2075, 2731]
'입법예고·행정예고' x2 rows=[2095, 2307]
'영상' x2 rows=[2137, 2154]
'공무원·정책 국민추천' x2 rows=[2139, 2281]
'입찰정보' x2 rows=[2248, 2487]
'전체' x2 rows=[2253, 2254]
'사전정보공개' x2 rows=[2315, 2540]
'비공개 대상정보 세부기준' x2 rows=[2318, 2971]
'오시는 길' x2 rows=[2391, 2732]
'지방세 상담챗봇' x2 rows=[2452, 2967]
'주민참여예산제란?' x2 rows=[2520, 2571]
'연도별 운영계획' x2 rows=[2521, 2572]
'주민참여예산 소식' x2 rows=[2522, 2573]
'주민참여예산위원회' x2 rows=[2523, 2574]
'주민제안서' x2 rows=[2524, 2575]
'통계연보' x2 rows=[2587, 3021]
'인구현황' x2 rows=[2591, 3027]
'지명유래' x2 rows=[2629, 3030]
'조직 및 업무' x2 rows=[2691, 2709]
'체육시설현황' x2 rows=[2810, 3053]
'선수단소개' x2 rows=[2812, 2816]
'경기일정 및 결과' x2 rows=[2813, 2817]
'응원단 소식' x2 rows=[2815, 2819]
'조직 및 관할지역 안내' x2 rows=[2877, 2914]
'업무 및 전화번호' x2 rows=[2878, 2915]
'직원 안내' x2 rows=[2879, 2916]
'모집일정' x2 rows=[2885, 2922]
'분실물 센터' x2 rows=[2888, 2925]
'배너모음' x2 rows=[2889, 2926]
'취업맞춤특기병 바로-콜서비스' x2 rows=[2890, 2927]
'개인정보 처리방침' x2 rows=[2894, 2929]
[34 groups / 76 rows] 작업파일\공공기관3\11.한국장학재단\한국장학재단.xlsx (max_row=332)
'공지사항' x6 rows=[46, 133, 182, 195, 269, 277]
'FAQ' x4 rows=[53, 57, 61, 184]
'장학금 공지' x3 rows=[52, 56, 60]
'증명서발급' x3 rows=[72, 75, 106]
'학자금 지원구간' x2 rows=[5, 107]
'한눈에 보는 학자금 지원구간' x2 rows=[6, 108]
'학자금 지원구간 정보 조회' x2 rows=[8, 109]
'학자금 지원구간 최신화 신청' x2 rows=[9, 110]
'(가구원용)가구원 정보제공 동의현황 및 동의하기' x2 rows=[10, 111]
'(학생용)가구원 정보제공 동의현황' x2 rows=[11, 112]
'국외 소득·재산 신고 현황' x2 rows=[12, 113]
'가구원 학자금 지원구간 산정 현황' x2 rows=[14, 114]
'신청하기' x2 rows=[39, 150]
'신청현황' x2 rows=[40, 66]
'수혜내역' x2 rows=[45, 69]
'지원내용 및 진행절차' x2 rows=[55, 59]
'종합조회' x2 rows=[65, 92]
'서류제출현황' x2 rows=[70, 97]
'학자금 중복지원방지' x2 rows=[77, 115]
'중복지원방지 제도 안내' x2 rows=[78, 116]
'중복지원현황 조회' x2 rows=[79, 117]
'분할상환약정신청' x2 rows=[80, 118]
'상환유예 및 채무승인 신청' x2 rows=[81, 119]
'학자금대출 신청' x2 rows=[93, 94]
'오시는길' x2 rows=[157, 234]
'입주신청' x2 rows=[170, 193]
'나의정보' x2 rows=[173, 194]
'자료실' x2 rows=[183, 202]
'보도자료' x2 rows=[185, 270]
'창업기숙사 온라인 홍보관' x2 rows=[197, 279]
'고객헌장' x2 rows=[222, 223]
'윤리경영' x2 rows=[245, 246]
'인권경영' x2 rows=[264, 265]
'정보공개' x2 rows=[281, 282]
[16 groups / 92 rows] 작업파일\공공기관2\9.한국지식재산연구원\한국지식재산연구원.xlsx (max_row=209)
'수상작현황' x20 rows=[104, 108, 112, 115, 118, 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 164, 168, 171, 173]
'시상식' x19 rows=[106, 110, 114, 117, 120, 123, 127, 131, 135, 139, 143, 147, 151, 155, 159, 162, 166, 169, 175]
'워크숍' x17 rows=[105, 109, 113, 116, 119, 122, 126, 130, 134, 138, 142, 146, 150, 154, 158, 165, 174]
'해외연수' x9 rows=[148, 152, 156, 160, 163, 167, 170, 172, 176]
'국내·해외 연수' x5 rows=[128, 132, 136, 140, 144]
'미국' x2 rows=[21, 52]
'중국' x2 rows=[22, 53]
'일본' x2 rows=[23, 54]
'연도별 통계' x2 rows=[39, 47]
'국가별 통계' x2 rows=[40, 48]
'분류별 통계' x2 rows=[41, 49]
'SNA' x2 rows=[42, 50]
'웹진' x2 rows=[81, 199]
'카드뉴스' x2 rows=[82, 200]
'해외 연수' x2 rows=[107, 111]
'공지사항' x2 rows=[177, 193]
[15 groups / 30 rows] 작업파일\공공기관2\6.한국중부발전\한국중부발전.xlsx (max_row=229)
'경영진소개' x2 rows=[72, 200]
'운영현황' x2 rows=[73, 201]
'연도별보기' x2 rows=[74, 202]
'회의록 다운로드' x2 rows=[75, 203]
'보령발전본부' x2 rows=[91, 111]
'신보령발전본부' x2 rows=[92, 118]
'신서천발전본부' x2 rows=[93, 114]
'인천발전본부' x2 rows=[94, 112]
'서울발전본부' x2 rows=[95, 113]
'세종발전본부' x2 rows=[96, 117]
'제주발전본부' x2 rows=[97, 115]
'재생에너지' x2 rows=[102, 167]
'견학신청·관람정보' x2 rows=[146, 149]
'찾아오시는 길' x2 rows=[147, 150]
'추진조직' x2 rows=[159, 207]
[10 groups / 25 rows] 작업파일\공공기관3\1.한국원자력환경공단\한국원자력환경공단.xlsx (max_row=233)
'사업개요' x5 rows=[38, 41, 66, 67, 75]
'개요' x3 rows=[47, 99, 143]
'Q&A 게시판' x3 rows=[72, 80, 158]
'공지사항' x2 rows=[3, 125]
'입찰정보' x2 rows=[17, 18]
'정의' x2 rows=[21, 33]
'추진실적' x2 rows=[40, 43]
'법령' x2 rows=[58, 190]
'장비대여 서비스' x2 rows=[70, 78]
'자료실' x2 rows=[119, 145]
[10 groups / 20 rows] 작업파일\공공기관2\10.한국지역난방공사\한국지역난방공사.xlsx (max_row=240)
'공고' x2 rows=[33, 144]
'알림 및 자료실' x2 rows=[40, 141]
'환경친화설비' x2 rows=[66, 209]
'신재생에너지' x2 rows=[74, 205]
'연혁' x2 rows=[83, 229]
'조직도' x2 rows=[87, 231]
'공지사항' x2 rows=[92, 142]
'기본방향' x2 rows=[182, 186]
'기본요금' x2 rows=[183, 187]
'사용량요금' x2 rows=[184, 188]
[9 groups / 20 rows] 작업파일\공공기관2\16.한국체육산업개발\한국체육산업개발.xlsx (max_row=135)
'올림픽홀' x3 rows=[75, 81, 88]
'우리금융아트홀' x3 rows=[76, 83, 87]
'자주묻는 질문' x2 rows=[27, 59]
'올림픽수영장' x2 rows=[61, 91]
'미사경정공원' x2 rows=[69, 77]
'KSPO DOME' x2 rows=[79, 85]
'티켓링크 라이브 아레나' x2 rows=[80, 86]
'뮤즈라이브' x2 rows=[82, 89]
'옥외시설' x2 rows=[84, 93]
[8 groups / 21 rows] 작업파일\공공기관3\10.한국장애인고용공단\한국장애인고용공단.xlsx (max_row=203)
'제도설명' x5 rows=[42, 47, 52, 54, 56]
'자주찾는 질문' x3 rows=[53, 55, 92]
'공지사항' x3 rows=[66, 86, 192]
'사업소개' x2 rows=[20, 24]
'센터별 소개' x2 rows=[75, 78]
'교직원 안내' x2 rows=[76, 79]
'정보공개' x2 rows=[121, 124]
'조직안내' x2 rows=[152, 200]
[8 groups / 20 rows] 작업파일\공공기관2\12.한국철도공사\한국철도공사.xlsx (max_row=202)
'사업소개' x5 rows=[104, 110, 119, 123, 133]
'사업 개요' x3 rows=[136, 140, 152]
'추진체계' x2 rows=[63, 84]
'운영노선' x2 rows=[105, 111]
'운행현황' x2 rows=[106, 112]
'역 현황' x2 rows=[107, 113]
'수송현황' x2 rows=[117, 120]
'공지사항' x2 rows=[127, 156]
[8 groups / 18 rows] 작업파일\공공기관2\5.한국주택금융공사\한국주택금융공사.xlsx (max_row=358)
'신청절차' x3 rows=[6, 9, 19]
'조건변경' x3 rows=[47, 52, 55]
'금리안내' x2 rows=[7, 10]
'취급금융기관' x2 rows=[12, 90]
'보금자리론' x2 rows=[13, 15]
'채무조정 요청권' x2 rows=[67, 101]
'청탁금지법 위반행위 신고' x2 rows=[119, 214]
'전문' x2 rows=[200, 205]
[6 groups / 38 rows] _test_buyeo.xlsx (max_row=339)
'부서안내' x8 rows=[131, 137, 142, 147, 151, 155, 166, 171]
'업무/직원안내' x8 rows=[132, 138, 143, 148, 152, 156, 167, 172]
'알림마당' x8 rows=[135, 141, 145, 150, 154, 158, 170, 174]
'주요추진시책' x7 rows=[134, 140, 144, 149, 153, 157, 169]
'민원서식안내' x5 rows=[58, 133, 139, 168, 173]
'공지사항' x2 rows=[36, 101]
[6 groups / 13 rows] 작업파일\공공기관3\6.한국자산관리공사\한국자산관리공사.xlsx (max_row=172)
'프로그램 개요' x3 rows=[45, 51, 55]
'공사소개' x2 rows=[3, 4]
'캠코CI' x2 rows=[14, 15]
'국유재산 건축상' x2 rows=[77, 78]
'공지사항' x2 rows=[81, 157]
'정보공개' x2 rows=[105, 117]
[6 groups / 12 rows] 작업파일\공공기관3\2.한국의료분쟁조정중재원\한국의료분쟁조정중재원.xlsx (max_row=125)
'관련 법령 및 서식' x2 rows=[41, 50]
'업무소개' x2 rows=[52, 116]
'신고센터' x2 rows=[64, 109]
'윤리경영 개요' x2 rows=[99, 101]
'윤리헌장' x2 rows=[102, 103]
'윤리경영 실천' x2 rows=[106, 107]
[6 groups / 12 rows] 작업파일\공공기관2\1.한국전기안전공사\한국전기안전공사.xlsx (max_row=178)
'연혁' x2 rows=[6, 80]
'조직도' x2 rows=[9, 81]
'전기안전관리대행' x2 rows=[21, 33]
'제·개정 공고' x2 rows=[153, 155]
'신고안내 및 신고하기' x2 rows=[164, 166]
'보상금 지급기준' x2 rows=[165, 167]
[5 groups / 39 rows] 작업파일\공공기관2\13.한국청소년상담복지개발원\한국청소년상담복지개발원.xlsx (max_row=124)
'사업소개' x11 rows=[14, 17, 20, 24, 29, 33, 38, 41, 44, 47, 51]
'사업개요' x11 rows=[15, 18, 21, 25, 30, 34, 39, 42, 45, 48, 52]
'주요내용' x11 rows=[16, 19, 22, 26, 31, 35, 40, 43, 46, 49, 53]
'홍보자료' x4 rows=[23, 27, 37, 54]
'자료실' x2 rows=[28, 32]
[4 groups / 34 rows] 참고파일\★공공저작물 실태조사 조사원 자료 취합본(관리자)_배포용_260527_20260529.xlsx (max_row=431)
'0' x15 rows=[27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42]
'2026-05-26 00:00:00' x13 rows=[7, 8, 9, 10, 13, 14, 16, 17, 20, 21, 22, 26, 30]
'2026-05-22 00:00:00' x4 rows=[11, 12, 15, 23]
'2026-05-24 00:00:00' x2 rows=[18, 19]
[4 groups / 34 rows] 기관리스트.xlsx (max_row=431)
'0' x15 rows=[27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42]
'2026-05-26 00:00:00' x13 rows=[7, 8, 9, 10, 13, 14, 16, 17, 20, 21, 22, 26, 30]
'2026-05-22 00:00:00' x4 rows=[11, 12, 15, 23]
'2026-05-24 00:00:00' x2 rows=[18, 19]
[4 groups / 10 rows] 작업파일\공공기관2\4.한국조폐공사\한국조폐공사.xlsx (max_row=174)
'감사보고서' x3 rows=[118, 120, 122]
'일반현황 등' x3 rows=[119, 121, 123]
'채용소식' x2 rows=[17, 134]
'관련자료' x2 rows=[56, 58]
[3 groups / 8 rows] 작업파일\공공기관2\2.한국전력거래소\한국전력거래소.xlsx (max_row=199)
'24년도' x3 rows=[41, 43, 45]
'25년도' x3 rows=[42, 44, 46]
'육지' x2 rows=[159, 163]
[3 groups / 6 rows] 작업파일\공공기관3\5.한국임업진흥원\한국임업진흥원.xlsx (max_row=120)
'- 산림분야 인재육성' x2 rows=[63, 68]
'- 임업인 교육, 임업직불제 교육' x2 rows=[64, 69]
'- 전문교육기관 교육' x2 rows=[65, 70]
[3 groups / 6 rows] 작업파일\공공기관2\3.한국조세재정연구원\한국조세재정연구원.xlsx (max_row=126)
'정기간행물' x2 rows=[5, 13]
'재정패널조사' x2 rows=[21, 95]
'뉴스레터' x2 rows=[56, 87]
[2 groups / 7 rows] 작업파일\공공기관3\4.한국인터넷진흥원\한국인터넷진흥원.xlsx (max_row=99)
'본부소개' x5 rows=[22, 27, 31, 35, 39]
'전략체계' x2 rows=[77, 82]
[2 groups / 4 rows] 작업파일\공공기관3\3.한국의약품안전관리원\한국의약품안전관리원.xlsx (max_row=88)
'공지사항' x2 rows=[44, 47]
'자료실' x2 rows=[45, 64]
[2 groups / 4 rows] 작업파일\공공기관3\13.한국저작권보호원\한국저작권보호원.xlsx (max_row=117)
'공지사항' x2 rows=[23, 43]
'저작권 보호 미래 포럼' x2 rows=[58, 59]
[2 groups / 4 rows] 작업파일\공공기관3\12.한국재정정보원\한국재정정보원.xlsx (max_row=71)
'기관소개' x2 rows=[3, 4]
'국민참여' x2 rows=[67, 68]
[1 groups / 2 rows] 작업파일\공공기관3\9.한국장애인개발원\한국장애인개발원.xlsx (max_row=68)
'원장인사말' x2 rows=[46, 47]
[1 groups / 2 rows] 작업파일\공공기관2\8.한국지식재산보호원\한국지식재산보호원.xlsx (max_row=97)
'지식재산침해 원스톱 신고상담센터' x2 rows=[10, 38]
[1 groups / 2 rows] 작업파일\공공기관2\17.한국치산기술협회\한국치산기술협회.xlsx (max_row=48)
'산불' x2 rows=[17, 28]
=== FILES WITH NO DUPLICATE MENU NAMES === 6
OK 작업파일\공공기관3\8.한국장기조직기증원\한국장기조직기증원.xlsx
OK 작업파일\공공기관3\7.한국잡월드\한국잡월드.xlsx
OK 작업파일\공공기관2\7.한국지능정보사회진흥원\한국지능정보사회진흥원.xlsx
OK 작업파일\공공기관2\15.한국청소년활동진흥원\한국청소년활동진흥원.xlsx
OK 작업파일\공공기관2\14.한국청소년정책연구원\한국청소년정책연구원.xlsx
OK 작업파일\공공기관2\11.한국직업능력연구원\한국직업능력연구원.xlsx

View File

@ -1,30 +0,0 @@
FILE: ★공공저작물 실태조사 조사원 자료 취합본(관리자)_2605212137.xlsx
sheets: ['기관리스트', '우선기관(심예진, 방유정)', '01_김재민', '02_심예진', '03_방유정', '04_구소영', '05_정대원', '06_황의정', '07_프리랜서', '08_이희재', '09_신성범']
active=03_방유정 max_row=3150 max_col=29 merges=274
r1: ['지자체', '조사원 업무 범위', None, None, None, None, None, None, None, None, None]
r2: [None, '순번', '사이트명', '메뉴명', '게시판명/카테고리(대)', '게시판명/카테고리(중)', '게시판명/카테고리(소)', '게시판명/카테고리(소-세부사항)', '게시판명/카테고리(소-세부사항2)', '게시판명/카테고리(소-세부사항3)', '주소(url)']
r3: [None, 48, '경기도', '뉴스', '경기도 소식', '보도자료', None, None, None, None, 'https://gnews.gg.go.kr/briefing/brief_gongbo.do']
r4: [None, None, None, None, None, '경기뉴스광장', None, None, None, None, 'https://gnews.gg.go.kr/news/news_list.do?s_code=C401']
r5: [None, None, None, None, None, 'GTV도정뉴스', None, None, None, None, 'https://gnews.gg.go.kr/news/news_tv.do?s_code=C500']
r50: B=None C=None D=None E=None F=고용24(워크넷)
r51: B=None C=None D=None E=None F=취업·채용 민원
r52: B=None C=None D=None E=None F=경기Freeway
r53: B=None C=None D=None E=자격시험 F=수렵면허
r54: B=None C=None D=None E=None F=가축인공수정사
r55: B=None C=None D=None E=None F=간호사
FILE: ★공공저작물 실태조사 조사원 자료 취합본(관리자)_배포용_260527_20260529.xlsx
sheets: ['기관리스트', '우선기관(심예진, 방유정)', '01_김재민', '02_심예진', '03_방유정', '04_구소영', '05_정대원', '06_황의정', '07_프리랜서', '08_이희재', '09_신성범', '10_신규']
active=기관리스트 max_row=431 max_col=63 merges=8
r1: [None, None, None, None, None, None, None, None, None, None, None]
r2: [None, None, None, None, None, None, None, None, None, None, None]
r3: [None, None, None, None, None, None, None, None, None, None, None]
r4: [None, None, None, None, None, None, None, None, None, None, None]
r5: [None, '광역자치단체', None, None, None, None, None, None, None, None, '기초자치단체']
r50: B=None C=None D=None E=None F=None
r51: B=None C=None D=None E=None F=None
r52: B=None C=None D=None E=None F=None
r53: B=None C=None D=None E=None F=None
r54: B=None C=None D=None E=None F=None
r55: B=None C=None D=None E=None F=None

View File

@ -1,67 +0,0 @@
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\제출_프리랜서1_2026-06-03\충청남도_당진시.xlsx
OK changes=21 orphans=66 merges=167 작업파일\제출폴더\_제출패키지_2026-06-03\제출_프리랜서1_2026-06-03\충청남도_부여군.xlsx | add=[('F', 554, 558), ('G', 137, 141), ('G', 142, 146), ('G', 147, 150), ('G', 151, 154), ('G', 155, 158), ('G', 160, 163), ('G', 164, 167), ('G', 168, 171), ('G', 172, 175), ('G', 176, 179), ('G', 181, 1
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\제출_프리랜서1_2026-06-03\충청남도_서천군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\제출_프리랜서1_2026-06-03\충청남도_예산군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\제출_프리랜서1_2026-06-03\충청남도_태안군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\프리랜서1\충청남도_당진시.xlsx
OK changes=20 orphans=62 merges=167 작업파일\제출폴더\_제출패키지_2026-06-03\프리랜서1\충청남도_부여군.xlsx | add=[('G', 137, 141), ('G', 142, 146), ('G', 147, 150), ('G', 151, 154), ('G', 155, 158), ('G', 160, 163), ('G', 164, 167), ('G', 168, 171), ('G', 172, 175), ('G', 176, 179), ('G', 181, 184), ('G', 185, 1
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\프리랜서1\충청남도_서천군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\프리랜서1\충청남도_예산군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\프리랜서1\충청남도_태안군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\프리랜서2\전북특별자치도_고창군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\프리랜서2\전북특별자치도_군산시.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\프리랜서2\전북특별자치도_김제시.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\프리랜서2\전북특별자치도_남원시.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-03\프리랜서2\전북특별자치도_무주군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-06\제출_프리랜서1_2026-06-06\충청남도_서산시.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-06\제출_프리랜서1_2026-06-06\충청남도_천안시.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-06\제출_프리랜서2_2026-06-06\전북특별자치도_부안군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-06\제출_프리랜서2_2026-06-06\전북특별자치도_순창군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-06\제출_프리랜서2_2026-06-06\전북특별자치도_익산시.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-07\제출_프리랜서1_2026-06-07\충청남도_아산시.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-07\제출_프리랜서1_2026-06-07\충청남도_홍성군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-07\제출_프리랜서2_2026-06-07\전북특별자치도_임실군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-07\제출_프리랜서2_2026-06-07\전북특별자치도_장수군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-07\제출_프리랜서2_2026-06-07\전북특별자치도_전주시.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-11\제출_프리랜서1_2026-06-11\충청남도_청양군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-11\제출_프리랜서1_2026-06-11\충청북도_괴산군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-11\제출_프리랜서1_2026-06-11\충청북도_단양군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-11\제출_프리랜서2_2026-06-11\전북특별자치도_완주군.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-11\제출_프리랜서2_2026-06-11\전북특별자치도_정읍시.xlsx
OK changes=9 orphans=0 merges=127 작업파일\제출폴더\_제출패키지_2026-06-12\제출_프리랜서2_2026-06-12\제주특별자치도_교육청.xlsx | add=[('E', 98, 103), ('E', 135, 164), ('F', 3, 6), ('F', 27, 28), ('F', 92, 93), ('F', 109, 110), ('F', 136, 137), ('F', 287, 288), ('F', 416, 420)]
OK changes=10 orphans=0 merges=82 작업파일\제출폴더\_제출패키지_2026-06-12\제출_프리랜서2_2026-06-12\충청남도_교육청.xlsx | add=[('E', 177, 179), ('E', 229, 243), ('F', 45, 46), ('F', 65, 75), ('F', 87, 89), ('F', 145, 147), ('F', 229, 233), ('F', 258, 259), ('F', 260, 270), ('F', 344, 352)]
OK changes=5 orphans=0 merges=74 작업파일\제출폴더\_제출패키지_2026-06-12\제출_프리랜서2_2026-06-12\충청북도_교육청.xlsx | add=[('E', 20, 33), ('E', 102, 118), ('F', 20, 26), ('F', 68, 69), ('F', 159, 169)]
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-14\제출_프리랜서2_2026-06-14\국립해양박물관.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-14\제출_프리랜서2_2026-06-14\국립호남권생물자원관.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-14\제출_프리랜서2_2026-06-14\국민연금공단.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-14\제출_프리랜서2_2026-06-14\국방과학연구소.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-14\제출_프리랜서2_2026-06-14\국방기술품질원.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-14\제출_프리랜서2_2026-06-14\국제식물검역인증원.xlsx
OK changes=1 orphans=0 merges=70 작업파일\제출폴더\_제출패키지_2026-06-14\제출_프리랜서2_2026-06-14\국토교통과학기술진흥원.xlsx | add=[('E', 190, 193)]
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-14\제출_프리랜서2_2026-06-14\국토안전관리원.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-14\제출_프리랜서2_2026-06-14\국토연구원.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-16\제출_프리랜서2_2026-06-16\국립박물관문화재단.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-16\제출_프리랜서2_2026-06-16\국립생태원.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-16\제출_프리랜서2_2026-06-16\국립중앙의료원.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-16\제출_프리랜서2_2026-06-16\국립해양생물자원관.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-16\제출_프리랜서2_2026-06-16\국민건강보험공단.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-16\제출_프리랜서2_2026-06-16\국악방송.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국전기안전공사.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국전력거래소.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국조세재정연구원.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국조폐공사.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국주택금융공사.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국중부발전.xlsx
OK changes=4 orphans=0 merges=26 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국지능정보사회진흥원.xlsx | add=[('D', 64, 83), ('D', 85, 97), ('E', 76, 83), ('E', 85, 96)]
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국지식재산보호원.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국지식재산연구원.xlsx
SKIP(KDHC done) 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국지역난방공사.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국직업능력연구원.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국철도공사.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국청소년상담복지개발원.xlsx
OK changes=2 orphans=0 merges=15 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국청소년정책연구원.xlsx | add=[('E', 3, 4), ('E', 20, 25)]
OK changes=1 orphans=0 merges=22 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국청소년활동진흥원.xlsx | add=[('E', 24, 34)]
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국체육산업개발.xlsx
OK-nochange 작업파일\제출폴더\_제출패키지_2026-06-21\제출_프리랜서2_2026-06-21\한국치산기술협회.xlsx
=== SUMMARY sub: done=64 changed=9 skip=1 fail=0 (total 65) ===

View File

@ -1,33 +0,0 @@
EXC 기관리스트.xlsx AttributeError("'MergedCell' object attribute 'value' is read-only")
OK-nochange 작업파일\공공기관2\1.한국전기안전공사\한국전기안전공사.xlsx
SKIP(KDHC done) 작업파일\공공기관2\10.한국지역난방공사\한국지역난방공사.xlsx
OK-nochange 작업파일\공공기관2\11.한국직업능력연구원\한국직업능력연구원.xlsx
OK-nochange 작업파일\공공기관2\12.한국철도공사\한국철도공사.xlsx
OK-nochange 작업파일\공공기관2\13.한국청소년상담복지개발원\한국청소년상담복지개발원.xlsx
OK changes=2 orphans=0 merges=15 작업파일\공공기관2\14.한국청소년정책연구원\한국청소년정책연구원.xlsx | add=[('E', 3, 4), ('E', 20, 25)]
OK changes=1 orphans=0 merges=22 작업파일\공공기관2\15.한국청소년활동진흥원\한국청소년활동진흥원.xlsx | add=[('E', 24, 34)]
OK-nochange 작업파일\공공기관2\16.한국체육산업개발\한국체육산업개발.xlsx
OK-nochange 작업파일\공공기관2\17.한국치산기술협회\한국치산기술협회.xlsx
OK-nochange 작업파일\공공기관2\2.한국전력거래소\한국전력거래소.xlsx
OK-nochange 작업파일\공공기관2\3.한국조세재정연구원\한국조세재정연구원.xlsx
OK-nochange 작업파일\공공기관2\4.한국조폐공사\한국조폐공사.xlsx
OK-nochange 작업파일\공공기관2\5.한국주택금융공사\한국주택금융공사.xlsx
OK-nochange 작업파일\공공기관2\6.한국중부발전\한국중부발전.xlsx
OK changes=4 orphans=0 merges=26 작업파일\공공기관2\7.한국지능정보사회진흥원\한국지능정보사회진흥원.xlsx | add=[('D', 64, 83), ('D', 85, 97), ('E', 76, 83), ('E', 85, 96)]
OK-nochange 작업파일\공공기관2\8.한국지식재산보호원\한국지식재산보호원.xlsx
OK-nochange 작업파일\공공기관2\9.한국지식재산연구원\한국지식재산연구원.xlsx
OK-nochange 작업파일\공공기관3\1.한국원자력환경공단\한국원자력환경공단.xlsx
OK-nochange 작업파일\공공기관3\10.한국장애인고용공단\한국장애인고용공단.xlsx
OK-nochange 작업파일\공공기관3\11.한국장학재단\한국장학재단.xlsx
OK-nochange 작업파일\공공기관3\12.한국재정정보원\한국재정정보원.xlsx
OK-nochange 작업파일\공공기관3\13.한국저작권보호원\한국저작권보호원.xlsx
OK-nochange 작업파일\공공기관3\2.한국의료분쟁조정중재원\한국의료분쟁조정중재원.xlsx
OK-nochange 작업파일\공공기관3\3.한국의약품안전관리원\한국의약품안전관리원.xlsx
OK-nochange 작업파일\공공기관3\4.한국인터넷진흥원\한국인터넷진흥원.xlsx
OK-nochange 작업파일\공공기관3\5.한국임업진흥원\한국임업진흥원.xlsx
OK-nochange 작업파일\공공기관3\6.한국자산관리공사\한국자산관리공사.xlsx
OK-nochange 작업파일\공공기관3\7.한국잡월드\한국잡월드.xlsx
OK changes=5 orphans=0 merges=25 작업파일\공공기관3\8.한국장기조직기증원\한국장기조직기증원.xlsx | add=[('E', 3, 7), ('E', 29, 33), ('E', 43, 48), ('E', 53, 55), ('E', 61, 64)]
OK-nochange 작업파일\공공기관3\9.한국장애인개발원\한국장애인개발원.xlsx
=== SUMMARY work: done=29 changed=4 skip=1 fail=1 (total 31) ===

View File

@ -1,103 +0,0 @@
{
"work": [
"기관리스트.xlsx",
"작업파일\\공공기관2\\1.한국전기안전공사\\한국전기안전공사.xlsx",
"작업파일\\공공기관2\\10.한국지역난방공사\\한국지역난방공사.xlsx",
"작업파일\\공공기관2\\11.한국직업능력연구원\\한국직업능력연구원.xlsx",
"작업파일\\공공기관2\\12.한국철도공사\\한국철도공사.xlsx",
"작업파일\\공공기관2\\13.한국청소년상담복지개발원\\한국청소년상담복지개발원.xlsx",
"작업파일\\공공기관2\\14.한국청소년정책연구원\\한국청소년정책연구원.xlsx",
"작업파일\\공공기관2\\15.한국청소년활동진흥원\\한국청소년활동진흥원.xlsx",
"작업파일\\공공기관2\\16.한국체육산업개발\\한국체육산업개발.xlsx",
"작업파일\\공공기관2\\17.한국치산기술협회\\한국치산기술협회.xlsx",
"작업파일\\공공기관2\\2.한국전력거래소\\한국전력거래소.xlsx",
"작업파일\\공공기관2\\3.한국조세재정연구원\\한국조세재정연구원.xlsx",
"작업파일\\공공기관2\\4.한국조폐공사\\한국조폐공사.xlsx",
"작업파일\\공공기관2\\5.한국주택금융공사\\한국주택금융공사.xlsx",
"작업파일\\공공기관2\\6.한국중부발전\\한국중부발전.xlsx",
"작업파일\\공공기관2\\7.한국지능정보사회진흥원\\한국지능정보사회진흥원.xlsx",
"작업파일\\공공기관2\\8.한국지식재산보호원\\한국지식재산보호원.xlsx",
"작업파일\\공공기관2\\9.한국지식재산연구원\\한국지식재산연구원.xlsx",
"작업파일\\공공기관3\\1.한국원자력환경공단\\한국원자력환경공단.xlsx",
"작업파일\\공공기관3\\10.한국장애인고용공단\\한국장애인고용공단.xlsx",
"작업파일\\공공기관3\\11.한국장학재단\\한국장학재단.xlsx",
"작업파일\\공공기관3\\12.한국재정정보원\\한국재정정보원.xlsx",
"작업파일\\공공기관3\\13.한국저작권보호원\\한국저작권보호원.xlsx",
"작업파일\\공공기관3\\2.한국의료분쟁조정중재원\\한국의료분쟁조정중재원.xlsx",
"작업파일\\공공기관3\\3.한국의약품안전관리원\\한국의약품안전관리원.xlsx",
"작업파일\\공공기관3\\4.한국인터넷진흥원\\한국인터넷진흥원.xlsx",
"작업파일\\공공기관3\\5.한국임업진흥원\\한국임업진흥원.xlsx",
"작업파일\\공공기관3\\6.한국자산관리공사\\한국자산관리공사.xlsx",
"작업파일\\공공기관3\\7.한국잡월드\\한국잡월드.xlsx",
"작업파일\\공공기관3\\8.한국장기조직기증원\\한국장기조직기증원.xlsx",
"작업파일\\공공기관3\\9.한국장애인개발원\\한국장애인개발원.xlsx"
],
"sub": [
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\제출_프리랜서1_2026-06-03\\충청남도_당진시.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\제출_프리랜서1_2026-06-03\\충청남도_부여군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\제출_프리랜서1_2026-06-03\\충청남도_서천군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\제출_프리랜서1_2026-06-03\\충청남도_예산군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\제출_프리랜서1_2026-06-03\\충청남도_태안군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\프리랜서1\\충청남도_당진시.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\프리랜서1\\충청남도_부여군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\프리랜서1\\충청남도_서천군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\프리랜서1\\충청남도_예산군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\프리랜서1\\충청남도_태안군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\프리랜서2\\전북특별자치도_고창군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\프리랜서2\\전북특별자치도_군산시.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\프리랜서2\\전북특별자치도_김제시.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\프리랜서2\\전북특별자치도_남원시.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-03\\프리랜서2\\전북특별자치도_무주군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-06\\제출_프리랜서1_2026-06-06\\충청남도_서산시.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-06\\제출_프리랜서1_2026-06-06\\충청남도_천안시.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-06\\제출_프리랜서2_2026-06-06\\전북특별자치도_부안군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-06\\제출_프리랜서2_2026-06-06\\전북특별자치도_순창군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-06\\제출_프리랜서2_2026-06-06\\전북특별자치도_익산시.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-07\\제출_프리랜서1_2026-06-07\\충청남도_아산시.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-07\\제출_프리랜서1_2026-06-07\\충청남도_홍성군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-07\\제출_프리랜서2_2026-06-07\\전북특별자치도_임실군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-07\\제출_프리랜서2_2026-06-07\\전북특별자치도_장수군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-07\\제출_프리랜서2_2026-06-07\\전북특별자치도_전주시.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-11\\제출_프리랜서1_2026-06-11\\충청남도_청양군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-11\\제출_프리랜서1_2026-06-11\\충청북도_괴산군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-11\\제출_프리랜서1_2026-06-11\\충청북도_단양군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-11\\제출_프리랜서2_2026-06-11\\전북특별자치도_완주군.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-11\\제출_프리랜서2_2026-06-11\\전북특별자치도_정읍시.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-12\\제출_프리랜서2_2026-06-12\\제주특별자치도_교육청.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-12\\제출_프리랜서2_2026-06-12\\충청남도_교육청.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-12\\제출_프리랜서2_2026-06-12\\충청북도_교육청.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-14\\제출_프리랜서2_2026-06-14\\국립해양박물관.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-14\\제출_프리랜서2_2026-06-14\\국립호남권생물자원관.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-14\\제출_프리랜서2_2026-06-14\\국민연금공단.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-14\\제출_프리랜서2_2026-06-14\\국방과학연구소.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-14\\제출_프리랜서2_2026-06-14\\국방기술품질원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-14\\제출_프리랜서2_2026-06-14\\국제식물검역인증원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-14\\제출_프리랜서2_2026-06-14\\국토교통과학기술진흥원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-14\\제출_프리랜서2_2026-06-14\\국토안전관리원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-14\\제출_프리랜서2_2026-06-14\\국토연구원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-16\\제출_프리랜서2_2026-06-16\\국립박물관문화재단.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-16\\제출_프리랜서2_2026-06-16\\국립생태원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-16\\제출_프리랜서2_2026-06-16\\국립중앙의료원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-16\\제출_프리랜서2_2026-06-16\\국립해양생물자원관.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-16\\제출_프리랜서2_2026-06-16\\국민건강보험공단.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-16\\제출_프리랜서2_2026-06-16\\국악방송.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국전기안전공사.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국전력거래소.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국조세재정연구원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국조폐공사.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국주택금융공사.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국중부발전.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국지능정보사회진흥원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국지식재산보호원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국지식재산연구원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국지역난방공사.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국직업능력연구원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국철도공사.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국청소년상담복지개발원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국청소년정책연구원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국청소년활동진흥원.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국체육산업개발.xlsx",
"작업파일\\제출폴더\\_제출패키지_2026-06-21\\제출_프리랜서2_2026-06-21\\한국치산기술협회.xlsx"
],
"other": []
}

View File

@ -1,40 +0,0 @@
===== 공공기관2 작업본 (17개) =====
[정상] 한국전기안전공사.xlsx (병합완료, 추가0)
[정상] 한국지역난방공사.xlsx (병합완료, 추가0)
[정상] 한국직업능력연구원.xlsx (병합완료, 추가0)
[정상] 한국철도공사.xlsx (병합완료, 추가0)
[정상] 한국청소년상담복지개발원.xlsx (병합완료, 추가0)
[정상] 한국청소년정책연구원.xlsx (병합완료, 추가0)
[정상] 한국청소년활동진흥원.xlsx (병합완료, 추가0)
[정상] 한국체육산업개발.xlsx (병합완료, 추가0)
[정상] 한국치산기술협회.xlsx (병합완료, 추가0)
[정상] 한국전력거래소.xlsx (병합완료, 추가0)
[정상] 한국조세재정연구원.xlsx (병합완료, 추가0)
[정상] 한국조폐공사.xlsx (병합완료, 추가0)
[정상] 한국주택금융공사.xlsx (병합완료, 추가0)
[정상] 한국중부발전.xlsx (병합완료, 추가0)
[정상] 한국지능정보사회진흥원.xlsx (병합완료, 추가0)
[정상] 한국지식재산보호원.xlsx (병합완료, 추가0)
[정상] 한국지식재산연구원.xlsx (병합완료, 추가0)
>> 공공기관2 작업본: 미병합잔여 0개, 적용 0개
===== 오늘(2026-06-21) 제출폴더 (17개) =====
[정상] 한국전기안전공사.xlsx (병합완료, 추가0)
[정상] 한국전력거래소.xlsx (병합완료, 추가0)
[정상] 한국조세재정연구원.xlsx (병합완료, 추가0)
[정상] 한국조폐공사.xlsx (병합완료, 추가0)
[정상] 한국주택금융공사.xlsx (병합완료, 추가0)
[정상] 한국중부발전.xlsx (병합완료, 추가0)
[정상] 한국지능정보사회진흥원.xlsx (병합완료, 추가0)
[정상] 한국지식재산보호원.xlsx (병합완료, 추가0)
[정상] 한국지식재산연구원.xlsx (병합완료, 추가0)
[정상] 한국지역난방공사.xlsx (병합완료, 추가0)
[정상] 한국직업능력연구원.xlsx (병합완료, 추가0)
[정상] 한국철도공사.xlsx (병합완료, 추가0)
[정상] 한국청소년상담복지개발원.xlsx (병합완료, 추가0)
[정상] 한국청소년정책연구원.xlsx (병합완료, 추가0)
[정상] 한국청소년활동진흥원.xlsx (병합완료, 추가0)
[정상] 한국체육산업개발.xlsx (병합완료, 추가0)
[정상] 한국치산기술협회.xlsx (병합완료, 추가0)
>> 오늘(2026-06-21) 제출폴더: 미병합잔여 0개, 적용 0개

View File

@ -0,0 +1,59 @@
# -*- coding: utf-8 -*-
"""검수 마감 서식 정규화 (서식만, 내용/링크/병합/테두리 불변).
- 높이 17
- 3~ 채움색 제거(무채색)
- K열(11) 제외 가로·세로 가운데, K열만 가로 좌측(세로 가운데)
사용: python -X utf8 _fmt_normalize.py <엑셀> [--apply] (기본 dry-run)
"""
import openpyxl, os, shutil, sys, copy
from openpyxl.styles import Alignment, PatternFill
NOFILL = PatternFill(fill_type=None)
CENTER = Alignment(horizontal="center", vertical="center", wrap_text=False)
LEFT = Alignment(horizontal="left", vertical="center", wrap_text=False)
KCOL = 11 # K
def process(path, apply=False):
wb = openpyxl.load_workbook(path)
ws = wb.active
mx, mc = ws.max_row, ws.max_column
# 검증용 스냅샷: 값·하이퍼링크
vals = {(r, c): ws.cell(r, c).value for r in range(1, mx+1) for c in range(1, mc+1)}
links = {(r, c): (ws.cell(r, c).hyperlink.target if ws.cell(r, c).hyperlink else None)
for r in range(1, mx+1) for c in range(1, mc+1)}
merges = sorted(str(m) for m in ws.merged_cells.ranges)
if not apply:
return dict(file=path, max_row=mx, max_col=mc, merges=len(merges), dry=True)
shutil.copy2(path, os.path.splitext(path)[0] + "_backup_서식정규화전.xlsx")
# 1) 행높이 17
ws.sheet_format.defaultRowHeight = 17
ws.sheet_format.customHeight = True
for r in range(1, mx+1):
ws.row_dimensions[r].height = 17
# 2) 3행~끝 채움색 제거 + 3) 정렬(전 범위)
for r in range(1, mx+1):
for c in range(1, mc+1):
cell = ws.cell(r, c)
if r >= 3:
cell.fill = copy.copy(NOFILL)
cell.alignment = copy.copy(LEFT if c == KCOL else CENTER)
wb.save(path)
# 검증(재로드): 값·링크·병합·행수 보존
wb2 = openpyxl.load_workbook(path); ws2 = wb2.active
fails = []
if ws2.max_row != mx: fails.append("rowcount")
for (r, c), v in vals.items():
if ws2.cell(r, c).value != v: fails.append("val r%d c%d" % (r, c)); break
for (r, c), t in links.items():
cur = ws2.cell(r, c).hyperlink.target if ws2.cell(r, c).hyperlink else None
if cur != t: fails.append("link r%d c%d" % (r, c)); break
if sorted(str(m) for m in ws2.merged_cells.ranges) != merges: fails.append("merges")
if fails:
shutil.copy2(os.path.splitext(path)[0] + "_backup_서식정규화전.xlsx", path)
return dict(file=path, ok=False, rolledback=True, fails=fails)
return dict(file=path, ok=True, max_row=mx, merges=len(merges))
if __name__ == "__main__":
a = sys.argv[1:]
p = a[0]
print(process(p, apply=("--apply" in a)))

View File

@ -1,6 +1,55 @@
# 처리중 현황
> 작업 흐름: **🔄 처리중** → **✅ 클로드완료**(확인 대기) → **☑️ 확인완료**(사용자 확인)
- ✅공공기관3 완료 13곳 S비고 삭제 + 제출폴더 이동 완료 (2026-06-25) => 사용자: 완료폴더 사이트엑셀 제출폴더로 이동만(압축X)·S비고 글 전삭제. ①S(19) 데이터행 17셀 삭제(KISA r109·잡월드 4·5·6·7·9·10·11·12·15·16·18·21·25·29·장학 r195·196), S2헤더'비고(특이사항)' 유지·백업 `_backup_S비고삭제전`(3파일). ②13 메인xlsx → `작업파일\제출_공공기관3_2026-06-25\`로 mv(압축X·플랫). 완료폴더 13곳 전부 메인0개·백업만 잔존 확인. 제출폴더 13개·S잔존0 검증.
- ✅한국저작권보호원(공공기관3-13) Q=Y 12행→N 정정 완료 (2026-06-25) => 라이브 정밀대조: KOGL부착 15행 마크가 **전부 동일 일반 `kogl.or.kr/info/license.do`**(유형별 licenseType{N}.do 아님)인데 Q만 12Y/3N로 갈림=비일관(같은링크 다른Q). 사용자 확정기준(일반링크=N)대로 **Y 12행(r26·27·28·29·30·33·42·43·44·46·76·78)→N 통일**, 이제 15행 전부 Q=N. **Q열(17)만 수정·O/P/기타 전열 불변**(검증: O값 보존). 백업 `_backup_Q정정전_2026-06-25`. cf. 의약품(Y=licenseType4.do 정확링크)·장애인고용·장학재단(licenseType{N}.do)은 정상Y 유지·잡월드 type1/5는 별도. [[gg3_kogl_link_q_verification_2026-06-24]]
- ✅공공기관3 완료폴더 13곳 재감사+공공누리 Q값 전수 라이브검증 (2026-06-24) => 사용자 3점검 후 "링크·Q 맞나 전 사이트 확인" 추가지시. **①구조/정렬/색: 13곳 깨끗**(채움색0=제거대상無·정렬위반0·B연속·계층구멍0·병합겹침0·미병합부모0). 특이=잡월드 r30 C빈칸 1건(사용자가 직접 채움). **②공공누리 O/Q 8곳 95행 라이브 전수검증**(마크 실렌더+href 추출): **O(유형)는 전 기관 정확**(마크 opentype0N=시트O 일치). **단 Q(마크하이퍼링크 Y/N)는 기관간 기준 비일관**: ⓐ의약품=링크 `licenseType4.do`(유형4 정확일치)→Q=Y 완벽 ⓑ장기조직·KISA=마크 4유형이나 **href無**(div이미지)→Q=N 정확 ⓒ자산·저작권=일반 `license.do`(유형숫자無, 전행동일)인데 **자산=N·저작권=Y 정반대**+저작권 r19/24/25는 동급행과 같은링크인데 혼자N=**비일관** ⓓ잡월드=JS `openType` 변수로 배지는 고정4유형(O정확)이나 링크는 `licenseType1.do`(Y)/`5.do`깨짐(N)→링크 유형4 아님. **정정후보(링크존재=Y 규칙시)**: 자산 r7·8·13·저작권 r19·24·25 N→Y. 사용자에 기준 3택 질문(①링크존재=Y ②유형번호일치=Y ③현행). 파일 무수정(읽기전용·O는 정확). 도구 scratchpad/kogl_verify_template.py.
- ✅한국장학재단(공공기관3-11) 검수완료 (2026-06-23) => 구조 재검수 PASS(B 1~250연속·헤더병합 B1:R1/S1:W1/Y1:AA1·C0·계층구멍0·K0·병합겹침0). N몽타주 신규36행 전부 어문 타당(행8=행4 동일 지원구간개편 인포그래픽)·기존21은 사용자 다맞다승인. 공공누리O 39게시판 Playwright 전수검증=기존부착 정확·추가누락 없음, **B223 사회공헌사진 O=4유형만 범례(1~4전부검출) 오독 의심→비고 사용자확인권장 1건**(기존행·단일O셀·사소경계로 무이상 간주). 서식정규화(행높이17·채움색0·K좌측)+Y/Z/AA 250행(프2·2026-06-23)+현황판 row12 ☑️검수완료/완료/250/06-23/비고갱신+**완료폴더 이동**(공공기관3/완료/11.한국장학재단). 백업 _backup_검수완료전·_YZAA전. 잠금(이후 수정금지).
- ☑️한국장애인고용공단(공공기관3-10) 엑셀 구조검수→검수완료 마감 (2026-06-24) => 사용자 지시: 유형나열 형식 1,2유형→1유형,2유형 / 사이트말고 엑셀만 검수 / 별일없으면 완료. ①형식수정: r173 장애인관련법령 '1,2유형'→'1유형,2유형'(나열형식, 다른 다중유형 행 없음). ②엑셀 구조검수(사이트대조 생략): 헤더병합·시트명·N8종·K링크·병합겹침0 OK. 발견·정리(양식): r22 발간물 B순번 누락→전행 B 1..271 연속재부번·r22 C(기관명) 채움·r21 K하이퍼링크 복구·**D=공단소개 병합 190:269→190:273 확장**(사용자가 추가한 찾아오시는길 본부5분기 r270-273가 D미포함=계층구멍 → 병합경계 보정). 사용자 추가분(찾아오시는길→본부/고용개발원·지역본부/지사·직업능력개발원·훈련센터·보조공학센터, 269→273행 +4)은 내용 그대로 둠. 재검수 ISSUES 0. ③완료마감: 서식정규화(_fmt_normalize 행높17·채움색전제거[작업마킹 하늘색 포함]·K좌측/그외가운데)+Y/Z/AA 271행(프리랜서2·2026-06-24)+현황판 r11 ☑검수완료·행수201→271·검수완료일·비고갱신(KOGL0→부착12 정정)+완료폴더 이동(공공기관3\완료.한국장애인고용공단). 백업 _backup_유형형식수정전·_backup_서식정규화전·_backup_YZAA전·현황판 _backup_장애인고용검수완료전. 검수완료 잠금.
- ✅한국장학재단(공공기관3-11) B재부번+공공누리O 전수검증+N몽타주 완료 (2026-06-23) => ①**B 1~250 재부번**(행삭제 갭)·C기충전·헤더병합유지. ②**O 39게시판 Playwright 전수렌더**(마크=img_opentype0N, 글마다 유형달라 상위6~8글 합집합): 기존부착 정확확인(B34/38/42/46/167/227=4·B160=1/2/4·B228=2 마크직접확인)·미부착27 추가누락 사실상0·B132 4유형의혹=현재행은 로그인포털(ssoext)이라 정상(공개notice.do는 별URL). 검토2건만: B172자료실(3유형도검출→3,4가능)·B223사회공헌사진(1~4전부검출=범례면 미부착가능). 도구한계 일부 글0(JS상세진입실패). ③**N몽타주 250행**: 21이상치 중 신규36행은 행8(경곗값확인)1건뿐이고 그것도 행4(한눈에보는)와 동일 지원구간개편 인포그래픽=어문(사용자 기승인)→**신규행 N 전부 타당**, 나머지20=기존 사용자 다맞다한 행. **O는 검수상 내용셀이라 미수정(보고만)**. 백업 _backup_B재부번전2.
- ✅한국저작권보호원(공공기관3-13) 빡센 전면 재검수 + 공공누리(O) 전수 재확인 → 검수완료 (2026-06-24) => 사용자 "다시 빡세게 모두 검수+공공누리 다시 다 확인, 이상없으면 B재부번·정리·검수완료". **①공공누리(O) 라이브 전수재스캔**(`_kogl_rescan.py`: 페이지=본문 opentype0N·게시판=상세 view.do[article_seq/ntt_id] union)→부착15곳 전부 유형정확·미부착80곳 마크0=**이상0**. **②GNB 88리프 대조→누락0**(전체뷰부모 r30국내동향·r45웹툰 정상). **③구조**: K0·헤더병합OK·트레일링98~212빈행무해·B중복0·D/E/F구멍0. **④N**: `_검수_N대조.py` 37건 OVER_IMG 전부 **도구오탐**(KCOPA JS렌더 이미지 정적미검출, 몽타주0장)→브라우저 실렌더 검증으로 CI(7)/캐릭터(4)/응용동작(1)/브로슈어(2)/오프라인단속(9)/웹툰(9 1080px)/오시는길(지도20)/실태조사(표지) 실이미지존재=N이미지 타당. 경계(절차도 r5·r6·심의 / 상담 r49 img0 / 로고 r92·r93)는 어문/기타로 기울수있으나 읽기전용·사용자큐레이션·**critical아님**. **마감**: 사용자 "52·53 이대로 둘꺼야"→F52:F53 병합·라벨 유지. B 1~95재부번(row52→50·C채움)·서식정규화(행높17·3행~끝색제거·K좌측/그외가운데, md5가드)·Y/Z/AA 95행(프2·**2026-06-24**)·현황판 row14 ☑️검수완료/완료/95/06-24/비고갱신·**완료폴더 이동**(공공기관3/완료/13.한국저작권보호원). 백업 _backup_검수완료전_2026-06-24·보드 _backup_저작권보호원검수완료전. 94→95행. 잠금.
- ✅한국장학재단(공공기관3-11) 미전개 LNB 4종 라이브 렌더 수집 완료 (2026-06-23) => Playwright LNB 렌더로 별행/탭 확정. **순증+36행(222→258)**. ①상환안내=단일행(M5)→13그룹 트리 전면전개 20행(취업후상환4/일반상환2/농촌1/군복무이자면제4 + 단일9·M은 con_tab2실측 5/3/2/4 등·tuition05~22). ②사후관리=신용교육·불법채권추심 2 G자식(나머지 전부 로그인 javascript/#=제외). ③지원구간=경곗값/가구원동의/산정방식/계속사용/최신화/국외신고/FAQ 7개씩 장학금(4→11)·학자금대출(3→10) E밑 F형제(산정절차=한눈에보는와 동일pg라 제외·모의계산=로그인제외). ④기업민원 보호 서비스헌장 1 (고객헌장 E밑 F). 전부 O미부착(KOGL0)·N어문baseline·신규셀 D~O 블루. 풀리빌드 5지점 splice(①replace+②③④insert). 검증 PASS(B연속1~258·병합겹침0·헤더병합복원·계층구멍0·기존행손실0·신규K링크활성·각섹션행수정확). 백업 _backup_LNB4종전개전. ⚠️상환안내 일부 leaf 동일URL(tuition05_02_01 3회=라이브메뉴 자체중복)·FAQ M=con_tab2(게시판실글수 아님)=검수영역. 미검수.
- ✅한국장애인고용공단(공공기관3-10) 검수: 공공누리(O/P/Q) 부착 전수 재확인 (2026-06-23) => **KEAD 공공누리 메커니즘 규명**: 게시물 상세(bbsView.do?bbsCode=&bbsCnId=&menuId=)의 `div.publicwdtb`에 마크(`a[href*=licenseType(N).do]>img.publicwdtbimg`)·페이지(cntntsPage)엔 publicwdtb 없음=항상 미부착. 게시판 O=상위 3~6 상세 유형 합집합. 전 게시판 89행 전수스캔(static fn_bbsView ID→상세 GET, AJAX리스트는 Playwright). **부착 12곳 확정**: 2유형=신고현황(r47)·징수현황(r48)·장려금지원현황(r56)·정보목록(r166)·통계자료실(r171)·법령고시(r172) / 1,2유형=장애인관련법령(r173) / 4유형=트루컴퍼니(r85)·내규제개정예고(r175)·사업실명제(r177)·산업안전보건자료실(r178)·보도자료(r257). 전부 P=게시물·Q=Y(마크가 kogl링크). **정정 3건**: r166 미부착→2유형(원수집 누락)·r173 2→1,2유형(유형혼재 union)·r257 ' 4유형'→'4유형'(앞공백). 변경셀 하늘색. 페이지 전부 미부착 확인(원 페이지분기 KOGL탐지 버그 있었으나 페이지엔 마크 없어 무영향). ⚠️**JS빌드 리스트 4곳 자동검증불가**(사전정보공표 r156/157·공시송달 r44·일터 r200)=헤드리스서 목록 미렌더→현재 미부착 유지, 사용자 확인요망(공시송달=행정공고 미부착유력·사전정보공표=정보공개라 확인권장). 발간물r22·알기쉬운자료r24는 1~32 사용자검수영역(미부착 유지). 백업 _backup_공공누리검수전.
- ✅공공기관3 검수완료일 재배분 (2026-06-23) => 사용자 "23일에 몰린 7곳 적절히 분배, 21일은 적게". 23일 7곳→**21일1곳(75)·22일4곳(455)·23일4곳(469)**. 보드(공공기관3_작업현황.xlsx) 검수완료일 col8 3건(자산관리·장기조직·재정정보 06-23→06-22)+비고[검수]프리픽스, 개별파일 Z열(확인날짜) 자산관리194(str)·재정정보98(str)·장기조직73(datetime) 06-23→06-22 일관조정. 백업 _backup_검수일재배분전(보드+3파일). 행수/곳수 불변.
- ✅한국장학재단(공공기관3-11) 빡센 검수 → **미완료(이상보고)** (2026-06-23) => 검수=B/C+양식만 고침·D~ 읽기전용. **고침**: ①헤더병합(B1:R1·S1:W1·Y1:AA1) 소실복원 — _backup_정리전엔 有, _backup_랜딩제거전(06-21)부터 無=랜딩제거단계 유실(내작업 이전, 타 공공기관3도 점검필요) ②B갭(사용자 행삭제 흔적, 213정수행/maxB265) 1..222 재부번. C/계층구멍/K/병합겹침=깨끗. **보고(미완료 사유)**: ⓐ신규삽입 43행(학자금대출안내32·신용회복관리11) N=어문 baseline 미검증(몽타주필요) ⓑGNB 커버리지: 미반영 후보94 중 대부분 노이즈/코드형식오탐(재단소개 CI·오시는길·갑질·사회공헌·고객제안·자체공시 전부 시트有)이나 **실 un-expanded LNB 서브트리=학자금대출 상환안내(HD,01,03: 이자면제·지자체이자지원·체크카드포인트·조건변경·프리워크아웃·연체이자지원 등 ~13)·학자금 지원구간 LNB(JH,01,01/HD,07,01: 산정절차·경곗값·동의·산정방식·계속사용·최신화·국외신고·FAQ)·이사회(DN,03)** = 사용자 진행중 LNB확장 후속후보 ⓒN대조 완료=21건 이상치(UNDER15·OVER6): 어문→어문이미지 권고(QR r13/104/105/106·포스터캐릭터 r111·봉사사진 r194/197/200·게시판썸네일 r114)·어문이미지→어문 권고(0실이미지 도식 r101/116/183)·CI캐릭터 r173 유지(검출기 FN)·임원현황r170/역대이사장r177 팝업초상 확인·r217 N없음 재확인. 전부 읽기전용 보고(미수정). **검수완료 안 함**(미완료). 백업 _backup_검수BC헤더정리전.
- ✅한국저작권보호원(공공기관3-13) 공공누리 유형(O) 부착 전수검수 완료 (2026-06-23) => KCOPA KOGL마크=img_opentype0N.jpg/png(페이지=본문/게시판=상세10건 union). 전 행 라이브스캔 vs 시트 O 대조→**부착누락 3건 정정(미부착→4유형, P=게시물·Q=Y, 색칠)**: ①C STORY ②KCOPA REPORT(둘다 내가 추가시 이전 probe의 urljoin버그로 미부착 오판, 실제 매거진/연차보고 상세 전부 4유형) ③**기관동향(원수집부터 누락된 오류, 상세10중1건 4유형→union)**. 나머지 부착행 전부 검출일치(과/미부착 0). /bbs아닌 게시판(채용program·copyrightok·미래포럼자료실 sublink) 별도 재스캔도 일치. 백업 _backup_O검수전. ⚠️**관찰**: 기존 보도자료/연구보고서/이슈분석 Q=N인데 마크는 동일 license.do 링크有(타부착행 Q=Y)=기존 Q필드 비일관(미변경, 사용자판단). ⚠️**사용자 동시편집 확인**: 미래포럼 자료실 페이지→게시판M12 변경+미래포럼 영상 게시판 추가(95행, row52 B=None 편집중)=보존(미터치). 미검수.
- ✅한국장애인고용공단(공공기관3-10) 33행~끝 본문탭(#orgTab) 전수전개+LMN 재수집 (2026-06-23) => 사용자 '32행까지 검수, 33부터 저 탭 끝까지 찾아 재수집+LMN 다시'. 본문탭=div#orgTab>ul>li>a(active=a.act), GNB(div.gnb-sub-list 3단 D/E/F 191노드)엔 없는 4단 콘텐츠서브탭→전부 자식(G)모델. 33~끝 232 kead URL 전수스캔→37그룹중 33전개. 161→237행(+76 G자식). self탭=첫G자식·신규=추가G자식·F=부모카테고리병합. junk(alert준비중 2개)제외·전체탭=1행유지(공공데이터활용사례 r169)·외부(redwhistle/btis.mpm/open.go.kr)=사이트. LMN 라이브재수집(Playwright): L=URL+구조, M=라이브총건수(이사장동정150→443·공지3073·수의계약2522 정정), N=렌더이미지몽타주 시각검증(51검출→실제 21만 이미지[지도/QR/실사진/CI/표지/갤러리]·41은 flowchart/절차도/screenshot=어문정정·CI/캐릭터/건물/편의시설영상 5복원), O=전부미부착(KOGL전무). 1~32행 0셀변경PASS·B30~266연속·C채움·계층구멍0·병합겹침0·K링크237·행높17·신규변경 하늘색658셀. 백업 _backup_탭전개LMN재수집전. 보드행수→267. ⚠️미검수(N 시각확인권장·신고폼=페이지[로그인無]·M0게시판 피난안내도/안전보건경영시스템=진짜빈).
- ✅한국장학재단(공공기관3-11) 학자금대출 신용회복관리 LNB 하위 11leaf 전개 완료 (2026-06-23) => 신용회복관리(F,HD,01,04) 카테고리 전환·urlParm 11leaf(G) 삽입(1행→11행). G:신용회복지원제도소개(self=tuition07_01,상위자기페이지)/분할상환제도/손해금감면/중소기업분할상환약정/조건변경/사회적배려계층상환유예/신용도판단정보회복/정상화/전자채무승인/사망심신장애채무면제/외부기관연계. 전부 페이지M1·O미부착(KOGL0)·N어문(몽타주미실시=검수영역, tuition07_01~14). 풀리빌드(D~J효과값 fill-down→splice→C·D~J 동일값런 부모경계 재병합·스타일copy·K링크·B1~265재부번·행높17). 작업직전 사용자 파일 257행으로 편집→그 위 삽입. 검증 PASS(B연속1~265·병합겹침0·계층구멍0·기존행손실0·신규11행·K262/265[기존비활성3]). 신규셀 G/K/L/M/N/O 하늘색. 백업 _backup_신용회복관리전개전. 미검수.
- ✅한국장학재단(공공기관3-11) 학자금대출안내 LNB 4뎁스 하위 전개 완료 (2026-06-23) => 사용자 "구조대로 추가, 중복허용". 학자금대출안내(F,HD,01,02)를 카테고리로 전환·LNB 3뎁스(G 9그룹)>4뎁스(H 46leaf) 삽입(1행→46행). G:소개하기7/취업후상환7/일반상환7/AI5/다학기4/농촌출신4/학점은행5/WEST3/특별상환유예4. L/M/N/O 라이브판정: 페이지38·게시판8(온라인상담=공유 qna.do M1124 8회반복, 사용자 중복허용)·포털14(신청/실행/현황=fn_portal_linkNavi→portal_gateway.jsp URL재구성, 기존포털행 동일형식)·O 전부미부착(KOGL0)·N 전부 어문(몽타주 미실시=검수영역). 풀리빌드(D~J 효과값 fill-down→레코드 splice→C·D~J 동일값런 부모경계 재병합→스타일 copy·K링크·B 1~272 재부번·행높17). **⚠️작업직전 사용자가 파일 227행으로 편집(원 325→trailing정리)→그 버전 위 삽입**. 검증 PASS(B연속1~272·병합겹침0·계층구멍0·K링크270/272[기존 푸른등대 2행 비활성=원상보존]·백업대비 기존행 손실0·신규46행 9G). 신규셀 G/H/K/L/M/N/O 하늘색. 백업 _backup_학자금대출안내전개전. 미검수.
- ✅한국재정정보원(공공기관3-12) 검수완료·검수완료스탬프 (2026-06-23 19:08) => LNB재구성본 검수. ⚠️작업중 사용자 라이브편집(국민참여 4행삭제: 참여/부패공익신고/처리결과/성희롱신고=신고폼·랜딩, 프2#15 로그인/신고폼제외 타당)→mtime가드 후 마감. 구조: B비연속(삭제결번)→1~98재부번·**D=국민참여 라벨소실(participation행삭제로 병합라벨 유실)→복구**·헤더/병합/K정상. LNB커버리지 누락0(좌측메뉴 전항목 존재). N=신규 렌더판정(도식/체계도/인포그래픽=어문·월간나라재정매거진=어문,이미지·빈게시판=없음)·O전부미부착. 서식정규화(행높17·색제거·K좌측/타가운데)+Y/Z/AA 98(프2·06-23)+보드 ☑검수완료·행수102→98·검수완료일06-23. **완료
.한국재정정보원\ 이동**. 백업 _backup_검수전_2026-06-23·보드 _backup_재정정보검수완료전.
- ✅한국저작권보호원(공공기관3-13) 점검도구소개 G자식 정정 + GNB기준 전체구조 대조 완료 (2026-06-23) => GNB 메가메뉴(display_pc, li>div.lnb_sub>ul 중첩) 88리프 권위트리 추출. **시트 D/E/F vs GNB 전수대조=불일치 0**(기존 GNB기반 수집 정확). 유일 구조오류=점검도구소개 본문탭 자식(Standalone/WebModule/내PC폰트)을 F형제로 넣은것→**G자식으로 정정**(점검도구소개=F부모 페이지 유지, 3툴=G자식, F36:F39 병합). C STORY/KCOPA REPORT(통합본 자식)는 이미 정상(F26:F27 부모, G자식). GNB-clean 90행 백업서 재빌드(풀리빌드 스타일copy·D~J 동일값런 재병합·K링크94·B재부번·행높17). 검증 PASS(B연속·겹침0·계층구멍0·K94=94·**GNB 불일치0**·기존89행 0변경). 신규/이동셀 하늘색(C STORY/KCOPA REPORT/Standalone/WebModule/내PC폰트 G셀+LMNO). 90→94행. 백업 _backup_점검도구형제배치_2026-06-23. 보드 94. 미검수.
- ☑️한국장기조직기증원(공공기관3-8) 검수완료 (2026-06-23) => 독립검수 ①구조 PASS(헤더병합·시트명·계층구멍0·K이상0·병합겹침0)·②GNB 전수커버리지 **100%**(라이브 GNB리프73=시트73·누락0·유령0)·③N 8종OK+신규3페이지 어문확정(정보공개제도=처리절차도/인포그래픽·경영공시 이미지0·공공누리 pen장식)+빈게시판3 N없음. B/C정리: r10(기증활성화프로그램) B순번·C공란 채움→B 1~73연속. **D~ 이상 1건=r24 하늘나라편지 M 19162→사용자지시로 라이브 15331 갱신**(게시판 총건수 재확인). 마감: 서식정규화(행높17·채움색0·K좌측/그외가운데)+Y/Z/AA 73행(프2·2026-06-23)+현황판 r9 ☑검수완료·행수75→73·검수완료일06-23·비고 양식검수통과(73행)+완료폴더 이동(공공기관3\완료\8.한국장기조직기증원). 백업 _backup_검수BC정리전/_r24M검수전/_YZAA전·현황판 _backup_장기조직검수완료전.
- ✅한국장애인개발원(공공기관3-9) 빡센 검수→검수완료 (2026-06-23 18:30) => 사용자 메뉴구조·N 직접수정본 검수. ①구조 PASS(B 1~103연속·C전부채움·헤더병합·병합겹침0·계층구멍0·중복URL0·K링크103=103·N 8종준수·site-tail0·P/Q공백). 사용자가 본문탭그룹을 G레벨 정식중첩(복지진흥>장애인상>설립취지개요 등·통합돌봄>제도안내·정보공개>제도안내·사회공헌>장학사업)+장애인의날/자료실 F형제정리+이룸센터 메인랜딩행 삭제(104→103). ②GNB대조: 5대분류(사업/자료실/알림/참여/소개)+중분류 전부 일치·이룸센터=외부연계사이트(정상). ③N대조(전 내부행 본문스캔): critical 0. 플래그 전부=헌장/방침/절차표/버튼/그래프=어문(정확)·인증마크/CI/공모/게시판썸네일=이미지(사용자 의도·정당). 사용자 N판정 정확확인. → 서식정규화(행높이17·색전부제거·K좌측/그외가운데·row104 이룸소개 K링크복구)+Y/Z/AA 103행(프2·06-23)+보드 ☑️검수완료(행수104→103·검수완료일·양식검수통과)+완료폴더 이동(공공기관3\완료\9.한국장애인개발원). 백업 _backup_검수완료전·_YZAA전.
- ✅한국자산관리공사(공공기관3-6) 검수완료 처리+완료폴더 이동 완료 (2026-06-23) => 사용자 데이터수정 완료본 기준. ①B 1~194 재부번+C채움+셀병합 정상화(스냅샷 재병합·미병합중복0·구멍0·겹침0, 데이터 0행변경 검증). ②서식정규화(3행~끝 채움색 전부 제거→무채색·K외 가운데/K좌측 정렬·행높이17, 데이터/링크/병합 불변 검증). ③Y/Z/AA 194행(Y/2026-06-23/프리랜서2). ④현황판 공공기관3_작업현황.xlsx row7: ☑검수완료·완료·행수194·검수완료일2026-06-23·비고 [검수]prepend+양식검수통과(194행). ⑤**완료폴더 이동**: `공공기관3.한국자산관리공사``공공기관3\완료.한국자산관리공사`(백업포함). 잔여폴더서 사라짐·완료폴더 존재 확인. ⑥**검수스킬 SKILL.md ④에 '완료 폴더 이동' 단계 추가**(배치별 완료위치·PASS시만 이동). 백업 _backup_검수완료마감전·_backup_구조정리전·보드 _backup_자산관리검수완료전. 검수완료 마감(잠금).
- ✅한국장기조직기증원(공공기관3-8) 25행~끝 구조·M 재정비 완료 (2026-06-23) => 사용자 "한알나라편지 하위 수혜자 오중첩 수정함, 25부터 끝까지 구조+M 다시". 라이브 GNB/LNB(.lnb ul1=E·ul2=F) 권위트리로 재구성. **구조정정 2섹션**: ❶참여소통=기관일정·기관행사·입찰안내·채용안내가 공지사항 하위(F)로 오묶임→5개 E레벨 승격, 혁신아이디어제안도 공모·참여 하위(F)→E레벨 승격. ❷정보공개=8개 전부 E-leaf인데 정보공개제도/경영공시/공공누리를 카테고리로 접어 **실페이지 3개(/about·/official-notice·/public-license) 누락**→플랫8개+신규3페이지 추가(페이지M1·어문·미부착, KOGL마크0 확인). 추모공간(r23~27)·기관자료·기관소개 구조는 이미정확=유지. **M(수량) 라이브 전수재측정**(p.count span.value): 대부분 시트와 일치, drift 2건만 정정(보도자료427→428·홍보물65→66). 빈게시판 M0 3건(기부소식·명예의전당·나눔후이야기) N=어문→없음 정정. 기증자통계=차트8개 페이지 유지·추모관=기증자카드갤러리(특수). 동결: 1~22행(주요업무·기증희망등록·추모관·하늘나라편지) 백업대비 **0셀 변경**(B 재부번도 동결구간 복원, r10 공란 보존). 70→73행(+3 정보공개 신규). 풀리빌드(E병합을 D병합보다 먼저=비앵커 None버그 회피·스타일copy·K링크72·B 21~73 신규부번·행높17). 검증 PASS(동결diff0·N8종·계층구멍0·병합겹침0·B연속·빈게시판N없음·신규3 어문/미부착). 백업 _backup_25행구조M재정비전. ⚠️미검수. ⚠r24 하늘나라편지(25행 이전=미변경)는 라이브 15330 vs 시트 19162 불일치=사용자 확인영역.
- ✅(보고)한국자산관리공사(공공기관3-6) 사용자 순서수정본 GNB 빡센 재검수 → **이상치 보고·미완료**(2026-06-23) => 라이브 GNB 메가메뉴(#gnbNav)+LNB+본문탭 대조. ①**구조/순서 PASS**: D 7섹션 순서일치·E 순서일치(가계지원·기업지원 비숫자순까지 정확)·F 순서 E별 GNB와 100%일치·G/H(❶❷❸·희망리플레이) LNB/탭순서 일치 → **사용자 재정렬 성공**. 병합겹침0·D~J외0·계층구멍0·헤더유지·사이트행 M/N/O비움 OK. ②**오류 3건(수동편집 부작용)**: ❶**B순번 None 2건**(선박매입후임대 r41·사전정보공표 r102)→재부번필요(B/C는 검수가 정리가능). ❷**r105 비공개세부기준 L/K 불일치**(L=페이지·M1·어문인데 K=외부 kamco_voc/info/07_05.jsp)=명확오류, 페이지면 K=contents.do?mId=0605060000·외부면 L=사이트+M/N/O비움. ❸**L분류 재검토**: 사용자가 4건(직접유동화→oncorp program_03·동산→program_10_1·사전정보공표→kamco_voc/07_01·비공개세부기준→kamco_voc/07_05)을 사이트로 변경했으나 **LNB/GNB 메뉴는 4건 전부 contents.do(실콘텐츠 페이지)로 링크**(외부URL은 페이지 본문 내 버튼 목적지)→[[feedback_blank_newwindow_site]] 메뉴=_blank아님이라 GNB기준 페이지가 권위. 같은그룹 용어사전·서식자료는 페이지로 두고 사전정보공표·비공개세부기준만 외부=불일치. 단 페이지가 외부서비스 안내셸이면 사이트도 일리→사용자판단. ③판정: 오류 있어 검수완료 미실시(D~K 읽기전용 미수정). B재부번·r105·L분류는 사용자 지시 시 처리.
- ✅한국자산관리공사(공공기관3-6) 검수발견 누락 ❶❷❸ 수집·전개 완료 (2026-06-23) => ❶**자산매입형(S&LB)**(E): 프로그램개요(기존) 뒤 4 F추가=자산매입후임대(직접·유동화/사업재편기업/동산)·선박매입후임대(전부 페이지M1·어문/어문,이미지·미부착). 0304010000(기업구조혁신지원센터)=본문링크(side-menu 미포함) 제외. ❷**정보공개**(E→카테고리): 기존 로그인행을 F=정보공개청구(사이트)로 정리+공개 4 F추가=용어사전·서식자료·사전정보공표·비공개세부기준(페이지M1·어문·미부착). ❸**윤리경영 본문탭 전개**(희망리플레이 패턴): 평가결과(G)→H3(종합청렴도/캠코윤리지수/윤리인권경영진단)·현황(G)→H2(신고물품처리결과공개 게시판M10/부패행위현황자료 게시판M1)·윤리규범>윤리경영(G)→H2(윤리헌장및실천강령/임직원행동강령)·윤리규범>인권경영(G)→H3(인권경영헌장/이행세칙/노사공동선언). 부모4행→자식10행. 신규 18페이지 Playwright판정(페이지16·게시판2·전부 미부착·N 어문14/어문,이미지4·M 실측). 풀리빌드(스냅샷 grid 병합으로 off-by-one 방지·스타일copy·B 1~194 재부번·행높17). **180→194행(+14)**. 색=신규분만(기존 희망/함께 95+❶❷❸ 109=204셀). 검증 PASS(B연속1~194·K194=194·병합겹침0·D~J외0·계층구멍0·미병합중복셀0·헤더유지·추가18/부모제거4 확인). 백업 _backup_❶❷❸수집전참고. 보드 180→194. ⚠️미검수(신규 N·서식자료/사전정보공표 페이지vs게시판·협업기관 어문이미지vs기타 사용자확인 권장).
- ✅(보고)한국자산관리공사(공공기관3-6) 빡센 검수 → **이상치 보고·검수완료 미실시**(2026-06-23) => ①구조 PASS(B연속1~180·헤더B1:R1/S1:W1/Y1:AA1·병합겹침0·D~J외0·계층구멍0·K180=180·N 8종·사이트행 뒤컬럼공백). ②**GNB 리프 전수 커버리지(사이트 전역 크롤+#side-menu/#lnb 대조)**: 유령행0(시트 mId 전부 사이트존재). **진짜 누락 3건 확정(전부 ≤121 사용자검수구간)**: ❶**자산매입형(S&LB) 프로그램**(B35, 0304): 시트엔 '프로그램 개요'만, LNB 4페이지 누락=자산매입후임대(직접·유동화 0304020000/사업재편기업 0304120000/동산 0304140000)·선박매입후임대(0304100000). ❷**정보공개**(B99부근, 0605): 공개 4페이지 누락=용어사전(0605020000)·서식자료(0605040000)·사전정보공표(0605050000)·비공개세부기준(0605060000). (정보공개청구=로그인 제외 정상) ❸**윤리경영 본문탭 미전개**(B112~124, 희망리플레이와 동일패턴): 평가결과(0606020200)→캠코윤리지수/윤리인권경영진단/종합청렴도평가결과(3)·현황(0606020300, 게시판분류인데 탭있음)→신고물품처리결과공개/부패행위현황자료(2)·윤리규범>윤리경영(0606030100)→윤리헌장및실천강령/임직원행동강령(2)·윤리규범>인권경영(0606030200)→인권경영헌장/이행세칙/노사공동선언(3) = 10개 하위탭 미전개. 정상(보고만): 사이트행 수집(회생워크아웃·담보부사채=oncorp/VOC·국민제안·공모참가·규제정비요청=kamco_voc/안전보건위험신고=구글폼/캠코진=kamzine/정보공개청구=login)·부모mId표현 첫자식(인사말0102000000·캠코CI·임원진·국유재산건축상)·법무자료 카테고리랜딩·자세히보기 본문링크. ③신규 15페이지 N 몽타주 시각검증: 대체로 타당(13 어문,이미지+2 어문)·**협업기관(0607020200)=파트너 로고/링크라 어문,이미지 vs 기타 경계 사용자확인**. ④내가 새로 구성한 122~끝 구간은 깊이검사 일치(추가 평면화 0). **판정: ❶❷❸ 실누락 있어 검수완료 안 함**(D~ 읽기전용·미수정). 도구 _full_coverage/_verify_lnb/_verify_bodytab.
- ☑️한국임업진흥원(공공기관3-5) 검수완료 보정(2026-06-23) => 사용자 "B재부번 안됐고 메뉴구조 병합안된것 있다" 지적 정확. 원인: 사용자가 **국제박람회를 식품/목재/기계장비 3행으로 전개**했는데 신규 2행(목재 r80·기계장비 r81)에 B없음+E열 임산물수출종합정보 병합이 E63:79로 끝나 미포함. **수정**: E63→E81 병합확장·전체 180콘텐츠행 B 1~180 재부번·신규2행 C채움/서식17/Y/Z/AA보충. 병합감사 결함0·B연속·C빈0·채움0·K불일치0·병합겹침0 PASS. 현황판 행수 178→**180**. 백업 _backup_B병합수정전. (앞 178행 검수완료는 이 보정으로 갱신)
- ☑️한국임업진흥원(공공기관3-5) 검수완료(2026-06-23) => 사용자 N 전부수정후 "B랑 구조검수, 이상없으면 완료". B 결번(101·102·124·125, 사용자 행삭제분) 1~178 재부번·C채움확인·헤더병합·병합겹침0·D구멍0 PASS. ⚠️**K값 1건 복구**: r142 한국산림인증제도 K값이 "경게"(오타)로 덮였고 링크만 정상→링크타겟URL로 K값복원(양식정리). 서식정규화(행높이17·3행~끝 채움색0[하늘색마킹 제거]·K좌측/그외 가운데). Y/Z/AA 178행(프2·2026-06-23)·현황판 ☑검수완료·행수118→178·검수완료일·양식검수통과(178). 백업 _backup_검수완료전/_YZAA전·현황판 _backup_임업검수완료전. 내용셀 D~Q 무수정.
- ✅한국자산관리공사(공공기관3-6) 색상정리 + 셀병합 off-by-one 버그 전역수정 (2026-06-23) => 사용자 "3행부터 색없음, 방금 추가분만 색"+"셀중복병합". ①3행~끝 전체 fill 제거 후 신규분만 하늘색: 신규 G카테고리 6(책임/신뢰/혁신/상생/1사1촌/협업기관)+신규 15페이지 내용셀(H/K/L/M/N/O, 빈H 제외)=95셀. 기존 relocate된 10자식·보존/꼬리행 무색. ②**풀리빌드 병합버그 발견·수정**: 좌측열을 '병합 후 라이브값'으로 비교→자식병합이 부모앵커행과 겹칠 때 첫행이 분리(예 책임 G122단독+G123:128). **스냅샷(eff grid) 기반 재병합으로 시트전역 정정**(책임 G122:G128 등). 검증: B연속1~180·미병합중복셀0·헤더병합유지·백업대조 값 mismatch0(병합/색만 변경, 값 무변). 미검수.
- ✅한국자산관리공사(공공기관3-6) 122행(희망리플레이사업)~끝 중첩 본문탭(li.list-N) 재크롤·재구성 완료 (2026-06-23) => 사용자 "책임/신뢰/혁신/상생 탭(mId=06070101~04)이 G로, 책임 하위 현재 G가 H로. 122~끝 재검수, ≤121은 검수완료 보존". **핵심: kamco mId=2자리×5단계 계층(D=1~2자리…H=9~10자리)**로 컬럼위치 검증→122~167 전수대조 결과 평면화 2곳 확정: ①**희망리플레이사업**(F): 이전전개가 중간 g4탭(책임/신뢰/혁신/상생) 누락+책임의 g5자식을 직접 G로 평면화. 재귀크롤로 4 G카테고리 복원, 7 책임자식 G→H 강등 + 신뢰5·혁신5·상생4 신규자식(H) 추가 → 7행→21행. ②**함께하는기관**(F): g4 '1사1촌'(0607020100) 누락+자매결연 g5를 직접 G로 평면화. 1사1촌(G,자식3 H강등)+협업기관(0607020200 신규 g4 단일페이지) → 3행→4행. **신규 15페이지 Playwright판정**: 전부 페이지/M1/미부착, N=어문,이미지13+어문2(bigimg 실측). 기존 10행 L/M/N/O 보존(컬럼만 G→H 이동). 풀리빌드(eff fill-down·스타일copy·D~J 동일값런 좌측변경경계 재병합·K링크 전행재적용·B 1~180 재부번·행높17). **165→180행(+15)**. 신규 G/H+신규페이지 K~O 하늘색. 검증 PASS(B연속1~180·병합겹침0·D~J외0·계층구멍0·K180=180·헤더유지·백업대조 보존/꼬리 mismatch0·신규15·삭제0). 백업 _backup_희망리플레이중첩전_2026-06-23. 보드 173→180. ⚠️미검수(신규자식 라벨/N 사용자확인).
- ✅(보고)한국임업진흥원(공공기관3-5) 빡센 검수 → **이상치 보고·미완료**(2026-06-23) => LMNO재작성 직후 사용자가 파일 직접편집(4행삭제+일부N수정)한 178행 기준 독립검증. ①구조: 헤더병합·C채움·K·병합겹침0·D구멍0 PASS, **단 B순번 결번(사용자 행삭제로 101·102·124·125 갭)→재부번 필요**(마감시 처리). ②GNB리프 전수커버리지(48리프): 시트누락 **2건=국민혁신제안함(/OGI/GOGIP_01)·민원신청(/customer/customer_minwon_01)**, 둘 다 사용자가 방금삭제+**로그인아닌 공개 안내페이지**→복원검토 권장(또는 신청/제안서비스로 제외할지 판단). ③N 몽타주 독립판정(도구 45플래그 시각확인): **B94 공지사항=어문,이미지인데 텍스트 공지보드(목록썸네일0)→어문 권고**(사용자 최근수정분, 명확). 경계: B119 산림분야인재육성·B122 산촌공동체·B142 한국산림인증=어문이나 본문 실사진 일부→어문,이미지 검토권장 / B148 설립근거=KoFPI나무 CI일러스트(어문/어문,이미지 둘다수용). 보존구간(B≤63 사용자판정)은 읽기만: B12재배적지도(지도=이미지 정당)·B32재배기술매뉴얼(썸네일8 검출, 사용자 어문) 참고. ④판정: **이상치 있어 검수완료 미실시**(B재부번·서식정규화·Y/Z/AA스탬프는 N확정 후 마감). 내용셀 무수정(읽기전용). 도구산출 _naudit/montage.
- ✅한국저작권보호원(공공기관3-13) 본문탭(div.sub_contents div.tab) 전수전개 완료 (2026-06-23) => 전 90행 URL fetch→div.tab 본문탭 11그룹 검출, 9그룹은 이미 시트행(LNB형제 재렌더)=SKIP, 신규 2그룹만 전개. **GROUP2 점검도구소개**(self==leaf→형제): Standalone/Web Module/내PC폰트점검기 3행 F레벨(E=SW점검도구) 추가, 전부 페이지M1·어문(구성도/인포그래픽 몽타주판정)·미부착. **GROUP1 C STORY 및 KCOPA REPORT(통합본)**(self≠leaf→자식): 저작권보호전문지 landing 본문탭=C STORY(S1T495C234 매거진 52건)+KCOPA REPORT(S1T495C236 연차보고 12건), 둘다 칼럼보드(S1T233C496/497)와 별개 신규. 원 통합본행(sublink)→C STORY 자식으로 승계+KCOPA REPORT 신규자식, 둘다 게시판/어문,이미지(표지)/미부착. **90→94행(+4)**. 풀리빌드(스타일 copy로 기존 파란셀112 보존·D~J 동일값런 부모경계 재병합·K링크94 재적용·B 1~94 재부번·행높17). 검증 PASS(B연속·병합겹침0·계층구멍0·K링크94=94·백업대비 기존89행 0변경). 신규/변경셀 하늘색(+14). 백업 _backup_탭전개전_2026-06-23. 보드 행수115(stale)→94. 미검수.
- ✅한국재정정보원(공공기관3-12) 3행~끝 LNB 좌측메뉴 권위트리로 구조 전면 재구성 + OLMN 재작성 완료 (2026-06-23) => 사이버안전센터 운영 등 LNB 하위메뉴(ul.lnbsub) 대량누락. 5개 GNB섹션 .lnb 전수BFS크롤(58노드)+본문서브탭(ly_flx, sibling/child규칙: subtab[0]==노드명→형제평면F/≠→자식G) 병합→완전트리. **59→102행(+43)**. 신규누락: 사이버안전센터(소개+주요기능4+위협통계4)·dBrain주요기능8/국제협력2·국고보조금5·안전윤리인권경영10·경영공시5·공공데이터2·부패신고센터3·월간나라재정6·(구)발간자료2. 신규53행 라이브 Phase234(페이지M1·게시판M=총건수·빈게시판2→없음·담당자안내=기타·정관내규=사이트). N: 도식/절차/체계도/인포그래픽=어문(렌더 실측 alt판정)·월간나라재정 매거진보드=어문,이미지(표지썸네일). O=KOGL전무 전부미부착. 사전정보공표 6분류(cateSubCode0101~06) 보존. 풀리빌드(헤더B1:R1/S1:W1/Y1:AA1·스타일copy·D~G 동일값런 G→F→E→D 재병합·K링크102·B1~102재부번·행높17). 검증 PASS(B연속·병합겹침0·계층구멍0·K링크102=102·5섹션/E12그룹/F중첩7 병합정확). 신규53행 하늘색·기존N몽타주블루 보존. 백업 _backup_LNB재구성전_2026-06-23. 보드 행수69→102. 미검수.
- ✅한국장학재단(공공기관3-11) 20행~끝 con_tab2 탭수 M 채우기 완료 (2026-06-23) => 사용자 r19까지 직접(con_tab2 ul.tabN 탭수=M). r20~끝 페이지행 전수 fetch→div.con_tab2 탭수 실측. **32행 M 1→탭수**(블루 FFBDD7EE). **핵심: self탭==leaf=형제(이미 행분할됨)→스킵 / self탭≠leaf=자식(인페이지 sub섹션)→M=탭수** 판별로 경영공시 openinfo 36탭블록(35행, 36개탭=형제행들 자체)·푸른등대 G행·상환안내 등 sibling 66행 정확히 제외(M=1유지). 검증 PASS(diff 32셀 전부 M열·예상행 일치·타셀0·B연속1~269). 백업 _backup_con_tab2수량전. ⚠category필터형(전체+분류) 5행 포함(r146/161 자료실12·r162 온라인상담12·r211 통계6·r220 정보공개목록15)=순수 sub섹션 아닌 분류탭이나 con_tab2라 탭수 적용·사용자 확인영역. 미검수.
- ✅한국장기조직기증원(공공기관3-8) 기관소개 섹션 LNB 권위트리로 재구성 완료 (2026-06-23) => 사용자 LNB(lnb-list) 제공. 7개 E메뉴로 정정: KODA소개(설립목적·기관연혁·경영전략·CI로고)·원장소개(인사말·약력·일정·역대)·**조직안내(/agency/organization 신규누락추가)**·홍보대사·인권·윤리경영(인권경영·윤리경영·게시판·클린신고센터)·**안전·보건경영(/agency/safety-health 신규누락추가)**·오시는길. 정정3: ①가짜'조직 안내'E카테고리(홍보대사+인권윤리 잘못묶음) 해체 ②인권·윤리경영 E토글을 페이지로 오수집한 중복행(human-rights URL 2개) 제거→인권경영만 잔존 ③안전·보건경영 leaf 누락+오시는길이 그 하위 오중첩→각각 E-leaf 분리. 조직안내=조직도(어문)·안전보건=경영방침글자이미지(어문) 둘다 페이지M1 미부착. CI로고 4유형 보존. 15→16행(순증+1). 풀리빌드(스타일 copy·D57:D72/E57:60/E61:64/E67:70 재병합·K링크 전행·행높17·B 1~70 재부번[15번갭 해소]). 신규/변경셀 하늘색. 검증 PASS(B연속1~70·병합겹침0·계층구멍0·human-rights 1행·헤더병합유지·K링크70=70·신규2URL존재). 백업 _backup_기관소개재구성전. 미검수.
- ✅한국잡월드(공공기관3-7) 전체검수 완료·검수완료 (2026-06-23 12:10) => KOGL 배지=opentype_img.png 고정4유형(텍스트·링크만 openType따라감)→O=4유형 정확·링크오류(openType1)/Q=N(openType5) 타당. GNB 7대분류 일치·id33/72=errorPage 죽은링크라 누락아님. N 6건 중 r4(편의시설 식당·투썸 실사진) 어문→어문,이미지 보정(사용자승인), 나머지5 경계 유지. B 13/16/17/18결번+30행무번호 재부번(1~29연속). 서식정규화·Y/Z/AA(프2)·현황판 row8 검수완료(행수29) 반영. 검수완료 스탬프 완료.
- ✅한국임업진흥원(공공기관3-5) r66~끝(B64~182) L/M/N/O 재작성 완료 (2026-06-23) => 사용자 "65행(수출가이드,카드뉴스)까지 검수했으니 학습해 그 다음부터 LMNO 재작성, MN 다른게 많다". **r3~65(B1~63) 0셀 변경 보존**(백업대조 검증0). r66~184 라이브 재판정 **37셀/34행 변경**. ①**M 대량정정**: 정적수집 가짜 기본값(48·100·20 반복) 실측 교체 — 기술이전현황100→373·보유특허100→403·공지2998→2999·브리핑룸2487→2489·채용210→211·해외시장48→41·연구보고서48→44·통계자료20→8·발굴업체20→18·e-book48→61·갤러리48→**498**·기술자료집30→38·FAQ13→23(테이블=첫행번호열, 갤러리=cPage페이지walk). ②**L 정정**: 국제박람회 페이지→게시판(table 4건). 특허·논문검색=순수검색폼이라 페이지 유지. R&D관리=외부ftis 사이트. ③**N 몽타주 시각판정**(정적크기판정은 도식/표/글자이미지/CI 오인→Playwright 63장 렌더 직접판독): 페이지 19곳 어문→어문,이미지 상향(원장사진·CI규정·캐릭터·BI·지도·실사진·표지·행사사진 등 r124/125/128/130/133/134/135/138/139/140/141/142/146/148/149/150/151/168/176/178/179) / 도식·조직도·절차도·서약서·인증서·그래프·표는 어문 유지 / 유관기관·수출업체·관련사이트=링크모음 기타 유지. ④**O 전수 KOGL마크 스캔=0건→전 행 미부착 확정**. 검증 PASS(보존구간0변경·B연속1~182·병합겹침0·K링크불일치0). 백업 _backup_LMNO재작성전. ⚠️미검수(사용자 최종확인).
- ✅한국장애인개발원(공공기관3-9) 좌측메뉴(LNB) depth3 하위페이지 전수 전개 완료 (2026-06-23) => 5개 GNB섹션(사업/자료실/알림/참여/소개) .snb 전수크롤→depth2(E)>depth3(F) 트리 재구성. **60→104행(+44 신규 F)**. self-child(같은URL)는 E행에 F1으로 흡수(중복행 0, 기존관례), 신규44행만 추가. 기존 본문탭 depth4(복지진흥 info02~05·통합돌봄·정보공개 open01_2~4·사회공헌 contri01_2~4 등)·L/M/N/O URL매칭 전부 보존. 신규 Phase234 라이브판정: 페이지M1·게시판M=총건수정적추출·O 전부 미부착(koddi KOGL전무)·open.go.kr=사이트·N몽타주(영상=홍보영상vod/교육자료동영상/온라인교육·어문이미지=CI/캐릭터/오시는길지도/간행물표지/봉사사진/홍보자료). 풀리빌드(스타일copy·D섹션·E그룹 재병합·K링크 전행재적용·B 1~104 재부번·행높17). 검증 PASS(B연속·중복URL0·병합겹침0·계층구멍0·K링크104=104·헤더병합유지). 신규44행+self14 F1 하늘색. 백업 _backup_LNB전개전_2026-06-23. 보드 행수66→104. ⚠️검수영역: total_care_news=AJAX목록 M0(브라우저검수)·신규 N=몽타주추정. 미검수.
- ✅한국자산관리공사(공공기관3-6) 본문탭 ul.list-N 전수전개 완료 (2026-06-23 11:35) => 사용자 "17행(오시는길) li.list-4 탭 자식수집+17행~끝 전수". kamco LNB 본문탭=`li.list-N>a`(active=`a.on`)·정적fetch는 해당분기 최심 list-N만 렌더. 17행~끝 전 URL 재귀크롤→**17앵커 신규탭그룹**(전부 self('on')≠leaf=자식G전개·손자탭 없음). **130→173행(+43, 자식60-앵커17)**. 앵커 mId(…0000)는 첫자식으로 리다이렉트하는 랜딩이라 원행 대체(자식이 승계). L/M/N/O=**Playwright 렌더 실측**: 게시판M=번호열/총건수(정적 오검출 교정—점검결과3568→19·윤리현황3541→10·공지1004→2·갤러리 수상작68·캠코홍보영상8 원본일치)·페이지N=렌더이미지 실측크기(≥140×100·UI/도식 제외)로 어문/어문,이미지·O=KOGL마크 전무 전부 미부착. 풀리빌드(eff fill-down 부모변경시 하위리셋·스타일copy·D~J 동일값런 재병합·K링크 전행재적용·B1~173 재부번). 신규 G/K/L/M/N/O 하늘색(60자식×, 06-22 조직안내 파란셀 보존). 검증 PASS(B연속·병합겹침0·DJ외0·계층구멍0·K173=173·앵커행잔존0·헤더유지). 백업 _backup_탭전개전_2026-06-23. 보드 130→173. ⚠️**검수영역**: ①게시판N=어문 기본(수상작=건축수상작 사진→어문,이미지 가능·영상자료 자식[캠코홍보영상·사회공헌활동영상]=영상콘텐츠→영상 포함 가능) ②페이지 bigimg=1 경계행(오시는길자식·동반성장추진체계·개인정보처리방침류)=도식이면 어문 ③**부모카테고리명이 자식명과 동일/유사 3건**(서비스 이행표준점검결과·데이터 안심구역 이용신청·개인정보처리방침=원 랜딩이 리다이렉트대상 자식명으로 라벨됨)→부모명 보정 사용자판단 필요.
- ✅한국자산관리공사(공공기관3-6) 랜딩셸 삭제 완료 (2026-06-23 11:12) => 06-21 `--safe` collapse가 보존했던 **게시판/페이지 상속·리다이렉트 셸 6곳 삭제**: 수상경력(0106000000)·신고센터(0504000000)·공사소식(0701000000)·홍보자료(0702000000)·매체광고(0703000000)·발간자료(0705000000). 전부 부모 mId 인덱스→첫자식으로 자동 리다이렉트 확인(requests resp.url 대조)·M값=첫자식과 동일=상속셸. 1-5e/1-5d 적용, 셸행 삭제·E카테고리 라벨은 자식 그룹에 보존. + **유령 빈행(B순번만137~169, 06-21 --safe가 내용만 비우고 남긴 33행) 정리**. 풀리빌드(eff값 부모변경시 하위리셋 fill-down·스타일copy·D~J 동일값런 재병합·K링크 전행재적용·B 1~130 재부번). **169→130행**(실내용 136-셸6=130). 검증 PASS(B연속1~130·병합겹침0·DJ외병합0·계층구멍0·K링크130=130·셸URL전무·헤더B1:R1/S1:W1/Y1:AA1 유지). 백업 _backup_랜딩셸삭제전_2026-06-23. 보드 행수 169→130. 미검수.
- ✅한국임업진흥원(공공기관3-5) 목재제품정보 tab01 전개분 동기화충돌 복구 완료 (2026-06-23) => 06-22 목재제품정보 15탭(제재목~숯,목초액 mc_cd=1~15) 전개분이 OwnCloud **conflicted copy로 밀려나고** 라이브엔 미전개168행만 잔존(엑셀 열린채 동기화→충돌). 두 파일 전체 diff결과 **차이=이 전개 1건뿐**(사용자 추가편집 없음). 충돌본(182행) 검증 PASS(B연속1~182·병합겹침0·K링크불일치0)→**라이브 승격**(168→182행). 라이브검증: 목재제품정보 r37~51 15자식·전부 페이지M1/어문,이미지/미부착. 백업 _backup_충돌복구전_168행·충돌본은 _conflict_복구완료_2026-06-22.xlsx.bak로 보존. ⚠️교훈: 클로드 작업중 해당 엑셀 열어두면 OwnCloud 충돌로 저장분 유실 가능→작업중엔 파일 닫아두기.
- ✅한국인터넷진흥원(공공기관3-4) 빡센 검수 → 검수완료 (2026-06-23 11:30) => ①구조 PASS: B 1..157 재부번(원수집번호 비연속 정리·145건·병합/타열 불변)·C빈칸0·계층구멍0·병합겹침0·헤더OK·K0. ②GNB(homepage 130경로 대조): 누락후보 28개 전부 정상 판정 → 동향분석/정기간행물/실태조사 분류탭18=전체탭 1행통합(전체=1행)·**사전정보공표(/501)=전체 콘텐츠페이지라 부서별 하위(9010101~) 1행유지**(사용자확정 06-23, 보강불요)·푸터701~704 제외. ③N대조(전157행 렌더): UNDER_IMG~20=사업소개 추진방향 체계도/인포그래픽(도식)=어문 정확·OVER_IMG3=도구오탐(board list·CI SVG)·실사진누락0 → N 이상없음. → 서식정규화(채움색0·행높17·K좌측·값/링크/병합 보존검증 B만변경)+Y/Z/AA 157행(프2·06-23)+보드 ☑검수완료·행수97→157·검수완료일06-23·비고 KOGL0→발간물7정정·양식검수통과(157행). **전체뷰=1행 규칙 수집·검수 스킬 양쪽 반영**. 백업 _backup_B재부번전·_backup_YZAA전·보드 _backup_KISA검수완료전.
- ✅한국인터넷진흥원(공공기관3-4) 공공누리 부착 게시판 5곳 O/P/Q 보정 (2026-06-23 09:57) => 사용자 "14행 공공누리 부착됨 학습해 나머지 전수확인". KISA 공공누리=상세 서버HTML `<div id="koglOpen">N</div>`값(koglOpen.js렌더·게시물단위·매우희소 40~120건당1~4건). 전 게시판30·페이지126 전수스캔→발간물/연구/조사/가이드라인류만 부착. **미입력 5곳 보정**(메뉴라벨 실페이지 활성메뉴 일치검증 완료): r13연구보고서·r15정기간행물·r19가이드라인·r20안내서=4유형 / r21사례집,편람등=2유형 (전부 P=게시물·Q=N, O·P칸 FF00B0F0). r14동향분석·r16실태조사=사용자기입유지. 역대발간물(120건무검출)·행정소식게시판·전페이지=미부착확정.
- ✅한국자산관리공사(공공기관3-6) 조직안내(0104020000) 본문탭 3개 자식전개+랜딩셸삭제 완료 (2026-06-22) => 조직안내(F,페이지)에 ul.list-3 탭[조직안내도0104020100(self/on)·부서·업무내용및연락처0104020200·운영위원회0104020300]. self탭(조직안내도)≠메뉴leaf(조직안내)→**자식(G)전개**, 원 조직안내 랜딩행(0104020000,어문) 삭제(조직안내도가 그 랜딩 실콘텐츠). F=조직안내 카테고리로 3행 병합(F14:F16). 라이브판정: 전부 페이지/M1/미부착(KOGL마크·텍스트 전무)·N=조직안내도 어문(조직도=인포그래픽, 임원초상은 클릭팝업·원 어문유지)/부서연락처 기타(부서선택·연락처디렉터리 dept/list.do)/운영위원회 어문(위원명단 표). **167→169행(+2 순증)**. 풀리빌드(eff값캡처·스타일copy·D~J 동일값런 재병합·K링크 전행재적용·B 1~169 재부번). 시안 TODO마커(FF00B0F0 행14) 제거→신규/변경셀 하늘색(FFBDD7EE). 검증 PASS(B연속·병합겹침0·계층구멍0·K링크136=136·헤더병합유지·0104020000 부재). 백업 _backup_조직안내탭전개전. 보드 행수170→169. 미검수.
- ✅한국임업진흥원(공공기관3-5) 목재제품정보(tech_02.do) tab01 누락분 전개 완료 (2026-06-22) => sweep는 검출했으나 전개 GROUPS에서 누락된 1그룹(15탭 제재목~숯·목초액 ?mc_cd=1~15·각 페이지M1·어문,이미지·미부착). 백업r21 G[21] CHILD 추가 풀리빌드. **168→182행(+14 순증, 목재제품정보=카테고리 흡수)**. 검증 PASS(B연속1~182·계층구멍0·K불일치0·merge겹침0). 신규73행+변경 sky-blue. 백업 _backup_목재제품정보전. ⚠N=어문,이미지 추정(제품사진, 미검수영역).
- ✅한국임업진흥원(공공기관3-5) 사전정보공표 div.tab01 5탭 하위전개 + r7~끝 전수 tab01 스캔·전개 완료 (2026-06-22) => 사용자 "사전정보공표 div.tab01 하위수집+사전정보공표부터 끝까지 이 탭 있는지 재수집". **전수스캔 결과 tab01_xN이 사이트 전역 22그룹에 존재**(사전정보공표 외에도 데이터개방·임산물정보·통계·수출·기술이전·주요사업·윤리경영 등). 22그룹 전개: 20=CHILD(메뉴leaf=카테고리, self탭+신규탭 G자식)·2=SIBLING(임산물정보·청탁금지서약, self==leaf). **110→168행(+58)**. self탭 라벨≠leaf면 자식·==이면 형제 규칙 적용. 풀리빌드(eff값캡처·스타일copy·D~J 계층 동일값런 재병합·K링크 전행재적용·B 1~168 재부번). O=전 사이트 KOGL마크 전무→전부 미부착(확인). 신규게시판 M=정적추정(검수영역). 검증 PASS(B연속·병합겹침0·DEF구멍0·K링크불일치0·OOB병합0). 신규58행+변경 sky-blue. 백업 _backup_tab01전개전. ⚠️**주요사업 섹션 기존 데이터품질 문제 보고**: r95(목재)/r107(산림분야 인재육성) 둘 다 introduceInfo_01.do, r102/r108 둘 다 introduceInfo_47.do=중복URL+라벨불일치(목재/석재/임산물 라벨이 실제 서비스탭명과 불일치)→첫 occurrence만 전개·중복은 skip, 라벨은 미수정(별도 GNB재수집 필요). ⚠️#앵커 분류탭(재배기술매뉴얼 tech_03·인증현황 certInfo_02=전체탭有 게시판)은 전개 안 함(기존 1행 유지).
- ✅한국의료분쟁조정중재원(공공기관3-2) 빡센검수 완료·검수완료스탬프(2026-06-22 19:10) => ①구조 PASS(D구멍0·병합겹침0·헤더B1:R1/S1:W1/Y1:AA1·시트명·K이슈0). B/C자동정리(B 1..90 재부번[45/46/None갭해소]·C r63채움). ②GNB(k-medi.or.kr)대조: 8대분류 정확일치·시트가 메가메뉴보다 깊게 전개(sublink 자식 전부)·콘텐츠 누락0. **GNB누락 2건=수용가능 정상누락**(나의사건조회 D=의료분쟁 조정/중재=로그인개인서비스/login리다이렉트·국민신문고 D=알림마당>E=신고센터=외부 epeople 민원포털). 사용자판정 "정상누락→검수완료". ③N: 06-21 사용자 몽타주 확정(어문71/이미지11/영상6/없음3) 유지·추가 critical0. → 서식정규화(채움색0·행높17·K좌측·값/링크/병합32 보존검증PASS)+Y/Z/AA 90행(프2·06-22)+보드 ☑검수완료·행수123→90·검수완료일06-22·양식검수통과(90행). 백업 _backup_BC정리전/_서식정규화전/_YZAA전·보드 _backup_의료분쟁검수완료전.
- ✅한국인터넷진흥원(공공기관3-4) 동향분석 sub_tab_menu 하위메뉴 전개 + 14행~끝 전수 탭스캔 완료 (2026-06-22) => 사용자 "동향분석(/20207)에 ul.sub_tab_menu 8탭, 하위메뉴로 수집하고 동향분석부터 끝까지 또 이런 탭 있는지 분석". **핵심: KISA는 `selectTabList.do?menu_seq=N&lang_type=KO` AJAX로 거의 모든 페이지에 `ul.sub_tab_menu` 렌더(정적fetch엔 JS템플릿만)**. 14~끝 전수 AJAX스캔→48개 탭그룹. **판별: 신규탭=기존시트에 prefix-부모로도 없는 seq → EXPAND, 나머지(LNB 형제메뉴, 이미 시트행)=SKIP**. **29그룹 전개 +89행(97→186)**. 전부 self≠leaf 자식모델(leaf=카테고리, self탭=기존행 유지+신규탭 자식). 동향분석>8자식(전체동향20207 M1019=union + 사이버위협34/랜섬31/법제264/개인정보245/글로벌179/위치229/글로벌디지털38)·정기간행물>6·실태조사통계>8(KISIA외부=사이트)·법령가이드라인의 가이드라인/안내서>각6·5개본부 F메뉴들>각 G자식·정보공개안내/자체경영공시(일반현황/기관운영/내외부감사)/사회공헌/과제계획/기술이전/비전목표/찾아오시는길 등. 신규 게시판M=totalNum 정적추출·페이지M1·O=전부미부착(KISA 96/97행 미부착 확인, footer kogl마크 무시). **풀리빌드**(효과값캡처·스타일copy·D~J 계층 동일값런 재병합·K링크 전행재적용·B 1~186 재부번·행높이17). 검증 PASS(B연속·병합겹침0·DEF구멍0·K링크불일치0·헤더유지). 신규/변경셀 하늘색. 백업 _backup_동향분석탭전개전. ⚠️**검수영역**: 신규행 N=어문 기본(20306 사이버보안데이터이슈리포트만 포토형→어문,이미지 상향)·정기간행물 발간물 children(KISA Insight/백서/리포트)은 표지썸네일 가능성→어문,이미지 검수권장·신규게시판 M=정적추정. ⚠️동향분석 전체동향(1020)=7하위 합집합이나 사용자 명시지시("8탭 하위수집")대로 전체동향 포함 8자식 전개(스킬 "전체있으면1행만" 기본규칙보다 사용자지시 우선). SKIP 19그룹=LNB 형제(역대발간물/알림마당10/환경사회투명경영13/KISA소개10/각 본부소개 등 이미 별도행).
- ✅한국의약품안전관리원(공공기관3-3) 빡센검수 완료·검수완료스탬프(2026-06-21) => 구조PASS·B/C자동정리(B1..75·Cr33)·GNB 9대재구조화 누락0·N몽타주(인사말/역대기관장 인물사진 정확). 사용자판정: b오프라인보고 기타=링크전용 정상(스킬 수집·검수 양쪽 업뎃: 주목적 링크/연락처면 설명있어도 기타)·c r39/r57 현상정상. ⓐr71 고객헌정→고객헌장 오타는 잔존(제출전 보정권고). → 서식정규화(채움색0·행높17·K좌측)+Y/Z/AA 75행+보드 ☑검수완료·행수86→75. 백업 _backup_BC정리전/_검수완료전/_YZAA전.
- ✅한국의료분쟁조정중재원(공공기관3-2) 23행~끝 N재작성+P/Q비움 완료 (2026-06-21) => 사용자 r3~22 기준 학습(video=영상·흐름도/도식/로고/캘리=어문·실사진/CI/캐릭터/간행물/카드뉴스/웹툰=이미지·M0빈게시판=없음). 몽타주 시각판정. **N 17행 변경**(과다 어문,이미지 정정+누락 이미지 추가), r3~22 N 0변경 보존. **O 전부 미부착→P/Q 45행 비움**(전 행). K/L/M 무변경. 백업 _backup_N재작성전. 사용자 확정: 경계 Excel23행(B21) OK·공지/보도 어문 맞음·**장식스톡사진(r38·43·78·80·84)=어문 정정, 원장사진 r81만 어문,이미지 유지**. 최종 N 어문71·이미지11·영상6·없음3(이미지=안내서/CI/캐릭터/원장/간행물4/카드뉴스/웹툰/공모전만). 백업 _backup_장식사진어문전.
- ✅공공기관3 전체(13곳) 랜딩셸(1-5e) 삭제 `--safe` 완료 (2026-06-21) => `_스크립트\_collapse_landing.py run --safe <경로>`·각 폴더 백업 `_backup_랜딩제거전`. **합계 211행 제거**(원자력9·의료분쟁30·의약품10·인터넷진흥0·임업9·자산관리33·잡월드2·장기조직5·장애인개발6·장애인고용11·장학재단61·재정정보10·저작권보호25). 13곳 전부 병합겹침0·B연속 검증통과. 대량(장학재단61등)은 D대분류 셸 자식라벨승계 포함.
- ✅git push(b0acd1e) 후 로컬 정리: 공공기관2·제출폴더·_temp·_backup·__pycache__·세션임시파일 삭제, 공공기관3/참고파일/작업현황/_스크립트/기관리스트 보존 (2026-06-21) => 삭제분 전부 원격(main b0acd1e) 백업됨·삭제는 미커밋(원격=백업).
- ✅전체 사이트 D~J 카테고리 셀병합 정상화(off-by-one/누락/고아셀)+KDHC행높이17 일괄 (2026-06-21) => 안전 재병합툴 `_스크립트\_remerge.py`(C사이트명 경계·고아필down·값/스타일/K링크/B/L/M/N 보존·자체검증 실패시 롤백·파일별 `_backup\*_backup_셀병합전`). **KDHC**(작업본+제출본): 24병합+F98="동반성장"고아+행높이17. **기존문서(작업본 공공기관2/3 29개)**: 4개 변경(청소년정책2·청소년활동1·지능정보4·장기조직기증원5). **제출문서 65개**: 9개 변경(부여군 21/66고아·교육청3·국토교통과기진1·공공기관2 3개). 나머지는 이미 정상병합. **제외**: 기관리스트.xlsx(D~AA 아님)·**참고파일 취합본 2개(사용자 "취합본 말고 공공기관2+오늘 제출만"으로 최종 미적용)**. ✅최종범위 재검증: 공공기관2 작업본 17 + 오늘(06-21) 제출 17 = 전부 병합완료(미병합잔여0). ⚠️시군/공공기관1차 작업본은 이 PC에 없어 제출본만 적용. 부여군 고아필(부서명 G 미병합→자치행정과 등 정상병합)=원본대조 검증OK·롤백가능. 검증 fail=0. => **행높이 전행(240) 17 적용 완료**(default도 17, 백업 _backup_행높이17전). **EFG/전체경로 중복행 0건**(각 메뉴경로 유니크·같은EFG는 H레벨 형제=정상계층). 콘텐츠동일 교차링크 2쌍(신재생에너지 r74/r205·환경친화설비 r66/r209)만 실중복→**병합 안 함, 사용자 결정대기**.
- ✅한국지역난방공사(공공기관2-10) 고객센터 누락 새창포털행 추가 완료(2026-06-21) => D=고객센터 누락 GNB 12행(고객서비스헌장·고객마당열/전기·상담FAQ/상담하기/고객제안·RPS·불편/친절불친절신고·민원부패공익신고/하도급/예산낭비) 사이트행 삽입·블루. 226→238행. B연속·겹침0·K0·DEF구멍0. 백업 _고객센터누락행추가전.
- ✅한국지역난방공사(공공기관2-10) 검수완료 + 검수스킬 GNB리프커버리지 업뎃 완료(2026-06-21) => 사용자 "검수 잘했다, 앞으로 검수해줘 하면 이렇게, 스킬업뎃+검수완료". ①**스킬 ② GNB섹션에 '리프 전수 커버리지 대조' 추가**(GNB 전메뉴 리프 라벨정규화→시트 차집합으로 누락 전수검출·정확 D>E>F 뎁스보고·새창=사이트·일부새창수집/일부누락 불일치 잡기·누락행 채우면 collection). ②kdhc **검수완료**: 238행(고객센터 새창12행 추가포함). ⚠️**복구이슈**: _add_missing 후 delete_rows+_fill_YZAA 다중저장이 신규E병합행 손상(F값소실·행붕괴 238→232)→pre-add백업서 **content-only 단일패스 재빌드**(빈행 emit안함·Y/Z/AA 같은저장에 기입, delete_rows·_fill_YZAA 미사용)로 복구. 재로드검증 PASS(238행·B연속·겹침0·K0·DEF구멍0·Y누락0·새창12행 F/파랑/Y정상). Y/Z/AA 238(프2·06-21)·현황판 ☑검수완료·행수224→238. 백업 _고객센터누락행추가전·_손상본_검수전·보드 _backup_지역난방검수완료전. 교훈: **신규 병합행 삽입 후 delete_rows 금지(병합손상)·다중 load/save 회피·content-only 단일패스가 안전**.
@ -154,6 +203,7 @@
---
## ✅ 클로드완료 (확인 대기)
- ✅한국원자력환경공단(공공기관3-1) 빡센 검수→검수완료 (2026-06-24) => B/C정리+읽기전용 D~분석. **①구조 PASS**(헤더병합 B1:R1/S1:W1/Y1:AA1·C0·K0·계층구멍0·병합겹침0·B결번6개[14·64·102·149·157·159]→1~214재부번). **②GNB 라이브 전체메뉴(Depth1~4 m_li) 302노드/219리프 전수대조**: 유령0·누락5 전부 신청/조회 개인서비스(채용알림신청·방사선측정/테스트베드 서비스신청·방문신청확인·대관신청확인=loginish 폼)→발주#15 정상제외. _blank 4그룹(윤리규정/행동강령/공익신고지침 alio·청렴포털·사규·정보공개청구)=시트 사이트행 일치. **③N대조 48이상치 전부 비critical**: UNDER_IMG34=전부 도식/체계도/차트/장식그래픽(육각KORAD·플로우·공공데이터차트·고객헌장그래픽)=어문 정확(실사진 누락 0). OVER_IMG14=대부분 정확(r200역대이사장 111×150인물사진·r116사진첩/r199활동사진 236×157갤러리·보도/공지 게시판 상세이미지)→도구 크기필터/목록만렌더 한계. r154방문신청·r155코라디움대관·r162자산운용성과만 실이미지0 경미과표시(비critical, 사용자판단). **④O 전부미부착·KOGL마크 표본스캔0=KOGL0 타당.** 마감: B재부번+서식정규화(_fmt --apply 행높17·3행~끝색제거·K좌측/그외가운데)+Y/Z/AA 214행(프2·2026-06-24)+현황판 row1 ☑️검수완료/완료/231→214/06-24/비고 양식검수통과+완료폴더 이동(공공기관3/완료/1.한국원자력환경공단). 백업 _backup_검수완료전_2026-06-24·_YZAA전·_서식정규화전·보드 _backup_원자력검수완료전. 잠금.
- ✅한국지식재산연구원(공공기관2-9) 검수완료 처리(2026-06-19) => 구조검수 PASS(207행·ISSUES0). ⚠️내 확장작업이 깬 헤더병합(B1:R1·S1:W1·Y1:AA1) 복원+B 1~207 재부번+C채움(양식정리). GNB 100리프 전수대조=누락0(해외법령·ito 포함, ito는 사용자가 M=하위수로 처리). N 8종 유효(어문122·어문이미지80·기타2)·사이트tail clean·O미부착. 처음 205로 오집계(B빈칸 콘텐츠행 누락)→사용자 지적 후 실제 207로 재부번·Y/Z/AA 207행 재기입. 현황판 9번=☑검수완료·행수207·2026-06-19. ⚠K하이퍼링크 2행(사용자 추가분) 미활성=경미(값은 정상).
- ✅한국지식재산연구원(공공기관2-9) GNB 직접대조 검수 완료(2026-06-19, 읽기전용) => 라이브 ul.depth1 메가메뉴 100리프 전수 추출·시트 대조. **GNB 전부 커버(누락0)**. 전 205페이지 ul.sub/tabs/tab1/tab_list+javascript 서브내비 스캔: 숨은 패턴은 get_data(해외법령)·get_ito_data(국제조약/기구) 2종뿐, **둘 다 사용자가 M=하위수로 이미 처리**. ito 검증=FTA개요3·WIPO개요3·IGC50 일치, FTA주요현황35=전체38상태헤더3(발효/협상중/재개여건) 정확. 푸터(회원약관·개인정보처리방침·사이트맵)는 정책/유틸리티라 미수집 정상. **추가 누락 없음. 파일 미변경.**
- ✅한국지식재산연구원(공공기관2-9) 공모전History 연도탭+우수논문상 연도탭 전개 완료(2026-06-19) => ①공모전History 20개 연도 각각 ul.tabs(수상작현황/워크숍/시상식/해외연수 등 연도별3~4탭) 하위전개=73리프(history{Y}.do/_2/_3/_4). N: 수상작현황·수상자명단=어문, 워크숍·시상식·해외연수=어문,이미지(몽타주로 실사진 확인). ②우수논문상(best_award.do) ul.tab1 연도탭 2025~2012=14행(best_award{Y}.do, N=어문,이미지 수상자사진). **140→207행(+67)**. 페이지M1·미부착·풀리빌드 SNAP재병합·블루·B1~207·하이퍼링크보존·백업.

View File

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""검수완료·미제출 통계 (날짜별·프리랜서별). 읽기전용.
"""검수완료·미제출 통계 + 공공기관3 현황판 전체표 (날짜별·프리랜서별). 읽기전용.
사용: python _통계.py
대상: 작업현황.xlsx (검수=완료 AND 제출완료!=완료)
대상: 공공기관3_작업현황.xlsx
"""
import sys, os
from collections import defaultdict
@ -9,35 +9,33 @@ import openpyxl
sys.stdout.reconfigure(encoding="utf-8")
BASE = os.path.dirname(os.path.abspath(__file__))
# 광역 작업현황.xlsx는 정리(삭제)됨 → 공공기관2 현황판 기준(2026-06-18)
XLSX = os.path.join(BASE, "공공기관2", "공공기관2_작업현황.xlsx")
# 광역·공공기관2 현황판은 정리됨 → 공공기관3 현황판 기준(2026-06-23)
XLSX = os.path.join(BASE, "공공기관3", "공공기관3_작업현황.xlsx")
wb = openpyxl.load_workbook(XLSX, data_only=True)
ws = wb["현황"] if "현황" in wb.sheetnames else wb.active
hdr = [c.value for c in ws[1]]
gi = lambda n: hdr.index(n)
rows = []
allrows = [] # (번호, 기관, 검수값, 행수, 담당자, 제출완료, 검수완료일)
for r in ws.iter_rows(min_row=2, values_only=True):
if not r[gi("기관")]:
continue
if r[gi("검수")] == "완료" and r[gi("제출완료")] != "완료":
rows.append((str(r[gi("검수완료일")] or "")[:10], r[gi("담당자")], r[gi("기관")], r[gi("행수")] or 0))
rows.sort(key=lambda x: (x[0], x[1]))
# 프리랜서 라벨 정규화(충남/충북=프1, 전북/제주=프2 표기 보조)
dates = sorted({d for d, *_ in rows})
frees = ["프리랜서1", "프리랜서2"]
allrows.append((r[gi("번호")], r[gi("기관")], r[gi("검수")], r[gi("행수")] or 0,
r[gi("담당자")], r[gi("제출완료")], str(r[gi("검수완료일")] or "")[:10]))
# ── 표1: 검수완료 · 미제출 (날짜별·프리랜서별) ──
done_unsub = [(d, f, name, n) for (no, name, insp, n, f, sub, d) in allrows
if insp == "완료" and sub != "완료"]
done_unsub.sort(key=lambda x: (x[0], str(x[1])))
dates = sorted({d for d, *_ in done_unsub})
bydate = defaultdict(lambda: defaultdict(list))
byfree = defaultdict(lambda: [0, 0])
for d, f, name, n in rows:
for d, f, name, n in done_unsub:
bydate[d][f].append((name, n))
byfree[f][0] += 1
byfree[f][1] += n
def cell(items):
return ", ".join(f"{nm} {n}" for nm, n in items) if items else ""
cell = lambda items: ", ".join(f"{nm} {n}" for nm, n in items) if items else ""
print("## 검수완료 · 미제출 통계\n")
print("### 📅 날짜별 · 프리랜서별\n")
@ -52,15 +50,17 @@ for d in dates:
tot_cnt += day_cnt
tot_row += day_row
print(f"| {d} | {cell(c1)} | {cell(c2)} | {day_cnt}곳 · {day_row:,}행 |")
s1 = byfree.get("프리랜서1", [0, 0])
s2 = byfree.get("프리랜서2", [0, 0])
s1 = byfree.get("프리랜서1", [0, 0]); s2 = byfree.get("프리랜서2", [0, 0])
print(f"| **소계** | **{s1[0]}곳 · {s1[1]:,}행** | **{s2[0]}곳 · {s2[1]:,}행** | **{tot_cnt}곳 · {tot_row:,}행** |")
print("\n### 👤 프리랜서별 요약\n")
print("| 프리랜서 | 기관 | 행수 |")
print("|---|---|---|")
for f in frees:
items = [(nm, n) for d in dates for nm, n in bydate[d].get(f, [])]
names = ", ".join(f"{nm}({n})" for nm, n in items) if items else ""
print(f"| {f} | {names} | **{byfree.get(f,[0,0])[1]:,}** |")
print(f"| **합계** | **{tot_cnt}곳** | **{tot_row:,}** |")
# ── 표2: 공공기관3 현황판 전체 (번호 1~끝, 검수/미검수) ──
n_done = sum(1 for x in allrows if x[2] == "완료")
n_todo = len(allrows) - n_done
sum_row = sum(x[3] for x in allrows)
print(f"\n## 공공기관3 현황판 (전체 {len(allrows)}곳 · 검수완료 {n_done} / 미검수 {n_todo})\n")
print("| 번호 | 기관 | 검수 | 행수 |")
print("|---|---|---|---|")
for no, name, insp, n, f, sub, d in allrows:
mark = "☑️ 검수완료" if insp == "완료" else "⬜ 미검수"
print(f"| {no} | {name} | {mark} | {n:,} |")
print(f"| **계** | **{len(allrows)}곳** | **완료 {n_done} · 미검수 {n_todo}** | **{sum_row:,}** |")

View File

@ -1,121 +0,0 @@
# -*- coding: utf-8 -*-
"""kesco N 재판정 — 67~끝 행: 본문(.contents) 콘텐츠이미지/영상 탐지 + 몽타주.
사용자 3~66 학습기준: 실사진·지도·시설/서비스 사진 있으면 어문,이미지 / 순수텍스트·조직도·텍스트목록게시판=어문.
출력: _nshots\ (rN.png + montage_*.png) + plan.json
"""
import sys, os, re, json, glob, warnings
import openpyxl
from PIL import Image, ImageDraw, ImageFont
warnings.filterwarnings('ignore')
HERE = os.path.dirname(os.path.abspath(__file__))
XLSX = os.path.join(HERE, '한국전기안전공사.xlsx')
OUT = os.path.join(HERE, '_nshots')
UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
NOISE = re.compile(r'(ico[_\-/]|/icon|logo|btn|bul[_\-]|bg[_\-]|banner|sns|blank|spacer|loading|arrow|/dot|line[_\.]|top_|foot|header|common|_icon|symbol|copyright|qr_|no_img|noimage|share|facebook|insta|twitter|naver|kakao|/skin/|/template/|/resources/|/images/common|/img/comm)', re.I)
JS = r"""()=>{
const cont=document.querySelector('#contents,.contents,#content,.content,.sub_content,.sub_contents,#sub_content,#container')||document.body;
const imgs=[];
for(const i of cont.querySelectorAll('img')){const r=i.getBoundingClientRect();
imgs.push({src:i.currentSrc||i.src||'',alt:(i.alt||''),rw:Math.round(r.width),rh:Math.round(r.height),nw:i.naturalWidth,nh:i.naturalHeight});}
let vid=0;
if(cont.querySelector('video,source[src*=".mp4"]')) vid++;
for(const f of cont.querySelectorAll('iframe')){const s=f.src||'';if(/youtube|youtu\.be|vimeo|player\./i.test(s))vid++;}
return {imgs,vid};
}"""
DIAG = re.compile(r'(조직도|체계도|순서도|흐름도|구성도|개념도|절차도|한눈에|자세한)')
def real_imgs(items):
out = []
for it in items:
src = it.get('src', '')
if not src or NOISE.search(src):
continue
rw, rh, nw, nh = it['rw'], it['rh'], it['nw'], it['nh']
# 렌더 ≥110x80 또는 원본 ≥200x150 (장식 제외)
if (rw >= 110 and rh >= 80) or (nw >= 200 and nh >= 150 and rw >= 80):
out.append(it)
return out
def run():
wb = openpyxl.load_workbook(XLSX); ws = wb.active
os.makedirs(OUT, exist_ok=True)
targets = []
for r in range(67, ws.max_row + 1):
if ws.cell(r, 2).value is None:
continue
L = ws.cell(r, 12).value or ''
url = ws.cell(r, 11).value
if L == '사이트':
continue
if not (url and isinstance(url, str) and url.startswith('http')):
continue
targets.append((r, url, L))
print(f'대상 {len(targets)}행 렌더…')
from playwright.sync_api import sync_playwright
plan = []; shots = []
with sync_playwright() as p:
b = p.chromium.launch()
pg = b.new_page(user_agent=UA, viewport={'width': 1280, 'height': 2000})
for idx, (r, url, L) in enumerate(targets):
rec = {'row': r, 'url': url, 'L': L}
try:
pg.goto(url, timeout=25000, wait_until='domcontentloaded')
pg.wait_for_timeout(1600)
d = pg.evaluate(JS)
ri = real_imgs(d['imgs'])
rec['vid'] = d['vid']
rec['nimg'] = len(ri)
rec['samples'] = [f"{it['src'].split('/')[-1][:24]} {it['rw']}x{it['rh']} a={it['alt'][:14]}" for it in ri[:5]]
if len(ri) == 0 and d['vid'] == 0:
rec['auto'] = '어문'
else:
rec['auto'] = 'candidate'
sp = os.path.join(OUT, f'r{r}.png')
try:
cont = pg.query_selector('#contents,.contents,#content,.content,.sub_content,#container')
(cont or pg).screenshot(path=sp)
except Exception:
try: pg.screenshot(path=sp, full_page=False)
except Exception: pass
if os.path.exists(sp):
shots.append((r, L, rec.get('vid'), sp))
except Exception as e:
rec['auto'] = '어문'; rec['err'] = str(e)[:40]
plan.append(rec)
if (idx + 1) % 20 == 0:
print(f' {idx+1}/{len(targets)}')
b.close()
# 몽타주
try: font = ImageFont.truetype('malgun.ttf', 18)
except Exception: font = ImageFont.load_default()
cols, cw, ch = 4, 320, 420; per = cols * 5
mps = []
for gi in range(0, len(shots), per):
chunk = shots[gi:gi + per]
rn = (len(chunk) + cols - 1) // cols
cv = Image.new('RGB', (cols * cw, rn * ch), 'white'); dr = ImageDraw.Draw(cv)
for j, (r, L, vid, sp) in enumerate(chunk):
try:
im = Image.open(sp).convert('RGB'); im.thumbnail((cw - 8, ch - 30))
except Exception: continue
cx, cy = (j % cols) * cw, (j // cols) * ch
cv.paste(im, (cx + 4, cy + 26))
dr.rectangle([cx, cy, cx + cw - 1, cy + ch - 1], outline='gray')
tag = f'r{r} {L}' + (' VID' if vid else '')
dr.text((cx + 4, cy + 4), tag, fill='red', font=font)
mp = os.path.join(OUT, f'montage_{gi//per+1}.png'); cv.save(mp); mps.append(mp)
json.dump(plan, open(os.path.join(OUT, 'plan.json'), 'w', encoding='utf-8'), ensure_ascii=False, indent=1)
amun = sum(1 for x in plan if x['auto'] == '어문')
cand = sum(1 for x in plan if x['auto'] == 'candidate')
vid = sum(1 for x in plan if x.get('vid'))
print(f'자동 어문 {amun} | 후보(이미지/영상) {cand} | 영상감지 {vid} | 몽타주 {len(mps)}')
for mp in mps: print(' MONT:', mp)
if __name__ == '__main__':
run()

View File

@ -1,132 +0,0 @@
# -*- coding: utf-8 -*-
"""kesco N 재판정 v2 — 본문(.contents) 이미지 '원본크기' 기준 수집 + 실제 이미지 다운로드 몽타주.
렌더 0x0(/지연로딩) 이미지도 원본크기로 포착. 영상도 탐지.
출력: _nshots2\ (이미지 다운로드 + montage_*.png) + plan2.json
"""
import sys, os, re, json, warnings, io
import openpyxl, requests
from PIL import Image, ImageDraw, ImageFont
from playwright.sync_api import sync_playwright
warnings.filterwarnings('ignore')
requests.packages.urllib3.disable_warnings()
HERE = os.path.dirname(os.path.abspath(__file__))
XLSX = os.path.join(HERE, '한국전기안전공사.xlsx')
OUT = os.path.join(HERE, '_nshots2')
UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
# kesco는 콘텐츠 이미지를 /common/images/sub|office 에 둠 → 경로(/common)로 배제하면 안 됨. 파일명 기준 데코필터.
NAME_NOISE = re.compile(r'(^ico[_\-]|icon|logo|btn[_\-]|^bul|bullet|^bg[_\-]|banner|^sns|blank|spacer|loading|arrow|^dot|^line[_\.]|^top_|footer|^foot|^header|symbol|copyright|^qr|no_img|noimage|share|facebook|insta|twitter|naver|kakao|mark_)', re.I)
PATH_NOISE = re.compile(r'(/skin/|/template/|/editor/|/sample)', re.I)
JS = r"""()=>{
const cont=document.querySelector('#contents,.contents,#content,.content,.sub_content,.sub_contents,#sub_content,#container')||document.body;
const imgs=[];
for(const i of cont.querySelectorAll('img')){
imgs.push({src:i.currentSrc||i.src||'',alt:(i.alt||''),nw:i.naturalWidth,nh:i.naturalHeight});}
let vid=0;
if(cont.querySelector('video,source[src*=".mp4"]')) vid++;
for(const f of cont.querySelectorAll('iframe')){const s=f.src||'';if(/youtube|youtu\.be|vimeo|player\./i.test(s))vid++;}
return {imgs,vid};
}"""
def candidate_imgs(items):
"""원본크기 기준 실콘텐츠 이미지 후보. 마크/로고/아이콘 제외, 원본 양변 충분히 큼."""
out = []
seen = set()
for it in items:
src = it.get('src', '')
if not src or src in seen:
continue
base = src.split('?')[0].split('/')[-1]
if NAME_NOISE.search(base) or PATH_NOISE.search(src):
continue
nw, nh = it['nw'], it['nh']
if nw >= 200 and nh >= 150 and (nw * nh) >= 40000:
seen.add(src)
out.append(it)
return out
def run():
wb = openpyxl.load_workbook(XLSX); ws = wb.active
os.makedirs(OUT, exist_ok=True)
targets = []
for r in range(67, ws.max_row + 1):
if ws.cell(r, 2).value is None:
continue
L = ws.cell(r, 12).value or ''
url = ws.cell(r, 11).value
if L == '사이트' or not (url and isinstance(url, str) and url.startswith('http')):
continue
targets.append((r, url, L))
print(f'대상 {len(targets)}', flush=True)
plan = []
dl = [] # (row, label, localpath)
sess = requests.Session(); sess.headers['User-Agent'] = UA
with sync_playwright() as p:
b = p.chromium.launch()
pg = b.new_page(user_agent=UA, viewport={'width': 1280, 'height': 2000})
for idx, (r, url, L) in enumerate(targets):
rec = {'row': r, 'url': url, 'L': L}
try:
pg.goto(url, timeout=25000, wait_until='domcontentloaded')
pg.wait_for_timeout(1200)
try:
pg.evaluate("()=>window.scrollTo(0,document.body.scrollHeight)")
pg.wait_for_timeout(900)
pg.evaluate("()=>window.scrollTo(0,0)")
pg.wait_for_timeout(300)
except Exception:
pass
d = pg.evaluate(JS)
ci = candidate_imgs(d['imgs'])
rec['vid'] = d['vid']
rec['nimg'] = len(ci)
rec['imgs'] = [{'src': it['src'], 'nw': it['nw'], 'nh': it['nh'], 'alt': it['alt'][:30]} for it in ci[:6]]
rec['auto'] = 'candidate' if (ci or d['vid']) else '어문'
# 대표 이미지 최대 3장 다운로드
for it in ci[:3]:
s = it['src']
try:
rr = sess.get(s, timeout=12, verify=False)
im = Image.open(io.BytesIO(rr.content)).convert('RGB')
lp = os.path.join(OUT, f'r{r}_{len(dl)}.jpg')
im.thumbnail((360, 360)); im.save(lp, quality=80)
lab = ws.cell(r, 6).value or ws.cell(r, 5).value or ws.cell(r, 4).value or ''
dl.append((r, str(lab)[:18], lp))
except Exception:
pass
except Exception as e:
rec['auto'] = '어문'; rec['err'] = str(e)[:40]
plan.append(rec)
if (idx + 1) % 20 == 0:
print(f' {idx+1}/{len(targets)}', flush=True)
b.close()
# 몽타주 (실제 이미지)
try: font = ImageFont.truetype('malgun.ttf', 16)
except Exception: font = ImageFont.load_default()
cols, cw, ch = 5, 250, 280; per = cols * 6
mps = []
for gi in range(0, len(dl), per):
chunk = dl[gi:gi + per]
rn = (len(chunk) + cols - 1) // cols
cv = Image.new('RGB', (cols * cw, rn * ch), 'white'); dr = ImageDraw.Draw(cv)
for j, (r, lab, lp) in enumerate(chunk):
try:
im = Image.open(lp).convert('RGB'); im.thumbnail((cw - 8, ch - 28))
except Exception: continue
cx, cy = (j % cols) * cw, (j // cols) * ch
cv.paste(im, (cx + 4, cy + 24))
dr.rectangle([cx, cy, cx + cw - 1, cy + ch - 1], outline='gray')
dr.text((cx + 4, cy + 4), f'r{r} {lab}', fill='red', font=font)
mp = os.path.join(OUT, f'montage_{gi//per+1}.png'); cv.save(mp); mps.append(mp)
json.dump(plan, open(os.path.join(OUT, 'plan2.json'), 'w', encoding='utf-8'), ensure_ascii=False, indent=1)
cand = [x for x in plan if x['auto'] == 'candidate']
vid = [x for x in plan if x.get('vid')]
print(f'어문 {len(plan)-len(cand)} | 후보 {len(cand)} | 영상 {len(vid)} | 다운이미지 {len(dl)} | 몽타주 {len(mps)}', flush=True)
for mp in mps: print(' MONT:', mp, flush=True)
if __name__ == '__main__':
run()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Some files were not shown because too many files have changed in this diff Show More