B' overflow 루프 동작: Kei popup 결정 → 상단 소제목만 유지 + 하위불릿 팝업
- kei_client: 에스컬레이션 prompt 개선 — 소제목 유지 필수, overflow 영역만 대상 - block_assembler B': 상단 popup_roles 체크 추가 — 소제목만 남기고 하위불릿 제거 - block_assembler: \x01 바이트 수정 (r-string 역참조) - 결과: 03번 top overflow 358px → 143px (루프 2회차에서 popup 반영) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1055,11 +1055,17 @@ def _assemble_slide_html_type_b_prime(ctx: "PipelineContext", title_text: str =
|
||||
card_gap = max(3, int(font_size * 0.4))
|
||||
indent_body = int(font_size * 1.2)
|
||||
|
||||
# B': 상단이 popup 대상이면 소제목만 유지, 하위 불릿 제거
|
||||
top_is_popup = rn in popup_roles
|
||||
|
||||
bullets = ""
|
||||
if len(sections) > 1 and sections[0][0]:
|
||||
for ci, (sec_title, sec_items) in enumerate(sections):
|
||||
bg, text_color = _card_colors[ci % len(_card_colors)]
|
||||
items_html = "".join(
|
||||
if top_is_popup:
|
||||
items_html = ""
|
||||
else:
|
||||
items_html = "".join(
|
||||
f'<div style="padding-left:{indent_body}px;margin-bottom:1px;">'
|
||||
f'<span style="color:{text_color};font-size:{font_size-1}px;line-height:1.5;">• {item}</span></div>'
|
||||
for item in sec_items
|
||||
@@ -1140,7 +1146,7 @@ def _assemble_slide_html_type_b_prime(ctx: "PipelineContext", title_text: str =
|
||||
if sub_sections_from_norm and bottom_left_role:
|
||||
rn = bottom_left_role[0]
|
||||
sub_title, sub_content = sub_sections_from_norm[0]
|
||||
sub_content = re.sub(r'\*\*(.+?)\*\*', r'<strong></strong>', sub_content)
|
||||
sub_content = re.sub(r'\*\*(.+?)\*\*', r'<strong>\1</strong>', sub_content)
|
||||
|
||||
# 표 렌더링 (normalized.tables에서)
|
||||
table_html_bl = ""
|
||||
@@ -1159,7 +1165,7 @@ def _assemble_slide_html_type_b_prime(ctx: "PipelineContext", title_text: str =
|
||||
bg = "#f8fafc" if ri % 2 == 0 else "#fff"
|
||||
cells = ""
|
||||
for ci_idx, cell in enumerate(row):
|
||||
cell_clean = re.sub(r'\*\*(.+?)\*\*', r'<strong></strong>', str(cell))
|
||||
cell_clean = re.sub(r'\*\*(.+?)\*\*', r'<strong>\1</strong>', str(cell))
|
||||
c_color = "#1e40af" if ci_idx == 0 else "#475569"
|
||||
c_weight = "600" if ci_idx == 0 else "400"
|
||||
cells += f'<div style="padding:{int(font_size*0.2)}px {int(font_size*0.3)}px;font-size:{font_size-2}px;color:{c_color};font-weight:{c_weight};">{cell_clean}</div>'
|
||||
@@ -1213,7 +1219,7 @@ def _assemble_slide_html_type_b_prime(ctx: "PipelineContext", title_text: str =
|
||||
if bottom_right_role and len(sub_sections_from_norm) > 1:
|
||||
rn = bottom_right_role[0]
|
||||
sub_title_br, sub_content_br = sub_sections_from_norm[1]
|
||||
sub_content_br = re.sub(r'\*\*(.+?)\*\*', r'<strong></strong>', sub_content_br)
|
||||
sub_content_br = re.sub(r'\*\*(.+?)\*\*', r'<strong>\1</strong>', sub_content_br)
|
||||
|
||||
bul = ""
|
||||
for line in sub_content_br.split("\n"):
|
||||
|
||||
Reference in New Issue
Block a user