Commit Graph
4823 Commits
Author SHA1 Message Date
eomsangdonandClaude Opus 5.5 e3a9cb65d0 feat(B07 CAD): Ctrl+V 로 오토캐드 DXF 붙여넣기 · 오른쪽 위 WEBCLIP 안내
Ctrl+V 기본 동작을 막지 않아 paste 이벤트로 시스템 클립보드 글을 읽음 — DXF 면 서버에서
도형으로 바꿔 원좌표 그대로 붙이고 고른 상태로 둠(같은 이름 층은 기존 층 · 없는 층은 DXF
층 색으로 새로 · id 는 모두 새로). DXF 가 아니면 앱 안 클립보드 붙여넣기(PASTECLIP).
볼 수만 있는 도면은 안 붙임. 캔버스 오른쪽 위 흐린 안내 「오토캐드에서 WEBCLIP → 여기서
Ctrl+V」 · 누르면 설치 한 줄(보기 전용이면 숨김 · B07 · M02 양식 둘 다).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K7JS47SacjPxZ718QsZKyr
2026-09-28 13:44:48 +09:00
eomsangdonandClaude Opus 5.5 be4f3d33ac feat(B07): 클립보드 DXF 글을 웹 CAD 도형으로 바꾸는 서버 길
오토캐드 WEBCLIP 이 클립보드에 넣은 DXF 글을 받는 POST /api/projects/dxf-clip 추가
(프로젝트 무관 · M02 양식도 씀 · 저장 안 함). 변환은 기존 도각 불러오기 엔진을 그대로 쓰고
dxf_text_to_entities 만 더함 — 엔티티 layerId 는 DXF 도면층 이름 그대로 · 쓰인 층 이름과
층 색을 함께 돌려줌. 시험 = 견본 DXF(선 · 폴리선 · 원 · 글 · 도면층 둘) 3건.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K7JS47SacjPxZ718QsZKyr
2026-09-28 13:44:47 +09:00
eomsangdon 91cc795102 Merge remote-tracking branches 'origin/main_laptop_1' and 'origin/sub_laptop_5' into sub_laptop_2 2026-09-28 13:29:02 +09:00
eomsangdon 7eacf332ee auto: 2026-09-28 13:28 (ESD_LAPTOP) 2026-09-28 13:28:17 +09:00
eomsangdonandClaude Sonnet 5 c4edc751be fix(spreadsheet): 회계 0 구역 '?' 자리 빈칸 처리 · 통화 로캘 태그 대조 확인
브레인이 짐작한 [$-412](로캘만 · 기호 없음) 이 통화 기호로 잘못 바뀌는지
여러 실제 꼴(단순 태그·회계 네 구역·접두/접미 위치)로 대조해 봤으나 지금
코드는 이미 옳게 기호를 안 보임(회귀 시험으로 고정). 그 김에 회계 0 구역의
`"-"??` 관용구가 진짜 0 값에서 정수부 `?` 를 「0」 으로 채우던 것을 고쳐
엑셀처럼 빈칸으로 보이게 함. 사용자가 보고한 ₩ 는 이 두 경로로는 재현이
안 돼 — main_desktop_1 의 fixture_excel_user_won.html 이 아직 안 와서
실제 원문으로는 대조 못 함(오면 바로 대조).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RrQ65VtGZbae2VKgYVMhmc
2026-09-28 13:15:24 +09:00
eomsangdon a268859540 Merge remote-tracking branch 'origin/dev' into main_desktop_1 2026-09-28 13:10:12 +09:00
eomsangdonandClaude Opus 5.5 bb0bd97c84 chore: 엑셀 잠금 파일 무시 규칙 더함
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017cTe8U3dnigRfEmiscHHpp
2026-09-28 13:10:05 +09:00
eomsangdonandClaude Opus 5.5 d1f627ea31 chore: 엑셀 잠금 파일 저장소에서 뺌
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017cTe8U3dnigRfEmiscHHpp
2026-09-28 13:09:46 +09:00
eomsangdonandClaude Opus 5.5 b813de897f fix(M02): 식 없는 계산 열(pv_a · pv_jt · pp_cp)은 빈 값 — 줄눈 간격 줄 식도 열 식이 있을 때만
- 값은 면적산출 알약 연결로 받음(PLAN 13장) · 표 채우기 시험을 새 규칙으로

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EUypcnp5d1gU2aeKh9F2H7
2026-09-28 12:47:09 +09:00
eomsangdonandClaude Opus 5.5 023c5838c4 refactor(M02): Api_Fetch 옛 이름 별칭 지움 — copyBasis · 표번 · Kind basis
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EUypcnp5d1gU2aeKh9F2H7
2026-09-28 12:47:09 +09:00
eomsangdon 0ca69fbc47 Merge remote-tracking branches 'origin/sub_laptop_2' and 'origin/sub_laptop_8' into sub_laptop_4 2026-09-28 12:45:10 +09:00
eomsangdonandClaude Opus 5.5 b60c10e73e feat(M02): 집계표 카드 = 도면 정보 · 면적산출 · 재료산출 · 편집 화면 알약 막대
- 집계표 아래 카드 셋(보기 + [수정] → 전체 편집) · 번호 = 도번 · 면적번 · 재료번
- 면적산출 · 재료산출 줄 조회 후 선택 = 다른 열 것 복사해 가져오기(copyArea · copyMaterial · 덮어쓰기 확인)
- 면적산출 · 재료산출은 표(스프레드시트) 편집 화면으로 엶(좌측 줄 · 카드 [수정] 둘 다 · 옛 CAD 로 뜨던 것 고침)
- 알약 막대 — 면적 = 그 열 일위대가 입력값(fetchComboInputs · 없으면 안내 글) · 재료 = 자재DB 찾기(searchMaterials)
- 옛 산출근거 이름(표번 · copyBasis) 안 씀

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Kyw9qnkJ94pC1A4PfpDtA
2026-09-28 12:16:25 +09:00
eomsangdon 9ae91ea5da Merge remote-tracking branch 'origin/sub_laptop_3' into sub_laptop_2 2026-09-28 12:13:16 +09:00
eomsangdonandClaude Opus 5.5 ba91e9e63d feat(M01): fetchComboInputs · searchMaterials 알약 자료 함수
- fetchComboInputs(조합 코드) → {키, 이름, 물량: [{키, 이름, 단위, 로직, 배?}], 조건}
- searchMaterials(글) = /pick?kind=price 감쌈 → [{코드, 이름, 규격, 단위}]

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TULoa94ZFL26KU6ZqVpjkF
2026-09-28 12:11:49 +09:00
eomsangdonandClaude Opus 5.5 32d73aa2c9 feat(M01): 조합 알약 물량 길 GET /combo/{키}/inputs
- 담은 로직 결과단위 분모(원/㎥ → ㎥)가 물량 하나 · 설계 조건은 안 넣음(조건 자리만)
- 이름 = 로직 이름 끝 괄호 뗀 것 · 같은 이름·단위는 합침 · 원/10㎡ 은 배 10
- 시험 test_m01_combo_inputs.py(UA000004 · 031 · 002 · 없는 조합 404)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TULoa94ZFL26KU6ZqVpjkF
2026-09-28 12:11:49 +09:00
eomsangdon 14092e715b Merge remote-tracking branch 'origin/sub_laptop_7' into sub_laptop_2 2026-09-28 12:11:09 +09:00
eomsangdon 017d559401 Merge remote-tracking branch 'origin/sub_laptop_4' into sub_laptop_2 2026-09-28 12:09:33 +09:00
eomsangdonandClaude Opus 5.5 5de2f75828 test(spreadsheet): D 알약 연결 — 행열 따라가기 · 되돌리기 규칙 시험 · 시험 틀(harness_links)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L6KXAabDTenEU7hrDQmCKY
2026-09-28 12:09:33 +09:00
eomsangdonandClaude Opus 5.5 854531cfd8 feat(spreadsheet): D 알약 막대 — createSpreadsheet({links}) · 칸 연결 · 풀기 · 자재 고르기
- 칸을 고른 채 알약을 누르면 연결(흐림 + 주소 · 칸 왼아래 세모) · 흐린 알약은 연결 칸으로 · 우클릭 연결 풀기
- 자재 모드 [자재 더하기] → 자재찾기 창 → 새 알약
- 행열 넣기 · 지우기에 연결 칸 따라감(지운 칸이면 빠짐) · 되돌리기 짝 · getLinkedValues()
- 늦게 불러옴(links 선택 또는 연결 있는 문서만) · 화면 28,518 B(예산 28,672)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L6KXAabDTenEU7hrDQmCKY
2026-09-28 12:09:33 +09:00
eomsangdonandClaude Opus 5.5 d3c93b4520 feat(spreadsheet): 계약 더함 — Sheet.연결 · CellLink · LinkMaterial(알약 연결)
- 시트마다 알약 ↔ 칸 연결 목록 · 자재DB 한 줄 모양
- 시트에 둠 — 바꿈 · 행열 지우기 되돌림이 A 의 시트통째 한 길로 돎(칸 주소에 시트 id 불필요)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L6KXAabDTenEU7hrDQmCKY
2026-09-28 12:09:33 +09:00
eomsangdonandClaude Opus 5.5 79a0994ffb chore(M02): 구조물 양식 파일 8자리 번호 · 산출근거 → 면적산출 옮김 · 재료산출 47벌 새로
- structure 47 도번 SD+8자리 · basis 47 → area(면적번 SA) · material 47 빈 시트(재료번 SM)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EUypcnp5d1gU2aeKh9F2H7
2026-09-28 12:08:57 +09:00
eomsangdonandClaude Opus 5.5 0e5a19eab8 feat(M02): 좌측 구조물 도면 · 면적산출 · 재료산출 줄 · Api_Fetch 새 이름
- copyArea · copyMaterial · fetchStructureNumbers → {도번, 면적번, 재료번} · Kind area · material
- 옛 이름 copyBasis · 표번 · Kind basis 는 sub2 가 옮길 때까지 별칭(@deprecated)
- 좌측 목록 셋 · 줄 글 = 번호 맨 앞 + 이름 + 변수값

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EUypcnp5d1gU2aeKh9F2H7
2026-09-28 12:08:56 +09:00
eomsangdonandClaude Opus 5.5 89fc686962 feat(M02): 구조물 번호 8자리(분류3) · 면적산출 SA · 재료산출 SM 서버
- 번호 [종류][분류1][분류2][분류3] · 없는 층 00 · 12장 6자리는 끝에 00 을 붙여 읽음
- 양식 종류 basis → area(면적산출) · material(재료산출) 새로 · 집계표 저장 때 세 파일 자동 만들기/지우기
- 복사 길 POST /structures · /area · /material/{받는 열}/copy?from= · 알약 연결은 문서와 같이 복사
- 번호 목록 {열 id: {도번, 면적번, 재료번}} · 저장 때 번호 칸은 서버 것 그대로
- renumber: basis/ → area/ 옮김(표번 → 면적번 · 시트 이름 면적산출) · 빠진 재료산출 만듦

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EUypcnp5d1gU2aeKh9F2H7
2026-09-28 12:08:56 +09:00
eomsangdonandClaude Sonnet 5 74b6937bc0 feat(spreadsheet): 도구 모음 단위 기호 골라 넣기
- [단위 ▾] 단추 → 자주 쓰는 기호 판(넓이·부피·길이 · 무게·부피(액체) · 개수 ·
  속도·각도·비율 · 연산·비교로 무리 지음) · 최근 쓴 것 앞(localStorage, 최대 8개)
