Files
Aislo/docs/raw/plans/2026-10-10_plan_200-219.md
T

132 lines
29 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.
# 2026-10-10 계획 200~219장 기록 — B09 박스보기 · 레벨 · 표 병합 · 안내 줄 · 데이터 점검 · 내역서 끌기 · 서고 연결 · 측구 · 알림 칩 · 별칭 · 상세 고르기 · 측점 겹침 · 단축키 · 자유지정 · 돋보기 · 방향키 흠
근거 = `docs/raw/요구_1010_2/사용자요구_1010_2.md` 53~82 · 조사 AB(제비율 · 사용자 결정 기다림) · 메인 합침(이 커밋 앞).
## 200. B09 박스보기 도구 줄 한 줄 · 카드 높이 맞춤 · 설계내역서 레벨 글 · 레벨 다루기 (sub1 · sub3)
정함(브레인) = 사용자 53~55번 · 53 = 박스보기 단추 · 가로 1~4 단추 · 계산 안내 글(표 위 hint 줄)을 한 줄에(안내 글은 줄임표 + 호버로 전문) · 54 = 박스보기 같은 가로 줄 카드 높이 같게(grid 행 늘림) · 55 = 공종 · 명칭 글 왼쪽 맞춤 + 레벨 = 왼쪽 들여쓰기(글자 크기 차이는 줄이거나 없앰) · 레벨 다루기를 보이게: 표 위 도구 단추 [→ 들여쓰기] [← 내어쓰기] [↑] [↓](고른 줄) + 키(Tab · Shift+Tab · Alt+↑↓) + 안내 한 줄
- [x] 200-1 (sub1) 도구 줄 한 줄(안내 글 포함) · 카드 같은 줄 높이 같게 — 새 시험
- 검증완료 — test_200_1(7) + test_185_2 · 171_2 · 171_3 · 181_2 · 157_2 = 32 통과 · typecheck 통과 · 안내 글 = 줄임표 + 잘릴 때만 공용 호버 · 카드 격자 행 늘림(stretch)
- [x] 200-2 (sub3) 설계내역서 글 왼쪽 맞춤 · 들여쓰기 레벨 · 레벨 단추 · 키 · 안내 — 새 시험
- 검증완료 — test_200_2(4 · 단추 넷 · 못 하면 disabled · 키 셋 · 편집 중 안 먹음 · 레벨 padding 1em · 글 칸 왼쪽 맞춤) + 184_3 · 182 · 166_2 · 185_1 = 27 통과 · typecheck 통과
- [x] 200-3 (sub1) 박스보기 카드 제목 줄 · 합계 줄 = 서로 다른 바탕색(밝음 · 어두움 테마 토큰) — 새 시험
- 검증완료 — test_200_1(10) + 185_2 · 171_2 · 171_3 · 181_2 · 157_2 = 35 통과 · typecheck 통과 · 토큰 `--group-head-bg`(강조 6%) · `--group-foot-bg`(강조 15%) = 테마 변수 섞음 · 밝음 · 어두움 두 색 차이 ≥ 40 · 글 대비 ≥ 4.5
## 201. B08 · B09 표 레벨 양식 한 벌(보기 전용) · 같은 값 세로 병합 (sub3 · 200-2 뒤)
정함(브레인) = 사용자 57번 · 레벨이 필요한 표(총괄 · 원가계산서 · 목록표 · 집계표 등)는 설계내역서 레벨 꼴(200-2 들여쓰기 · 굵기)을 공용 표 옵션 하나로 같이 씀 · 다루기 단추 · 키는 설계내역서만(나머지는 보기 전용) · 같은 열에 위아래로 같은 값이 이어지는 칸(공종 · 호표 이름 등 묶음 열) = 세로 병합(rowSpan)으로 그림 · 값 · 합계 · 엑셀 꼴은 그대로 · 병합할 열은 표마다 지정(아무 열이나 하지 않음)
- [x] 201-1 공용 표 옵션 level(보기 전용) · mergeSame(열 목록) · B08 · B09 적용 표 목록 보고 — 새 시험
- 검증완료 — test_201_1(4 · level 들여쓰기 · 단추 없음 · rowSpan 같은 값만 · 빈칸 · 고칠 칸 · 합계 줄 안 합침 · 옵션 없으면 무변) + B08 · B09 관련 36 파일 212 통과(test_124 1건 = 받기 전부터 실패 · 손 안 댐) · typecheck 통과
## 202. B08 · B09 표 칸 — 안내 · 경고 줄 = 맨 아래 · 박스보기 · 가로 수 = 보조 탭 줄 오른쪽 (sub1)
정함(브레인) = 사용자 59번 · 표 칸 맨 위 안내 · 경고 줄(hint · 서버 안내)을 표 칸 맨 아래로(199 창 높이 셈에 그 줄 몫 넣음) · 박스보기 단추 · 가로 1~4 = 보조 탭 줄(181 · 170-4) 오른쪽 맞춤 · 보조 탭 없는 단독 탭은 빈 보조 줄 오른쪽 · 200-1 한 줄 묶음은 풂(안내 글은 아래로)
- [x] 202-1 B08 · B09 표 칸 안내 줄 맨 아래 · 보기 단추 보조 탭 줄 오른쪽 — test_200_1 · 185_2 · 199_1 고침 · 새 시험
- 검증완료 — test_202_1(7) 새로 + 200_1 · 185_2 · 199_1 · 181_1 · 181_2 · 171_2 · 171_3 · 157_2 · 170 · 143_3 · B08 표 시험 = 192 통과 · typecheck 통과 · 안내 줄 = B09 표 · 카드 판 마지막 자식 · B08 토적 · 운반 · 자재 · 구조물 집계 표 아래 · 보기 단추 · 열 수 = 아래 탭 줄 오른쪽(빈 줄 포함) · 창 끝까지 셈에 아래 줄 134 포함 · 문서 끝 = 창 끝(900 = 900)
## 203. B09 좌측 「데이터 점검」 묶음 — 이름 · 설명 지움 · [업데이트] 표시 · 연결 점검 옮김 (sub8)
정함(브레인) = 사용자 60번 · 좌측 「원가 단가」 묶음 이름 → 「데이터 점검」 · 안 설명 글 지움(꼭 필요한 건 공용 호버로) · [단가 갱신] → [업데이트] · 갱신이 필요하면(굳힌 단가가 M01 · 사본보다 낡음 등 지금 판정 그대로) 단추에 점 배지(오버레이) · 상세 페이지 「연결 점검」 탭 내용 = 좌측 데이터 점검 묶음 안으로 옮기고 위 탭에서 뺌(181 묶음 표에서 지움 · 첫 탭 = 다음 탭)
- [x] 203-1 이름 · 설명 · [업데이트] · 배지 · 연결 점검 좌측으로 · 탭 지움 — test_144 · 181_1 고침 · 새 시험
- 검증완료 — test_203_1(5 · 이름 · 설명 없음 · 단추 글 · 배지 조건 `book_stale` 넷 · 좌측 목록 이동 · 호버 · 탭 없음 · 첫 탭 cost) + 144 · 181_1 · 155 · B09 탭 시험 10 = 74 통과 · typecheck 통과 · 배지 판정 = 지금 M01 로 굳힌 책과 견줌(브레인 승인) 180 키 5 ms
## 204. B09 설계내역서 — 끌기 · 방향키 레벨 · 이동 · 묶음 자동 · 서고 연결 (sub2 · sub6)
정함(브레인) = 사용자 61번 · 레벨 = 들여 · 내어쓰기 하나 · 고른 줄(편집 중 아님) ←→ = 내어 · 들여쓰기 · ↑↓ = 옮기기(200-2 Tab · Alt 키도 그대로) · 끌기 = 줄 잡아 위아래(자리) + 좌우(레벨) · 줄을 옮기면 자손이 함께 감 · 자식이 생긴 줄 = 묶음(금액 = 자손 합 · 위로 전달) · 자식이 없어진 묶음 = 항목(제 단가 · 수량) · 깊이 5 · 관급 줄 규칙 그대로 · 연결 고르기 출처 = 지금 프로젝트 호표(일위대가 · 산근) + 마스터 · 회사 · 개인의 구조물조합 · 일위대가 사전조합 → 서고 것을 고르면 프로젝트 사본으로 들여와 새 호표로 잇기(B08 [선택] 사본 길 재사용)
- [x] 204-1 (sub2) 방향키 · 끌기 · 자손 함께 · 묶음/항목 자동 · 합 전달(Calc_Bill 짝 거울) — 새 시험
- 검증완료 — test_204_1(6 · 방향키 넷 · Alt+←→ 안 받음 · 편집 중 안 먹음 · 끌기 자리 9 · 놓기 자손 함께 · 막음 5 · 깊이 · 항목 → 묶음 금액 = 자손 합 → 1.2 · 1 전달 · 빠지면 기본 표 그대로 · 거울 5) + 184_2 · 184_3 · 200_2 · 182 · 166_2 · 145_3 = 49 통과 · typecheck 통과 · 184_3 · 166_2 · 200_2 기대값 고침(위 항목 아래로 들여쓰기 됨 · 그냥 ↑ = 옮김)
- [x] 204-2 (sub6) 연결 고르기 = 프로젝트 호표 + 서고 세 층 구조물조합 · 사전조합 · 고르면 사본 들여와 호표 · 단가 묶음 — 새 시험
- 검증완료 — test_204_2(6 · 사전조합 고름 = 사본 파일 셋 + 사전조합 호표 줄 3 + 단가 묶음 로직 · 자재 · 고른 자재 넷 + 수요 키 · 다시 고름 = 만듦 거짓 · 같은 호표 · 원본 지워도 그대로 · 구조물조합 = 조합 호표 · 없는 것 404 · 모양 400 · [저장] = 안 잇는 사본 지움 · lib 지킴 · 권한 남의 회사 403 · 회사 없는 개인 409 · 마스터 누구나 · 화면 출처 다섯 · 서고 줄만 창 · 원가 자료만 바꿔 끼움) + 182 · 166_2 · 184_3 · 184_2 · 175 · 145_2 · 155 · item_copy_complete · m02_labor_ref · m02_card_shell 등 = 200 통과 · typecheck 통과 · 182 출처 기대값 고침
## 205. B05/B06 구조물 배치 묶음 [삭제] · [리셋] 단추 높이 · 늘 보임 (sub5) · 낡은 시험 둘 (sub3)
정함(브레인) = 사용자 63번 · 묶음 머리 [삭제] · [리셋] 높이 = 안쪽 컨테이너 단추 높이(공용 단추 크기 토큰 · 187 꼴) · 안쪽 컨테이너에서도 [삭제] · [리셋]이 늘 보임(접힘 · 넘침 · 호버 때만 아님) · 낡은 시험 = test_124 화면 연결(자재 할증 글 rows[keep[i]]) · test_m02_card_sheet_edit(spreadsheet.ts 문구) 기대값만 지금 코드로
- [x] 205-1 (sub5) 단추 높이 맞춤 · 늘 보임 — 새 시험
- 검증완료 — test_205_1(3) · test_187_1 · test_136_3 통과 · typecheck 통과 · 맨 아래 [추가]·[삭제]·[리셋] 줄 높이 약 33px → 26px(상자 안 단추 `--b05-control-h`) · 줄이 스크롤 영역 아래 끝에 붙음(sticky)
- [x] 205-2 (sub3) 낡은 시험 둘 기대값 고침(코드 안 고침) — 두 시험 통과
- 검증완료 — test_124_b08_surcharge_panel · test_m02_card_sheet_edit 둘 파일 13 통과 · 코드 안 고침 · 미리보기 = 도구 줄 없음 · 우클릭 「복사」 한 줄(spreadsheet_menu 의 ss--preview) 같은 뜻 확인
## 206. 양측 성토 측점에 측구가 남는 흠 · 단추 숨김으로 못 끔 — 검증_sub1 No.1+0 (sub7)
정함(브레인) = 사용자 64번 · 확실히 조사 · 원인 고침 · 양측 성토 = 측구 없음이 형상(카드 · 서버 면적 · B07 · 3D)까지 같은 규칙 · 측구가 실제로 그려져 있으면 단추를 숨기지 않음(179-2 숨김은 「막힘 + 그려진 것 없음」일 때만) · 좌우 한 번 바꾸면 사라지는 까닭(옛 저장 측구 쪽 · 다시 셈 빠짐 등) 판정
- [x] 206-1 원인 판정(자료 · 코드) · 고침 · 사본 재현 시험 — 새 시험
- 검증완료 — 원인 = 측구 판정의 「양측 성토」가 입력 단면유형(옛 저장 right_cut · 계획고 871.93 → 873.90)을 봄 · 옛 결과 ditch_enabled=True 가 선택으로 둔갑(ditch_choice=True) · 사본 재현 고치기 전 측구 0.18㎡ · 성토 34.1141(DB 34.114 · 0.18 같음) → 고친 뒤 측구 0 · 성토 34.0513 · 좌우 누름 = both_fill 입력으로 다시 셈이라 사라짐 · 고침 = 판정 역할(양쪽 성토)로 가름 · 남은 선택 비움(파이썬 · TS 짝) · 옛 저장분 낡음 판정 → B05 · B06 진입 때 다시 셈 · 측구 그려져 있으면 단추 보임 · test_206_1 11(고치기 전 11 실패) · 179_2 · ditch_choice · ditch_split · mirror · 178_2 · 115 · 137 · 139_6 · 172 · 176 · 193 · 194 · 195 · stale_sync 외 6 파일 합 142 통과 · typecheck 0
## 207. B06 알림 칩 다듬기 — 사각 라운드 · 내용 칸 겹쳐 띄움 · 고르면 접힘 · 고른 측점 강조 (sub8)
정함(브레인) = 사용자 65번 · 칩 셋 모양 = 둥근 사각(알약 아님) · 안 측점 단추는 지금 그대로 · 내용 칸 = 카드 위에 겹쳐 띄움(흐름에 끼지 않아 페이지 · 카드가 안 밀림 · sticky 줄 아래) · 측점 누르면 그 카드로 가며 내용 칸 접힘 · 지금 고른 측점(카드)이 있으면 열 때 목록에서 그 측점 강조
- [x] 207-1 칩 모양 · 겹친 내용 칸 · 고르면 접힘 · 고른 측점 강조 — test_196_1 고침 · 새 시험
- 검증완료 — test_207_1(6 · 칩 반경 `--radius-buttons` 8px · 내용 칸 absolute(top 100% · 그림자 · 흐름 밖) · scroll-margin = 칩 줄 offsetHeight · 고르면 접힘 · 고른 측점 단추 강조 · 없으면 강조 없음) + test_196_1 · 138 둘 · fill_slope_warn · berm_review = 26 통과 · typecheck 통과
## 208. M01 단가산출 로직 「별칭」 열 · 전역 검색에 별칭 포함 (sub4)
정함(브레인) = 사용자 66번 · 로직 항목마다 선택 칸 alias(빈 값 허용 · 여러 개면 쉼표) · 값은 사용자가 M01 화면에서 넣고 [저장](코드는 마스터 파일에 값을 일괄로 쓰지 않음 · 없으면 빈칸으로 읽음) · 단가산출 로직을 찾는 모든 검색(M01 목록 · M01 고르기 창 · M02 로직 고르기 · B09 산근 · 연결 고르기 등)이 이름 + 별칭으로 찾음 · 검색 결과에 별칭이 맞았으면 그 별칭을 작게 보임
- [x] 208-1 alias 칸(스키마 · 저장 · M01 열 · 편집) · 검색 함수 한 벌로 별칭 포함 · 쓰는 곳 목록 보고 — 새 시험
- 검증완료 — test_208_1(10 · 서버 hit ↔ 화면 matchLogic 거울 11가지 · 읽기 빈칸 · 임시 사본 저장 왕복 · 정본 파일 그대로 · M01 열 이름 옆 · 쓰는 곳 5곳 공용 맞춤) + m01 api · combo · make · pick · search_words · m02 df_input_logic · inputpanel_build · labor_logic_mats · card_shell · precombo_scope = 123 통과 · typecheck 통과
## 209. B06 [상세] 그래프 고르기 — 교차점 분할 · 여러 개 고름(원지반 포함) · 고른 것 면적 · 길이 보기 (sub2)
정함(브레인) = 사용자 67번 · 179-4 고르기 고침 · [상세] 모달만(메인 카드는 사용자가 본 뒤 정함) · 선(설계선 · 원지반선 · 구조물 선)을 서로 만나는 점에서 조각으로 나눔 · Shift/Ctrl 누름 = 여러 조각 고름 · 길이 = 고른 조각 합 · 면적 = 고른 조각이 닫힌 영역을 이루면 그 넓이(안 닫히면 「닫히지 않음」) · 고른 것 값 정보창(179-1 메인 길이 정보창 꼴 재사용) · 칸에 넣기 = 지금 우클릭 길 그대로 · 서버 검산(두 끝 · 조각 목록)
- [x] 209-1 분할 · 여러 고름 · 닫힌 영역 넓이 · 정보창 · 칸 넣기 · 서버 검산 — test_179_4 고침 · 새 시험
- 검증완료 — test_209_1(9) · 179_4 · 164 · 150 둘 · 173 = 53 통과 · typecheck · 골 넓이 10.667㎡ 파이썬 = TS · 설계선 내리면 다시 고름
## 210. B06 조사 둘 — 「누락된 구조물 측점」 줄이 뜨는 까닭 · 도수로/돌붙임 끌 때 「기준측점을 옮겼습니다」 (sub7 · 조사만)
정함(브레인) = 사용자 68 · 70번 · 조사 · 보고만(코드 안 고침) · 자료 · 코드 근거 · 고칠 거리 제안 한 줄씩
- [x] 210-1 두 현상 까닭 판정 · 보고(재현 조건 · 근거 · 제안)
- 조사완료 — ① 관 · 구조물 옮김 · 추가 뒤 측점 안 다시 뜸(검증 13곳 중 엄상준 263.31 하나 · 측점 263.21 과 0.100 m) · 반올림 차는 ≤ 0.005 m(sub4 최대 0.0050 · 소수 경계라 뜰 수 있음) ② 횡단도 도수로/돌붙임 · 관 고름 = 조정창 없음 → 방향키 ← → 가 종단도로 가 관 기준측점 0.1 m 이동(152-4 c924ee204 부터 · 관은 118-1) · 옮긴 관 둘(263.21 → 263.31 · 769.28 → 769.38)이 꼭 키 한 번
## 211. 관보호공 유입 흙막이 기본 높이 = 관 + 0.7 m (sub1)
정함(브레인) = 사용자 69번 · 지금 「관 + 0.5 m」 기본값 자리(코드 상수 · 파이썬 · TS 짝이면 둘 다 · 마스터 템플릿 값이면 그 한 줄) → 0.7 · 이미 저장된 값은 그대로 · 빈 값일 때만
- [x] 211-1 기본 높이 0.5 → 0.7(짝 거울) — 새 시험
- 검증완료 — test_211_1_inlet_revet_height 6 통과(Φ1200 유입 빈 칸 1.9 · 유출 1.7 · 집수정 1.7 · 저장 1.2 그대로 · 옛 1.5 → 1.7 무변 · TS 세트 ↔ 파이썬 거울 · 횡단도 revetWallSpec 1.9 · 1.7 · B08 집계 열 1.5 · 1.3) · 관련 시험 69 통과 · npm run typecheck 오류 0
## 212. B07 횡단 장 — 원지반선 고르기 다시 확인 · 측점별 레이어 자동 · 검은 격자선 지움 · 표준 옵션 단추 양식 (sub6)
정함(브레인) = 사용자 71~74번 · 71 = 180-1 뒤에도 안 잡힘 → 실제 화면 길(확정 장 · 백엔드 재시작 전 옛 엔티티 · 잠금 층 · 고르기 필터)로 까닭 판정 후 고침 · 72 = 측점마다 레이어 자동 생성(예 「횡단 No.3」 · 그 측점 원지반선 · 설계선 · 구조물 그림이 그 층 · 표 · 글은 기존 층) · 층 관리에서 그 층만 고르기 · 켜고 끄기 · groupId 그대로 · DXF 층 이름 영향 확인 · 73 = 붉은 틀 숨김 뒤 남는 검은 격자선(인쇄 칸선과 다른 안내선이면 함께 숨김 · 인쇄 칸선이면 사용자 확인 거리로 보고) · 74 = 좌측 「횡단도」 표준 옵션 단추들(배치 칸 · 배율 · 안내선 · 열 · 행 등)을 공용 단추 양식 · 크기로 한 벌
- [x] 212-1 원지반선 고르기 까닭 · 고침 — 새 시험
- 검증완료 — 까닭 = 새로 만든 장은 서버(검증_sub6 1장 원지반 16 개 · 층 잠금 거짓) · CAD 걸름(층 잠금 하나뿐) 모두 잡힘 → 안 잡힌 것은 180-1 앞 잠금째 저장된 확정 장 · 반영 전 서버 · 페이지 메모리 옛 도면 · 확정 장 열 때 원지반 잠금 풂 + 측점 층 없으면 stale_layers 안내 · test_212 6(옛 확정 장 원지반 거짓 · 도각 잠금 그대로)
- [x] 212-2 측점별 레이어 자동 — 새 시험 · CAD build
- 검증완료 — 측점 층 + 종류는 색 · 선 꼴 · 2 × 2 장 층 4(b08-station-{측점} · 「횡단 No.0~3」) + 수량표 + 도각 · 종류 층 0 · 그림 자식 선까지 측점 층 · 표 · 글 수량표 층 · id · groupId 그대로 · design_ids · DXF 층 이름 = 측점 층 id · 140 · 174 · 180_* · 169 · 153_1 · cross_sheet_pad 44 통과 · vitest 126 · CAD build · typecheck 통과
- [x] 212-3 검은 격자선 · 표준 옵션 단추 양식 — 새 시험
- 검증완료 — 검은 선 = 인쇄 칸선(도각 층 · #8ea0b5 · 밝은 바탕에서 짙게) → 안 지움 · 사용자 확인 거리 · 배치 칸 4 줄(열 · 행 / 이 장 · 모든 장 / 표 배율 · 적용 / 안내선) · 단추 · 숫자 칸 = --btn-bar-* 높이 16 · test_212_3 3 통과
## 213. 한 자리에 측점 둘이 숨는 흠 — 엄상준_검증 No.13+3 (sub7 · 먼저)
정함(브레인) = 사용자 76번 · 중요 · 되풀이 · 192(옮긴 관 · 옛 측점 남음 · 판정 폭 0.005 m)와 같은 갈래인지 판정 · 근본 원인 고침(측점이 생기는 모든 길 — 자동설계 · 관 지점 · 구조물 심음 · [측점 만들기] · 옮김 · 반올림 — 에서 같은 자리 두 벌이 안 생기게 · 생겨 있는 겹침은 읽을 때 하나로 정리) · 사용자 프로젝트 읽기만 · 사본 재현
- [x] 213-1 13+3 자료 판정 · 근본 원인 · 고침 · 겹침 정리 · 재발 막는 시험 — 새 시험
- 검증완료 — test_213_1 7 통과(측점 0.006 m 안 꼭짓점 · 편집 키 모음 · 파이썬 = TS 거울 · 엄상준 사본 263.206/263.210 두 꼭짓점 → 하나 · 최대 경사 −15003% → 22.6% · [측점 만들기] 병합이 옛 글자 263.206 도 지움) · 검증 13 프로젝트 측점 계획고 변화 ≤ 1 mm · typecheck 오류 0
## 214. CAD 되돌리기 · 다시 하기 — 한글 자판에서 Ctrl+Z · Y 안 먹는 흠 (sub8)
정함(브레인) = 사용자 78번 · CAD 엔 되돌리기 · 다시 하기가 있음(빠른 막대 UNDO · REDO 단추 + Ctrl+Z · Ctrl+Y · Ctrl+Shift+Z) · 단 키 판정이 글자(evt.key === 'z')라 한글 자판이면 「ㅋ」로 와 안 먹음(Ctrl+V 는 이미 evt.code) → evt.code(KeyZ · KeyY)로 · 구조물조합(M02 도면 카드) · B07 · B08 구조물도 등 CAD 를 쓰는 모든 곳 같은 고침 · 부모 페이지에 초점이 있을 때 키가 CAD 로 안 가는지도 확인
- [x] 214-1 키 판정 evt.code · 쓰는 곳 확인 · vitest · CAD build — 새 시험
- 고침: Ctrl+Z · Y · Shift+Z · S · A 를 자판 자리(code)로 판정(`input-shortcut.ts`) · 한글 조합 중에도 Ctrl 단축키는 먹음 · 제목줄 없는 M02 화면(양식 편집 · 구조물 카드)은 우하단 탐색 막대에 ↶ ↷ 단추 추가(고칠 수 있을 때만) · 포인터가 CAD 위에 오면 부모 입력 칸이 아닐 때 CAD 로 초점(`cad_host.ts`)
- 검증완료 — 새 vitest `resources/tester/cad/ctrl-shortcut-hangul.test.ts` 9 통과(key 「ㅋ」+KeyZ = 되돌리기 · 「ㅛ」+KeyY = 다시 하기 · Shift+KeyZ = 다시 하기 · 조합 중 Ctrl+Z) · openwebcad 전체 vitest 24 파일 126 통과 · CAD `npm run build` 통과 · `npm run typecheck` 통과 · prettier 통과
## 215. B05 종단 [자유지정] — 범위 고르고 클릭으로 계획선 잇기 (sub5)
정함(브레인) = 사용자 77 · 79번 · [직선화] 오른쪽 [자유지정] · ① 범위 = 직선화처럼 세로 측점선 둘 고름 · 그 구간 강조 ② 시작 세로선 근처 클릭 = 그 자리 지금 계획고에 이은 채 시작 ③ 클릭마다 점 하나 — 가로 = 가까운 측점 세로선에 붙음(범위 안 · 새 측점 안 만듦) · 높이 = 클릭한 높이 ④ 확정 전엔 실시간 점선(마지막 점 → 마우스 · 기울기 % 글 · 기준 넘으면 빨강) · 점 사이 직선 · 꺾이는 점엔 종단곡선 자동(지금 직선화 · 종단곡선 규칙 그대로) ⑤ 끝 세로선 근처 클릭 = 그 자리 지금 계획고에 이어 끝(Enter = 끝 · Esc = 취소 · Backspace = 마지막 점 빼기) ⑥ 끝내면 계획고 편집으로 캐시에(직선화 결과 길과 같음 · [저장] 때 서버 다시 셈)
- [x] 215-1 [자유지정] 범위 · 클릭 점 · 측점선 붙음 · 실시간 점선 · 종단곡선 · 끝 · 취소 · 적용 — 새 시험
- 검증완료 — test_215_1 15 통과(79m 클릭 → 80m 세로선 · 103.456 → 103.46 · 세로 창 왕복 103.2 · 시작 40m 100.6 이음 · 미리 보기 7.15 % / −5.65 % · −58.65 % 빨강 · 끝 160m 102.4 이음 · 꺾인 80 · 120m 만 R(80m L 20 m) · 범위 밖 편집 0 · Esc 적용 0 · Backspace) · 종단 관련 기존 시험 97 통과 · typecheck 오류 0
## 216. B05 종단 세로선 고름 → 좌측 구조물 배치 패널이 B06 처럼 안 따라가는 흠 (sub2)
정함(브레인) = 사용자 80번 · B06 은 종단 세로선(관 지점 · 일반 측점) 고름에 좌측 구조물 배치 패널이 잘 바뀜 · B05 는 잘 안 됨 → 까닭 판정 후 B05 도 B06 과 같은 규칙(같은 함수)으로 · 188 고름 한 칸 · 189 노면공 · 177-3 측점선 규칙 그대로
- [x] 216-1 까닭(코드 근거) · B05 고침 · 새 시험
- 검증완료 — 까닭 B05_Profile_UI_Selection 일반 측점 조기 return · 관 전용 selectPipeByChainage → openAtStation(resolveSelection + coversAtStation = B06 showAtChainage) · test_216_1 7 · 188_1 · 189_1 · 177_3 · selection_single 등 82 통과 · typecheck 0
- [x] 213-2 (sub7 · 210 뒤) 유령 편집 근본 막음 — 정함(브레인): ① 관 · 구조물을 옮기면 그 자리 계획고 편집 키가 함께 옮겨 감(B05 · B06 movePipeTo · 구조물 끌기 · 세션 초안 · 옛 키 다시 보내지 않음) ② [저장] 때 서버가 「측점 · 관 · 구조물 자리 어디에도 없는」 편집 키를 버리고 응답 알림에 버린 자리 목록(사용자가 봄) ③ test_192_1 은 사용자 프로젝트 원본에 기대지 말고 사본 고정 자료로 — 새 시험
- 검증완료 — test_213_2 6 통과(226fc805 꼴 측점 769.38 + 옛 키 769.280 → 버림 [769.28] · 꼭짓점 하나 · 관만 옮긴 때 둘 다 지킴 · 자리 못 읽으면 안 버림 · followedStation TS 5 경우 · 옮김 자리 둘) · test_192_1 고정 사본 5 · 213_1 7 · missing_stations 통과 · 저장 왕복 · 초기선 시험 29 통과(노선 탐색 test_terrain_impossible 1 실패 = 엔진 몫 · 무관) · typecheck 0
- [x] 214-2 (sub8) 프로그램 전역 Ctrl 단축키 한글 자판 — B05 종단 Ctrl+Z 등 글자 판정(evt.key)을 evt.code 로(214-1 input-shortcut 꼴 · 공용으로 올려 같이 씀) · grep 으로 다른 페이지도 — 새 시험
- 고침 — 공용 `A00_Common/key_shortcut.ts`(keyLetter · isCtrlKey · ctrlShortcut) · 쓰는 곳 8: CAD `input-shortcut.ts`(다시 내보냄) · B05 종단 Ctrl+Z(Panel_Tools) · B05 노선 편집 Ctrl+Z · Y(RouteEdit_History) · M02 흐름도 패널 Ctrl+Z ×2(DF_Panel) · M02 카드 Ctrl+S(CardShell) · M02 나무 Ctrl+C · V ×3(TreePanel) · 시트 Ctrl+Z · Y · A · D · R · F · H · L · V · 1(spreadsheet_keys · 조합 중에도) · 시트 actions 는 이미 code
- 검증완료 — 새 시험 ctrl-shortcut-hangul 13 · ctrl-shortcut-sheet 2(「ㅋ」+KeyZ · 「ㅛ」+KeyY · 「ㄹ」+KeyF) 통과 · openwebcad 전체 vitest 126 통과 · CAD build · typecheck 통과 · prettier 통과
## 217. B06 알림 칩 줄 ↔ 횡단 카드 사이 여백 줄임 (sub1)
정함(브레인) = 사용자 81번 · 칩 줄 위아래 여백 · 칩 줄과 첫 카드 줄 사이 간격을 절반쯤으로(공용 간격 토큰 한 단계 아래) · sticky · scroll-margin(--b06-notice-h) 그대로
- [x] 217-1 여백 줄임 — 새 CSS 시험
- 검증완료 — test_217_1 신규 3 + test_196_1 · test_207_1 통과(16 passed) · typecheck 통과 · 칩 줄 위 여백 16→8 px · 칩 줄 ↔ 첫 카드 28→16 px
## 218. B05~B09 돋보기 — 우클릭 길게 누름 · Z 키 누르는 동안 커서 따라감 (sub4)
정함(브레인) = 사용자 82번 · 기본 = 지름 240 px 원 · 2배(나중에 바꿀 수 있게 상수 둘) · 켜는 법 = 오른쪽 단추 0.4 초 넘게 누르고 있는 동안(그때는 우클릭 메뉴 안 뜸) · Z 키 누르고 있는 동안(글 칸 입력 중엔 안 켬 · Ctrl/Alt 조합 아님) · 떼면 꺼짐 · 공용 ui_template 하나로 B05~B09 페이지에 붙임 · 켤 때 화면을 한 번 떠서(DOM 복제 + 2D canvas 그림 복사) 커서 따라 옮김(켜 있는 동안 화면이 바뀌면 다시 뜸 · WebGL 3D · CAD iframe 은 그림 복사 가능하면 · 안 되면 빈칸 · 보고) · 밝음 · 어두움 테두리 토큰
- [x] 218-1 공용 돋보기 · 두 켜는 법 · B05~B09 붙임 · 새 시험
- 검증완료 — 새 시험 test_218_1_loupe 13(0.399 초 안 켬 · 0.4 초 켬 · 뗌 끔 · 길게 뒤 메뉴 막음 · 짧게 = 메뉴 그대로 · Z 켬/뗌 끔 · 글 칸 6 종 안 켬 · 240 px · 2배 · 화면 끝 4 px 안 잘림 · 끄면 복제 0 · 0.5 초 뒤 다시 뜸 · 붙는 주소 b05~b09 다섯) · native_menu 3 통과 · typecheck · prettier · ruff 통과
- 검증완료(218-2 공용 키 판정) — Z 판정 · 뗌 판정을 공용 key_shortcut keyLetter 로 바꿈(동작 그대로) · test_218_1_loupe 13 · ctrl-shortcut-hangul 13 · ctrl-shortcut-sheet 2 통과 · typecheck 통과
- [x] 210-1 조사완료 — ① 측점 없는 구조물 줄 = 관 · 구조물 정본 자리에 0.005 m 안 측점 없음(옮김 · 반올림 경계 · 노선 밖) · 실측 엄상준 263.31 하나 ② 「기준 측점을 옮겼습니다」 = 횡단 보기에서 도수로 · 돌붙임 · 관을 고르면 조정창이 없어 방향키를 종단도 듣개(Panel_Tools)가 받아 관 기준측점 0.1 m 이동 · 저장까지 됨 → 192 · 213 숨은 측점의 씨앗
## 219. 횡단 보기 방향키가 관을 몰래 옮기는 흠 · 측점 없는 구조물 판정 폭 (sub2)
정함(브레인) = 210 조사 ② = 사용자가 요청하지 않은 관 이동이 저장까지 됨(데이터 오염 · 192 · 213 씨앗) → 고침 · 종단도 방향키 좌우 이동은 마지막 누름이 종단도 안일 때만(arrowsBelongToProfile 를 Panel_Tools 에도) · 도수로 · 돌붙임 고름 중 방향키 = 무시 · ① 판정 폭 0.005 → 0.006 m(213 측점 폭과 한 벌) · 노선 밖 자리 빼기
- [x] 219-1 방향키 소속 · 판정 폭 · 노선 밖 — 새 시험
- 검증완료 — Panel_Tools 좌우 = arrowsBelongToProfile 때만 · 관 · 도수로 띠 고름 = swallowsArrows 삼킴 · 판정 폭 = SAME_STATION_SNAP_M 0.006 · 노선 밖 뺌 · test_219_1 9(카드 뒤 ← → 이동 0 · 종단도 뒤 263.21 → 263.31) · 188_1 · 216_1 · 193_1 · 126 · 213_1 · missing_stations 등 64 통과 · typecheck 0 · 192_1 원본 읽기 둘은 storage 226fc805 자료가 이미 고쳐져(10-10 14:54) 실패 — 고침과 무관
- 검증완료(219-2 헬퍼) — helper_219_1 가짜 모듈에 design_profile_free · design_profile_free_view(215-1 이 끄는 @config 줄기 차단) · 코드 손대지 않음 · test_219_1 · 215_1 · 188_1 · 216_1 39 통과
- [x] 213-3 (sub7) design_profile.ts 700줄 닿음(합친 뒤 · 213-2 · 216 · 219 몫) → 기능 하나 떼어 650 안쪽 · test_215_1 「줄 수」 기준 = 700(규칙) — 시험 통과
- 검증완료 — design_profile.ts 700 → 641줄(유토곡선 · 테이블 오버레이 · 배지 = design_profile_overlays.ts 63 · 가로 스크롤 · 휠 · 크기 바뀜 = design_profile_viewport.ts 68 · 동작 그대로) · test_215_1 기준 700 · 215_1 · 213_1 · 213_2 · 216_1 · 219_1 · 188_1 · 177_3 · 165 · 129 · 최소고 · stale · 한 벌 종단 등 104 통과 · typecheck 0
## 220. 돋보기 — 켜진 동안 휠 = 배율 · 화면 스크롤 막음 · 크기 1.5배 (sub4)
정함(브레인) = 사용자 83번 · 지름 240 → 360 px · 켜진 동안 휠 = 배율 조절(1.5 ~ 6배 · 한 칸 0.25 · 기본 2배 · 끌 때까지 유지 · 다음에 켤 때 2배로) · 그동안 페이지 · 표 · 그래프 스크롤과 그래프 줌은 막음(passive:false 잡기 단계 preventDefault) · 배율 글 작게 원 아래
- [x] 220-1 크기 · 휠 배율 · 스크롤 막음 · 붙는 페이지 = M01 · M02 · B01~B09(사용자 84) — test_218_1 고침 · 새 시험
- 검증완료 — test_218_1 · test_220_1 19 통과(지름 360 · 휠 ±0.25 · 한도 1.5/6 · 켜진 동안 wheel 막힘 · 꺼지면 그대로 · 다시 켜면 ×2 · 붙는 주소 B01~B09 · M01 · M02) · typecheck 0