Commit Graph
486 Commits
Author SHA1 Message Date
eomsangdon febb9a8b30 Merge remote-tracking branches 'origin/sub_laptop_1', 'origin/sub_laptop_2', 'origin/sub_laptop_3', 'origin/sub_laptop_5' and 'origin/sub_laptop_6' into CODEX 2026-10-09 14:50:53 +09:00
eomsangdonandClaude Opus 5.5 702f3e68d9 fix(B06): 포장 단추 지움 · 포장 = 노면공 범위만 · 포장 권장 알림 줄(138-1)
- 서버 paved_at 저장값 인자 지움 · enforce_pavement_ranges 켬↔끔 양쪽 · 단건 계산도 범위 규칙
- 브라우저 재계산 pavedBySpecs(같은 규칙) · CARRY_INPUT_KEYS 에서 paved 뺌
- 카드 「⚠ 포장 권장」 배지 → 알림 줄 「⚠ 포장 권장 · n측점」 · 로케일 정리

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JywHxQuWPk6UYXTebyrBoU
2026-10-09 14:47:39 +09:00
eomsangdonandClaude Opus 5.5 eebe72a7f4 feat(B07): 평면도 관리 모달 오른쪽 CAD 캔버스만 · 확정 풀기 뺌(140-1)
- CAD 싣기 곁값 bare — 제목줄 · 리본 · 패널 · 상태막대 안 그림 · 높이 변수 0
- 모달 [확정 풀기] 지움 · 확정 배지 · [CAD 에서 열기] 그대로 · M02 미리보기 그대로

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TNMXVCZXMpHpVvqmFkeChL
2026-10-09 14:46:58 +09:00
eomsangdonandClaude Opus 5.5 449a8cfe9b feat(B08): 총괄자재 · 콘크리트소요자재 · 자재수량 집계표 세 표(121-1)
- 실무 엑셀(4.2 수량산출(2공구)) 꼴 · 구조물 탭 아래 공용 표 · 구조물 수량 C = 구조물 집계표 계
- 단위수량 · ㎥당 배합 · 할증 % 고칠 칸 · 조작 중 TS 짝 계산 · [저장] 때 서버 정본 · 설정 quantity › material_sheets
- 공용 표 고칠 칸(editable · onEdit) · 끝 0 지움(trim)
- 시험 test_121(엑셀 66행 · 11행 · 총괄 G열 · 거울 · 저장)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PSXsvyDxjNmufteN5bqmt
2026-10-08 18:35:33 +09:00
eomsangdonandClaude Sonnet 5.5 5638bd5101 feat(M02): 면적 값 고침이 저장 전 도면 패널 표에 바로 비침 · 이름 · 보내기 취소는 [저장] 때 서버가 기록(112-1·112-2)
- 112-1 면적 표 변환을 공용 파일(spreadsheet_area_table.ts)로 빼 서버 Node 와 브라우저가 한 벌로 씀 · 도면 패널이 칸 고침마다(값 바뀐 표만 · 펼친 동안만) CAD 연결 표 갈기를 보기 전용 갈음(preview)으로 보냄
- 112-2 보낸 범위 이름은 도면 [저장] 요청 안에서 서버가 면적 문서에 둠(놓기만 하고 저장 안 하면 안 생김) · [보내기 취소]는 화면에서만 빼고 면적 [저장] 때 서버가 연결표 줄 · 이름을 뺌 · /name · /unlink 길 삭제

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-08 17:36:44 +09:00
eomsangdonandClaude Sonnet 5.5 c99a9a0ad4 fix(M02): CAD 표 놓기 Esc 로 그만두면 면적 쪽 저장 안 한 고침 기다림 풂(104-3)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-08 16:53:23 +09:00
eomsangdon 66a04a8a05 Merge remote-tracking branches 'origin/sub_desktop_1', 'origin/sub_laptop_2', 'origin/sub_laptop_4' and 'origin/sub_laptop_7' into main_laptop_1 2026-10-08 16:27:52 +09:00
eomsangdonandClaude Sonnet 5.5 31fa81174f feat(M02): 구조물 조합 일위대가 합계 칸 상태 색 · 머리와 합계 칸 한 상자 (101-1 · 101-2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-08 16:24:04 +09:00
eomsangdonandClaude Sonnet 5.5 4885557976 feat(B06): 구간형 구조물 범위 안 횡단 카드 전부 강조 · B05·B06 화면 글 기슭막이 → 흙막이(106-1·106-2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UoSr2sqvYtBf1dtQdus88s
2026-10-08 16:11:44 +09:00
eomsangdon c72585016d Revert "feat(B01): 대시보드 좌측 패널 — 권한별 항목 목록 · 고른 항목 컨테이너만 우측에 · 고른 항목 해시 유지 (99-2)"
This reverts commit d69686a0a8.
2026-10-08 15:15:18 +09:00
eomsangdonandClaude Sonnet 5.5 d69686a0a8 feat(B01): 대시보드 좌측 패널 — 권한별 항목 목록 · 고른 항목 컨테이너만 우측에 · 고른 항목 해시 유지 (99-2)
- 공용 좌측 패널(createWorkflowOverlays · ui-sidebar-list) · 항목 = 권한별 기존 컨테이너 그대로(내 정보 = 기본정보 + 보안)
- 고른 항목 해시 ?tab= 에 남김(hashchange 없이) · 저장 뒤 다시 그려도 유지 · 좁은 화면은 고르면 접음
- 시험 test_b01_side_panel 신규 · test_b01_settings_cards 고침

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-08 15:03:22 +09:00
eomsangdon 1849a11b33 Revert "feat(B01): 대시보드 항목별 탭 — 해시 탭 줄 · 개요 · 프로젝트 · 회사 · 내 계정 · 시스템 (92-1·92-2)"
This reverts commit 2a2c4d0f62.
2026-10-08 15:00:11 +09:00
eomsangdon 920f60a681 Revert "fix(B01): 항목별 탭 화면 다듬음 — 회사 정보 칸 줄맞춤 · 리소스 기간 글 · 프로젝트 표 단계 막대 두 줄 · 찾기 줄 정렬 (92-1·92-2)"
This reverts commit 22266508d4.
2026-10-08 15:00:11 +09:00
eomsangdon a7283d9f83 Merge remote-tracking branches 'origin/sub_desktop_1', 'origin/sub_laptop_2', 'origin/sub_laptop_6' and 'origin/sub_laptop_7' into main_laptop_1 2026-10-08 14:11:39 +09:00
eomsangdonandClaude Opus 5.5 b43cda3ed8 feat(B08): 구조물 집계표 배관 열 = 서버 칸 — 머리 구조물 · 형식 · 규격 3단 + 단위 · 계 줄 · 관 공 맨 윗 머리 조합 경로(98-4)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYJJRCfHfdCGNhmXTjQKV7
2026-10-08 14:11:04 +09:00
eomsangdonandClaude Sonnet 5.5 22266508d4 fix(B01): 항목별 탭 화면 다듬음 — 회사 정보 칸 줄맞춤 · 리소스 기간 글 · 프로젝트 표 단계 막대 두 줄 · 찾기 줄 정렬 (92-1·92-2)
- 정보 칸 라벨 · 값 한 쌍씩 묶음 · 리소스 그래프 글이 고른 기간을 따름 · 프로젝트 표 가로 여백 줄임
- 화면 검증(ORCA) 권한 셋 · 밝음 · 어두움 · 390px 끝 — PLAN 92장 검증완료

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-08 14:10:03 +09:00
eomsangdon e65a6e2f41 Merge remote-tracking branches 'origin/sub_laptop_2', 'origin/sub_laptop_5' and 'origin/sub_laptop_7' into sub_laptop_6 2026-10-08 14:01:26 +09:00
eomsangdon 42de168f05 Merge remote-tracking branches 'origin/sub_laptop_2', 'origin/sub_laptop_5' and 'origin/sub_laptop_7' into main_laptop_1 2026-10-08 14:01:22 +09:00
eomsangdonandClaude Sonnet 5.5 2a2c4d0f62 feat(B01): 대시보드 항목별 탭 — 해시 탭 줄 · 개요 · 프로젝트 · 회사 · 내 계정 · 시스템 (92-1·92-2)
- 해시 ?tab= 탭 줄(B08 단추 꼴) · 고른 탭 자료만 받음 · 설정 카드는 탭 줄 위 · 회사 고르기 알약은 탭 줄 오른쪽 하나
- 회사 없음 진입 두 곳(router · M02 Layer)은 ?tab=company · 회사 관리자 프로젝트 목록 한 번만 받음
- 개요 숫자 카드(단계별 · 실패 · 재확인 · 가입 대기 · 보관함 · 리소스) · 프로젝트 표 칸 보강 · 찾기 · 거르기 · 쪽 넘김 · 진행 현황
- 회사 정보 칸(사업자번호 · 대표 · 상태) · 팀원 읽기 · 자산 표 · 내 계정 마지막 로그인 · 시스템 리소스 7·30·90일 · 활성 추이 · 전체 회사 · 사용자 · 로그 쪽 · 고객 문의
- 시험 test_b01_dashboard_tabs 신규 · test_b01_settings_cards 고침

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-08 13:58:34 +09:00
eomsangdon 7da5262b2a Merge remote-tracking branch 'origin/sub_laptop_3' into main_laptop_1 2026-10-08 13:55:29 +09:00
eomsangdonandClaude Sonnet 5.5 c3af85113c feat(B08): 탭 구조물 · 토공 · 수리 + 구조물 보조 넷 · 구조물도 탭 지움 · 보조 탭 위 간격 8px(95-1 · 95-2)
구조물도 모달(집계표 행 누름 · 그 측점 조합 전부 · 복사본 먼저) · 공용 표 onRowClick opt-in(95-3) ·
수리 상세 폭 제한 풂 · 카드 높이 화면 따라 · @container(95-4). 화면 검증 전.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W4uKaV4ZBhsJN4GHG7yRj4
2026-10-08 13:46:09 +09:00
eomsangdon dccdbdabe2 Merge remote-tracking branches 'origin/sub_laptop_2', 'origin/sub_laptop_7' and 'origin/sub_laptop_8' into sub_laptop_5 2026-10-08 13:38:09 +09:00
eomsangdon 85ff7f8bb8 Merge remote-tracking branches 'origin/sub_laptop_7' and 'origin/sub_laptop_8' into sub_laptop_2 2026-10-08 13:38:03 +09:00
eomsangdonandClaude Opus 5.5 9c510b57b1 fix(spreadsheet): 메뉴 동작 뒤 초점 격자로 · 펼친 하위 메뉴가 화면 밖이면 올림(81-3)
- keepGridFocus — 항목을 누른 뒤 초점이 문서로 빠지면 격자 입력칸으로(Ctrl+Z 등 키가 바로 먹음)
- ui_template_context_menu — 하위(▸)를 펼칠 때도 화면 안으로 당김(fit 한 곳)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UoSr2sqvYtBf1dtQdus88s
2026-10-08 13:36:18 +09:00
eomsangdon a97da5bd3b Merge remote-tracking branch 'origin/dev' into sub_laptop_2 2026-10-08 12:34:40 +09:00
eomsangdonandClaude Sonnet 5.5 e03600e4d9 fix(M02): 구조물 조합 「일위대가 합계」 줄 머리 칸 폭 — 글이 안 잘리게(86-3)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-08 12:32:48 +09:00
eomsangdonandClaude Opus 5.5 2ebc888f03 feat(spreadsheet): 우클릭 메뉴 항목 모음 · 공용 메뉴 구분선 · 데이터 창 손잡이(81-3)
- spreadsheet_menu_items.ts 새 파일 — 붙여넣기(보안 문맥만) · 선택하여 붙여넣기 ▸ · 행 · 열 · 셀 삽입/삭제 ▸ · 크기 · 데이터에 맞추기 · 시트 정렬 · 필터 · 고정 ▸ · 그룹 ▸ · 셀 작업 더보기 ▸ · 읽기 전용 복사
- ui_template_context_menu 항목에 구분선 "-" 덧붙임(맨 앞 · 맨 뒤 · 겹침 안 그림)
- ctx.dataMenu — [데이터 ▾] 와 같은 패널 창 · 필터를 우클릭에서 부름

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UoSr2sqvYtBf1dtQdus88s
2026-10-08 12:31:40 +09:00
eomsangdon 9eca7389b5 Merge remote-tracking branch 'origin/sub_laptop_6' into main_laptop_1 2026-10-08 12:16:14 +09:00
eomsangdon 3e3e46672b Merge remote-tracking branch 'origin/sub_laptop_4' into main_laptop_1 2026-10-08 12:16:12 +09:00
eomsangdon 1c58b9dd64 Merge remote-tracking branch 'origin/sub_laptop_3' into main_laptop_1 2026-10-08 12:16:11 +09:00
eomsangdon 4f5bbd3944 Merge remote-tracking branch 'origin/sub_laptop_2' into main_laptop_1 2026-10-08 12:16:10 +09:00
eomsangdon aeb666f40c Merge remote-tracking branch 'origin/main_desktop_1' into main_laptop_1 2026-10-08 12:16:08 +09:00
eomsangdonandClaude Opus 5.5 4e18bca4e4 feat(B07): 목록에서 연 도면 = 탭 — 열기 · 닫기 · 전환 · 이전/다음 · 탭 전환 때 미저장 편집 지킴(82-4)
- 공용 탭 줄: 마지막 한 탭 닫기 없음 · 지금 탭 미저장 점 · 탭 하나만 저장 표시 지움

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPJGtfXo6GMbcpiboQC4uK
2026-10-08 12:12:58 +09:00
eomsangdonandClaude Opus 5.5 b08796ab4e feat(M02): 일위대가 · 면적산출 상세 오른쪽 패널 따로 스크롤 — follow:false · 고정 높이 · 원문 강조는 패널 몸만(85-5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W4uKaV4ZBhsJN4GHG7yRj4
2026-10-08 12:12:45 +09:00
eomsangdonandClaude Opus 5.5 de93c7b248 fix(B06): 원지반 제약 끊음 — 다단 자동 자리 사면 1.0 m · 설계선 끝 수치 판정 · 전면 기울기 칸 아니면 성토 · 「지형에 막힘」 잔재 지움(91-3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013rJwJMVL4EE31y77TB11AP
2026-10-08 12:12:16 +09:00
eomsangdonandClaude Sonnet 5.5 142194a1e5 feat(M02): 구조물 조합 상단 표 「일위대가 합계」 읽기 전용 줄 — 반영합 · 없으면 기준합(기준) · 카드 저장 뒤 다시 읽기(86-3)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-08 12:11:47 +09:00
eomsangdonandClaude Opus 5.5 caf38ccb3e feat(M02): CAD 공용 탭 줄 · 구조물 도면 상세 여러 장 탭 · 카드 「장 n」(82-1 · 82-2)
- ui_template/cad_host/cad_host_tabs — 고르기 · [+] · 이름 · 지우기 · 끌어 순서 · 닫기(켬/끔) · 바꿀 때 지금 장 받아 두고 싣기
- mountStructureSheets — 1장 고정 + 더한장 · 백업 칸 장마다 · 장 도번 도각 · 안 실린 장 표 갈기
- 상세 열기 · 저장 = 도면 · 더한장 칸 · 카드 1장 + 장 수 · 도각 도번

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPJGtfXo6GMbcpiboQC4uK
2026-10-08 12:10:49 +09:00
eomsangdon 3f64d7c72c feat(ui_template): B·M 화면 전역 글 선택 막음(81-1) 2026-10-08 12:09:54 +09:00
eomsangdonandClaude Sonnet 5.5 cd8a226323 feat(M02): 옮기기 같은 이름 = 「이름(1)」 — 항목 · 폴더 · 여러 개 · 붙여넣기 · 복사 생성 한 벌(86-2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-08 12:06:22 +09:00
eomsangdonandClaude Sonnet 5.5 245eaa77af feat(M02): 저장 안 한 고침 물음 단추 셋 — 취소 · 버리고 넘어감 · 저장 후 넘어감, settle 카드 저장 실패 흠(86-1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-08 12:01:53 +09:00
eomsangdonandClaude Opus 5.5 77e8aa2709 fix(B06): 박스 흙막이 기본 높이 = 박스 높이 값 · 저장 x 벽 종전 자리 그대로 · 흙막이 조정창 제목 · 박스 날개벽 툴팁(79b)
- 박스 흙막이 높이 빈 칸 = 박스 높이 값(2 m 박스 → 2 m) · 윗면 = 본체 윗면 · 바닥 = 윗면 − 높이 · 세월교는 그대로
- x 원점(사면 경사길이 4 m 지점) 되돌림 — 손대지 않은 벽(x · d 빈 칸)만 성토사면 제일 위 · 손으로 x 를 넣은 독립 기슭막이 · 옹벽 · 관 보호공은 종전 자리
- 세월교 · 박스 흙막이 조정창 제목 「흙막이(유입 · 유출)」 · 박스 에이프런 툴팁 유입 · 유출 날개벽 이름 바로잡음
- 시험: test_79_guard_shape — 박스 높이 값 · 저장 x 있는 관 보호공 · 독립 기슭막이 = 종전 자리

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYJJRCfHfdCGNhmXTjQKV7
2026-10-08 00:26:10 +09:00
eomsangdonandClaude Opus 5.5 8625e9eb66 fix(B05·B06): 노선 [확인] 뒤 옛 노선 id 저장 막음 — 서버 409 · 저장 앞 노선 대조 · 노선 바뀌면 페이지 새로 세움(76-1)
- 서버: sections save · confirm 이 최신 아닌 노선 id 를 409 로 거절(옛 노선 재계산 없음)
- 화면: [저장] · [확정] 앞에서 서버 노선과 대조 · 다르면 아무것도 안 보내고 페이지 새로 세움
- 화면: 종단 보기 신선도 확인에서 노선이 바뀌면 선만 다시 그리지 않고 페이지 새로 세움
- 시험: test_76_stale_route_save · 기존 저장 시험에 최신 노선 조회 가짜값

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYJJRCfHfdCGNhmXTjQKV7
2026-10-07 20:35:47 +09:00
eomsangdonandClaude Opus 5.5 26ad7f06ed fix(B05): [초기화] 확인 글 — 마지막으로 확정한 노선의 초기값으로 되돌림(74-4)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019EMfGERKUg5nMMNQsyVZ2j
2026-10-07 19:02:08 +09:00
eomsangdonandClaude Opus 5.5 f15104c607 fix(B03·공용): 지워진 프로젝트를 기억하면 빈 화면 대신 안내 · 서버 404(73-16)
- 라우터가 B03~B09 · 준비 화면 진입 전 현재 프로젝트를 한 번 확인 — 404 · 403 이면 기억을 비우고 「프로젝트가 없어졌습니다」 안내 + [대시보드로]
- workflow-state 는 지워진 프로젝트에 404(전: 200 빈 단계)
- 저장 경로 조회 실패는 ProjectNotFoundError(LookupError 하위) — 잡지 않은 자리도 앱 처리기가 404(전: 노선 API 등 500)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PSXsvyDxjNmufteN5bqmt
2026-10-07 09:45:00 +09:00
eomsangdonandClaude Sonnet 5.5 527ce32fb3 fix(B08·M02): 구조물 도면 처음 맞춤을 도각 기준으로 · 보조 회색 글자 대비 4.5 이상(73-7)
- CAD 화면맞춤 — 얹은 도각(m02-structure-frame)이 있으면 도각 전체에 맞춤(옛 DXF 도곽에 안 끌림) · 시험 추가
- B08 설명 줄 · 홍수량 보조 글 · 판정 글자와 진행 단계 머리의 프로젝트 이름 글자를 보조 글자 토큰으로

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-07 08:19:03 +09:00
eomsangdonandClaude Sonnet 5.5 77f29ef6a2 fix(B08): 없는 값 표시 「—」 → 「-」(73-3)
- 공용 표 빈 값 기본 · 토공집계표 안내 · 수리집수면적표 계산 칸 「-」
- 구조물 집계표 칸은 빈칸 그대로(empty:"")

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-07 07:53:24 +09:00
eomsangdon 68d5967af8 Merge remote-tracking branch 'origin/sub_laptop_8' into main_laptop_1 2026-10-06 23:20:21 +09:00
eomsangdon bf49b7f454 Merge remote-tracking branch 'origin/sub_laptop_2' into main_laptop_1 2026-10-06 23:18:30 +09:00
eomsangdon ec4267ecba Merge remote-tracking branch 'origin/main_laptop_1' into sub_laptop_8 2026-10-06 23:16:39 +09:00
eomsangdonandClaude Opus 5.5 53d839cb1d feat(B08): 구조물 집계표를 공용 많은 자료 표로(70-2)
- 집계표 = createDataTable — 머리 두 줄(조합 구분 · 이름) · 측점 열 고정 · 칸은 빈칸 · 빠진 조합 빨강 · 풍선 글 그대로
- 공용 표 하위 호환 옵션 — empty(빈 값 글) · 열 title · className · 빠진 항목 머리 색 · 틀 폭은 표만큼

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
2026-10-06 23:15:42 +09:00