# 완료 이력 아카이브: B05/B06 개선 (2026-07-19) 본 문서는 `docs/raw/PLAN.md`에서 완료되어 검증이 끝난 계획 항목들을 이관 보관한 파일입니다. --- ## 1. B05 버튼 템플릿화 및 glass variant 신설 ### 수정 배경 - B05가 자체 `button()` 헬퍼로 버튼을 만들고, CSS가 존재하지 않는 변수 `--color-text-on-primary`(테마 실제 변수명: `--color-primary-text`)를 참조해 primary 배경 버튼 글자가 보이지 않던 문제. - B04는 템플릿 `createButton`(ui-btn)을 사용 중 → B05를 템플릿으로 통일 + 오버레이용 반투명 variant 신설. ### 대상 파일 - `ui_template/ui_template_elements.ts` - `B05_wf2_Route/B05_wf2_Route_UI_Panel.ts` - `B05_wf2_Route/B05_wf2_Route_UI_Style.css` ### 완료 작업 - [x] `ButtonVariant`에 `glass` 신설 — 반투명 배경 + blur, hover/`is-active` 시 primary 배경 + 올바른 텍스트 변수 (`.ui-btn--glass`) - [x] B05 `button()` 헬퍼를 `createButton` 위임으로 교체 — 최적 경로 계산=`filled`(B04 모델 확정과 동일), 경로 확정·재적용·위치 이동=`ghost`, 삭제=`danger`, ISO/TOP/FRONT/SIDE·표시 토글·뷰 초기화=`glass` - [x] B05 CSS의 자체 버튼 시각 스타일 및 잘못된 변수 참조 제거, 레이아웃 규칙(뷰 컨트롤 높이 34px, 등고선 행 flex)만 `.ui-btn` 대상으로 유지 - [x] `npm run typecheck` 통과, prettier 적용 --- ## 2. B06 횡단 반폭 재생성 기능 ### 수정 배경 - B06 횡단도 폭이 solve 시점 반폭으로 고정되어 표시 옵션으로는 저장 폭 이상을 볼 수 없던 구조적 문제. - 섹션 파일 저장 시 이전 실행 `cross_*.json` 잔재를 지우지 않아 detail 조회(glob)에 폭이 다른 구간(0+15)이 섞여 보이던 결함. ### 대상 파일 - `B05_wf2_Route/B05_wf2_Route_Engine_Sections.py` - `B06_wf3_ProfileCross/B06_wf3_ProfileCross_Router.py` / `_Repository.py` / `_Schema.py` - `B06_wf3_ProfileCross/B06_wf3_ProfileCross_Api_Fetch.ts` / `_UI_Page.ts` - `ui_template/ui_template_locale.ts` ### 완료 작업 - [x] 섹션 파일 저장 전 이전 실행 `cross_*.json` 전체 삭제 (잔재 오염 원천 차단) - [x] `POST /api/projects/{project_id}/sections/{route_id}/regenerate` 신설 — B05 엔진(`run_section_generation`) 재사용, solve 시점 stage 2 측점 옵션 유지 + 반폭만 교체, 기존 레코드 삭제→재삽입 단일 트랜잭션, 갱신 상세 즉시 반환 - [x] `SectionRegenerateRequest` 스키마(>0 검증), `get_route_generation_source()` 리포지토리 함수 추가 - [x] B06 프론트: 확정 버튼 옆 [재계산](ghost) 버튼 신설 + 상태 게이트 — 반폭이 적용값과 다르면 [재계산] 활성·[확정] 비활성, 재계산 성공 시 재렌더 + [확정] 재활성 (B05 재탐색 필요 패턴과 동일) - [x] 재생성 성공/실패 토스트 및 로케일 키(`B06_Profile_Btn_Recalc` 등) 추가 - [x] `npm run typecheck`·`py_compile` 통과, ruff format·prettier 적용 ### 참고 (후속 계획과의 연결) - 재계산 시 종횡단 상태는 DRAFT로 복귀하며 재확정 필요. stage 3 COMPLETE는 되돌리지 않음 — 단계 차단 대신 자연 전파 구조로 가기로 합의 (상단 신규 활성 작업 참조). - 현행 코드는 B05 재solve 시 config 기본 반폭(15m)으로 돌아감 — 상단 "횡단 반폭 DB 단일 소스화" 구현으로 해소 예정. --- ## 3. B05/B06 UI 부분 수정 ### 수정 배경 - 기존 계획서 구현 완료 후 사용자 피드백으로 추가 진행한 부분 수정 이력이다. - 다른 AI가 검증 보고서 작성 및 완료 계획 아카이빙 시 본 항목을 함께 이관한다. ### 대상 파일 - `ui_template/ui_template_overlay.ts` - `ui_template/ui_template_overlay.css` - `B05_wf2_Route/B05_wf2_Route_UI_Profile_Panel.ts` - `B05_wf2_Route/B05_wf2_Route_UI_Style.css` - `B06_wf3_ProfileCross/B06_wf3_ProfileCross_UI_Style.css` ### 완료 작업 - [x] B05 하단 종단면 패널의 접기/펼치기 버튼을 사이드바 핸들의 90도 회전형 레이아웃으로 변경 - 하단 패널 상단 중앙에 `64×24px` 돌출형 핸들 배치 - 펼침 상태는 아래쪽, 접힘 상태는 위쪽 방향 아이콘으로 표시 - 접힌 상태에서는 하단 패널 본문을 숨기고 핸들만 유지 - [x] 사이드바와 B05 하단 패널의 핸들 생성 로직을 공통 컴포넌트로 통합 - `createWorkflowPanelHandle(placement)` 공통 함수 신설 - `side`와 `bottom` 배치 방향만 수정자로 구분 - 버튼 생성, 열림 상태, 접근성 속성, 기본 테두리·배경·그림자 스타일 공유 - [x] 방향별 유니코드 문자 크기 차이를 제거하도록 공통 화살표 아이콘 개선 - 문자 화살표 대신 동일한 CSS 삼각형 하나를 상태에 따라 회전 - 사이드바와 하단 패널에서 아이콘 크기와 도형 비율 통일 - [x] B06 종단도·횡단도 영역에 좌우 여백 추가 - `.b06-section`에 `padding-inline: var(--spacing-24)` 적용 - 사이드바 핸들이 도면 축 및 라벨을 가리는 현상 완화 - 종단도 sticky 및 횡단도 카드 레이아웃 유지 ### 구현 확인 - [x] 수정 대상 TypeScript/CSS에 Prettier 적용 - [x] `npm run typecheck` 통과 - [x] 수정 대상 파일 `git diff --check` 통과