- 누르면 편집 중이면 커서 자리에 끼워 넣고(D 편집기 textarea 캐럿 위치) · 아니면
  고른 칸 글 끝에 붙임(ctx.dispatch 라 되돌리기 짝 그대로)
- 체크박스로 「숫자 형식으로 붙이기」 고르면 값은 그대로 두고 형식만
  0"㎡" 처럼 단위를 붙임(기존 형식 끝 따옴표 단위는 새 것으로 교체)
- e_harness.ts 에 편집 중 커서 갈래를 시험할 숨은 textarea + __setEditing 시험
  전용 걸이 더함
- ORCA 실 엔진 확인 — 칸 글 끝 붙이기(터파기 계산서 → …㎡) · 형식 붙이기(12.5 값
  그대로 · 형식 0"㎡") · 편집 중 커서 자리 끼우기(f|oo → fkgoo, 캐럿 이동) · 최근
  목록 순서·중복 제거(개 본 개 식 → 식·개·본) 모두 확인

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AeeQRLknEpP4SFjVkjDWDs
2026-09-28 12:08:26 +09:00
eomsangdonandClaude Opus 5.5 326d5ec61a feat(M02): 구조물집계표 제목행 4층(종류 · 분류1 · 분류2 · 분류3) · 계산 열 식 지움
- 층 = 종류 · 분류1 · 분류2 · 분류3 · 지금 열은 분류3 빈칸(분류2 가 합쳐진 열은 그대로 합침)
- pv_a · pv_jt · pp_cp 식 지움(pp_cp 펼침 식틀 포함 · 사용자 확정 PLAN 13장)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Kyw9qnkJ94pC1A4PfpDtA
2026-09-28 12:07:11 +09:00
eomsangdonandClaude Opus 5.5 5bdedb5da9 feat(sheet): 층마다 열 더하기(분류1 · 분류2 · 분류3) · 마스터 줄 = 일위대가 · 도면 · 면적산출 · 재료산출
- 분류2 더하기 안 됨 고침 — 옛 「열 더하기」는 고른 열 맨 아래 글을 「새 열」로 바꿔 넣어, 같은 글이면 머리가 가로로 합쳐져 새 열이 안 보였음 · 같은 무리에 같은 글이면 뒤에 수를 붙임
- 단추 = 층 이름 + 더하기(「분류1 더하기」 · 「분류2 더하기」 · 「분류3 더하기」) · 고른 열과 그 층 위 머리가 같은 이웃 끝에 둠 · 아래 층은 빈칸
- 마스터 줄에서 식 · 들어갈 것 줄 지움 · 산출근거 줄 → 면적산출 · 재료산출 줄(areaLabel · materialLabel · 조회 후 선택 · 글 열은 빈칸 잠김)
- 쓰지 않게 된 열 딱지 글 · 줄임 겉모양 지움

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Kyw9qnkJ94pC1A4PfpDtA
2026-09-28 12:07:11 +09:00
eomsangdon e010f72505 Merge remote-tracking branch 'origin/sub_laptop_2' into main_laptop_1 2026-09-28 10:56:08 +09:00
eomsangdonandClaude Opus 5.5 dbda85e8ee Merge origin/main_laptop_1 — 구조물집계표 열 c1 살림 · 새 번호 SD010102 · SC010102
제목행은 종류 · 분류1 · 분류2 그대로 · 사용자가 더한 열 c1(돌기슭막이 · (형태마다) · 새 열)을 rv 뒤에 둠 · c1 구조물 도면 · 산출근거 번호를 새 체계로(옛 구-50 · 표-50 없앰) · 빈 산출근거는 빈 시트

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Kyw9qnkJ94pC1A4PfpDtA
2026-09-28 10:55:32 +09:00
eomsangdon a0845bb978 Merge remote-tracking branch 'origin/sub_laptop_8' into main_laptop_1 2026-09-28 10:51:57 +09:00
eomsangdon b9820cff1a Merge remote-tracking branch 'origin/sub_laptop_7' into main_laptop_1 2026-09-28 10:51:57 +09:00
eomsangdon 25f1276d7b Merge remote-tracking branch 'origin/sub_laptop_5' into main_laptop_1 2026-09-28 10:51:55 +09:00
eomsangdon 403e3acfda Merge remote-tracking branch 'origin/sub_laptop_4' into main_laptop_1 2026-09-28 10:51:54 +09:00
eomsangdon 59b83efe0c Merge remote-tracking branch 'origin/sub_laptop_1' into main_laptop_1 2026-09-28 10:51:52 +09:00
eomsangdon 24b63ca1ea auto: 2026-09-28 10:51 (ESD_LAPTOP) 2026-09-28 10:51:27 +09:00
eomsangdon cb5858bb64 Merge remote-tracking branch 'origin/sub_laptop_1' into sub_laptop_2
# Conflicts:
#	M02_MasterTemplete/M02_MasterTemplete_UI_Main.ts
2026-09-28 10:05:10 +09:00
eomsangdonandClaude Sonnet 5 22835ca9e2 fix(M02): 집계표 열 고른 뒤 CAD 불러오기 죽는 자리 고침
M02_MasterTemplete_UI_Main.ts 의 표 onSelect 가 `sheet?.getDoc().열 ?? []` 로
짜여 있었음 — 옵셔널 체이닝이 `sheet?.getDoc()` 까지만 걸리고 그 뒤 `.열` 은
그대로라, [다시 열기](재열기)가 drop() 으로 sheet 를 null 로 되돌린 그 짧은 사이에
옛 표 부품에 남은 클릭 이벤트가 이 줄을 부르면 `undefined.열` 을 읽어 죽음
(사용자 보고: 여러 열 · 빠르게 바꿔 고르기 · 새로 고친 직후에 CAD 불러오기 오류).
`.열` 앞에도 `?.` 를 이어 붙여 sheet 가 없으면 조용히 빈 배열로 감 — 그 뒤
StructurePanel.show() 는 이미 빈 배열 · 없는 colId 를 안전하게 처리함.

