Generalize retry rendering for run-002 and run-003

This commit is contained in:
kmlee1 committed 2026-04-03 17:41:42 +09:00
1 parent 62d75f53ed
commit 6cf4b2ec33
58 files changed
+1023 -1012

No files matched your search

@@ -5,9 +5,9 @@
<table style="border-collapse:collapse;font-size:12px;width:100%;max-width:900px;">
<tr style="background:#1e293b;color:white;"><th style="padding:8px;">ID</th><th style="padding:8px;">제목</th>
<th style="padding:8px;">purpose</th><th style="padding:8px;">layer</th><th style="padding:8px;">relation_type</th>
<th style="padding:8px;">영역</th></tr><tr style="background:#fff;"><td style="padding:6px 8px;text-align:center;">1</td><td style="padding:6px 8px;font-weight:700;">DX? ??? ??</td><td style="padding:6px 8px;">?? ??</td><td style="padding:6px 8px;">core</td><td style="padding:6px 8px;">goal</td><td style="padding:6px 8px;color:#333;font-weight:700;">body</td></tr>
<tr style="background:#f8fafc;"><td style="padding:6px 8px;text-align:center;">2</td><td style="padding:6px 8px;font-weight:700;">?? ?? ??(Process)? ??</td><td style="padding:6px 8px;">???? ??</td><td style="padding:6px 8px;">core</td><td style="padding:6px 8px;">process</td><td style="padding:6px 8px;color:#333;font-weight:700;">body</td></tr>
<tr style="background:#fff;"><td style="padding:6px 8px;text-align:center;">3</td><td style="padding:6px 8px;font-weight:700;">DX ?? ??? ????</td><td style="padding:6px 8px;">??? ????</td><td style="padding:6px 8px;">supporting</td><td style="padding:6px 8px;">stakeholder_effect</td><td style="padding:6px 8px;color:#333;font-weight:700;">sidebar</td></tr>
<tr style="background:#f8fafc;"><td style="padding:6px 8px;text-align:center;">4</td><td style="padding:6px 8px;font-weight:700;">?? ??</td><td style="padding:6px 8px;">?? ??</td><td style="padding:6px 8px;">conclusion</td><td style="padding:6px 8px;">conclusion</td><td style="padding:6px 8px;color:#333;font-weight:700;">footer</td></tr>
<th style="padding:8px;">영역</th></tr><tr style="background:#fff;"><td style="padding:6px 8px;text-align:center;">1</td><td style="padding:6px 8px;font-weight:700;">DX의 궁극적 목표</td><td style="padding:6px 8px;">핵심 목표 정리</td><td style="padding:6px 8px;">core</td><td style="padding:6px 8px;">goal</td><td style="padding:6px 8px;color:#333;font-weight:700;">body</td></tr>
<tr style="background:#f8fafc;"><td style="padding:6px 8px;text-align:center;">2</td><td style="padding:6px 8px;font-weight:700;">업무 수행 과정(Process)의 변화</td><td style="padding:6px 8px;">프로세스 혁신 정리</td><td style="padding:6px 8px;">core</td><td style="padding:6px 8px;">process</td><td style="padding:6px 8px;color:#333;font-weight:700;">body</td></tr>
<tr style="background:#fff;"><td style="padding:6px 8px;text-align:center;">3</td><td style="padding:6px 8px;font-weight:700;">DX 시행 주체별 기대효과</td><td style="padding:6px 8px;">보조 참조 정보</td><td style="padding:6px 8px;">supporting</td><td style="padding:6px 8px;">stakeholder_effect</td><td style="padding:6px 8px;color:#333;font-weight:700;">sidebar</td></tr>
<tr style="background:#f8fafc;"><td style="padding:6px 8px;text-align:center;">4</td><td style="padding:6px 8px;font-weight:700;">핵심 요약</td><td style="padding:6px 8px;">결론</td><td style="padding:6px 8px;">conclusion</td><td style="padding:6px 8px;">conclusion</td><td style="padding:6px 8px;color:#333;font-weight:700;">footer</td></tr>
</table>
<div style="margin-top:12px;font-size:12px;color:#555;"><b>페이지 구조:</b><br>body: topic_ids=[1, 2], weight=0.72<br>sidebar: topic_ids=[3], weight=0.18<br>footer: topic_ids=[4], weight=0.1</div></body></html>
@@ -6,8 +6,8 @@
<table style="border-collapse:collapse;font-size:12px;width:100%;">
<tr style="background:#1e293b;color:white;"><th style="padding:8px;">ID</th><th style="padding:8px;">제목</th>
<th style="padding:8px;">영역</th><th style="padding:8px;">layer</th>
<th style="padding:8px;">source_data (미리보기)</th><th style="padding:8px;">summary</th></tr><tr style="background:#fff;"><td style="padding:6px 8px;text-align:center;">1</td><td style="padding:6px 8px;font-weight:700;">DX? ??? ??</td><td style="padding:6px 8px;color:#333;">body</td><td style="padding:6px 8px;">core</td><td style="padding:6px 8px;font-size:10px;"></td><td style="padding:6px 8px;font-size:10px;color:#555;"></td></tr>
<tr style="background:#f8fafc;"><td style="padding:6px 8px;text-align:center;">2</td><td style="padding:6px 8px;font-weight:700;">?? ?? ??(Process)? ??</td><td style="padding:6px 8px;color:#333;">body</td><td style="padding:6px 8px;">core</td><td style="padding:6px 8px;font-size:10px;"></td><td style="padding:6px 8px;font-size:10px;color:#555;">DX는 상위 개념이고 BIM은 핵심 기술이다.</td></tr>
<tr style="background:#fff;"><td style="padding:6px 8px;text-align:center;">3</td><td style="padding:6px 8px;font-weight:700;">DX ?? ??? ????</td><td style="padding:6px 8px;color:#333;">sidebar</td><td style="padding:6px 8px;">supporting</td><td style="padding:6px 8px;font-size:10px;">&lt;DxEffect /> ???? ?? ???? ??</td><td style="padding:6px 8px;font-size:10px;color:#555;"><DxEffect /> ???? ?? ???? ?? DX와 GIS, BIM, Digital Twin의 관계를 시각적으로 드러낸다.</td></tr>
<tr style="background:#f8fafc;"><td style="padding:6px 8px;text-align:center;">4</td><td style="padding:6px 8px;font-weight:700;">?? ??</td><td style="padding:6px 8px;color:#333;">footer</td><td style="padding:6px 8px;">conclusion</td><td style="padding:6px 8px;font-size:10px;">고품질의 성과품, 비용 절감, 시간 단축, 의사소통에 도움이 안 되면 DX가 아니다.</td><td style="padding:6px 8px;font-size:10px;color:#555;">고품질의 성과품, 비용 절감, 시간 단축, 의사소통에 도움이 안 되면 DX가 아니다.</td></tr>
<th style="padding:8px;">source_data (미리보기)</th><th style="padding:8px;">summary</th></tr><tr style="background:#fff;"><td style="padding:6px 8px;text-align:center;">1</td><td style="padding:6px 8px;font-weight:700;">DX의 궁극적 목표</td><td style="padding:6px 8px;color:#333;">body</td><td style="padding:6px 8px;">core</td><td style="padding:6px 8px;font-size:10px;">안전과 품질: 시설물의 요구 성능을 설계-시공-운영 전 과정에서 디지털로 검증하여 안전성 확보. Copy & Paste로 하향 평준화된 성과물의 하자 최소화로 고품질 성과물 제공. 생산성 향상: Analogue 기반 업무를 Digital 기반 프로세스로 전환하여 업무 ...</td><td style="padding:6px 8px;font-size:10px;color:#555;">안전과 품질, 생산성 향상, 소통과 신뢰라는 3개 목표 축으로 DX의 목적을 설명함.</td></tr>
<tr style="background:#f8fafc;"><td style="padding:6px 8px;text-align:center;">2</td><td style="padding:6px 8px;font-weight:700;">업무 수행 과정(Process)의 변화</td><td style="padding:6px 8px;color:#333;">body</td><td style="padding:6px 8px;">core</td><td style="padding:6px 8px;font-size:10px;">생산 방식: 수작업 의존의 반복 업무에서 벗어나, SW를 활용한 체계화된 방식으로 전환. 인지·검토: 2D 도면 해석 중심에서 3D 모델 기반의 직관적 인지·검토 체계로 전환. 협업 구조: 개별 문서 중심 협업에서 데이터 통합 기반의 정보 공유·관리 협업 환경으로 전환...</td><td style="padding:6px 8px;font-size:10px;color:#555;">생산 방식, 인지·검토, 협업 구조, 검증·대응의 변화로 DX 기반 프로세스 혁신을 설명함.</td></tr>
<tr style="background:#fff;"><td style="padding:6px 8px;text-align:center;">3</td><td style="padding:6px 8px;font-weight:700;">DX 시행 주체별 기대효과</td><td style="padding:6px 8px;color:#333;">sidebar</td><td style="padding:6px 8px;">supporting</td><td style="padding:6px 8px;font-size:10px;">DxEffect 컴포넌트로 주체별 기대효과를 보조 영역에서 제시함.</td><td style="padding:6px 8px;font-size:10px;color:#555;">DX 시행 주체별 기대효과는 DxEffect 컴포넌트 영역으로 제시됨.</td></tr>
<tr style="background:#f8fafc;"><td style="padding:6px 8px;text-align:center;">4</td><td style="padding:6px 8px;font-weight:700;">핵심 요약</td><td style="padding:6px 8px;color:#333;">footer</td><td style="padding:6px 8px;">conclusion</td><td style="padding:6px 8px;font-size:10px;">고품질의 성과품, 비용 절감, 시간 단축, 의사소통에 도움이 안 되면 DX가 아니다.</td><td style="padding:6px 8px;font-size:10px;color:#555;">고품질의 성과품, 비용 절감, 시간 단축, 의사소통에 도움이 안 되면 DX가 아니다.</td></tr>
</table></body></html>
@@ -153,11 +153,11 @@
<div class="slide-title" style="grid-area: header;">DX의 시행 목표 및 기대효과</div>
<div class="area-body" style="overflow:hidden;">
<div style="width:100%; height:100%; box-sizing:border-box; font-family:Segoe UI,sans-serif; color:#0f172a; display:flex; flex-direction:column; gap:8px;"><div style="background:linear-gradient(135deg,#fff5f5 0%,#ffe8e8 100%); border:2px solid #f8a4a4; border-radius:12px; padding:12px 16px;"><div style="display:flex; gap:12px; align-items:flex-start;"><div style="font-size:24px; line-height:1; color:#f59e0b; margin-top:2px;">&#9888;</div><div style="flex:1;"><div style="font-size:12.5px; font-weight:900; color:#b42318; margin-bottom:6px;">DX? ??? ??</div><ul style="font-size:9.4px; line-height:1.5; color:#7a271a; padding-left:0; margin:0 0 6px 0; list-style:disc;"><li style="margin-left:16px; margin-bottom:5px;">고품질의 성과품, 비용 절감, 시간 단축, 의사소통에 도움이 안 되면 DX가 아니다.</li></ul><div style="font-size:9px; line-height:1.42; color:#9a3412; margin-top:4px;"><span style="font-weight:800;">?? ??</span></div><ul style="font-size:8.9px; line-height:1.42; color:#9a3412; padding-left:0; margin:2px 0 0 0; list-style:disc;"></ul><button type="button" onclick="document.getElementById('popup-evidence').style.display='flex'" style="margin-top:6px; border:none; background:#eff6ff; color:#1d4ed8; border:1px solid #bfdbfe; border-radius:999px; padding:4px 10px; font-size:10px; font-weight:700; cursor:pointer;">?? ???</button><div style="margin-top:8px; background:#991b1b; color:#ffffff; border-radius:4px; padding:5px 10px; font-size:10px; font-weight:800; word-break:keep-all;">&#8594; ? ??? ??, ??, ????? ?? ??? ?? ??</div></div></div></div><div style="background:#ffffff; border:1px solid #d6e2ef; border-radius:14px; padding:10px 12px;"><div style="font-size:14px; font-weight:900; color:#1f3b63; margin-bottom:6px;">DX ?? ??? ????</div><div style="display:grid; grid-template-columns:250px 1fr; gap:14px; align-items:start;"><div><div style="width:100%; height:210px; border:1px solid #dbeafe; border-radius:12px; background:#f8fafc; padding:12px; display:flex; align-items:center; justify-content:center;"><svg viewBox="0 0 320 220" width="100%" height="100%" aria-label="relation diagram"><circle cx="150" cy="110" r="82" fill="#1d4ed8" opacity="0.95"></circle><text x="150" y="102" text-anchor="middle" font-size="12" fill="#dbeafe">Digital</text><text x="150" y="122" text-anchor="middle" font-size="28" font-weight="800" fill="#ffffff">DX</text><circle cx="92" cy="130" r="38" fill="#f59e0b" opacity="0.95"></circle><text x="92" y="136" text-anchor="middle" font-size="18" font-weight="800" fill="#ffffff">BIM</text><circle cx="205" cy="92" r="34" fill="#06b6d4" opacity="0.95"></circle><text x="205" y="98" text-anchor="middle" font-size="16" font-weight="800" fill="#ffffff">GIS</text><circle cx="196" cy="154" r="32" fill="#f97316" opacity="0.95"></circle><text x="196" y="158" text-anchor="middle" font-size="11" font-weight="800" fill="#ffffff">Digital Twin</text></svg></div><div style="margin-top:8px; background:#dcfce7; border:1px solid #86efac; color:#166534; font-size:9px; line-height:1.3; border-radius:999px; padding:4px 10px; text-align:center;">relation diagram</div></div><div style="display:flex; flex-direction:column; gap:8px;"><ul style="font-size:9px; line-height:1.46; color:#334155; padding-left:0; margin:0; list-style:disc;"><li style="margin-left:18px; margin-bottom:6px;">고품질의 성과품, 비용 절감, 시간 단축, 의사소통에 도움이 안 되면 DX가 아니다.</li></ul><div style="margin-top:4px; border:1px solid #b9d3ff; border-radius:10px; overflow:hidden;"><div style="display:grid; grid-template-columns:1fr 86px 1fr; background:linear-gradient(135deg,#0d47a1,#1565c0); color:#fff; font-weight:800; font-size:12px; text-align:center;"><div style="padding:7px 10px;">DX</div><div style="padding:7px 6px; background:rgba(0,0,0,0.14); font-size:11px;">??</div><div style="padding:7px 10px;">BIM</div></div></div><button type="button" onclick="document.getElementById('popup-comparison').style.display='flex'" style="margin-top:6px; border:none; background:#eff6ff; color:#1d4ed8; border:1px solid #bfdbfe; border-radius:999px; padding:4px 10px; font-size:10px; font-weight:700; cursor:pointer;">??? ?? ??</button></div></div></div><div id="popup-evidence" style="display:none; position:fixed; inset:0; background:rgba(15,23,42,0.56); align-items:center; justify-content:center; z-index:9999; padding:28px;"><div style="width:min(920px, 92vw); max-height:88vh; overflow:hidden; background:#ffffff; border-radius:18px; box-shadow:0 24px 80px rgba(15,23,42,0.28); padding:22px 24px 20px 24px;"><div style="display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px;"><div style="font-size:20px; font-weight:900; color:#0f172a;">?? ??</div><button type="button" onclick="document.getElementById('popup-evidence').style.display='none'" style="border:none; background:#e2e8f0; color:#334155; width:34px; height:34px; border-radius:999px; font-sizeLine truncated
<div style="width:100%; height:100%; box-sizing:border-box; font-family:Segoe UI,sans-serif; color:#0f172a; display:flex; flex-direction:column; gap:10px;"><div style="background:#fff7ed; border:1px solid #fdba74; border-radius:14px; padding:12px 14px;"><div style="font-size:13px; font-weight:900; color:#9a3412; margin-bottom:8px;">DX의 궁극적 목표</div><ul style="font-size:10.4px; line-height:1.6; color:#334155; padding-left:0; margin:0; list-style:disc;"><li style="margin-left:16px; margin-bottom:6px;">안전과 품질: 시설물의 요구 성능을 설계-시공-운영 전 과정에서 디지털로 검증하여 안전성 확보</li><li style="margin-left:16px; margin-bottom:6px;">Copy & Paste로 하향 평준화된 성과물의 하자 최소화로 고품질 성과물 제공</li><li style="margin-left:16px; margin-bottom:6px;">생산성 향상: Analogue 기반 업무를 Digital 기반 프로세스로 전환하여 업무 속도·정확성·일관성 향상</li><li style="margin-left:16px; margin-bottom:6px;">건설 비용 및 유지관리비 절감, 건설 기간 단축, 인력투입 최소화를 통해 부가가치 제고</li><li style="margin-left:16px; margin-bottom:6px;">소통과 신뢰: 성과품과 Solution을 통한 협업 강화로 의사소통 효율 및 운영·유지관리의 편리성 증진</li></ul></div><div style="display:grid; grid-template-columns:1.05fr 0.95fr; gap:12px; align-items:start;"><div style="background:#eff6ff; border:1px solid #93c5fd; border-radius:14px; padding:12px 14px;"><div style="font-size:13px; font-weight:900; color:#1e3a8a; margin-bottom:8px;">업무 수행 과정(Process)의 변화</div><ul style="font-size:10.4px; line-height:1.6; color:#334155; padding-left:0; margin:0; list-style:disc;"><li style="margin-left:16px; margin-bottom:6px;">생산 방식: 수작업 의존의 반복 업무에서 벗어나, SW를 활용한 체계화된 방식으로 전환</li><li style="margin-left:16px; margin-bottom:6px;">인지·검토: 2D 도면 해석 중심에서 3D 모델 기반의 직관적 인지·검토 체계로 전환</li><li style="margin-left:16px; margin-bottom:6px;">협업 구조: 개별 문서 중심 협업에서 데이터 통합 기반의 정보 공유·관리 협업 환경으로 전환</li><li style="margin-left:16px; margin-bottom:6px;">검증·대응: 사후 대응 중심의 문제 처리에서 사전 검증 중심의 예방적 업무 방식으로 전환.</li></ul></div><div style="background:#f8fafc; border:1px solid #cbd5e1; border-radius:14px; padding:12px 14px;"><div style="font-size:13px; font-weight:900; color:#334155; margin-bottom:8px;">DX 시행 주체별 기대효과</div><ul style="font-size:10.4px; line-height:1.6; color:#334155; padding-left:0; margin:0; list-style:disc;"><li style="margin-left:16px; margin-bottom:6px;">DX 시행 주체별 기대효과는 DxEffect 컴포넌트 영역으로 제시됨.</li></ul></div></div><div id="popup-detail" style="display:none; position:fixed; inset:0; background:rgba(15,23,42,0.56); align-items:center; justify-content:center; z-index:9999; padding:28px;"><div style="width:min(920px, 92vw); max-height:88vh; overflow:hidden; background:#ffffff; border-radius:18px; box-shadow:0 24px 80px rgba(15,23,42,0.28); padding:22px 24px 20px 24px;"><div style="display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px;"><div style="font-size:20px; font-weight:900; color:#0f172a;">DX 시행 주체별 기대효과</div><button type="button" onclick="document.getElementById('popup-detail').style.display='none'" style="border:none; background:#e2e8f0; color:#334155; width:34px; height:34px; border-radius:999px; font-size:18px; font-weight:800; cursor:pointer;">?</button></div><ul style="margin:0; padding-left:0; list-style:disc; font-size:13px; color:#334155;"><li style="margin-left:18px; margin-bottom:8px; line-height:1.55;">DX 시행 주체별 기대효과는 DxEffect 컴포넌트 영역으로 제시됨.</li></ul></div></div></div>
</div>
<div class="area-sidebar" style="overflow:hidden;">
<div style="width:100%; height:100%; box-sizing:border-box; font-family:Segoe UI,sans-serif; display:flex; flex-direction:column; gap:10px;"><div style="font-size:10.0px; font-weight:800; color:#475569; padding:2px 6px;">?? ?? ??(Process)? ??</div></div>
<div style="width:100%; height:100%; box-sizing:border-box; font-family:Segoe UI,sans-serif; display:flex; flex-direction:column; gap:10px;"><div style="background:#f8fafc; border:1px solid #cbd5e1; border-radius:14px; padding:12px 14px;"><div style="font-size:10.0px; font-weight:900; color:#334155; margin-bottom:8px;">DX 시행 주체별 기대효과</div><ul style="font-size:10.0px; line-height:1.6; color:#334155; padding-left:0; margin:0; list-style:disc;"><li style="margin-left:16px; margin-bottom:6px;">DX 시행 주체별 기대효과는 DxEffect 컴포넌트 영역으로 제시됨.</li></ul></div><button type="button" onclick="document.getElementById('popup-detail').style.display='flex'" style="margin-top:6px; border:none; background:#eff6ff; color:#1d4ed8; border:1px solid #bfdbfe; border-radius:999px; padding:4px 10px; font-size:10px; font-weight:700; cursor:pointer;">상세 내용 보기</button></div>
</div>
<div class="area-footer" style="overflow:hidden;">
+3 -3
View File
@@ -5,8 +5,8 @@
<div style="font-size:24px;font-weight:900;color:#16a34a;margin-bottom:12px;">품질 점수: 100</div>
<div style="font-size:12px;color:#555;margin-bottom:4px;">슬라이드: clientHeight=720px, scrollHeight=720px, overflow=False</div>
<table style="border-collapse:collapse;font-size:12px;width:100%;max-width:600px;margin-top:8px;">
<tr style="background:#1e293b;color:white;"><th style="padding:8px;">영역</th><th style="padding:8px;">clientH</th><th style="padding:8px;">scrollH</th><th style="padding:8px;">excess</th></tr><tr style="background:#f0fdf4;"><td style="padding:6px 8px;">✅ body</td><td style="padding:6px 8px;">461px</td><td style="padding:6px 8px;">461px</td><td style="padding:6px 8px;">+0px</td></tr>
<tr style="background:#f0fdf4;"><td style="padding:6px 8px;">✅ footer</td><td style="padding:6px 8px;">66px</td><td style="padding:6px 8px;">66px</td><td style="padding:6px 8px;">+0px</td></tr>
<tr style="background:#f0fdf4;"><td style="padding:6px 8px;">✅ sidebar</td><td style="padding:6px 8px;">461px</td><td style="padding:6px 8px;">461px</td><td style="padding:6px 8px;">+0px</td></tr>
<tr style="background:#1e293b;color:white;"><th style="padding:8px;">영역</th><th style="padding:8px;">clientH</th><th style="padding:8px;">scrollH</th><th style="padding:8px;">excess</th></tr><tr style="background:#f0fdf4;"><td style="padding:6px 8px;">✅ body</td><td style="padding:6px 8px;">409px</td><td style="padding:6px 8px;">409px</td><td style="padding:6px 8px;">+0px</td></tr>
<tr style="background:#f0fdf4;"><td style="padding:6px 8px;">✅ footer</td><td style="padding:6px 8px;">92px</td><td style="padding:6px 8px;">92px</td><td style="padding:6px 8px;">+0px</td></tr>
<tr style="background:#f0fdf4;"><td style="padding:6px 8px;">✅ sidebar</td><td style="padding:6px 8px;">409px</td><td style="padding:6px 8px;">409px</td><td style="padding:6px 8px;">+0px</td></tr>
</table>
</body></html>