Files
Aislo/docs/raw/plans/2026-10-16_plan_306-349.md
T

433 lines
99 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 계획서 이관 — 306~349 (미체크 없는 절 · 2026-10-16)
## 306. B06 횡단 맹암거 — 안 돌 무늬 · 고르기 차례 (요구 200-1 · sub7)
- 사용자 확정: 맹암거 안 형상 때문에 다른 면적이 안 골라짐 → 차례 다시 봄 · 안 무늬 = 돌 모양이 엇갈려 겹친 꼴.
- 정함(브레인): 돌 무늬 = 그림 전용(누름 안 받음) · 맹암거와 겹친 다른 면적도 골라지게 차례 다시 정함(295-1 잣대 그대로) · 맹암거는 테두리로 늘 골라짐.
- [x] 306-1 돌 무늬 — `B06_Section_UI_Cross_Underdrain.ts` · 카드 · [상세] 모달 같은 그림 · 확인 = 시험(돌 요소 · 엇갈림 · 누름 안 받음).
- [x] 306-2 고르기 차례 — `B06_Section_UI_Cross_Pick_Order.ts` 맹암거 몫만 · 확인 = 시험(안쪽 점 = 겹친 면적 · 테두리 = 맹암거 · 다른 구조물 차례 그대로).
- 검증완료 — `test_306_underdrain_pick` 5 · 옛 287 · 288 · 294-7 · 295 통과 · typecheck 0 · 차례 = 보라 선 > 맹암거 테두리 > 구조물 판정면(작은 것 위) > 그림 · 띠 > 맹암거 안쪽(맨 아래).
## 307. B06 고름 강조 — 측점 고름은 형상 안 켬 · 연동 관 · 측점 없는 구조물 (요구 200-1 · 200-3 · sub4)
- 사용자 확정: 노면공 · 물넘이포장을 측점 길(종단 측점선 · 알약 · 좌측 횡단배수 측점 · 영역)로 고르면 콘크리트 형상까지 켜짐 = 옛 잔재 → 다른 구조물과 같은 길 · 형상 누름 → 좌측 하위 컨테이너 켬은 따로(그대로) · 연동 관 카드 노면 콘크리트 누름 = 관 형상은 안 켬 · 측점 없는 구조물 = 횡단 이동 없음(178).
- 정함(브레인): 284 「측점 없는 구조물 = 스크롤만」에서 스크롤도 걷음 · 얽힌 길 분석을 먼저 끝내고 고침.
- [x] 307-0 분석 — 형상까지 켜는 자리 · 연동 관 강조 길 · 측점 없는 구조물 길 → 그 폴더 `tmp/분석_307.md` · 결론 한 줄은 보고에.
- 검증완료 — sub4 `tmp/분석_307.md` · 측점 길 넷이 모두 `selectMark` 하나로 모여 형상까지 켬 · 연동 관은 「관」 키 하나가 관 그림 · 콘크리트 함께 켬 · 측점 없는 구조물은 `revealStation` 스크롤
- [x] 307-1 측점 길 넷 = 카드 · 측점만 강조 · 연동 관 노면 콘크리트 누름 = 콘크리트만 · 확인 = 시험.
- 검증완료 — test_307_pick_highlight 9건(「관」 setter 가름 · 콘크리트 표식 6경우 · 측점 길 콘크리트 안 켬 · 노면공 포장층 = 누름만 · 맹암거 그대로) · 옛 시험 기대값 307 규칙으로(118 · 177_4 · 287 · 294_6 · 294_7) · 관련 31 파일 230 통과(191_1 = 전부터 194-2 stub 빠짐) · typecheck 0
- [x] 307-2 측점 없는 구조물 = 횡단 강조 · 스크롤 없음(B05 알약 · B06 · 좌측 목록) · 확인 = 시험.
- 검증완료 — test_307 측점 없는 구조물 길(revealStation 스크롤 없음 · 넘김 focusPicked = 카드 고름 안 부름) · 범위 테두리(--span)는 그대로 · design_view_cross 679줄
## 308. B09 연결 정보 팝업 — Esc · 바깥 누름 = 모두 닫힘 (요구 201-4 · sub2)
- 사용자 확정: 겹친 팝업에서 Esc = 모두 닫힘 · 맨 위 팝업 밖을 누르면 닫힘.
- 정함(브레인): 맨 위 팝업 밖(아래 팝업 · 쪽 빈 곳 · 손가락 톡) 누름 = 모두 닫힘 · 그 누름은 닫기만(아래 화면에 안 넘김) · 맨 위 팝업 안 누름 · 끌기 그대로.
- [x] 308-1 `B09_Estimation_UI_Popup.ts` 닫기 한 길 · 확인 = 시험(셋 연 뒤 Esc · 바깥 · 아래 팝업 · 안 누름 · 끌기).
- 검증완료 — test_303 12 · test_243_1 5 통과 · typecheck 0 (검증 대기)
## 309. B05 · B06 종단 누가토량 알약 — 테마 색 · 그래프 안 끌기 (요구 202 · sub1)
- 사용자 확정: 알약 · 글자 색 = 테마에 맞추되 잘 보이게 · 알약은 그래프 영역 안에서 옮김.
- 정함(브레인): 붉은 계통(186) 그대로 · 밝음 · 어두움 각각 글자 대비 4.5 넘음 · 그래프 선 위에서도 읽힘 · 끌기 = 마우스 · 손가락 한 길 · 영역 밖 못 나감 · 자리 = 그래프 안 비율로 기억(다시 그려도 그대로 · 화면 설정 한 칸 · B05 · B06 공용).
- [x] 309-1 색 — `common_util/common_util_mass_haul.css` 큰 알약(289) · 확인 = 시험(두 테마 대비).
- [x] 309-2 끌기 — 확인 = 시험(끌기 · 영역 끝 막힘 · 다시 그림 뒤 자리 · B05 · B06).
- 검증완료(309) — test_309_mass_haul_badge(두 테마 바탕 불투명 · 글자 대비 4.78 이상 · 마우스 끌기 · 끈 뒤 click 삼킴 · 안 끈 누름 그대로 · 영역 끝 막힘 · 그래프 고름 그대로 · 계정 설정 한 칸 · 다시 열기 · 창 크기 · B06 같은 자리 · 손가락 끌기) · test_289_1 새 값 · 옛 시험 41 통과 · typecheck 0 (검증 대기)
## 310. B09 탭 상세 — 안내 글 영역 3줄 + 스크롤 · 표 넓게 (요구 203 · sub3)
- 사용자 확정: 안내 글 = 3줄쯤만 보이고 넘치면 스크롤 · 표를 더 넓게 · 맨 아래 줄 고정 · 줄이 적으면 합계 줄이 끌려 올라옴 · 안내 글 영역도 같이 끌려 올라옴 · 나중에 2줄로 바꿀 수 있음.
- 정함(브레인): 줄 수 = CSS 변수 하나(기본 3 · 그 값만 바꾸면 높이 · 스크롤 다 맞음) · B09 탭 상세 공용 한 곳(탭마다 따로 안 함).
- [x] 310-1 안내 글 영역 높이 · 스크롤 · 표 넓힘 · 합계 줄 고정 · 끌려 올라옴 — 확인 = 시험(줄 수 3 · 2 · 줄 많음 · 적음 두 경우 합계 줄 · 안내 글 자리).
- 검증완료(310) — test_203_b09_hint_lines(실제 브라우저 · 변수 3 · 2 × 줄 많음 · 적음 · 안내 글 높이 = 줄 수 × 줄 높이 · 페이지 스크롤 0 · 합계 줄 = 표 바닥 · 줄 적으면 안내 글 표 바로 아래) · 옛 시험 42 통과 · typecheck 0 · 검증_sub3 설계내역서 표 바닥 923 → 1017 (검증 대기)
## 311. 좌측 패널 기본 접힘 · B07 첫 쪽 = 표지 (요구 204 · sub6)
- 사용자 확정: 기본 접힘 = B09 데이터 점검 · 공기 옵션 / B07 평면도 · 종단도 · 횡단도 / B06 횡단 보기 설정 / B05 계획노선 · B07 처음 들어가면 표지.
- 정함(브레인): 접힘 = 쪽에 들어와 처음 그릴 때 · 쪽 안에서 편 것은 다시 그려도 그대로 · B07 표지 = 고른 장 기억이 없을 때(기억 있으면 그 장).
- [x] 311-1 B09 · B06 · B05 기본 접힘 · 확인 = 시험(첫 그림 접힘 · 편 뒤 다시 그림 유지).
- [x] 311-2 B07 평면도 · 종단도 · 횡단도 기본 접힘 · 첫 쪽 표지 · 확인 = 시험.
- 검증완료 — test_311_panel_folded 7 · 옛 시험 61 통과 · typecheck 0 · 검증 대기.
## 312. B05 · B06 좌측 구조물 목록 — 마지막 하나 지움이 새로고침 뒤 되살아남 (요구 205 · sub5 · 조사만)
- 사용자 확정: 하나씩 지우며 새로고침 = 하나 남을 때까지 정상 · 마지막 지운 직후 목록 비고 새로고침하면 되살아남 · 주로 자동 생성 횡단배수 → 배수유역 자동 계산 · 영구 저장 의심 · 코드 고치지 않음.
- [x] 312-0 결론 — 관(자동 횡단배수 `pipe_points.json`) 빈 목록을 화면 초안 읽기 · 서버 목록 고르기 · 서버 계산 세 곳이 「없음」(= 자동 배치)으로 읽음 · 손 구조물은 정상 · 제안 = None 자동 · [] 관 0 · 서버 세 줄 + 화면 한 줄 → `docs/raw/요구_1010_2/조사_AO_구조물목록_빈목록.md` · 고침은 사용자 지시 뒤.
- 정함(브레인 · 사용자 「진행해」): None(파일 없음 · 노선 바뀜 · 요청에 칸 없음) = 자동 배치 · [] = 관 0개 · 자동으로 되돌리기 = [초기화]만 · 곁 흠 `B06_Section_Section_Store.ts:81` 도 같은 뜻(옛 결함 까닭 먼저 확인 · 다시 안 나게 시험).
- [x] 312-1 서버 — `B04_PreProcess_Router_Basins.py` _resolve · _build · `common_util_drainage_detail.py` build_detail = is None 판정 · saved 판정 · 확인 = 시험(PUT [] → 0 · POST [] → 관 0 · 파일 없음 · DELETE · 노선 바뀜 = 자동).
- [x] 312-2 화면 — `B05_Profile_UI_Drainage_Panel.ts:424` pending !== null · 곁 흠 Section_Store:81 · 문서 줄(computeDetailBasins 머리 · post_detail_basins) · 확인 = 시험(마지막 관 지움 → 새로고침 · [저장] 뒤 0).
- 검증완료 — test_312_empty_pipes 6 · 옛 시험 100 통과(save_roundtrip 2 건너뜀 = 배정 프로젝트 없음) · typecheck 0 · 곁 흠 09-09 까닭 = 옛 배열 참조가 `[]` 알림(지금 setStructures 는 배열 안을 채우고 알리지 않음 → 시험이 지킴) · 검증 대기.
## 313. B05 · B06 좌측 구조물 목록 — 맨 아래 [구조물 전체 삭제] (요구 206 · sub4)
- 사용자 확정: 구조물 목록 맨 아래에 전체 삭제 단추 · 하나도 없으면 숨김.
- 정함(브레인): 확인창 한 번(지울 개수 표시) · 하나씩 지우기와 같은 길(캐시 → [저장]) · 자동 생성 횡단배수 · 손 배치 모두 · 되돌리기가 있으면 한 번에 · 마지막 하나 되살아남은 312(조사 중) — 이 일에서 저장 길은 고치지 않음.
- [x] 313-1 단추 · 숨김 · 확인창 · B05 · B06 둘 다 · 확인 = 시험(목록 있음 · 없음 · 누름 뒤 0 · 취소).
- [x] 313-2 단추 높이 = 목록 위 구조물 단추와 같게(요구 207) · 확인 = 시험(두 단추 높이 px 같음).
- 검증완료 — 까닭 = 위 [추가] · [삭제] · [리셋]만 205-1 높이(--b05-control-h = 공용 --panel-control-h)를 받고 목록 단추는 안 받음 · 같은 규칙에 목록 단추 보탬(CSS 만) · test_313_clear_all 실제 브라우저 밝음 · 어두움 = 26 · 26px(옛 26 · 34) · 위험 색 같음 · 313 · 116 16건 통과 · typecheck 0
- 검증완료 — test_313_clear_all 6건(목록 끝 단추 · 빈 목록 숨김 · 확인 「구조물 4개를 모두 지울까요?」 → 0 · 관 빼기 2 · 알림 1 · 취소 = 3 그대로 · B05 · B06 같은 목록 한 벌) · 116 기대값 · 관련 17 파일 162 통과 · typecheck 0 · Structures_Panel 700줄 · 되돌리기 없음(목록에 되돌리기 길 없음) · 새로고침 뒤 = 빈 관 초안을 「초안 없음」으로 읽어 관이 되살아날 길(312 같은 뿌리 · 저장 길 안 고침)
## 314. 물넘이포장 · 맹암거 후속 — 측구 · 종류 바꿈 캐시 · 월류 높이 첫 계산 (요구 210 · 브레인 직접 · sub7 폴더)
- 사용자 확정: 두 종류 다 측구 없는 형상(저장 뒤는 맞음 · 저장 전 화면에 측구) · 종류 바꾸면 옛 종류 자료가 캐시에 남음 → 같은 흠 전부 확인 · 정상인 종류 목록 · 월류 높이 = 세월교처럼 처음부터 자동 · 끝나면 전역 깃 싱크.
- [x] 314-1 저장 전 측구 — 화면 즉시 계산(TS)이 서버 규칙과 같게 · 확인 = 시험.
- [x] 314-2 종류 바꿈 = 옛 종류 자료 비움(한 곳) · 모든 종류 표 · 확인 = 시험.
- [~] 314-3 물넘이포장 월류 높이 첫 자동 계산 — 길은 이어져 있음(재현: 새 자리 유량 0.0107 → 0.01 m) · 「높이 기다림」 빈 글자 고침만 · 막힌 실제 길은 사용자 재확인 뒤.
- [x] 314-4 물넘이포장 · 맹암거 기준측점 이동 반영(요구 211-1 · 211-2 · 같은 뿌리 = 저장분 횡단 값 다시 셈) · 확인 = 시험.
- 검증완료(브레인 · sub2 fbaa5b483): test_314 4 + 관련 36 파일 316 통과 · typecheck 0 · 따로 고칠 거리 = 종류 바꿀 때 culvertopt · fordadjust · boxadjust 측점 칸이 새 종류로 저장에 샘(화면 무관).
## 315. 물넘이포장 횡단 — 도수로 · 돌붙임 길이(성토) · 월류 접선 성토 점선 (요구 211-1 · sub7)
- 사용자 확정: 길이 없음 = 성토는 원지반까지(지금) · 길이 있음 = 성토부가 짧아도 원지반까지 잇고 지정 길이 확보 · 절토는 지금 그대로 · 월류 높이 접선 = 절토는 지금 맞음 · 성토는 성토선을 점선으로 늘여 이음(세월교 꼴).
- [x] 315-1 도수로 · 돌붙임 길이 — 성토 쪽 지정 길이 확보(원지반 따라) · 확인 = 시험.
- 원인 — 물넘이 그림이 길이 맞춘 선의 첫 조각만 씀(원지반 이음 조각 버림) · 이은 조각까지 한 선.
- 정함(브레인): 315-2 = 실제 성토 사면선을 노면 끝 너머 위로 점선 연장 → 월류 높이선과 만나는 곳에서 둘 다 끝(절토 쪽처럼 닫힘) · 점선 꼴 = 세월교 점선.
- [x] 315-2 월류 접선 성토 쪽 = 성토선 점선 연장(세월교 같은 한 벌) · 확인 = 시험.
- 정함(브레인 B) — 실제 성토 사면선을 노면 끝 너머 위로 점선 연장 · 월류 높이선은 교점에서 끝 · 절토 · 늘인 노면 끝은 그대로 · 같은 점선 양식.
- 검증완료 — test_315_ford_chute_overflow 7(길이 없음 · 긴 길이 6 m = 사면 2.73 + 원지반 · 짧은 길이 1 m · 절토 그대로 · 성토 점선 연장 교점 물매 = 성토 물매) · 옛 286-1 · 287(월류선 기대값 315 규칙) · 294-3 · 294-6 · 294-7 · 135-3 · 52-3 통과 · typecheck 0.
## 316. 기본값 — 횡단 복합경사 꺼짐 · B05 3D 원근 (요구 211-3 · 212 · sub6)
- 사용자 확정: 복합경사(two_stage_slope) 기본 꺼짐 · 3D 영역 기본 보기 = 원근.
- 정함(브레인): 저장된 측점의 고른 값은 그대로 · 값 없는 측점 · 새 측점만 꺼짐 · TS · 파이썬 짝 같이 · 3D = 처음 열 때 원근(사용자가 바꾼 기억 있으면 그 값).
- [x] 316-1 복합경사 기본 꺼짐(짝 · 거울 시험) · 확인 = 시험. 검증완료
- [x] 316-2 3D 기본 보기 원근 · 확인 = 시험. 검증완료
## 317. 3D 형상 업데이트 단추 · 구조물 종류 바꿈 = 지우고 새로 놓기 (요구 213 · 브레인 직접)
- 사용자 확정: 단추에 「바뀜」 표시는 뜨는데 눌러도 형상이 안 바뀜 · 구조물 측점에서 다른 종류로 바꾸면 = 구조물 없는 상태에서 다시 시작해 새 종류로(정밀 분석 뒤 브레인이 직접).
- [x] 317-1 3D 업데이트 단추 — 「바뀜」 판정과 누를 때 다시 셈이 같은 기준 · 확인 = 시험.
- [x] 317-2 종류 바꿈 = 옛 구조물 지움 + 같은 자리에 새 종류 놓음(관 ↔ 구조물 정본 달라도) · 측점별 칸 비움 · 확인 = 시험.
- 검증완료(브레인 · sub2 5f54a0926 · 다음 커밋): test_317 6 + 관련 41 파일 318 통과 · typecheck 0 · 317-2 = 종류 바뀐 구조물 측점은 저장분 횡단 빼 두고 새 자리처럼 미리 뜬 횡단(되돌리면 복귀) · culvertopt 저장 섞임은 따로(사용자 답 기다림).
- [x] 317-3 종류 여러 번 바꾸면 앞 종류 제원이 겹침(요구 214) — 까닭 = 미리 뜬 횡단 한 벌을 다시 쓰며 제원을 덧붙이기만 함(새로고침하면 메모리 비워져 맞음 · 317-2 전 새 관에도 있던 흠) · 얹기 전 관 계열 제원 비움 · 재현 · 시험 36 · typecheck 0.
## 318. B06 횡단 카드 — 단추 줄 고르기 · 중심고 Y축 · 아래 띠 여유 · 종류 바꿈 조정값 (요구 215 · 216 · 브레인 직접 · sub2)
- 사용자 확정: 단추 줄 빈자리도 카드 고르기 · 중심고 = 아래 띠에서 빼고 Y축 라벨(같은 글자 크기 · 둥근 상자 · 테마 색 · 축선 안 침범) · 암 경계 왼쪽 맞춤 · 띠 높이 그대로 아래 여유만 없앰 · 종류 바꾸면 옛 측점별 조정값 저장 안 섞임.
- [x] 318-1 단추 줄 = 조작 요소 누름만 막음 · 확인 = 시험.
- [x] 318-2 중심고 Y축 라벨 상자 · 띠 글자 지움 · 암 경계 왼쪽 맞춤 · 확인 = 시험.
- [x] 318-3 아래 띠 아래 여유 없앰(띠 높이 그대로) · 확인 = 시험.
- [x] 318-4 종류 바꿈 = 옛 측점별 조정값(culvertopt · fordadjust · boxadjust 등) 저장 안 섞임 · 확인 = 시험.
- 검증완료 — test_318_cross_card 15 · 바뀐 대상 시험 760 통과(294-1 한 개 = 307 때부터 옛 글 비교로 걸림) · typecheck 0 · sub2 6329ea2a3 · 6d914b764 · 화면 확인 = 사용자(5177 · 전역 싱크 뒤 5173).
## 319. B06 횡단 카드 중심고 겹침 · 횡단배수 종류 바꿈 = 맹암거 · 개거도 (요구 217 · 브레인 직접 · sub2)
- 사용자 확정: 중심고 상자와 겹친 Y 눈금 숨기지 않음 · 상자를 위에 · 바탕 안 비침 · 횡단배수 종류 바꿈 때 맹암거처럼 형상 없는 종류도 바뀜(옛 것 없앤 뒤 새 종류).
- 정함(브레인): 정본이 다른 종류(관 지점 ↔ 구조물 · A군 배관 · BOX · 세월교 · 물넘이 ↔ 맹암거 · 개거 · 노출형 횡단수로 · D군도)로 바꿈 = 옛 것 지움 → 같은 측점에 새 종류(우클릭 추가와 같은 길 · 기본값) · 옛 측점 조정값 = 318-4 대로 버림.
- [x] 319-1 중심고 상자 겹친 눈금 숨김 없앰 · 상자 위 · 바탕 불투명 · 확인 = 시험.
- [x] 319-2 정본 다른 종류로 바꿈 = 지우고 같은 측점 새로 놓기(B05 · B06 공용 패널) · 확인 = 시험.
- [x] 319-3 일반 측점 자리(grid)에 선 구조물 — 종류 바꿈 · 지움이 저장 전 횡단에 안 먹던 것(옛 관 그림 남음) = 구조물만 뺀 사본에 새 종류 · 확인 = 시험.
- 검증완료 — test_319_kind_swap 8 · test_318 15(중심고 겹침 기대값 바꿈) · 바뀐 대상 시험 283 통과 · typecheck 0 · sub2 2641c15e2 · 화면 확인 = 사용자(5177 · 전역 싱크 뒤 5173).
## 320. 구조물 점검 — 드롭다운 현황표 (요구 218 · 브레인 · 조사)
- 사용자 확정: 횡단배수군 · 그 밖으로 나눔 · 군 넘어가면 패널 리셋 · 군 안 종류 바꿈 = 그 그림 · 그림 없는 종류 = 횡단도 안 더함 · 있으면 지움 · 먼저 현황표.
- [x] 320-1 현황표(B06 화면 직접 조작 + 코드 대조) — 아티팩트 https://claude.ai/artifact/Pogyb9grJbQydccnSJHk56 · 검증완료(검증_sub2 · 저장 안 함).
- 흠: 일반 측점 자리 새 구조물 저장 전 안 보임 · E · F 점형 ↔ 구간형 바꿈 안 됨 · 쇄석 저장 전후 그림 다름 · 맹암거 높이 빈칸 경고 없음 · D 기슭막이 ↔ 사방 = 폼만 · 벽 · 포장 범위 안 새 관(코드상).
- 사용자 답 기다림: 그림 없는 종류 범위 · E · F 점형 ↔ 구간형 바꿈 · 쇄석 그림.
- → 321 로 묶음(답 = 321 정할 것 4 · 5 · 6).
## 321. 구조물 반영 구조 재설계 제안 — 드롭다운 한 줄 = 일곱 갈래 (요구 219 · 브레인 · 제안만)
- 정함(브레인): 반영 규칙 표 = 코드 쪽 새 표(사용자 마스터 손대지 않음) · 계산 = 파이썬 · TS 짝 + 같은 표 + 전수 거울 시험 · 저장 파일 모양 그대로 · 3D 저장 방식은 범위 밖.
- [x] 321-1 현재 구조 분석(여섯 갈래 코드 읽기 + 핵심 흠 원본 확인) + 다이어그램 비교 보고서 — 아티팩트 https://claude.ai/artifact/RwfpjSehc9ZdAjXxcP8DQa · 메모 스크래치패드 notes321.md.
- [x] 321-2 사용자 답(요구 220) = 표는 M02 「구조물 옵션 정의」 안에서 사용자가 제어(켬끔 · 목록 · 입력 칸 · 그리는 법) · 다시 정밀 점검 → 아티팩트 판 2 · 남은 답은 322-a.
- [x] 321-3 단계 계획 → 322 · 323(신규 계획).
## 322. 구조물 관리 표 재설계 ① — M02 표로 사용자 제어 · 0~3단계 (요구 219 · 220 · 신규 계획 · 착수 = 사용자 Proceed 뒤)
- 사용자 확정(요구 220): 반영 규칙 표 = M02 「구조물 옵션 정의」 안 · 코드는 부품(그리는 방법)만 · 켬끔 · 목록 · 입력 칸 · 그리는 법은 사용자가 고름.
- 정함(브레인): 표에 안 적은 칸 = 코드 처음 값(지금 동작) · 자리꼴 · 정본 · 군 글자 · 선택지 값 = 만든 뒤 고정 · 지우기 없음 · 파이썬 · TS 짝 + 같은 표 + 전수 거울 시험 · 저장 파일 모양 그대로 · 0~3 = 한 창 차례대로 · 그동안 B05 · B06 구조물 쪽 다른 작업 멈춤 · 근거 = docs/raw/조사/2026-10-14_321-322_구조물관리표.md · 아티팩트 https://claude.ai/artifact/RwfpjSehc9ZdAjXxcP8DQa (판 2).
- [x] 322-a 사용자 답(요구 221) = 「계획서 전체 반영」 → 추천대로(0~7 · 목록 세 값 · 열면 새 표 · 본보기 복사 · 처음 값 맞춤 넷) · 랩탑 sub1 격리(detached · 로컬 가지 exp_sub1_structure · 원격 없음 · 시작 2641c15e2) · 사용자 확인 뒤 병합 여부 · 화면 검증 = 브레인 · 창 지시 글 = sub1 PLAN_구조물표.md.
- [x] 322-0 안전망 · 급한 막기: 전수 표 시험(26종 × 일곱 갈래 × 일곱 상황 · 지금 결과 기록) · 「기타」 유령 길 막기(이관 이름 되짚기) · 열린 탭 · 서버 관 기본값이 정의 판을 봄 — 확인 = 이름 바꾼 정의로 B05 열어 기타 0 · 시험 기록.
- 검증완료(시험) — sub1 863abc776 · 화면 확인 = 브레인 · 검증 대기. · 브레인 화면 통과(M02 이름 바꿈 → 같은 탭 B05 새 이름 · 새 탭 이관 0 · 옛 이름 이관 API 0 · 정의 판 20 되돌림).
- [x] 322-1 부품 상자 · 표 읽기: 그리기 함수에 부품 이름 · 읽는 칸 · 맞는 자리꼴 · 정의 + 처음 값 → 종류마다 한 줄(TS · 파이썬 짝) · 가리기(종류 키 · 군 글자 · 정본) → 표 읽기 · 코드 숨김 목록 → 처음 값 — 확인 = 전수 표 시험 전후 같음(처음 값 맞춤 넷 빼고) · 거울 시험.
- 검증완료(시험) — sub1 bbd625489 · 화면 확인 = 브레인 · 검증 대기. · 브레인 화면 통과(B05 23 · B06 26 · 군 차례 · 노출형 카드 없음 · 쇄석 저장 전 포장층 · 옹벽 세 장 + 벽 + 물빼기 + 미리 뜬 카드) · 남은 흠 = 일반 측점 새 구조물 이름 칩(322-3).
- [x] 322-2 M02 표 화면: 한눈 표 · 종류별(보임 · 반영 칸) · 부품 탭 · 검사 · 판 확인 알림 · 켜는 칸 = 목록 · 이름 · 순서 · 군 순서 · 색 · 입력 칸 보임 · 부품 켬 — 확인 = M02 고침 → B05 · B06 드롭다운 · 폼 · 우클릭 반영.
- 검증완료(시험) — sub1 3abd2bdfd · 다듬기 0da2fa076 · 화면 확인 = 브레인 · 검증 대기. · 브레인 화면 통과(탭 셋 · 한국어 이름 · 검사 빨강 + 저장 꺼짐 · M02 옹벽 형상 「없음」 · 기타 「안 보임」 저장 → B06 따라감 · 되돌림).
- [x] 322-3 현황 한 벌 · 측점 계획 한 벌(서버 짝 · 낡음 = 자리 + 종류 + 이름 + 판) · 켜는 칸 = 횡단도 · 카드 이름 — 확인 = 카드 · 종단 측점(B05 = B06) · 3D 막대 · 서버 측점이 같은 목록 → 멈춤점(사용자).
- 검증완료(시험) — sub1 6c87207f7 · 화면 확인 = 브레인 · 검증 대기(멈춤점). · 브레인 화면 통과(일반 측점 이름 칩 · 관 옮김 고름 · 관 + 맹암거 한 장 · B06 바로 열기 62 = B05 먼저와 같음(고침 3d8c161ef)).
## 323. 구조물 관리 표 재설계 ② — 4~7단계 (322 멈춤점 뒤)
- 정함(브레인): 4~6 = 파일을 나눠 두세 창 함께 · 7 = 한 창 · E · F 점형 ↔ 구간형 종류 바꿈 = 지우고 같은 기준 측점에 새로(구간 = 기본 길이).
- [x] 323-4 형상 얹기 한 함수(미리 뜬 횡단 포함) · 카드 · 상세 창 · 3D 같은 그리기 목록 · 빈칸 경고 한 꼴 · 3D 지문 자동 · 켜는 칸 = 형상 · 3D 형상 — 확인 = 저장 전 그림 = 저장 뒤 그림 · 전수 표 시험.
- 검증완료(시험) — sub1 c45814f91(322-3 고침 3d8c161ef) · 화면 확인 = 브레인 · 검증 대기(멈춤점). · 브레인 화면 통과(빈칸 칩 · 맹암거 몸체 · 물넘이 일반 측점 저장 전 · 옹벽 벽 · 3D 업데이트).
- [x] 323-5 고름 한 칸(구조물 id + 부분) · 강조 함수 하나 · 같은 자리 거리 하나 — 확인 = 카드 · 형상 · 알약 · 종단 · 3D 강조가 같이 켜짐.
- 검증완료(시험) — sub1 cb4bab7bf · 화면 확인 = 브레인 · 검증 대기. · 브레인 화면 통과(관 옮김 · 새로고침 고름 · 맹암거 카드 + 몸체 강조) · 남김 = 새로고침 뒤 카드 강조(옛 코드도 없음).
- [x] 323-6 바꿈 한 길(놓기 · 옮기기 · 종류 바꿈 · 지우기) · 막히면 알림 — 확인 = 전수 표 시험 일곱 상황.
- 검증완료(시험) — sub1 529baca3f · 화면 확인 = 브레인 · 검증 대기(멈춤점). · 브레인 화면 통과(가드레일 → 반사경 · 반사경 → 가드레일 막힘 = 반사경 그대로 + 알림(고침 674452466)).
- [x] 323-7 M02 종류 더하기(본보기 복사) · 특수 동작 = 동작 이름으로 · 정본 목록 = 표 · 안 읽는 칸 · 옛 이름 되짚기 걷음 — 확인 = 새 종류 하나 만들어 일곱 갈래 그려짐.
- 검증완료(시험) — sub1 81f7d98e6(흠 고침 674452466) · 화면 확인 = 브레인 · 검증 대기(전체 끝 멈춤점). · 브레인 화면 통과(M02 [종류 더하기] 옹벽 2 → 판 21 → B05 24 · B06 27 · 놓으면 세 카드 「옹벽 2」 · 벽 · 툴팁 「옹벽 2 …」 · 정의 파일 판 20 되돌림) · 남은 일 = 관 바꿈 두 길 합치기 · 새로고침 뒤 카드 강조 · B08 · M02 표 채우기 종류 키 갈래(수량 · 이번 밖).
- [x] 323-8 사용자 확인(sub1 5174) → 병합 여부 결정 — 병합 = sub1 exp_sub1_structure(81f7d98e6) 를 브레인이 합침 · 버림 = 가지 그대로 두고 sub1 을 sub_laptop_1 로 되돌림 · 그동안 깃 싱크에 sub1 안 넣음.
- [x] 323-9 브레인 전수 화면 검증(요구 222) 흠 셋 → 고칠지 사용자 답 — ① B06 [저장] 직후 카드가 저장 전 서버 상태로 돌아감(새 흠 · 저장 중 watchDrafts 가 낡은 상세 캐시로 다시 그림 · 옛 코드 sub2 는 맞음) ② 정의 판 바뀐 프로젝트를 구조물 안 고치고 [저장] = definition_version 안 올라 「저장하면 반영」 알림 되풀이 ③ M02 부품 「맹암거」 끔 = 검사가 막아 저장 못 함(어느 종류 횡단도를 바꿀지 안내 없음) · 작은 흠 = 검사 글 띄어쓰기 · 본보기 목록 「맹암거」 둘 · 숨긴 옛 종류 · 노선 끝 관 3D 둘.
- 검증완료(시험) — sub1 7cb82c611 · 13608c6be · e067a2243 · dd3558907(요구 223 고침 · 본보기 「맹암거」 둘 · 숨긴 옛 종류 = 그대로) · 화면 확인 = 브레인 · 검증 대기.
- 사용자 확정(요구 223): 흠 고침 진행(①②③ + 작은 것 = 검사 글 띄어쓰기 · 노선 끝 관 3D 둘) · 본보기 목록 「맹암거」 둘 · 숨긴 옛 종류 = 그대로(비활성 · 켬끔은 사용자) · 고친 뒤 전역 깃 싱크 = 병합으로 받음.
- 넣음: sub1 ctx_bc9eb5661fb8(Opus 5.5 xhigh) · 지금 가지(exp_sub1_structure) 그대로.
- [x] 323-10 A군 맹암거 옵션 기본값 = 암거 높이 3 m · 암거 경사 3 %(사용자 지시 요구 223) — M02 구조물 옵션 정의에서 브레인이 사용자 길로 넣음(sub1 · 판 +1) — 확인 = B06 맹암거 새로 놓으면 폼 3 · 3 · 빈칸 경고 없음.
- 검증완료(시험 · 브레인 화면) — sub1 7cb82c611 · 13608c6be · e067a2243 · dd3558907 · 0d1c4f261 · 맹암거 기본값 4baf49ba4(판 21) · 저장 직후 카드 87 초 그대로 · 판 알림 저장 뒤 없음 · 부품 끔 새 글 · 띄어쓰기 · 노선 끝 3D 관 하나(브라우저 빌드 · 서버 저장본은 corridor 묶음 다시 지어야 반영) · 맹암거 폼 3 · 3 빈칸 경고 없음 · 323-8 = 사용자 「고침 진행 + 전역 싱크」로 병합(sub_laptop_1 ff 4baf49ba4).
- [x] 323-11 병합 + 전역 깃 싱크(요구 223) — sub1 exp_sub1_structure → sub_laptop_1 ff · push → git-sync-all -Global — 확인 = 열세 폴더 같은 커밋 · 8000 · 5173 새 코드.
- 검증완료 — 전역 싱크 ecd4a95ab · tree d81e12973 · 열세 폴더 같음 · 들어온 시험 192 통과 · typecheck · 8000 · 5173 = 200 · 서버 Node 묶음(corridor · server-calc · formula · spreadsheet · b07-extent · b07-note) 랩탑 메인 · sub1 다시 지음.
## 324. 일위대가 실무자료 — 엑셀 일위대가 탭 → 우리 일위대가(사전조합) · 별칭 · 규격 옵션 · 환산 (요구 223-5)
- 사용자 확정(요구 223): M02 좌측 「일위대가 실무자료」 버튼 · 엑셀 일위대가 탭 분석 · [로직 추가]에서 실무 호표 불러오기 · 맞으면 엑셀 단가산출 이름 = 일위대가 별칭 · 옵션 = 규격 열 · 단위 다르면 환산 결과 · sub1(sub_laptop_1 가지)에서 구현 · 끝에 아티팩트 보고.
- 정함(브레인): 호표 = 우리 일위대가 사전조합 하나 + 일위대가 참조 한 줄 · 층 = 구조물 조합 층 규칙 · 맞춤 기억 · 원본 단가산출 로직(master_data) 안 고침 — 근거 · 꼴 = docs/raw/조사/2026-10-14_324_일위대가실무자료.md.
- [x] 324-1 읽기 · 저장 · 올리기 길 — xls · xlsx → 호표 · 줄 · 갈래 · 참조 · 검산 · 층 폴더 실무자료 · requirements xlrd — 확인 = 북부청 68 · 사방 27 · 검산 0 · 시트 없음 400 · 역할 표.
- 검증완료 — test_m02_hopyo_excel 15 통과(북부청 68 · 415 줄 · 사방 27 · 검산 0 · 시트 없음 · xlsx · 역할 7 · 20 MB · sha256).
- [x] 324-2 맞춤 — 정규화 · 규격 → 입력값 · 후보 5 · 기억 · 환산 — 확인 = 규격 · 단위 · 환산 시험 · 기억 우선.
- 검증완료 — test_m02_hopyo_match 15 통과(규격 수 · 입력값 · 단위 · 환산 9 · 같음 · 후보 · 호표 · % · 미리 채움 · 확정 검사 · 같은 층 → 위 층 기억 · sha256).
- [x] 324-3 사전조합 만들기 — 호표 → 사전조합(별칭 · 수량 × 환산 · 같은 로직 감쌈 · 일위N · 자재 · 다시 씀) · _combo_lines 별칭 살림 — 확인 = 만들기 시험 · master_data sha256 그대로.
- 검증완료 — test_m02_hopyo_build 5 통과(별칭 · 수량 × 환산 · 메모 · 빠진 줄 · 값 비교 · 자재 직접계산 · 감쌈 · 다시 씀 · 새로 덮음 · 일위N · 순환 · 권한 · sha256) + 곁 시험(labor_ref · precombo 셋 · material_own · hopyo 둘) 84 통과.
- [x] 324-4 화면 — 좌측 판(올리기 · 파일) · 본 화면(호표 표 · 줄 맞춤 · 확정 · 빠진 줄 · 값 비교) · [로직 추가] 「실무 호표」 줄 — 확인 = 화면 시험 · typecheck.
- 검증완료 — test_m02_hopyo_screen 4 통과(고르기 덧줄 node · 만들기 길 · 별칭 · 프로젝트 없음 · 좌측 판 자리 · 권한 · Labor_Detail 693 줄) · hopyo 넷 40 · 곁 시험(Labor_Pick · Detail 108 · UI_Side 53) 통과 · typecheck 0 · test_197_1 집계표 갈래 1 실패 = UI_Main 조각(numberLabels · 이번 밖 · 원래 깨짐).
- [x] 324-5 확인 — 브레인 화면(북부청 파일 → 제3호표 맞춤 → 구조물 일위대가 불러오기 → 저장) → 아티팩트 보고.
- 검증완료(브레인 화면 · 검증 회사) — sub1 9edaec82e(다듬기 포함) · 올림 68 · 검산 맞음 · 자동 58/415 · 고르기 → 확정 기억 · 사전조합 만들기 · 값 비교 · [로직 추가] 실무 호표 → 참조 줄 별칭 · 같은 호표 두 번 막음 · [새로 만들기] · 시트 없음 · 권한 403 · 엉터리 400 · 어두움 · 엉뚱 후보 숨김 · 시험 자료 되돌림 · 아티팩트 보고.
## 325. B05 · B06 종단 — 유토곡선 · 배수유역 창분리 (요구 224-1 · sub5)
- 사용자 확정(요구 224-1): 종단 패널 안 보조 판(표 · 유토곡선 · 배수유역) 중 유토곡선 · 배수유역을 따로 창분리 · 단추 = 종단 그래프 좌측 상단 [창 분할] 양식.
- 정함(브레인): 단추 = 유토 판 좌상단 · 배수 머리줄 맨 앞 · 글 [창 분할]/[창 결합](툴팁에 판 이름) · 창 이름 셋 따로 · 뗀 유토 = 종단과 가로 맞물림 + 세로 노선 전체 · 창 자리 · 크기 기억 없음(지금 종단과 같음) · 메인 종단 접으면 뗀 유토 멈춤(한계) — 근거 docs/raw/조사/2026-10-15_325_유토곡선_배수유역_창분리.md.
- [x] 325-1 배수 판 창구 — `observeViewportSize` rebind · `rehome()`(배수 파일 · `_Drainage_Panel.ts` 700 유지) — 확인 = test_224_1a + test_b05_drainage_side · test_281_1 · test_230_2.
- 검증완료 — test_224_1a 5 · test_b05_drainage_side · test_281_1 · test_230_2 합 29 통과(새 창 400 → 800 px 배율 2 → 1 · 끊긴 메인 관찰자 안 울림) · typecheck 0 · 판 700줄.
- [x] 325-2 유토 판 붙어 있음 판정 · 방향키 — Heights · Drag 「열림 && 뿌리 안」 · MassHaul 뗀 동안 viewRange 안 씀 · Cross_Panel_Base 선택자 — 확인 = test_224_1b + test_230_2 · test_219_1.
- 검증완료 — test_224_1b 5 · test_230_2 · test_219_1 합 22 통과(붙음 = 그래프 100 · 유토 247 px / 뗌 = 그래프 347 · 인라인 없음 · 방향키 종단 · 뗀 유토 · 뗀 배수 참 · 횡단 카드 거짓) · typecheck 0 · helper_219_1 가짜 closest 를 여러 선택자 꼴로.
- [x] 325-3 [창 분할] 단추 · 새 창 — `design_profile_popout.ts` 일반 함수 `attachPopout` + `attachSubPanelPopouts` · `design_shared.ts` 한 줄 · `design_page.css` — 확인 = test_224_1c + test_282_1 · test_187_1 · test_230_1 · test_design_profile_single · typecheck.
- 검증완료 — test_224_1c 7 + 옛 시험 포함 11 파일 68 통과(창 이름 셋 다름 · 뗌 = 손잡이 숨김 · 인라인 비움 · rehome 1 → 2 · 닫힘 = 손잡이 앞 · content 끝 · 종단 새 창 안 단추 = 그 창이 엶 · dispose = 셋 다 닫힘) · typecheck 0 · helper_282_1 가짜 창에 document · getComputedStyle · rAF.
## 326. B05 계획노선 편집 — 측점 스냅 (요구 224-2 · sub7)
- 사용자 확정(요구 224-2): 계획노선 편집창 [측점 스냅] 켬/끔 · 호 사이(호 안) 측점은 호의 중심(곡선 중점 MC)에 · 노선 추천 · 기본 노선 조작 모두.
- 정함(브레인): 켬 = 호 안(BC~EC) 20 m 측점 중 MC 에 가장 가까운 하나를 정수 MC(floor(MC+0.5))로 옮김 · 측점 없는 호는 안 심음 · 값 = [확인] 때 곡선표 `planned_route_curves.json` "station_snap" · 없으면 끔(옛 프로젝트 그대로) · 기본 끔 · 지식DB 노선측량 ④(20 m 계속 + BC · MC · EC 보조측점)와 다른 점 = 옮김 — 「더함」으로 바꿀 수 있음 — 근거 docs/raw/조사/2026-10-15_326_측점스냅.md.
- [x] 326-1 쪼개기 + 짝 셈 — `Router_Replan.py` 요청 모델 → `B05_Profile_Schema.py` · `snap_curve_stations` ↔ `_RouteEdit_Frame.ts` `snapCurveStations` · `generate_sections(station_snap)` — 확인 = test_224_2 거울 + test_74_route_confirm_initial · test_route_initial · test_64_1_profile_toggle.
- 검증완료 — test_224_2 셈 12(거울 5사례 · 옮김 3사례 이상 · 곡선 없음 · 측점 없는 호 · 하나 · 둘 · BC 위 · .5 올림 · 같은 m · 끔 = 지금과 같음 · 켬 = 640 없음 631 있음 · 631 관 = grid) · 옛 시험 9 파일 86 통과 · test_route_initial::test_terrain_impossible_is_listed 원래 실패(시작 커밋 b5b626401 에서도 실패) · Router_Replan 698 → 648줄.
- [x] 326-2 서버 저장 · 정본 — 곡선표 칸 · GET /route/plan · 실패 되돌림(곡선표 · 노드도) · `load_station_snap` → 측점 셈 둘 · 횡단 미리보기 — 확인 = test_224_2 서버 갈래 + 측점 한 벌 시험(272_1 · 272_2 · 238_1 · 273_2 · regeneration_extra_stations · b05_station_roundtrip).
- 검증완료 — test_224_2 서버 5(곡선표 적고 읽음 · 칸 없음 = 끔 · 실패 되돌림 곡선표 · 노드 바이트 같음 · GET 값 · 측점 셈 둘 다 읽음 · 횡단 미리보기 스냅) · 측점 한 벌 8 파일 42 통과 · 8009 실측 검증_sub7: 켬 [확인] → 곡선표 true · 측점 67 중 6곳 MC 로(138 · 157 · 641 · 881 · 919 · 999 = 셈과 같음) → 끔 [확인] → 격자 밖 0 · 노선 · 노드 · 곡선 · 구조물 그대로(곡선표에 false 칸만).
- [x] 326-3 편집 창 [측점 스냅] — Chrome 단추(1m 등고선 양식) · RouteEdit `stations()` 한 곳 · Render · MapOverlays · Input · Pointer · Slope · Apply · Api — 확인 = routeedit 시험(frame_mirror · pick · chrome_modal · cross_width) · test_b06_curve_widening · test_75_profile_strip · typecheck.
- 검증완료 — routeedit 4 · frame_mirror · b06_curve_widening · 75_profile_strip · 224_2 = 7 파일 49 통과 · typecheck 0 · RouteEdit.ts 669줄.
## 327. 계획노선 추천 — 결과 영구 저장 (요구 224-3 · sub4)
- 사용자 확정(요구 224-3): 같은 시종점 · 옵션이면 결과 같음 → 영구 저장해 바로 보임 · 바뀐 경우만 새로 더함 · 기본값 결과 늘 보관.
- 정함(브레인): 자리 = `B05_Profile/route_recommend/<키>.json`(서버 계산 캐시 · 데이터 3층 밖 · [초기화] · 스냅샷에 안 휩쓸림 · 자료 교체 · 프로젝트 삭제 때 같이 지움) · 키 = 입력 전체 지문(지형 · 예상노선(시종점 포함) · 계류 · 제약 · 갈래 · 비중 · 설계속도 · ALGO_VERSION · 관 지점 뺌) · 덮어쓰기 없음 · 상한 없음 · 기본값 = 다섯 알약 × 빈 제약 · 50/25/25 · 업로드 체인 끝에 미리 셈(예약) · 진행 중 같은 키 = 기다림 — 근거 docs/raw/조사/2026-10-15_327-328_추천노선_저장_큰R.md.
- [x] 327-1 저장 · 찾기 — 새 `B05_Profile_Engine_RouteInitial_Store.py`(ALGO_VERSION) · `request_fingerprint` · 엔드포인트 `compute_initial`(찾기 → 셈 · 더함 · 덮개 수 다시 셈 · stored 표시) · 머리글 「파일 안 씀」 정정 — 확인 = test_224_3_recommend_store(같은 키 · 하나만 바뀌어도 다른 키 · 두 번째 셈 0 · 덮어쓰기 없음 · 스냅샷 복원 뒤 남음) + 추천 시험 넷.
- 검증완료 — test_224_3_recommend_store 18 통과 · 추천 · 체인 시험 84 통과 13 건너뜀(test_route_initial::test_terrain_impossible_is_listed 원래 실패) · typecheck 0 · 8006 검증_sub4 토공 최소 첫 셈 82.7 초 → 두 번째 0.43 초(저장본) · 검증 대기.
- [x] 327-2 미리 셈 · 표시 — B03 체인 스냅샷 뒤 예약 · 기본 다섯 · 진행 중 기다림 · 추천 창 상태 줄 「저장된 결과」 — 확인 = 시험 + 자기 포트 실측(두 번째 · 재시작 뒤 1 초 미만 · 제약 하나 바꾸면 파일 하나 더 · 체인 뒤 첫 누름 1 초 미만).
- 검증완료 — 서버 다시 켠 뒤 첫 요청 0.65 초 · 최소 R 15 로 바꾸면 파일 1 → 2(68.7 초 · 시험 뒤 지움) · precompute_defaults 직접 83.7 초 → 다섯 알약 첫 누름 0.28~0.53 초 모두 저장본 · 검증 대기.
## 328. 계획노선 추천 — 큰 R (요구 224-4 · sub8)
- 사용자 확정(요구 224-4): 추천 노선 R 은 최소 12 m 가 아니라 클수록 좋음 · 무조건이 아니라 지금 노선 로직 + 추가 로직.
- 정함(브레인): 1단 = `_trace` 가 탐색 경로를 예정노선과 같은 폴리라인 규칙(단순화 · 묶음 · R 맞춤)으로 · 최소 R 판보다 위반 많으면 최소 R 판 · 2단 = 곡선마다 [맞춘 R, 접선 자리 ÷ tan(IA/2)] 안에서 탐색 경로 최대 이탈 ≤ 4 m(탐색 칸 하나)인 가장 큰 R · 1 m 내림 · 늘 켬 · 예상노선 추적(전처리 초기값)은 그대로 · 근거 = 지식DB 「곡선반지름은 가급적 큰 것이 좋음」 · 법정 최소 15/12 — docs/raw/조사/2026-10-15_327-328_추천노선_저장_큰R.md.
- [x] 328-1 1단 — `B05_Profile_Engine_RouteInitial_Pool.py` `_trace` · 도움말 「최소 R」 → 「맞춘 R」(`_Recommend_Help.ts:32`) — 확인 = test_224_4_recommend_radius(R ≥ 최소 · 하나 이상 큼 · 위반 ≤ 최소 R 판 · 추적 그대로) + 추천 · R 시험.
- 검증완료 — test_224_4_recommend_radius 6 통과 · 추천 · R 시험 94 통과 6 건너뜀(랩탑_보조 storage 없음 · test_terrain_impossible_is_listed 원래 실패 → 이제 통과) · typecheck 0 · 검증 대기.
- [x] 328-2 2단 — 새 `B05_Profile_Engine_RouteInitial_Radius.py` · 허용 이탈 상수 `config/config_system_design.py` · 327 합친 뒤 ALGO_VERSION 올림 — 확인 = test_224_4 이탈 갈래 + 자기 포트 실측(네 갈래 R 최소 · 중앙 · 최대 · 셈 시간 전후 · [적용] → [확인] 뒤 곡선표 R = 추천 R).
- 검증완료 — 8010 검증_sub8 네 갈래 R 전 12/12/12 → 후 18/29/112~147 · 셈 영선 첫 76 → 75 초 · 나머지 3~5 → 5~7 초 · 위반 2/4/2/6 → 2/3/3/4 · 토공 최소 [확인] 뒤 곡선표 R = 응답 R(50 곡선 차 0) · 자료 스냅샷 복원 · 급한 지형 대비 「2단을 최소 R 판 노드에 바로」 판 더함 · ALGO_VERSION 안 올림(브레인 지시 대기) · 검증 대기.
## 329. M02 외부 일위대가 — 엑셀 보기 창 (요구 224-5 · 서버 sub1 · 화면 sub3)
- 사용자 확정(요구 224-5): 처음에 엑셀에서 연 것처럼 모달로 보임 · 호표를 고르면 영역 강조 · 한 번에 불러오기.
- 정함(브레인): 부품 = A00 산출근거 스프레드시트(읽기 전용) + `select(범위)` · 탭 = 일위대가 · 단가산출 · 격자 = 따로 파일 `실무자료/격자/<키>.json` · 길 `GET /api/m02/layers/{layer}/hopyo-grid/{key}` → `{책: Workbook, 호표: [{번, 이름, 행: [시작, 끝]}], 단산: [{번, 이름, 행: [시작, 끝]}]}`(행 = 엑셀 1부터 · 없으면 404 「격자 없음 — 다시 올리면 보임」) · 여는 자리 = 올린 직후 자동 · 본 화면 [엑셀로 보기] · 호표 화면 [엑셀에서 보기] · [로직 추가] 실무 호표 덧줄 · 한 번에 = 고른 호표마다 사전조합(+ [로직 추가]에서 열었으면 참조 줄까지) · 옛 파일 = 다시 올려야 보임 · xlsx 값만 · STmate 꼴 이번 밖 — 근거 docs/raw/조사/2026-10-15_329-330_외부일위대가_보기창_근거맞춤.md.
- [x] 329-1 (sub1) 서버 격자 · 행 범위 — 새 `M02_Hopyo_Grid.py` · Excel read_book 호표 · 줄 `행` · Store 격자 저장 · 지움 · Router hopyo-grid · Match `:464` `.get` — 확인 = test_m02_hopyo_grid(병합 11 · 15열 · B20 · `#,##0` · 68 범위 안 겹침 · 제3호표 [20,24] · 200/404 · 지움 · 역할 · master_hash) + hopyo 넷.
- 검증완료 — test_m02_hopyo_grid 9 통과(병합 11 · 15열 · B20 제3호표 · `#,##0` · 68 안 겹침 · [20,24] · 200/404 · 지움 · 역할 넷 · xlsx 값만) + hopyo 넷 · 틀고정 = 파일 값(일위대가 4 · 단가산출 3) · 북부청 격자 약 0.9 MB(빈 칸 테두리 · gzip).
- [x] 329-2 (sub3) A00 `select(범위, 시트?)` — `spreadsheet.ts` · helper_spreadsheet_d 한 건 — 확인 = test_spreadsheet_d_input.
- 검증완료 — test_spreadsheet_d_input 16 통과(select_ranges: B20:O24 · 병합 C4:F4 늘림 · 여럿 · 틀린 글 null) · typecheck 0.
- [x] 329-3 (sub3) 창 — 새 `M02_MasterTemplete_Hopyo_Sheet.ts`(읽기 전용 시트 + 호표 목록 · 누름 ↔ 강조 · [고른 n개 불러오기]) · 여는 자리 넷 · Api `readHopyoGrid` · CSS 토큰 — 확인 = test_m02_hopyo_screen 새 파일 목록 · node 도우미(행 → 호표) · typecheck.
- 검증완료 — test_m02_hopyo_screen 7 통과(Hopyo_Sheet 282줄 · 22행 → 제3호표 · B20:O24 · 격자 길 · 여는 자리 넷 · 정적 import 없음) · typecheck 0 · 실제 격자 붙여 보기는 329-1 합친 뒤.
## 330. M02 외부 일위대가 — 단가산출 근거 맞춤 (요구 224-6 · 서버 sub1 · 화면 sub3)
- 사용자 확정(요구 224-6): 이름 맞춤 + 연결된 단가산출 탭의 계산식 · 출처로 정합성.
- 정함(브레인): 근거 = 엑셀 「단산N참조」 → 단가산출 블록 출처(책 · 조항) · 직종 ↔ 우리 로직 조항 묶음(`sources()`) · 직종(호표 LB) · 점수 = 같은 책 조항 같음 1.0 · 앞 마디 0.5 · 건설 공통 · 토목 덤 0.1 · 직종 겹침(보통인부 뺌) 0.5 · 단위 0.15 · 까닭 꼬리표 · 근거 후보는 이름 거름 안 거침 · 상태 = 「후보」 그대로(자동 확정 없음) + [근거 맞음 모두 확정](조항 · 직종 · 단위 모두 맞는 것만) · 판 다른 품셈 번호 대응표 이번 밖 · 원본 로직 읽기만 — 근거 같은 파일.
- [x] 330-1 (sub1) 근거 읽기 — 새 `M02_Hopyo_Basis.py` `read` · Excel wanted 「단가산출」 · 단산 줄 `근거` — 확인 = test_m02_hopyo_basis(블록 북부청 95 · 사방 67 · 단산93 근거 [건설 3-2-1] · [특별인부]).
- 검증완료 — test_m02_hopyo_basis 블록 95 · 67 · 단산93 [건설품셈 3-2-1] · [특별인부] · 행 [4229,4244] · 단산 줄 268 모두 근거 · 출처 글 다섯 꼴.
- [x] 330-2 (sub1) 근거 후보 — `Basis.ours` · `candidates` · Match `match_line` 합침 · 응답 `근거` 칸 — 확인 = test_m02_hopyo_basis(93 → GC000083 · 21 → GC000198 · 64 → GC000143 위 둘 · 49 → GC000085 · 잔토처리에 철골재 철거 없음 · 근거 없는 줄 그대로 · master_hash) + test_m02_hopyo_match 기대값 고침 + 북부청 단산 200 줄 1순위 전후 표.
- 검증완료 — test_m02_hopyo_basis 5 통과(93 GC000083 1.75 · 21 GC000198 · 64 GC000143 1위 · 49 GC000085 · 철골재 없음 · 근거 없는 줄 같음 · 상태 후보) + hopyo 넷 56 통과 · 북부청 단산 후보 줄 1순위 근거 맞음 0/200 → 123/201(없음 5 → 4).
- 덧고침 검증완료 — 다섯 안 이름 1순위 자리 · 낱말 안 겹치는 근거 후보 뒤로(근거 맞음 빼고) · 위 층 격자 읽기(고르기 줄 층 · 주인) — basis · match · grid · screen · excel · build 62 + test_m02_hopyo_seam 1 통과 · 제3호표 구조물터파기 다섯 = 굴착(인력/토사) · 터파기 셋 · 육상토사 · 근거 맞음 1순위 123/201 그대로 · 이음매 = 실제 응답 칸 · 꼴 맞음(행 → 호표 · B20:O24 · 근거 줄 · 꼬리표) · 화면 basisOk 116 vs 서버 123(직종 없는 줄 7 놓침 · TS 보고).
- 덧고침 2 검증완료 — View basisOk = 조항 같음 · 단위 · (직종 겹침 또는 줄 직종 보통인부뿐 · 없음) — test_m02_hopyo_screen 8 · test_m02_hopyo_seam 1 통과 · 북부청 실제 응답 화면 1순위 근거 맞음 123 = 서버 기준 · 앞 마디 0 · 흙깍기(기계) 근거 맞음 · typecheck 0.
- [x] 330-3 (sub3) 고르기 창 — View `choose()` 근거 꼬리표 · 엑셀 근거 줄 · [엑셀에서 보기](329-3 창 단가산출 탭) · [근거 맞음 모두 확정] · Api `근거?` — 확인 = test_m02_hopyo_screen · typecheck.
- 검증완료 — test_m02_hopyo_screen 8 통과(꼬리표 「조항 건설 공통 3-2-1 · 직종 특별인부 · 단위 같음」 · 근거 맞음 셋 다 · 대상 안 맞으면 근거 맞는 후보 · 열 차례 그대로 · View 610줄) · typecheck 0 · 실제 응답 맞춰 보기는 330-2 합친 뒤.
## 331. 내장 CAD — 키보드 연속 명령 (요구 224-7 · sub6)
- 사용자 확정(요구 224-7): 오토캐드처럼 키보드로 이어지는 명령(단축키 → 각도 → 길이) · 인터넷 조사 뒤.
- 정함(브레인): 오토캐드 방식 그대로 — 각도 고정 `<각도` 뒤 길이(다음 한 점만) · 각도 = 동쪽 0° 반시계(지금 `@d<a` 와 같음) · 동적 입력 `길이 Tab 각도`(CAD 초점일 때만 Tab 가로챔 · F12 안 씀) · 선 중 `C` 닫기 · `U` 한 구간 취소 · 한 번 스냅 이름(END · MID · CEN · INT · PER · NEA · NON) · 이동 · 복사 · 회전 키보드 값 · 시퀀스 첫 점 버그 · 원본 안내문 한글 + 「[닫기(C)/명령취소(U)]」 · 도분초 이번 밖 · 같은 CAD 를 쓰는 B06 상세 · B07 · M02 도면에 함께 — 근거 docs/raw/조사/2026-10-15_331_CAD연속명령.md.
- [x] 331-1 각도 고정 → 길이 + 시퀀스 첫 점 버그 — 새 `input-angle-lock.ts` · patterns · controller · get-point-from-event · line · sequence 미리보기 · run-command — 확인 = `resources/tester/cad/keyboard-chain.test.ts`(`0,0` `<30` `100` → (86.603, 50) · `<90` `50` → (86.603, 100) · 고정 없이 = 마우스 방향 · PLINE 첫 점 `100` → active · 알림 0) + ime-sink · ctrl-shortcut-hangul · check-types.
- 검증완료 — keyboard-chain 5/5((86.603, 50) · (86.603, 100) · 마우스 방향 (0, 100) · 클릭 고정 (60, 0) · PLINE 첫 점 무시 · 알림 0) · ime-sink 6/6 · ctrl-shortcut-hangul 13/13 · check-types 0 · build 0 · 원래 실패 grips · clone-keeps-look · geometry 10건(시작 커밋 b5b626401 에서도 같음 · flatten 사본 둘 「Illegal Parameters」)
- [x] 331-2 이동 · 복사 · 회전 키보드 값 — move · copy(ABSOLUTE · NUMBER · RELATIVE · getPointFromEvent) · rotate NUMBER · 음수 — 확인 = keyboard-chain(MOVE `@10,0` · COPY `<0` `5` · ROTATE `90`) + clone-keeps-look.
- 검증완료 — keyboard-chain 8/8(MOVE `@10,0` → (10, 0)-(30, 0) · COPY `<0` `5` → 시작 x 0 · 5 · ROTATE `90` → (0, 10)-(0, 20) · 알림 0) · check-types 0 · build 0 · clone-keeps-look 원래 실패 5건 그대로
- [x] 331-3 선 중 C · U · 한 번 스냅 이름 · 한글 프롬프트 — 해석 차례(자유 글 단계만 먼저) · line-tool 첫 점 · 구간 기억 — 확인 = keyboard-chain(C 닫힘 · U 한 구간 · END 한 번).
- 검증완료 — keyboard-chain 15/15(C → 셋째 선 (10, 10)-(0, 0) · 한 구간 C 무시 · U → 1구간 뒤 (10, 0)-(20, 0) · 선 중 circle = 원 명령 · END 28 떨어진 클릭 → (100, 0) · 끝점 없으면 클릭 버림 · 점 단계 밖 END 무시 · 안내 「다음 점 지정 또는 [닫기(C)/명령취소(U)]:」) · ime-sink 6/6 · ctrl-shortcut-hangul 13/13 · check-types 0 · build 0
- [x] 331-4 동적 입력 길이 Tab 각도 — input-field-draw 두 칸 · 잠금 표시 — 확인 = keyboard-chain(`100` Tab `30` ⏎ → (86.603, 50)) + `npm --prefix B07_DesignDetail/openwebcad run build`.
- 검증완료 — keyboard-chain 19/19(`100` Tab `30` ⏎ → (86.603, 50) · 빈 Tab `30` Tab `100` ⏎ → (86.603, 50) · 길이만 잠금 ⏎ → (0, 40) · 기준점 없음 · 숫자 아닌 글이면 Tab 손대지 않음) · ime-sink 6/6 · ctrl-shortcut-hangul 13/13 · check-types 0 · build 0 · 원래 실패 grips · clone-keeps-look · geometry 10건 그대로
## 332. ☰ [설정] 모달 — 마우스 · 단축키 (요구 224-8 · sub2 · CAD 배선 sub6)
- 사용자 확정(요구 224-8): ☰ 안 [설정] → 탭 모달(마우스 제어 · 오토캐드 단축키 · 다른 곳 단축키) · 페이지 기본 옵션값 탭은 나중(사용자 별도 요청).
- 정함(브레인): 저장 = 기존 계정 pref(`user_ui_prefs` · `aislo:pref:*` · 새 표 · API 없음) · [저장] 때만 씀 · 읽기 층 새 `A00_Common/input_prefs.ts` · 탭 ① 마우스 = 휠 확대 방향(당김/밀기) 하나로 모든 화면 일체(기본 당김 → M02 그림 · 시트 · 돋보기는 지금과 반대) + 지금 규칙 안내(팬 = 가운데 끌기 · 고름 = 왼쪽 · 오른쪽 = 메뉴/CAD Enter) · 트랙패드 핀치 = 늘 벌리면 확대 · ② CAD = 별칭 덮어쓰기(acad.pgp 식 · 이름 > 내 별칭 > 기본 · 영문 · 숫자만 · 겹침 금지) · ③ 다른 곳 = 안내표(읽기 전용) · [설정] 늘 보임 — 근거 docs/raw/조사/2026-10-15_332_설정모달.md.
- [x] 332-1 (sub2) 읽기 층 + 휠 배선 — 새 `input_prefs.ts` · `b_page_state.ts` 등록 · `touch_bridge.ts` · `b_svg_zoom_pan.ts` · `B04_PreProcess_UI_Camera.ts` · M02 둘 · 돋보기 · 시트 — 확인 = test_input_prefs(기본 = 당김 · 밀기 저장 뒤 뒤집힘 · 깨짐 · Node = 기본) + 휠 · 팬 옛 시험.
- 검증완료 — test_input_prefs 19 · 휠 · 팬 · 돋보기 옛 시험(164 · 266 · 281 · 230 · 244-6 · 244-8 · cross_width · 218 · 220 · 221 · M02 그림 둘 · 259 · keys · prefs) 115 통과 · cross mjs 2 · typecheck 0 · 돋보기 시험 부호를 당김 기본으로 바꿈
- [x] 332-2 (sub2) ☰ [설정] + 모달 — `app_shell.ts` 단추 · 새 `app_settings.ts`(탭 셋 · [저장] · askLeave) · `app_settings_cad.ts`(별칭 표 · 검사) · CAD 명령 목록 `openwebcad/src/commands/command-catalog.json` + 거울 시험 · locale — 확인 = test_app_settings + test_device_drawer · typecheck.
- 검증완료 — test_app_settings 2(별칭 검사 Node · 5177 브라우저 = 탭 셋 · [저장] 때만 1번 씀 · 닫을 때 물음 취소/버림/저장 · 저장 뒤 wheelIn 뒤집힘 · 잘못 별칭 셋 안 씀) · cad/command-catalog 거울 2 · test_device_drawer · test_touch_bridge(5177) · ui_loading · modal · keys · prefs · input_prefs 45 통과 · typecheck 0
- [x] 332-3 (sub6 · 331 뒤) CAD 배선 — `input-wheel.ts` 방향 · `registry.ts` 내 별칭 · tsconfig include — 확인 = `cad/input-prefs-cad.test.ts` + 옛 CAD 시험 · build.
- 검증완료 — cad/input-prefs-cad 6/6(저장 없음 휠 100 → -100 확대 · 밀기 저장 → +100 · 깨짐 = 당김 · 핀치 -7 → -7 늘 확대 · 마우스 Ctrl+휠은 설정 · `L` = LINE · 내 별칭 CIRCLE:[L] → `L` = CIRCLE · `LINE` 이름 우선 · QQ → RECTANG · 후보 맨 앞 · 「qq␣」 = 사각형) · input-wheel 4/4(핀치 기대값 -7 로 고침) · keyboard-chain 19/19 · table-export 5/5 · check-types 0 · build 0 · 별칭 꼴 = input_prefs `cadAliases {명령: [별칭]}`(332-2 app_settings_cad · command-catalog.json 아직 dev 에 없음)
## 333. 요구 224 마무리 — 합치기 · 브레인 화면 검증 · 아티팩트 (요구 224-9 · 브레인)
- 사용자 확정(요구 224-9): 정밀 분석 → 신규 계획 → 분배 · 끝에 브레인이 사용자처럼 브라우저 조작 · 보고서 아티팩트.
- [x] 333-1 합치기 — 창 가지 → 랩탑 메인 · 고친 대상 시험 · typecheck · CAD build · 8000 다시 읽음.
- 검증완료 — 랩탑 메인 1a029141f(여덟 창 전부 · 덧고침 둘) · 합칠 때마다 고친 대상 시험(68 · 46 · 129 · 42 · 35 · 77 · 9) · CAD vitest 21 · typecheck 0 · CAD build · 서버 Node 묶음 여섯 다시 지음 · push.
- [x] 333-2 브레인 화면 검증(랩탑 메인 5173 · 사용자처럼) — 325~332 전수 목록 + 예외(빈 값 · 되돌림 · 어두움) → 아티팩트 보고.
- 검증완료(브레인 화면 · 복제 프로젝트 브레인임시_224 · 검증 회사) — 325 · 326 · 327 · 328 · 329 · 330 · 331 · 332 전수 통과(새 창 크기 바꿈 · CAD 이동/복사/회전은 시험으로 갈음) · 시험 자료 되돌림(실무자료 · SC 셋 · 빈 폴더 · CAD 시험 선 · 설정 당김 · 별칭 · 복제 프로젝트 지움).
## 334. ☰ 바로가기 — 대시보드 구역 · 시스템 설정 4 페이지 (요구 225-1 · 225-2 · sub2)
- 사용자 확정(요구 225-1 · 2): 대시보드 ☰ 좌측에 진행단계 같은 바로가기 + 페이지 스크롤 · 시스템 설정 컨테이너로 가는 4 페이지 ☰ 에도 진행단계 같은 바로 이동 단추.
- 정함(브레인): 대시보드 ☰ 진행단계 자리(로고 아래 · 같은 세로 단추 꼴 · 아이콘 · 구역 키로 짝 = EN 도 같음) = 그 역할 화면의 구역 바로가기(화면 차례 · 시스템 관리자 10 · 회사 관리자 8 · 일반 6) · 누르면 서랍 닫고 그 구역으로 부드럽게 굴림(☰ 52px 비킴) · 본문 구조 · 접힘 그대로 · 설정 4 페이지 ☰ = 🏠 대시보드 + 마스터 데이터 · 구조물 조합 · 구조물 옵션 · 도면 양식(그 밖 역할 = 🏠 + 구조물 조합) · 지금 칸 = 진입 인자 · M02 저장 안 한 고침은 이동 전 물음 · 카드 규칙 한 벌 — 근거 docs/raw/조사/2026-10-15_334_햄버거메뉴_바로가기.md.
- [x] 334-1 (sub2) 기반 + 대시보드 — `ui_template_workflow_layout.ts` 전처리 잠금 칸 번호 → 길 기준 · `app_shell.ts` 집 없는 요소 받음 · `B01_Dashboard_UI_Page.ts` buildPage 구역 바로가기(늦게 끝난 그림 막기) · `ui_template_general_layout.css` scroll-margin-top — 확인 = 새 test_225_drawer_shortcuts(앞) + test_device_drawer · test_design_page_single · typecheck.
- 검증완료 — test_225 앞(Node · 브라우저 역할 셋 · 보안 위 끝 52) · test_device_drawer(5177) · test_design_page_single 통과 · typecheck 0 · 화면 = 사용자 확인 대기.
- [x] 334-2 (sub2) 설정 4 페이지 — 새 `A00_Common/m_settings_nav.ts`(카드 규칙 한 벌 · ☰ 맡김) · B01 카드가 그 목록 씀 · M01 · M02 page 한 줄씩 · 같은 길 이동은 takeLeaveGuard 먼저 — 확인 = test_225(뒤) + test_b01_settings_cards · test_197_1 · test_m02_layer_screen · typecheck.
- 검증완료 — test_225 6 · test_b01_settings_cards · test_m02_layer_screen · test_device_drawer(5177) 통과 · typecheck 0 · test_197_1 의 「집계표 갈래 기다리는 사이」 한 개는 이번 밖 기존 실패(224-1 numberLabels 가 시험 가짜 틀에 없음) · 화면 = 사용자 확인 대기.
## 337. 내장 CAD — 오토캐드와 같은 명령 · 옵션 조작 (요구 229-3 · 가 sub2 · 나 sub5 · 다 sub6 · 라 sub7 · 마 sub8)
- 사용자 확정(요구 229-3): 명령 입력 → 이어지는 옵션 · 숫자 · 점으로 형상을 그리는 조작을 오토캐드와 차례 · 방법 같게 · 충돌하면 오토캐드대로 · 휠 확대 확인.
- 정함(브레인): 설계 = `docs/raw/조사/2026-10-15_337_CAD오토캐드조작_설계.md`(0 장 정함 표 그대로 · 앞글자 실행 없앰 · 대소문자 무관 · Esc 한 번 = 명령 끝 · 점 묻는 중 명령 이름 거절 · 옵션 글자 = 오토캐드 · 기본값 세션 기억 · 한 번 그리는 명령은 하나 뒤 끝 · 식 거절) · 휠 = 있음 · 기본 방향만 오토캐드와 반대 → 앞으로 굴리면 확대(모든 화면 · ☰ 설정 뒤집기 그대로).
- [x] 337-1 가(sub2) 옵션 틀 · 키보드 — 가-1(설계 2 장 계약 · 흠 · cad-drive · 계약 시험) push → 가-2(↑↓ · Tab · FROM · M2P · @ · # · 스냅 이름 · H11).
- 검증완료 — prompt-frame 30 · prompt-contract 3 · keyboard-chain 19 등 대상 시험 74 초록 · src/inputController + eraser 11 초록 · 타입 검사 둘 0 · CAD 빌드 성공 · 검증 대기(끝 몫 = 옛 꼴 통과 지움 · 안내 글 — 브레인 지시 때).
- [x] 337-2 마(sub8) 마우스 · 고르기 · 그립 · 휠 · 직교 · 보기 전용 — 마-1(처음부터) → 마-2(가-1 뒤 · ZOOM · 스냅 메뉴 · 우클릭 반복).
- 검증완료 — mouse-acad 21 · 틀(prompt-frame · contract · keyboard-chain 등) 88 · src 17 · 휠 손질 파이썬 62 + 설정 창 브라우저 2 초록 · 타입 검사 둘 0 · CAD 빌드 성공.
- [x] 337-3a 나-1(sub5) 그리기 8 · 337-3b 나-2(sub3) 구성선 · 글자 · 해치 4 · 337-4a 다-1(sub6) 고치기 7 · 337-4b 다-2(sub4) 늘이기 · 재기 · 치수 5 · 337-5 라(sub7) 옮기기 무리 7 — 가-1 받은 뒤 · 설계 1 장 줄대로.
- [x] 337-3a 나-1(sub5) 검증완료 — draw-acad 22 · prompt-contract 3 · prompt-frame 22 · keyboard-chain 19 · test/entities 134 초록 · 타입 검사 둘 0 · CAD 빌드 성공 · LINE(U 되돌림 한 칸 · C 둘째 토막부터 · 첫 점 Enter 이음) · PLINE(A 접선 호 · L · C · CL · U · Esc 남김) · RECTANG D(기억 · 사분면) · CIRCLE(D <2r> · 3P · 2P · 기억) · POLYGON(<6> · <C> 기억 · 2.5 거절 · E) · ARC(C · A · E · R) · ELLIPSE(N10 · C · R) · SPLINE(U · C · Esc 버림) · DONUT 되풀이 · 검증 대기.
- [x] 337-4b 다-2(sub4) 검증완료 — measure-acad 11 · prompt-contract 3 초록 · 타입 검사 둘 0 · CAD 빌드 성공 · 검증 대기(화면 확인 = 브레인).
- 337-3b 나-2 검증완료 — text-acad 12 · prompt-contract 3 · ime-sink 6 초록 · 타입 검사 둘 0 · CAD 빌드 성공 · XLINE(H · V · A <45> 기억 · 되풀이) · TEXT(높이 <4.0000> 기억 · 각 90 · 줄 이어 높이 × 1.35 · 시작 Enter 앞 글 아래) · MTEXT(H · W · \P) · HATCH(가장 작은 경계 · S · U) · 검증 대기.
- 337-4a 다-1 검증완료 — modify-acad 13 · prompt-contract 3 · eraser 3 초록 · 타입 검사 둘 0 · CAD 빌드 성공 · OFFSET(<통과점> · 거리 <5.0000> 기억 · 되풀이 · E 예/아니오 기억 · M <다음 객체> · U · T) · FILLET(R <10.0000> 기억 · Shift 0 · T 자르지 않기 기억 · M · U) · CHAMFER(D 둘째 기본 = 첫째 · Shift) · TRIM(되풀이 · 반경 밖 무시 · Shift 연장 · R · U · 사각형 층) · EXTEND(빠른 · Shift 자르기) · BREAK(누른 점 · F · @0,0) · JOIN · 검증 대기.
- [x] 337-6 합치기 · 시험 · 타입 검사 둘 · CAD 빌드(브레인) — 검증완료 — 메인 acad 9 파일 162 통과 · 타입 검사 둘 0 · CAD 빌드 · CAD 폴더 옛 실패 16 = 작업 전과 같음.
- [x] 337-6 가(sub2) 끝 몫 검증완료 — ALL · L · P 실제 고름 시험 · 옛 OFFSET · LENGTHEN · 옛 꼴 통과(옵션 글 배열 · TEXT_INPUT 통과 · chainFromLastPoint) 지움 · 안내 글 · acad 9 파일 162 초록 · ime-sink 6 초록 · 타입 검사 둘 0 · CAD 빌드 성공 · CAD 폴더 실패 16 줄 = 7a8f33452 와 같음(새로 깨짐 0) · 검증 대기.
## 338. M02 외부 일위대가 — 연결된 단가산출로 우리 로직 맞춤 → 일위대가 구성 (요구 229-4 · 가 sub1 · 나 sub4 · 다 sub3)
- 사용자 확정(요구 229-4 · 227 · 228): 엑셀 호표 줄 → 연결된 단가산출 블록(목록 · 식) → 우리 로직 + 옵션 맞춤 → 일위대가 하나로 · 이름은 언제든 다름 → 잘 맞추는 로직 구현 · 우리 로직 기준(안 고침) · 「맞음」은 표시만 · 확인한 줄만 들어감 · 고른 짝 = 별칭 · 발주처 없음 · 우리에 없는 로직은 원문 보고 사용자 확인 뒤.
- 정함(브레인): 설계 = `docs/raw/조사/2026-10-15_338_일위대가맞춤_설계.md`(8-2 열둘 그대로 · 이음 = 단산 번호 글 · STmate 줄 코드 · 하이퍼링크 안 읽음) · 실험 본보기 = 같은 폴더 `2026-10-15_338_실험자료/`.
- [x] 338-1 가(sub1) 맞춤 핵심 서버 — 정답 표 fixture · Finger · Ours · Option · Fit · Combine · Match 새 상태 · 뒤 셈 · 시험(설계 7-1 가) · 기준 수치(설계 7-3).
- 검증완료 — 사람 126 1순위 118(93.7%) · 다섯 안 122(96.8%) · 맞음 57 틀림 0 · 다른 점 틀림 1 · 옵션까지 57 · 조합 맞음 62/83(74.7%) · 씨앗 끔 · 북부청 조합 전 통과 · 새 파일 51 맞음 틀림 2 · 우리 지문 셈 37 초 · 읽기 0.05 초 · 북부청 임도 맞춤 셈 23~34 초 · master_data sha256 그대로 · 시험 finger · ours · option · fit · match · golden 통과 · 검증 대기
- [x] 338-2 나(sub4) 읽기 — 2a 블록 글 HP · Basis.clause · 오타(먼저 push) → 2b STmate · 거창 · Grid · 문서 보안 글 · 시험(설계 7-1 나).
- 검증완료 — STmate 6 파일 200(호표 45 · 23 · 34 · 34 · 9 · 25 · 봉화 216 줄 · 노임 이름 어긋남 0) · 거창 단산 21 · 출처 17 · 직종 21 · 장수 · 진안 400 글 · 북부청 268 · 사방 139 이음 그대로 · 영월 정답 자리 36(Y000~Y035) · 시험 stmate · excel · basis · grid · match · build 69 통과 · master_data sha256 그대로 · 검증 대기
- [x] 338-3 다(sub3) 확인 · 별칭 장부 · 만들기 + 화면 — 3a Ledger 뼈대(먼저 push) → Build 새 몸 · 길 · 확인 창 · 고르기 창 · 장부 화면 · 옛 즉시 확정 · 바로 만들기 없앰 · 시험(설계 7-1 다).
- 검증완료 — 몸 없는 만들기 400 · hopyo-memory 404 · 화면 바로 만들기 0(buildHopyo = 확인 창 · 엑셀 보기 펼침만) · 장부 옛 꼴 바꿔 읽음 · 층 차례 · 위 층 PUT 403 · 하위 호표 409 · 시험 ledger 5 · build 6 · screen 13 · seam 1 통과 · typecheck 0 · master_data sha256 그대로 · 화면은 3-3 꼴 대역(가 창 실물 fixture 아직 없음) · 검증 대기
- [x] 338-4 이음매(sub1 · 화면 ↔ 실물 응답 · GuessBody 목록 · seam 기준 · API 끝까지) · 합치기(브레인) — 검증완료 — 메인 338 대상 15 파일 140 통과 · typecheck 0.
- 이음매(sub1) 검증완료 — guess 길 목록 · 끝까지 시험(북부청 올림 → 셈 → 화면 몸 → 만들기 → 장부 → 다시 올림 별칭 · 몸 없음 400 · hopyo-memory 404 · 영월 STmate) · seam 268 줄 맞음 122 · 다른 점 86 · 후보 60 · 338 대상 시험 140 통과 · typecheck 0 · master_data sha256 그대로 · 시험 캐시 tmp/m02_hopyo 안 남음 · 검증 대기(합치기는 브레인)
## 339. 요구 229 마무리 — 합치기 · 빌드 · 브레인 브라우저 검증 · 아티팩트 (브레인)
- [x] 339-1 합치기 · 대상 시험 · typecheck 둘 · CAD 빌드 · 서버 Node 묶음 · 8000 다시 읽음 · 5173 새 파일 — 검증완료 — 빌드 · 묶음 여섯 성공 · 8000 다시 켬.
- [x] 339-2 브레인 브라우저 검증 — 338 설계 7-4 열둘 · 337 설계 화면 확인 거리 · 바꾼 값 · 파일 되돌림 — 검증완료 — W1~W6 · W8~W11 · C1~C6 · C9 · C10 통과 · W7 = 시험 · 찾은 흠 여섯 덧고침(d9cc66b5e · 7f33ffe2b · ca5485b20 · 912575d9b) 뒤 다시 확인 · 검증 자료 지움.
- [x] 339 덧고침 맞춤 서버 셋(sub1) 검증완료 — ① 규격 다른 별칭 = 꼬리표 「별칭 · 규격 다름」 · 짝은 후보 끝 덤(상태 · 옵션은 줄 숫자) ② 품 비교 같은 장비 여러 줄 합쳐 한 줄 견줌(서버 · 화면) ③ 덧 로직 = 단위 맞음 + 조항 · 직종 · 이름 하나(아니면 덧 후보 · 섞인 줄 그대로 · N009 · N017 · N041 덧 빠짐) · 맞춤셈 판 2 · 사람 126 1순위 118 · 다섯 안 122 · 맞음 57 틀림 0 · 조합 62/83 그대로 · 338 대상 시험 142 통과 · typecheck 0 · master_data sha256 그대로 · 검증 대기.
- [x] 339-3 아티팩트 보고(사용자 요청) · 사용자 보고 — https://claude.ai/artifact/Xp1zvYnWXPrR1ZdRLSSBgV · 깃 싱크는 사용자 지시 때.
- [x] 339-4 덧고침 4(sub1 94838450d) — 캐시 없는 폴더에서 우리 지문 build() 뒤 메모 안 바뀜 → build 가 메모까지 갱신 — 검증완료 — 빈 캐시 excel · fit · ours 34 통과(전 fit 7 실패) · 캐시 있는 상태 hopyo 전부 144 통과.
## 340. 계산 시간 측정 — 파일 입력 · 전처리 → 계획노선 · 종단 · 횡단 · 유토곡선 · 배수유역 (요구 230 · 측정만 · 코드 X)
- 정함(브레인): 무거운 측정은 차례로(동시 금지) · 서버 = sub1(8001 · 검증_sub1) · 화면 = sub2(8004 · 5177 · 검증_sub2 · ORCA 탭은 메인 폴더) · 값 = 세 번 중앙값(몇 분 걸리는 단계는 한 번 + 지난 [계측] 로그) · 처음/다시 나눔 · 자료 크기 함께.
- [x] 340-1 sub1 서버 길 — 파일 올리기 · 전처리 단계 · 자동설계 체인 · 노선 [확인] 재확정 체인 · B06 확정 · 배수유역 · 유토곡선 Node 묶음 — 계산 시간 · API 응답 시간 · 크기 → 자기 tmp 표 — 검증완료 — 전처리 246 / 44 s · 체인 74 / 10 s · [확인] 76 s(배수유역 60 s).
- [x] 340-2 sub2 화면 길 — 1단계 길 찾기 · 잴 조각 준비 → 2단계(340-1 뒤) 페이지 열기 · 노선 점 옮김 → 종단 · 횡단 · 유토곡선 · 배수유역 다시 보이기까지(브라우저 계산 · 서버 왕복 · 그리기 나눔) · B03 지문 · B04 보기 — 검증완료 — 조작 27 줄 · 끌기 3~5 ms · 계획고 0.06 s · 전체 반영 4.1 s · B04 첫 열기 3.8 s.
- [x] 340-3 브레인 — 표 합침 · docs 기록 · 사용자 보고 — 검증완료 — docs/raw/조사/2026-10-16_340_계산시간_측정.md b224c3d68.
## 341. 실시간 연동 방향 검토 — 평면(노선 편집) · 종단 · 횡단 · 유토곡선 · 배수유역 한 페이지 (요구 231 · 분석만 · 코드 X)
- 정함(브레인): 읽기만(코드 · 커밋 X) · 갈래 여덟 = 창 여덟(Opus 5.5 high) · 표 칸 = 항목 | 지금(자리 · 시간) | 바꾸면 | 손댈 파일 | 효과 | 위험 · 확인 거리 | 크기 · 기록 = 각 창 tmp/341_<갈래>.md · 시간 근거 = docs/raw/조사/2026-10-16_340_계산시간_측정.md · 사용자 물을 거리 따로.
- [x] 341-1 실시간 넷 — 가 sub1 평면 → 종단([확인] 체인 노선 · 측점 · 구조물 · 계획고) · 나 sub2 종단 → 횡단 → 유토곡선(3D · 전체 반영 · 확정 · 유토곡선 머묾 까닭) · 사 sub7 한 페이지 상태(B05 · B06 캐시 · 사건 · 초기값 · [확인] 뜻) · 아 sub8 지형 표본(지반선 브라우저 가능성) → 단계별 실시간 길(① 짝 · ② TS→Node · ③ 서버 단독) 표. — 검증완료 — 점 놓고 종단 0.05~0.12 s · 횡단 · 유토곡선 약 0.3 s 가능 · 지형 격자 1.4 MB 브라우저 표본 차 3e-13 m · 흠 = 계획선 두 벌(유토곡선 머묾 재현).
- [x] 341-2 다 sub3 배수유역 — 관경 자동지정 끔 · 기본 1000 · 설정 창 자동/수동(기본 수동) · 뒤에서 조용히 계산 · 흐림 + [업데이트] · 다시 조작하면 처음으로 · 60 s 줄일 길 표. — 검증완료 — 60 s → 13 s(흐름 방향 한 번 · 판정 한꺼번에 · 차이 0 칸) → 5.5 s(저장) · 종단 · 횡단은 결과 안 바꿈 · 1000 은 마스터 기본.
- [x] 341-3 라 sub4 영구저장 — 매번 다시 계산 · 다시 받는 것 전수 → 저장 · 불러오기 · 바뀔 때 덮어쓰기 표. — 검증완료 — 29건 · 재올림 246 s · 도엽 3D 면 37 s · B04 113 MB · 3D 서버 검산 없음(규칙 어김).
- [x] 341-4 마 sub5 화면 배치 — 3D → 모달/패널 · 노선 편집 창 → B05 본문(왼쪽 컨테이너 · 편집 단추 지움) · 노선 추천 → 왼쪽 따로 컨테이너 단추 표. — 검증완료 — 안 A(3D 자리에 평면) · 3D 큰 모달 · 노선 추천 = 왼쪽 칸 · 큰 일 = 모달 수명 → 페이지 수명(L).
- [x] 341-5 바 sub6 하위 폴더 — B04 · B05 · B06 파일 · 공용 로직 · 겹친 로직 · 하위 폴더 안 · AI 코드 작성 도움 판정 표. — 검증완료 — 조건부(대이동 안 함 · 폴더별 CLAUDE.md · logic/ 은 실시간 작업과 함께 · 파이썬 안 옮김).
- [x] 341-6 브레인 — 합친 기록(docs/raw/조사) · 새 계획서 절(승인 대기 · 미착수) · 표 아티팩트. — 검증완료 — docs/raw/조사/2026-10-16_341_실시간연동_검토.md · 부록 1~8 dc90611b9 · 아티팩트 https://claude.ai/artifact/SFMyQjVMMpQnHsFN831WqE · 새 계획서 342~347(승인 대기).
## 342. 앞일 — 흠 고침 · 빠른 효과 (요구 231 · 232 · 341 기록 8장)
- 사용자 확정(10-16): 341 결정 거리 모두 추천대로 · 초기값 = 자동설계 결과 + 추천 노선 [적용] 때 다시 · 제안(관경 · 시설 · 관 자리)은 보여 주고 [적용] 때만 · 평면 ↔ 종단 ↔ 횡단 양방향 0.3 s · 화면 안 멈춤 · 필요하면 바뀐 구간만 셈 · 브레인이 끝까지(브라우저 검증 · 아티팩트).
- 정함(브레인): 1파 동시 여덟 창(Opus 5.5 high) · 파일 주인 = 지시 글 · 코더 = 시험 · typecheck 만(화면 확인 거리는 보고에) · 근거 = docs/raw/조사/2026-10-16_341_실시간연동_검토.md · 부록 1~8.
- [x] 342-1 sub2 계획선 한 벌(다시 셈이 화면 선을 받음) · 낡은 측점 남으면 곡선은 그리고 그 측점만 표시 · 흙 배분 실패 열쇠 다시 보냄 · 유토 배분 저장본 — 확인: 머묾 재현 시험 통과. — 검증완료 — 48ddca36a · 머묾 재현 85.054 → 낡음 0 · 시험 10.
- [x] 342-2 sub1 노선 [확인] 체인 종 · 횡단 생성 한 번 · 자동 체인 재계산 한 번 · 3D 길 모형 = 서버 Node 가 체인 · [저장] · [확정] 끝에 지음(브라우저 올림 없앰) · [확정] 입력 지문 · 바뀐 행만 씀 — 확인: 결과 같음 · 해시 같음 시험. — 검증완료 — 5025313b2 · 73a251db2 · 체인 종횡단 한 번 · 3D 서버 짓기 · [확정] 지문 · 시험 18.
- [x] 342-3 sub3 배수유역 빠른 길(흐름 방향 한 번 · 도로 닿음 한꺼번에) · 관경 · 시설 자동 지정 끔(새 관 = 마스터 1000 · 제안은 응답에) · B05 첫 열기 세부 유역 1번 · 세부 유역 저장본 · 응답 · 저장분에 노선 · 관 자리 지문 — 확인: 적색 칸 차이 0 · 60 → 13 s. — 검증완료 — 검증_sub3 적색 차이 0칸 · 귀속 · 강도 · 관 자리 같음 · 108 → 27 s 붐빔(340 기준 약 15 s) · 시험 test_342_3_* 넷 · 0efc77380~fba1eb8a5 · 검증 대기
- [x] 342-4 sub6 폴더별 CLAUDE.md 넷 · B05 Old 지움 · 노선 거울 시험 tester 로 · 서버 묶음 낡음 판정 보강 · 지반고 값 갈림 둘 맞춤(꼭짓점 z · 종단 미리보기) — 확인: 묶음 낡음 · 값 같음 시험. — 검증완료 — eac37456e · a2c512b30 · 3d6c5584d · a22b72fb1 · 시험 66 · 52 · 10.
## 343. 영구저장 — 입력 지문 열쇠 + 결과 한 쌍 (요구 231-2 · 341 기록 6장 · 부록 4)
- 정함(브레인): 결과 옆 열쇠 · 순수 계산 결과는 프로젝트 _derived/ · 종류마다 최근 2벌 · 열쇠 같으면 읽기만 · 다르면 덮어씀 · GET 은 안 지움 · 실제 재올림 시험 안 함(완료 메일) — 서버 함수 시험으로.
- [x] 343-1 sub4 같은 파일 다시 올림 = 전처리 결과 살림(「처음부터 다시」 따로) · 다시 돌 때 점군 통째 풀기 없앰 · 도엽 병합 · 국가 GIS · 타일 기억 열쇠 — 확인: 서버 함수 시험.
- 검증완료 — test_343_1_preprocess_keep 13 · test_b03_replace_confirm 8 통과(작은 LAS 두 번째 전처리 점군 안 풂) · typecheck 통과 · 검증 대기.
- [x] 343-2 sub4 도엽 3D 면 열쇠 · 지표면 모델 id 유지 · 비용면 · 추천 노선 열쇠 · 메모리 기억 · 추천 저장본 최근 몇 벌 · 횡단 상세 ETag(GET 안 지움) — 확인: 두 번째 0 s 시험.
- 검증완료 — test_343_2_persist_keys 13 통과(도엽 3D 면 두 번째 셈 0 · 열쇠 다섯 갈래 다시 셈 · id 유지 · 추천 2벌 · 304) · 관련 기존 시험 14파일 101 통과 · 검증 대기.
- [x] 343-3 sub4 B04 113 MB — 브라우저 저장 실패 고침 · 점군 고정 표본(이진 · ETag) · 꺼진 층은 켤 때 · 남은 층 ETag · 등고선 주소 한 벌(B05 두 곳은 sub5) — 확인: 다시 열기 받는 양 시험.
- 검증완료 — test_343_3_browser_cache 13 통과(가짜 IndexedDB 위 진짜 TS · 저장 완료 · 용량 초과 경고 · 막힘 · 다시 열기 · 색인 지우기 · 이진 py↔ts 같은 값) · typecheck 통과 · 화면 확인은 브레인 몫 · 검증 대기.
- [x] 343 덧 sub4 파생 저장본 도우미(common_util_derived_store) · 유토 배분 _derived/haul · B07 읽기 안 지움 · 묶음 낡음 검사 30 s 기억 · R8 은 그대로(카드 탑뷰가 같은 한 바퀴를 씀) — 확인: 시험.
- 검증완료 — test_343_4_derived 11 · 관련 기존 7파일 95 통과 · 검증 대기.
## 344. 실시간 바탕 — 브라우저 짝 · 계산 묶음 (요구 231-5 · 10 · 232-2)
- 정함(브레인): 새 계산 = ① 짝(두 파일 머리 짝 표시 · 거울 시험) · 공용 짝 = common_util · 페이지 전용 TS 계산 = <페이지>/logic/(화면 · three · fetch · sessionStorage 금지 · 이름 앞머리 그대로) · 화면 변화 없음 · 계약(가게 키 모양) = sub7 이 먼저 올림.
- [x] 344-1 sub8 지형 격자 표본기 짝 · 격자 통로(ETag · IndexedDB · 주소에 지형 서명) · 서버 표본기 메모리 기억 · 노선 편집 띠 · 재기 · 기울기 = 브라우저 표본 → 이어 횡단 지반선 생성 짝(종단 1 m · 횡단 ±20 m · 덧붙임) — 확인: 서버 값 같음(가장자리 · 빈칸). — 검증완료 — 표본 차 0 m(3.4만 점 · 유효 어긋남 0) · 지반선 생성 서버와 같음(소수 6자리) · 노선 1,078 m 3.9 ms · 격자 통로 0.06 s(첫 .bin) · 검증 대기.
- [x] 344-2 sub1 첫 계획선(계획고 = 지반고) 짝 · 관 자리 투영 짝 · 구조물 좌표 저장 · 따라감 · 노선 바뀜 때 계획고 옮김(바뀐 구간만 지반에 다시 맞춤 · 그 밖은 거리만 밂) — 확인: 거울 시험. — 검증완료 — bb63b30aa · 첫 계획선 · 관 투영 · 구조물 따라감 · 계획고 옮김 짝 · 시험 17.
- [x] 344-3 sub2 측점 키 한 규칙(0.01 m) · 일반 = 격자 번호 · 구조물 · 관 = id · 횡단 고침 넘김 일곱 칸 · 노선 밖 고침 알림 · 서버 이월 같은 규칙 — 확인: py · ts 키 같음 시험(342-2 합친 뒤). — 검증완료 — fed5640a4 · 1c090c0f5 · 3995e91a1 · common_util_station_key 짝 · 시험 6 · 2 · 15.
- sub7 뼈대 검증완료 — 열쇠 규칙 = design_pipeline_types.ts 머리 표(grid:k · pipe:<id> · structure:<id> · end:BP/EP · 글 0.01 m) · 남은 것 = 세션 횡단 초안 · 서버 이월(sub2).
- [x] 344-4 sub7 계산 묶음(차례 번호 · 옛 요청 끊기 · 단계 시간 기록 · 바뀐 범위 전달) · 가게 키(노선 초안 · 측점 · 종단 · 차례) · 노선 초안 캐시 칸 · 계약 글 — 확인: 늦은 응답 버림 · 같은 입력 다시 안 셈 시험.
- 검증완료 — test_344_4_design_pipeline 10 건 · 묶음 둘 다시 지음 · typecheck · 계약 = A00_Common/design/design_pipeline_types.ts 머리 표 · 검증 대기.
## 345. 화면 배치 — 평면 본문 · 3D 모달 · 노선 추천 칸 (요구 231-1 · 3 · 4)
- 정함(브레인): 안 A(3D 자리에 평면 · 보기 전환 유지) · 화면 요소 · 꾸밈 그대로 · sub5 차례로 · 단계마다 커밋 · push · 노선 [확인]은 346-3 까지 [노선 반영]으로 남김.
- [x] 345-1 sub5 design_view_profile.ts(700줄) 쪼갬 — 확인: typecheck · 대상 시험. — 검증완료 — 8eb5ba545.
- [x] 345-2 sub5 3D → 큰 모달(처음 열 때 세움 · 닫으면 멈춤 · 페이지 떠날 때 버림) · 3D 노선 점 옮김 · 「선택 포인트 상세」 칸 지움 — 확인: 닫힌 동안 그리기 0 시험. — 검증완료 — f8fcb812d · 시험 5.
- [x] 345-3 sub5 노선 편집 → 종단 보기 가운데 위 본문(페이지 수명) · 종단도 판 흐름 배치 · 왼쪽 「계획노선」 칸 · 편집 단추 지움 · 새로고침 없이 다시 세움 · Ctrl+Z 는 마지막에 만진 판 — 확인: 꼴 시험 고쳐 씀. — 검증완료 — d985c24f5 · 시험 87 · 브레인 중간 화면 확인.
- [x] 345-4 sub5 노선 추천 → 왼쪽 새 칸(「계획노선」 자리 · [노선 추천] · 현재 추천 · [초기화]) · 3D 길 모형 웹 워커 · 모달 열 때 낡으면 다시 지음 — 확인: [적용] = 본문 평면 되돌리기 한 칸. — 검증완료 — 58c86e525 · 593ee198a · 871693650 · 519b54eb7 · 워커 시험 4.
- [x] 345-5 sub8 사용자 의견(요구 233) — 평면 = 종단 보기 가운데 전체 영역(3D 때처럼) · 아래 종단 판 = 다시 뜬 판(오버레이) · 노선 편집 안 「원지반선 · 계획 종단선」 띠 지움(아래 종단 그래프는 그대로) — 확인: 꼴 시험 · 브레인 화면. — 검증완료 — test_345_5_plan_full_overlay 3 · 띠 없음 시험(test_75) · 관련 162 통과 · typecheck 0 · 띠 서버 길(profile-preview)도 지움 · 덧(뜬 판 가려짐) 검증완료 — 노선 맞춤 = 판 위 보이는 영역 가운데 · 상태 · 범례 · 잰 값 글판 = 판 바로 위(접으면 원래 자리) · test_345_5b_plan_visible_area 2 · 관련 68 통과 · typecheck 0 · 덧 2 검증완료 — 곡선 바 = 판 바로 위(끌기 · 접기 따라감) · 도구줄 [맞춤](판 위 영역 · 회전 0) · test_345_5b 3 · 관련 81 통과 · 덧 3 검증완료 — 상태 · 범례 글판 작게(두 줄 · 폭 460 px 안) · ▾ 접기(한 줄 「계획노선 N m」) · 도움말 기본 접힘 · [?] 펼침 · 접힘 기억 페이지 동안 · test_345_5c 4 · 관련 62 통과 · typecheck 0 · 검증 대기
## 346. 실시간 양방향 — 평면 ↔ 종단 ↔ 횡단 ↔ 유토곡선 (요구 231-5 · 10 · 232-2)
- 정함(브레인): 입력(노선 · 계획고 · 횡단 입력 · 관 · 구조물 좌표) → 파생(측점 · 지반 · 계획선 · 횡단 · 면적 · 유토곡선 · 평면 발자국) 한 방향만 · 파생은 입력에 안 씀(노선 바뀜 때 옮김 규칙만) · 측점별 입력 지문으로 바뀐 측점만 셈 · 제안 자동 적용 없음 · 점 놓고 종단 0.3 s · 횡단 · 유토곡선 그다음 · 화면 안 멈춤.
- [x] 346-1 sub7 노선 바뀜 → 측점 · 지반 · 계획선 · 종단 브라우저 즉시(끄는 중엔 선만 · 놓을 때 한 번) · 관 · 구조물 좌표 따라감 · 노선 초안 캐시 — 확인: 단계 시간 0.3 s 안 시험.
- stations 단계 검증완료 — logic/B05_Profile_Sections_Stations.ts(서버 generate_sections 짝 · 거울 시험 7 건).
- 붙임 검증완료 — design_pipeline_page.ts · RouteEdit_Draft · logic/B05_Profile_Pipeline_Grade · test_346_1_pipeline_page 12 건(노선 1,078 m 점 옮김 23 ms) · 남은 것 = cross · masshaul · haul(sub2) · drainage(sub3) 단계 한 줄씩 · 저장 관 목록(좌표) 입력(346-3) · 검증 대기.
- 남은 단계 붙임(5파) 검증완료 — cross · masshaul · haul · drainage · corridor · 노선 초안 동안 종단도 · 유토곡선 = 새 노선 상세 · 저장 관 목록(좌표 · id) 바탕 · 초안 동안 계획고 = alignment-draft 노선 0 칸(DRAFT_ROUTE_ID · [저장] 이음 sub5) · test_346_2_pipeline_cross_page 14 건(검증_sub7 1,096 m 첫 점 옮김 묶음 37 ms · 누가토량 = 서버 엔진 같은 값) · a35d49b4e · 검증 대기.
- [x] 346-2 sub2 → 횡단 · 유토곡선(바뀐 측점만) · 카드 보이는 것 먼저 · [전체 측점 반영] 한 번(사용자 선택 박기 없앰) · 평면 발자국(sub6 계산 · 도로 끝 · 비탈 끝) = 종단 · 횡단 고침이 평면에 — 확인: 4.1 → 0.1 s · 발자국 시험. — 검증완료 — cross · masshaul · haul · footprint 단계 · 바뀐 측점만 · 카드 보이는 것 먼저 · 측점 수 바뀜 갈아끼움 · 노선 초안 동안 카드 · 알약 · 발자국 그리기 · 브레인 화면(발자국 · ▲ 40.6 ms).
- [x] 346-3 sub1 서버 · sub5 화면 — [노선 반영] 없앰 · [저장]이 노선부터 서버 정본 다시 셈(관 자리 먼저 · 배수유역 체인에서 뗌 · 낡음 표시) · 초기값 = 자동설계 + 추천 노선 [적용] 때 다시 — 확인: [저장] 뒤 브라우저 값 = 서버 값 · [초기화] 복원 시험. — 검증완료 — 서버 8ae90ad7b · bc2b19104 · 화면 47366d374 · 6086f3098 · [노선 반영] 없음 · [저장]이 노선 먼저 · 추천 [적용] = 초기값 · 시험 15 · 7.
- [x] 346-4 sub6 되돌리기 한 줄(평면 · 종단 · 횡단 · 관 · 구조물) · 저장 안 하고 떠날 때 확인 창 — 확인: 되돌리기 시험. — 검증완료 — cadd680b3 · a8ad86746 · 322725bf9 · Ctrl+Z 한 줄 · 떠남 확인 · 시험 5 · 6 · 3.
## 347. 배수유역 — 자동/수동 · 제안 (요구 231-6 · 7 · 232-2)
- 정함(브레인): 기본 수동 · 다시 계산 대상 = 평면(노선) · 관 자리 · 종단 · 횡단은 결과 안 바꿈 · 제안은 보여 주고 [적용] 때만 · 격자 원점 = 좌표 정수 m(07-31 지시 바꿈 · 사용자 확정) · 347-2 화면은 345-3 뒤.
- [x] 347-1 sub3 흐름 방향 · 도엽 좌표 저장(격자 원점 좌표 정수 m) — 확인: 13 → 5.5 s · 결과 같음. — 검증완료 — 저장본 읽기 칸마다 같음 · 108 → 10.8 s 붐빔(340 기준 약 6 s) · 원점 바뀜 적색 −0.05 % · test_347_1_descent_store · 0e0c1be1c · 검증 대기
- [x] 347-2 sub3 ⚙ 설정 창(배수유역 칸 머리 · 계정 기억 · 기본 수동) · 자동 = 3 s 조용하면 뒤에서 · 수동 = 배수유역 칸 흐림 + [업데이트] · 「계산 중」 표시 · 다시 조작하면 처음으로(차례 번호 · 요청 끊기 · 서버 단계 사이 그만둠) · 「지금 노선으로 셈」 길(작업본에 안 씀) · [확정] 때 다시 셈 — 확인: 늦은 답 버림 시험. — 검증완료 — 늦은 답 버림 시험(서버 superseded 둘 · 엔진 회차 · 화면 차례) · 검증_sub3 저장 노선 16.9 s · 초안 11.5 s · test_347_2_* 둘 · c0ad3edc8 · d5d641596 · a5c36a4a2 · 묶음 붙이기 · [확정] 한 줄 남음 · 검증 대기
- [x] 347-3 sub3 제안 — 관경 · 시설 종류(BOX암거 · 세월교) · 관 자리 후보를 배수유역 칸 · 평면에 표시 · [적용] 한 번에 관 초안으로 — 확인: 제안 적용 시험 · 자동 바꿈 없음. — 검증완료 — 제안 적용 시험(관경 · 시설 · 관 자리 · 입력 안 고침) · test_347_2_* · d5d641596 · a5c36a4a2 · 검증 대기
## 348. 정리 — logic/ 이동 · 지침 규칙 (요구 231-8 · 341 기록 9장)
- 정함(브레인): 모든 창이 쉴 때 한 창이 한 커밋 · 끝나면 곧바로 합침.
- [x] 348-1 sub6 이미 순수한 계산 43파일 <페이지>/logic/ 로 git mv(내용 고침 없이 import 만) · 묶음 다시 지어 결과 대조 — 확인: typecheck · 옮긴 파일 시험 · 묶음 결과 같음. — 검증완료 — 281c71b55 · 49 파일 · 시험 272 파일 1,764 통과(남은 실패 19 = 옮기기 전과 같음) · 묶음 넷 같음 · 브레인 304 통과 · typecheck 0.
- [x] 348-2 브레인 CLAUDE.md 4 · 5장 규칙 고침(초기값 · 잠금 자리 · 차례 번호 · 배수유역 뒤에서 · 시설 좌표 따라감 · 파생 저장본 · GET 안 지움 · logic/). — 검증완료 — CLAUDE.md 4 · 5장(초기값 = 자동설계 · 추천 [적용] · 파생 저장본 층 · GET 안 지움 · 좌표 따라감 · 측점 열쇠 · 배수유역만 뒤에서 · design_pipeline · logic/).
## 349. 마무리 — 합치기 · 빌드 · 브레인 브라우저 검증 · 아티팩트 (요구 232-3)
- 정함(브레인): 검증 = 메인 8000 · 5173 · 검증 프로젝트 복제본(사용자 프로젝트 안 씀) · ORCA 탭 둘까지 · 바꾼 값 되돌림 · 수치로 판정 · 중간 화면 확인 한 번(345-3 합친 뒤).
- [x] 349-0 sub8 요구 234 — 평면 처음 그림 = 판이 없다고 보고 등고 영역을 알맞게(꽉 차지 않게) · 판은 위에 덮이기만(판 따라 다시 맞춤 · 글판 · 곡선 바 옮김 없앰) · [맞춤]도 같은 셈 — 확인: 브레인 화면 · 아티팩트 → 깃 싱크. — 검증완료 — logic/B05_Profile_RouteEdit_Fit(등고선 범위 ∪ 노선 · 칸 85% · 둘레 여유) · _RouteEdit_Cover 지움 · test_345_5b 3 고쳐 씀 · 관련 86 통과 · typecheck 0 · 검증 대기
- 349 고침 sub8 — 밝음 ↔ 어두움 바꿈 뒤 평면 캔버스 다시 그림(바탕 · 등고선 · 노선 · 발자국 토큰 다시 읽음 · 시스템 바꿈 포함) — 검증완료 — test_349_routeedit_theme_redraw 3 · 관련 37 통과 · typecheck 0 · 검증 대기
- [x] 349-0b sub3 배수유역 수동 [업데이트] 답 머묾 · 단추 자리 · 저장 뒤 낡음 — 답 받기 = 차례 + 입력 지문(노선 초안 rev 뺌 · 관 id · 자리) · 같은 입력으로 다시 돈 묶음은 흘려보냄 · [업데이트] 흐린 칸 가운데 · 서버 답 「낡음」 = 흐림 + [업데이트](자동 3 s). — 검증완료 — test_349_drainage_live_flow 6(가짜 화면 · 수동 · 자동 · 제안 [적용]) · 관련 136 통과 · 검증_sub3 live 답 제안 10건 · typecheck 0 · 검증 대기
- [x] 349-0c sub7 묶음 한 조작 한 번 · 열 때 저장 정본 그대로 — 검증완료 — 다시 시작은 저장 정본이 바뀔 때만 · 열 때 측점 · 종단 안 냄(갈아끼움 없음) · 저장 노선 관 · 계획고 저장값 그대로 · test_349_pipeline_once 4(옛 코드 4 실패 재현) · 관련 208 통과 · typecheck 0 · 00c86f4ed · 검증 대기
- [x] 349-0d sub7 노선 바뀜 → 관 · 구조물 새 측점을 가게 · 캐시에도(왼쪽 목록 · 종단 알약 · B06 바로) · 20 m 넘게 멀면 알림 — 확인: 묶음 한 번 · 걸음 하나 · 되돌리기 원래 측점 · 열기만 안 씀 시험. — 검증완료 — follow 결과 = 가게 관 · 구조물(놓은 틱 안 · 메아리 안 받음) · 초안 버림 = 초안 전 값 · 열기만 안 씀 · 먼 구조물 알림 · 종단 목록 · 알약 = 가게 측점 · test_349_0d_follow_store 5(옛 코드 2 실패) · 관련 275 통과 · typecheck 0 · 401c53251 · 검증 대기
- [x] 349-0e sub3 배수유역 자동 = 흐림 없이 구석 「계산 중」만(결정 4-3 「조용히 · 덮개 없음」) · 낡은 동안 제안 [적용] 끔 — 확인: 시험. — 검증완료 — 자동 = is-stale 수동만 · 낡은 동안 [적용] 끔(title) · test_349_drainage_live_flow 7 고쳐 씀 · 관련 36 통과 · typecheck 0 · 검증 대기
- [x] 349-0f sub2 노선 초안 동안 유토곡선 「다시 계산 중…」 머묾(길이 바뀐 끌기 뒤 가운데 꺾임점 끌기) — 원인 고침 · 남은 낡음은 「낡은 측점 N곳」 — 확인: 두 번 끌기 시험. — 검증완료 — 658331b04 · 시험 8 · 실시간 343 통과 · typecheck 0 · 브레인 화면 세 번 끌기 머묾 없음.
- [x] 349-0g sub7 노선 초안을 둔 채 B06 → 묶음 끝없이 돎(5 s 마다 약 40 run) · 누가토량 −13만~−53만 ㎥ — 고리 끊기 · B05 와 같은 값 — 확인: 초안 + B06 run 0 · 값 같음 시험. — 검증완료 — 원인 = B06 카드가 묶음 새 노선 상세를 종단도에 그림 → 정본으로 오인 → 처음부터 다시 고리(346-2 덧 3 부터 · 349-0d 탓 아님) · 새 상세 동안 저장 기준 = 앞 저장 기준 · test_349_0g_draft_b06_loop 3(옛 코드 끝없이 돎 재현) · 관련 92 통과 · typecheck 0 · 25ee0fe33 · 검증 대기
- [x] 349-0h sub8 B06 다녀오면 B05 평면이 작게 · 오른쪽 구석 — 떠나기 전 화면 그대로 · 숨은 동안 맞춤 안 셈 — 확인: 숨김 뒤 보임 시험. — 검증완료 — 칸 크기 0 알림엔 화면 · 기억 그대로(옛 길 = 가운데 도엽 구석 · 배율 1/8 재현) · test_349_0h 3 · test_b05_routeedit_view 숨김 1 · 관련 20 통과 · typecheck 0 · 검증 대기
- [x] 349-0i sub3 되돌리기로 저장 노선에 돌아와도 배수유역 낡음 — 초안 없어지면 저장분 다시 받음 — 확인: 끌기 · 되돌리기 시험. — 검증완료 — 초안 없어짐 = 저장분 다시 받기(열 때 길 · 조용히) · 답의 낡음대로 · 초안용 답 끊음 · 자동도 같음 · test_349_drainage_live_flow 8 · 관련 129 통과 · typecheck 0 · 검증 대기
- [x] 349-0j sub2 노선 초안 미리보기 누가토량(860.1) 대 [저장] 정본(1,427.6) 차이 564 ㎥ — 측점마다 대조 · 같은 규칙은 묶음에도 · 서버 전용 보정은 까닭 — 확인: 미리보기 = 정본 시험. — 검증완료 — 23bb88561 · 갈린 몫 = [확정] 미교차 넓힘 · 관 구조물 면적 · cross 단계에 서버 짝 넓힘 · 시험 8 · 실시간 369 통과 · 묶음에 붙이는 두 줄은 349-0l(sub7).
- [x] 349-0k sub7 되돌리기로 저장 노선에 돌아오면 저장 정본 그대로(열기 1,427.6 → 끌기 → Ctrl+Z → 648.5 로 다시 셈) — 확인: 열기 · 끌기 · 되돌리기 = 열기 값 시험. — 검증완료 — 2e4339da5 · 시험 4 · 화면에선 안 먹음 → 349-0l.
- [x] 349-0l sub7 349-0k 실제 화면에서 안 먹음 — 되돌린 뒤 648.5(열기 1,427.6) · B06 뒤 1,621.8 — 계획선 · 편집 기준도 저장 정본 · runs 에 되돌림 길 — 확인: 구조물 선 노선 열기 · 끌기 · 되돌리기 · B06 값 같음 시험. — 검증완료 — 72bab9706 · 원인 = 되돌릴 때 종단도가 편집 길(전 측점 다시 셈 예약)을 탐 · 그리기만으로 · 상세 되돌린 뒤 저장 기준 · runs restored/restoreWhy · sub2 두 줄(격자 · 구조물 면적) 붙임 · test_349_0l_undo_draw 4(진짜 종단도 낡음 판정 · crossPreview) · 관련 414 통과 · typecheck 0. — 브레인 화면: 끌기 미리보기 2,423.2(넓힘 반영) · 되돌림 restored 기록 없음 · 648.5 그대로 → 349-0m.
- [x] 349-0m sub7 되돌림 길이 실제 화면에서 안 탐(restored 없음 · ground 건너뜀 짐작) — 건너뛰어도 되돌림 · 실제 꼴 시험 — 확인: 열기 · 끌기 · 되돌리기 = 열기 값 · restored true. — 검증완료 — 까닭 = 화면 Ctrl+Z 는 사진첩이 세션 노선 초안 칸을 먼저 비우고 다리에 알림 → 묶음이 「초안 아니었음」으로 봄(ground 건너뜀 아님 · 노선이 바뀌면 ground 는 늘 다시 셈) · 초안 여부 = 묶음 입력 · 되돌림 = 차례 끝 · test_349_0l 화면 꼴(칸 먼저 비움 · 알림 두 번)로 · 옛 코드 restored 없음 · 다시 셈 1 재현 · 관련 414 · typecheck 0. — 브레인 화면: 첫 되돌림 restored false · why stations(768.3) · 다시하기 510.4(첫 끌기 538.7) · 둘째 되돌림 restored true 인데 861.8(열기 1,362.3) · B06 1,889 → 349-0o.
- [x] 349-0n sub2 미리보기(2,423.2) 대 정본(1,362.3) 남은 차이 — 서버 [확정] 보정 포장 구간 · 세월교 노면 하강 · 사토장을 cross 단계에도(짝 · 같은 차례) — 확인: 세월교 든 노선 미리보기 = 정본 0.5 % 안. — 검증완료 — ffbda88ed · 미리보기 -12,816.9 대 정본 -12,817.1 · 거울 5 · 실시간 380 통과 · typecheck 0.
- [x] 349-0o sub7 값 한 벌 — 되돌림 = 열기 상태(원문에서 새 객체 · 측점 정본 = 저장) · 다시하기 = 첫 끌기 값 · crossPreview · B06 로컬 셈이 묶음과 같은 값 — 확인: 열기 · 끌기 · 되돌리기 · 다시하기 · 되돌리기 · B06 차례 시험. — 검증완료 — eb6610379 · 원인 = 묶음 측점 ≠ 저장 상세 측점이면 갈아끼움(stations)으로 빠져 초안 상세 설계를 이어 받음 · 그 상세가 다음 초안의 「초안 전 상세」 · 갈아끼움이 설계 객체를 앞 상세와 같이 써 면적 얹기가 저장 상세를 고침 · 고침 = 초안 시작 때 상세 사본 · 측점 열쇠 · 횡단 초안 칸 다섯을 떠 두고 버리면 그대로(측점 달라도 · runs restoreDiff 에 첫 다른 측점 · 개수 · why saved-diff) · 사본이 묶음 정본 · 갈아끼움 설계 사본 · 다시 셈 창구는 묶음 새 노선 상세 안 고침 · test_349_0o_redo_same 6(세월교 하나 더 = 측점 다름 · 진짜 Design_Sync 판정 · 옛 코드 restored false · stations · 다시 셈 1 재현) · 관련 527 · typecheck 0.
- [x] 349-0p sub2 검증_브레인232 에서 미리보기(1,551.1) 대 정본(599.2) 952 ㎥ — 복제해 측점마다 대조 · 원인 고침 — 확인: 구조물 측점 소수 자리 노선 시험. — 검증완료 — 78c608085 · 복제본 미리보기 1,184.7 대 정본 1,184.0 · 952 는 화면 관 누가거리(→ 349-0q) · 시험 2.
- [x] 349-0q sub7 되돌린 뒤 B05 누가토량 664.1(열기 1,627.5 · 측점 69 대 70) — 저장 측점으로 · 측점 단계 규칙 서버와 같게 — 확인: 열기 · 끌기 · 되돌리기 = 열기 값 시험. — 검증완료 — 73935364e · 원인 = 화면 Ctrl+Z 사진첩 되살림이 노선 초안 중에도 종단도 편집 가게를 저장 노선 것으로 갈아끼우고 횡단 다시 셈 예약(16 ms) → 되돌린 저장 상세를 다시 셈(측점 69/70 과 무관 · route 329 -344 도 같은 길) · 고침 = 되살림은 초안 동안 노선 0 칸 · 계획고 그대로면 그리기만 · 되돌림 = 열 때 상세 객체(사본은 횡단 초안 측점 장부를 잃음) · 같은 측점 목록은 가게에 다시 안 냄(메아리 갈아끼움 막음) · 다시 셈 막음은 측점 모두 미리보기인 상세만 · 측점 단계 규칙은 서버와 같음(소수 자리 관 · 구조물 거울 대조 · 브레인232 route 329 파일 = 측점 같음) · test_349_0q_undo_echo 3(진짜 사진첩 되돌리기 · 다시 하기 · 옛 코드 다시 셈 1 재현) · 관련 557 · typecheck 0. — 브레인 화면: route 329 열기 599.2 → 끌기 1,768.1 → 되돌림 599.2(restored saved · EP 3,339.5) → 다시하기 1,768.1 → 되돌림 599.2 → B06 599.2 · 합친 뒤 도움 가짜 한 줄(b588b274f).
- [x] 349-0r sub2 암 경계 기본값 한 줄(design_pipeline_cross · 도움 가짜 10) — 확인: 관련 시험. — 검증완료 — bdd625576 · 시험 77 · 실시간 통과.
- [x] 349-0s sub7 끌기 한 번 0.3 s 넘음(totalMs 300~350 · 단계 합 30~50 · longtask 216 ms) — 그리기 몫 재고 줄임(≤ 200 ms · longtask 100 ms 안) — 확인: 그리기 몫 기록 · 숨은 칸 미룸 시험. — 검증완료 — 25eea13ab · 원인 = 끌기 한 걸음마다 종단도(유토곡선 포함) 통째 그리기 6~8 번(갈아끼움 render 두 번 · 정책 · 이어 공사 기준 · 비정규 측점 · 새 상세 알림이 각각 바로) · 되돌리기 5 번 · 첫 끌기에 초안 상세 횡단 통째 다시 셈 · 고침 = 다음 틀 한 번(drawSoon) · 초안 동안 crossPreview 안 셈 · runs[].work 이름별 ms(알림 · 그리기 · 쉼) · haul 은 이미 뒤 단계(188 ms 는 서버 응답 기다림 · 화면 안 막음 — 그대로) · test_349_0s_draw_work 4(Node 측정 걸음당 그리기 옛 6~8 → 1 · totalMs 80~114 ms 중 cross 45 · footprint 8~13 · 가게 6~9) · 관련 661 · typecheck 0. 숨은 B06 카드는 이미 보일 때만 그림. — 브레인 화면: 끌기 177 · 128 · 189 ms · 되돌림 86~91 · longtask 최대 86 ms · 종단도 132 ms 가 큰 몫.
- [x] 349-0t sub2 브레인 프로젝트 미리보기(1,768.1) 대 정본(1,936.8) 168.7 ㎥(1.6 %) — 관 따라감 누가거리 · 측점 짝 대조 · 0.5 % 안 — 확인: 복제본 대조 시험. — 검증완료(대조만 · 코드 없음) — 남은 차이 = [저장]이 균형 종단을 새로 풂(→ 349-0v) · 세션 관 초안이 서버 따라감 덮음(→ 349-0u 덧) · 서버 재현 1,904.0 = DB 1,904.1.
- [x] 349-0u sub7 관 · 구조물 측점 따라감이 다시 안 됨(앞쪽 꺾임점 크게 끌어도 목록 · 세션 관 그대로) — 349-0d 규칙 되살림 · 되돌림 · 메아리 규칙 그대로 — 확인: 끌기 · 되돌리기 · 다시하기 측점 시험. — 검증완료 — 원인 = 세션 관 초안에 좌표 없음(정본 PUT 꼴) · 덧 = 노선 저장 [저장]이 서버 따라감 위에 초안 얹음 — 35ff14884 · 2140719c9 · 시험 9 · 관련 694 통과 · typecheck 0.
- [x] 349-0v sub1 손으로 고친 노선 [저장] = balanced_profile false(계획고 옮김만 · 균형 종단은 추천 [적용]만) · 서버 바뀐 구간 판정 = 브라우저 planline 짝 — 확인: 미리보기 = 정본 0.5 % 안 시험. — 검증완료 — c95266efd · 시험 63 · 실시간 421 통과 · typecheck 0 · 화면 대조는 349-0u 뒤 함께.
- [x] 349-0w sub7 노선 끌기를 되돌리면 그 앞 걸음(계획고 ▲)이 사라짐(되돌리기 꺼짐) — 섞인 조작 거꾸로 열기 값까지 — 확인: 사진첩 ▲ · 끌기 · 되돌리기 둘 시험. — 흠 아님 — 브레인 시험이 가짜 click 이었음 · 진짜 마우스로 ▲ → 끌기 → 되돌리기 둘 = 열기 값(2,003.9).
- 검증완료 — test_349_0k_undo_saved 4건(되돌린 뒤 상세 = 열 때 객체 · 측점 · 횡단 · 누가토량 같음 · 묶음 한 번) · 관련 296건 · typecheck 0.
- [x] 349-1 브레인 합침 · 대상 시험 · typecheck · 서버 Node 묶음 다시 지음 · 8000 다시 켬.
- [x] 349-2 브레인 브라우저 검증 — 화면 배치 · 점 놓고 0.3 s · 양방향(계획고 → 횡단 · 평면 발자국 · 횡단 → 평면) · 관 · 구조물 따라감 · 되돌리기 · [저장] 값 같음 · [초기화] · 추천 [적용] = 초기값 · 배수유역 수동/자동 · 제안 · 1000 · 3D 모달 · B04 다시 열기 양 · 첫 열기 요청 수 · 떠남 확인 · 밝음 · 어두움. — 검증완료 — 스크래치패드 req232/verify232.md V1~V18 통과(V2 한 번 125~207 ms · V6 노선 저장 6.5 s · V8 추천 = 초기값 · V9 수동 14 s · 자동 조용히 · V13 0.3 MB · 화면 값 = 서버 값 2,940.8 ㎥). · 이어서 찾은 흠 349-0d~0v 고친 뒤 목록 전체 다시 확인(관 따라감 · 되돌리기 · 다시하기 · B06 · 미리보기 = 정본 0.05 % · [초기화] · 추천 [적용] · 배수유역 · 3D · 떠남).
- [x] 349-3 브레인 아티팩트 보고. — 검증완료 — https://claude.ai/artifact/Kzfvus2CzG4PStLjQWST89