ORCA 로 정상 경로(열 고르면 도면 정보 패널이 오류 없이 뜸)는 확인함 — 이
브라우저 환경이 오늘 자주 끊겨(Tab was closed while command was running,
crashpad 등록 실패가 매 명령마다 뜸) 경합(레이스) 그 자체의 재현까지는
못 잡음. 원인은 코드를 끝까지 읽어 확인함(정황 증거 아님).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K7JS47SacjPxZ718QsZKyr
2026-09-28 10:02:41 +09:00
eomsangdonandClaude Opus 5.5 c25db2636e fix(M02): 일위대가 고르기 목록 — 이름에 붙은 단위를 겹쳐 쓰지 않음
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Kyw9qnkJ94pC1A4PfpDtA
2026-09-28 10:01:10 +09:00
eomsangdonandClaude Opus 5.5 9b9787f60a fix(sheet): 글 열(꼴=글)의 일위대가 · 도면 · 산출근거 칸은 빈칸 · 잠김
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Kyw9qnkJ94pC1A4PfpDtA
2026-09-28 10:01:09 +09:00
eomsangdonandClaude Opus 5.5 86ae6db5a0 feat(M02): 산출근거 카드 · 전체 편집 — 시트 탭 없이(tabs: false)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L6KXAabDTenEU7hrDQmCKY
2026-09-28 09:59:09 +09:00
eomsangdonandClaude Opus 5.5 b79793ea31 feat(spreadsheet): D 시트 탭 없앰 선택 — createSpreadsheet({tabs: false})
- 탭 줄을 안 그림 · Ctrl+PageDown/PageUp · Shift+F11 을 받지 않음(브라우저 몫) · [데이터 ▾] 의 시트 숨기기 · 탭 색 빠짐
- 산출근거(시트 하나)용 · 크기 화면 28,199 B(예산 28,672)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L6KXAabDTenEU7hrDQmCKY
2026-09-28 09:59:08 +09:00
eomsangdon 31bcad6454 Merge remote-tracking branch 'origin/sub_laptop_4' into sub_laptop_2
# Conflicts:
#	M02_MasterTemplete/M02_MasterTemplete_Structure.ts
2026-09-28 09:58:38 +09:00
eomsangdon 4b6602484d Merge remote-tracking branch 'origin/sub_laptop_6' into sub_laptop_2 2026-09-28 09:57:46 +09:00
eomsangdon 3990ca1c28 Merge remote-tracking branch 'origin/sub_laptop_5' into sub_laptop_2 2026-09-28 09:57:46 +09:00
eomsangdon ba47d33877 Merge remote-tracking branch 'origin/dev' into sub_laptop_2 2026-09-28 09:57:36 +09:00
eomsangdonandClaude Opus 5.5 04f2476741 feat(M02): 집계표 조회 후 선택 — 일위대가 목록 · 다른 열 도면 · 산출근거 복사해 가져오기 · 산출근거 줄 표번
- 일위대가 칸 = M01 일위대가 목록(fetchCombos)에서 찾아 고름 · 「비움」
- 도면 · 산출근거 칸 = 다른 열(번호 + 이름) 골라 덮어쓰기 확인 뒤 copyStructure · copyBasis(sub4) — 번호 · 열은 그대로
- 집계표 산출근거 줄 칸 글 = 표번

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Kyw9qnkJ94pC1A4PfpDtA
2026-09-28 09:57:34 +09:00
eomsangdonandClaude Opus 5.5 2623633b86 feat(m02): 옛 구조물 도면 · 산출근거 46 벌 새 번호로 옮김 · 빈 산출근거 머리 줄 지움
- renumber() 한 번 — 구-NN · 표-NN 버리고 SD · SC 6자리(돌기슭막이 SD010101 … 폐기물처리 SD360000) · 내용 그대로
- 산출근거 46 개 1 행 기본 머리(공종 · 규격 · 산출 내역 · 단위 · 수량(m당)) 지워 진짜 빈 시트
- 글 열 no · sta · memo 의 구조물 도면 · 산출근거 여섯 파일 지움
- 두 번째 renumber() 바뀜 0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EUypcnp5d1gU2aeKh9F2H7
2026-09-28 09:55:53 +09:00
eomsangdonandClaude Opus 5.5 fc249c00f6 feat(m02): 좌측 · 카드 · 편집 머리 번호 맨 앞 「SD010101 돌기슭막이 …」 · copyStructure · copyBasis
- Api_Fetch — copyStructure(열, from) · copyBasis(열, from): Promise<void> · fetchStructureNumbers(): Record<열 id, {도번, 표번}>(브레인 확정 이름 · 모양) · fetchBasisNumbers 뺌
- 좌측 구조물 도면 · 산출근거 줄 = 번호 + 구조물 이름 + 변수값(제목행) · 구조물 열(꼴=수)만
- 설계 컨테이너 카드 머리 = 번호 · 이름 차례 · 글 열 고르면 컨테이너 닫음
- 편집 화면 머리 = 「SD010101 …」 · 「SC010101 …」
- 시험: test_m02_structure_panel(이름 · 모양 · 줄 글)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EUypcnp5d1gU2aeKh9F2H7
2026-09-28 09:55:44 +09:00
eomsangdonandClaude Opus 5.5 3a4b306636 feat(m02): 구조물 번호 SD·SC 6자리 · 집계표 저장 때 파일 만들기/지우기 · 복사 가져오기 길
- 도번 SD · 표번 SC + [종류][분류1][분류2] — 제목행(열 머리 세 층) 차례 · 없는 층 00 · 한 열 두 번호 같은 6자리 · 준 번호 유지(새 열 = 그 무리 다음 번호 · 지운 번호 비움)
- 구조물 = 꼴=수 열만(NO · 측점 · 비고 빠짐 · 브레인 판정)
- 집계표 [저장] — 새 열 두 파일 만들고 지운 열 두 파일 지움
- 새 산출근거 = 진짜 빈 시트(머리 줄 없음) · renumber() = 옛 번호 한 번 옮김 + 옛 기본 머리 줄 지움
- POST /structures/{열}/copy?from= · /basis/{열}/copy?from= — 내용만 · 번호 · 열은 받는 쪽
- GET /structures/numbers = {열 id: {도번, 표번}} · /basis/numbers 뺌
- 시험: test_m02_structure · test_spreadsheet_store 고쳐 씀

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EUypcnp5d1gU2aeKh9F2H7
2026-09-28 09:55:35 +09:00
eomsangdonandClaude Sonnet 5 ee64781a7c fix(spreadsheet): D · sub4 대신 색 줄만 — 두 css 도 테마 토큰으로
브레인 승인(sub7 · sub4 는 같은 파일의 다른 부분 작업 중이라 색 줄만 최소로 고침 · 주인은
그대로 D(spreadsheet.css) · sub_laptop_4(spreadsheet_stage3.css)).

