Files
Aislo/docs/raw/verification/2026-07-19_verify_B05_B06_improvements.md
T
eomsangdonandClaude Opus 5 eb30b774f8 chore(docs): docs 폴더 git 추적 전환 · PLAN·OWNERS 최상위 이관
- `docs/` 를 .gitignore 에서 빼 git 추적 대상으로 전환 (위키·완료 이력·검증 기록)
- `docs/raw/PLAN.md` · `docs/raw/OWNERS.md` 를 저장소 최상위로 이동 후 .gitignore 에 등록
  — 창끼리 공유하되 저장소에는 안 올리는 장부
- 살아 있는 경로 참조 7개 파일 정정 (아카이브 107건은 그때 사실이라 그대로 둠)
- graphify 날짜별 산출물(`docs/wiki/graphify-out/20*/`) 제외 — `graphify update` 가 다시 만듦

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 18:19:07 +09:00

5.6 KiB

검증 보고서 (Verification Report)

  • 검증 일시: 2026-07-19
  • 검증자: Antigravity (검증자 QA 역할)
  • 검증 대상: B05 버튼 템플릿화, B06 횡단 반폭 재생성, B05/B06 UI 부분 수정 관련 변경 사항

1. 검증 대상 및 파일 목록

1) B05 버튼 템플릿화 및 glass 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

2) B06 횡단 반폭 재생성 기능

  • B05_wf2_Route/B05_wf2_Route_Engine_Sections.py
  • B06_wf3_ProfileCross/B06_wf3_ProfileCross_Router.py
  • B06_wf3_ProfileCross/B06_wf3_ProfileCross_Repository.py
  • B06_wf3_ProfileCross/B06_wf3_ProfileCross_Schema.py
  • B06_wf3_ProfileCross/B06_wf3_ProfileCross_Api_Fetch.ts
  • B06_wf3_ProfileCross/B06_wf3_ProfileCross_UI_Page.ts
  • ui_template/ui_template_locale.ts

3) B05/B06 UI 부분 수정

  • 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

2. 세부 검증 내용

📋 B05 버튼 템플릿화 및 glass variant 신설

  • UI 템플릿 버튼 표준화:
    • B05 자체 button() 헬퍼를 공통 템플릿인 createButton 호출 구조로 리팩토링 완료하여 UI 일관성을 확보했습니다.
    • 최적 경로 계산(filled), 경로 확정/재적용/위치 이동(ghost), 삭제(danger), 뷰 조작/표시 토글/뷰 초기화(glass) 등 기능별 올바른 variant가 지정되었습니다.
  • Glass Variant 스타일 사양:
    • ui_template_elements.ts 내 ButtonVariant 타입에 "glass"가 신설되고 .ui-btn--glass 스타일이 정상 반영되었습니다.
    • 3D 뷰포트 오버레이 환경을 고려하여 반투명 배경(color-mix)과 블러(backdrop-filter: blur(6px)) 처리가 완벽히 적용되었습니다.
    • hover 및 활성화 시 올바른 테마 컬러 변수인 --color-primary-text를 사용하여 기존에 존재하지 않던 변수인 --color-text-on-primary를 잘못 참조하던 문제를 완전히 청소했습니다.
  • 불필요한 스타일 제거:
    • B05 스타일 CSS 파일에서 자체적으로 버튼 스타일을 규정하던 코드들을 모두 삭제하고 공통 UI 라이브러리 스타일로 통합했습니다.

📋 B06 횡단 반폭 재생성 기능

  • 잔재 파일 오염 원천 차단:
    • B05_wf2_Route_Engine_Sections.py에서 횡단 세션을 다시 저장하기 전, 기존 디렉토리의 cross_*.json 파일들을 전부 glob하여 unlink()하는 코드를 추가함으로써, 이전 실행 파라미터가 섞여 상세 조회(Glob) 시 측점이 엉키는 잔재 버그를 원천 차단했습니다.
  • 재생성 Backend API 설계:
    • POST /api/projects/{project_id}/sections/{route_id}/regenerate 라우터가 신설되어 재생성 옵션(_regeneration_options)을 기반으로 run_section_generation 엔진을 정상 실행합니다.
    • aiomysql 비동기 커넥션을 활용해 기존 레코드 삭제 및 신규 섹션 삽입 과정을 단일 트랜잭션(connection.begin(), commit(), rollback())으로 원자성 있게 묶었습니다.
    • SectionRegenerateRequest 스키마 내 반폭 값 cross_half_width_m에 대해 gt=0 유효성 검증 규칙이 바르게 지정되었습니다.
  • Frontend 상태 게이트 및 버튼 연동:
    • B06_wf3_ProfileCross_UI_Page.ts에 [재계산] 버튼이 추가되었습니다.
    • 변경된 입력값(횡단 반폭)이 실제 적용된 값(appliedHalfWidth)과 다른 stale 상태일 때 [재계산] 활성화 & [확정] 비활성화가 작동합니다.
    • applyCrossHalfWidth()가 성공하면 appliedHalfWidth를 갱신하며 화면이 재렌더링되고, [확정] 버튼이 다시 활성화되는 흐름이 올바르게 설계되었습니다.
    • 재생성 성공/실패 토스트 피드백과 다국어 로케일이 추가된 것을 검증했습니다.

📋 B05/B06 UI 부분 수정

  • 공통 접기/펼치기 핸들 구현:
    • ui_template_overlay.ts에 createWorkflowPanelHandle 컴포넌트가 신설되었습니다.
    • 배치 방향(placement)에 따라 side와 bottom으로 명확히 분리되며, 유니코드 텍스트 대신 CSS 삼각형 하나를 transform rotate(isOpen ? 90 : -90 등)하는 구조로 렌더링 비율이 통일되었습니다.
    • B05의 하단 종단면 패널(createRouteProfilePanel) 및 사이드바에서 기존 마크업을 핸들 컴포넌트로 깔끔하게 대체 및 단일화했습니다.
  • 도면 영역 여백 개선:
    • .b06-section에 padding-inline: var(--spacing-24)가 올바르게 추가되었습니다.
    • 사이드바 핸들이 화면 도면 축 및 축 라벨을 시각적으로 덮어버리던 방해 요소가 완벽히 해소되었습니다.

3. 코드 퀄리티 및 빌드 검증

  • 정적 타입 검사: npm run typecheck 통과 확인.
  • Python 컴파일 및 린트: py_compile 및 ruff format 수행 완료 상태 확인.
  • 코드 포맷터: TypeScript/CSS 전체 Prettier 정상 적용 확인.
  • Surgical Edit 준수 여부: 변경 외의 관련 없는 외부 코드나 서식의 임의 훼손 없이 정확히 대상 영역만 surgical하게 변경 완료했습니다.

4. 종합 검증 판정

Note

검증 결과: PASS (합격)

B05/B06에 기획된 버튼 템플릿화, 반폭 재생성 기능, 공통 레이아웃 핸들 적용 및 여백 개선 작업이 기존 기획 사양에 명시된 예외 케이스 및 요구 스펙을 완벽하게 만족함을 확인했습니다.