spreadsheet.css — 부품 틀 · 주소 상자 · 수식 입력줄 · 칸 편집기 · 채우기 미리보기 · 알림 ·
찾기 패널 · 메모 · 골라 붙여넣기 · 자동완성 · 데이터 메뉴의 하드코딩 색(#fff · #1f2328 ·
#d0d7de · #217346 · #6e7781 · #57606a · #24292f · #dafbe1 · #bf8700 · #fff8c5 · #ddf4ff ·
#8c959f · #f6f8fa · 그림자 rgb(0 0 0/15%))을 전역 토큰(--color-surface-raised · -text-body ·
-border · -focus-ring · -text-muted · -text-secondary · -primary/-primary-text · -warning ·
-accent · -surface · --shadow-lg/-sm)으로 바꿈. 메모(주석) 배경 · 자동완성 강조 · 서식 붓
켜짐 배경은 이름 없는 톤(포스트잇 옅은 노랑 등)이라 color-mix 로 기존 토큰에서 옅게 섞어냄
(새 토큰 안 만듦).
spreadsheet_stage3.css — 조건부 서식 · 유효성 드롭다운 그림자 한 줄(rgba(0,0,0,0.12))만
남아 있던 것을 --shadow-sm 으로.

ORCA 수치(C 시험 틀에 두 css 임시로 얹어 밝은 · 어두운 전환) — 밝은: .ss 배경
rgb(255,255,255)·글 rgb(51,51,51) · 알림(toast) 배경 rgb(38,17,74)·글 흰색 · 메모 테두리
rgb(184,134,11). 어두운: .ss 배경 rgb(37,31,56)·글 rgb(228,224,240) · 알림 배경
rgb(185,154,255)·글 rgb(22,18,31)(반전) · 메모 테두리 rgb(224,182,74) — 대화상자 · 찾기 ·
자동완성 · 조건부 서식 패널 · 상태 표시줄까지 모두 두 테마에서 배경 · 글 대비 확인.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VVM3xZ1aUPcUTuW2WZSnwg
2026-09-28 09:53:53 +09:00
eomsangdonandClaude Sonnet 5 4bbef4ac54 fix(spreadsheet): 엑셀 칸 형식 이름(Fixed·Standard·Currency 등) 오독 고침
엑셀이 클립보드로 칸 형식을 코드 대신 이름으로 넘길 때(mso-number-format:Fixed
등) numfmt 가 그 이름을 코드로 잘못 읽어 `d·m·y` 낱자를 날짜 자리표시로 잡아
글자가 깨지던 것(Fixed→Fixe11 등, 2026-09-27 날짜 형식 추가의 부작용)을 고침.
엑셀 이름표(General·General Number·Fixed·Standard·Currency·Percent·
Scientific·Short Date·Long Date)를 실제 형식 코드로 바꿔치기하고, 모르는
이름은 일반으로 떨어뜨리되 aaa·yyyy 같은 진짜 날짜 자리표시는 그대로 살림
(날짜 자리표시 탐지도 앞뒤가 딴 낱말 글자가 아닐 때만 인정하게 다듬음).
지수(과학) 형식(0.00E+00)도 새로 구현. Currency 는 사용자 실제 화면 확인대로
통화 기호 없이 렌더 — ₩ 가 붙는 자리는 이 여섯 이름으로는 재현 안 됨(실제
붙여넣기 원문이 다시 나타나면 추가 확인 필요). 사용자 표 견본(43.91·14,182·
0.48·21.07·1.93·15,166·23.20)으로 시험 191건 전부 통과.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RrQ65VtGZbae2VKgYVMhmc
2026-09-28 09:53:16 +09:00