Commit Graph
3104 Commits
Author SHA1 Message Date
eomsangdonandClaude Opus 5.5 8b07250aa0 fix(m01-sl): 가져오기 이음매 — 항목 상자 = Item 틀(applyItemLayout) · 다른 로직 = LogicTools 틀 · 표 줄 수 따라감 · 자재 묶음 · 상자 이름
- 항목 상자: applyItemLayout 로 B1 수량 · B2~B4 단가 · B6 금액 · B7~B9 비목 · node.ref = ItemRef · 덧줄 「비목 × 율 / 100」 = 비율 틀 · refreshBases
- 결과 상자: Model 결과 틀(B2~B4 노무비 · 재료비 · 경비 입력 알약 · 선이 여럿이면 + · B5 계)
- 다른 로직 상자: LogicTools 와 같은 틀(ref = 로직 번호 · 넘길 값 칸 · 돈 로직은 노무비 · 재료비 · 경비 · 계 · 단계 1)
- 표 상자: 「표」 알약 E1 만 · 맞음 칸 = 표 줄 수 이상 · 최소 20 줄 + 「표 줄 수」 칸
- 자재 검색어 묶음: 바깥 값 key = 묶음 JSON 글 · 상자 이름 = 직종 · 로직 · 표 이름(names)
- 시험: 6개 /calc 같은 값(끝수 원 미만) · 1,469 중 1,370 다 바뀜

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BU9gbNE3aWFUvE61pS2WGt
2026-10-01 14:01:08 +09:00
eomsangdon b188ba3dd5 Merge remote-tracking branches 'origin/sub_laptop_4' and 'origin/sub_laptop_3' into main_laptop_1 2026-10-01 13:54:36 +09:00
eomsangdonandClaude Sonnet 5.5 2c848702ea fix(m01-sl): 표 상자에 표 번호 안 보이게 — 시트 이름 · 찾기 판 머리를 표 이름으로 · 표 줄 수 따라가기
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ACSGaHdLgnkEkoA4LDtMU
2026-10-01 13:53:46 +09:00
eomsangdonandClaude Opus 5.5 ab514e8d10 fix(m01-sl): 자재 바깥 값 — 검색어 묶음으로도 단가를 찾음(기존 엔진 재료 줄과 같은 길)
- {kind: "자재", key} 의 key 가 「{」 로 시작하는 JSON 글(또는 묶음)이면 {구분, 상세구분, 검색어, 규격?} 로 풀어 /calc 재료 줄처럼(검색어 · 자동값 차례 · 단위 환산) · 아니면 키
- unit(그 줄 단위)을 주면 기존 로직 재료 줄과 같은 단가 · 못 찾으면 쉬운 말(맞는 자재 없음 · 단가가 자료에 비어 있음)
- Api SlQuery 에 unit? · 시험 — 검색어 묶음 단가 = /calc 그 줄 단가(글 · 묶음) · 저장 때도 같은 값

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
2026-10-01 13:53:20 +09:00
eomsangdonandClaude Opus 5.5 5c1a5e14bc test(m01-sl): 표 블록 열이 서버 · Table_Build · Import_Parse 셋 다 같은지
- 견본 표(범위 조건 · 값 칸 범위 80~100 · 범위 칸에 수 하나)로 서버 /outside 표 답 = sub3 blockCells = sub6 tableRows

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
2026-10-01 13:39:24 +09:00
eomsangdon 7018453a88 Merge remote-tracking branch 'origin/main_laptop_1' into sub_laptop_4 2026-10-01 13:37:52 +09:00
eomsangdon 60a287419d Merge remote-tracking branches 'origin/sub_laptop_6' and 'origin/sub_laptop_7' into main_laptop_1 2026-10-01 13:37:12 +09:00
eomsangdonandClaude Opus 5.5 46c7f8e41c fix(m01-sl): 가져온 표 블록 칸 차례를 정함대로 — 값 칸 범위도 아래 · 위 두 칸 · 숫자 하나면 두 칸에 같은 수
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BU9gbNE3aWFUvE61pS2WGt
2026-10-01 13:29:16 +09:00
eomsangdonandClaude Sonnet 5.5 679a759e84 feat(m01-sl): 표 상자 열 차례를 서버 표 블록에 맞춤 — 값 칸 범위도 아래 · 위 두 칸 · 숫자 하나는 같은 수
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ACSGaHdLgnkEkoA4LDtMU
2026-10-01 13:28:59 +09:00
eomsangdonandClaude Opus 5.5 892e156efe fix(m01-sl): 표 블록 칸 차례를 정함대로 — 범위가 있는 칸은 조건 · 값 모두 두 칸
- 브레인 정함: 서버가 칸 차례 정본 · 조건 칸 → 값 칸 · 범위 조건 · 범위 값(「20~45」)은 「이름·아래」 「이름·위」
- 그 칸에 수 하나면 아래 · 위에 같은 수 · 빈 칸은 빈 칸 · 블록 왼위 = 「표」 바깥 알약 칸
- f8d777628(값 칸 한 칸 · 「80,100」 글)을 되돌림 · 시험 기대값 맞춤

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
2026-10-01 13:28:25 +09:00
eomsangdon 184c66e14e Merge remote-tracking branches 'origin/sub_laptop_4', 'origin/sub_laptop_7' and 'origin/sub_laptop_6' into main_laptop_1 2026-10-01 13:26:59 +09:00
eomsangdonandClaude Opus 5.5 520c7dc406 fix(m01-sl): 가져온 표 상자 「표」 바깥 값 출력 알약(E1) — Table 상자와 같은 꼴
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BU9gbNE3aWFUvE61pS2WGt
2026-10-01 13:17:36 +09:00
eomsangdonandClaude Opus 5.5 ebf51d8b35 feat(m01-sl): 표 상자 이음매 — 블록은 표 알약 칸부터 · 줄면 옛 줄 지움 · 머리 줄 바뀜 알림
- 표 블록 왼위 = 그 표 상자의 「표」 바깥 값 알약 칸(A1 · E1 무엇이든) · applyOutside 가 그 칸부터 머리 줄 포함 채움
- 표가 줄었으면 블록 열 아래 남은 옛 값 칸을 지움(찾기 판 수식은 블록 열 밖이라 그대로)
- answersToValues(cells, 답, sl) — 시트 머리 줄과 받은 머리 줄이 다르면 쉬운 말
- addNode(table) = 빈 시트(Table 이 블록 · 찾기 판 · 알약을 채움 — 틀 칸이 블록과 겹치지 않게)
- 시험 15개(Table_Build 와 잇는 시험 더함)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBToTCGk5dqDKeXCEP3vhk
2026-10-01 13:17:13 +09:00
eomsangdonandClaude Opus 5.5 34165ec66a test(m01-sl): 품셈 표 블록 왼위 = 「표」 바깥 알약 칸(E1) 시험
- 서버 저장 다시 넣기는 이미 알약 칸에서 펼침 — 고정 A1 아님을 시험으로 남김

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
2026-10-01 13:17:10 +09:00
eomsangdonandClaude Opus 5.5 f8d7776284 fix(m01-sl): 품셈 표 바깥 값 열 차례를 Table 과 같게 — 범위 조건만 두 칸 · 값 칸은 한 칸
- 조건 칸(범위 조건은 「·아래」 「·위」) → 값 칸 · 머리 줄 포함 블록을 A1 부터(M01_SL_Table_Build layoutOf · blockCells 와 같음)
- 범위 칸에 목록이 아니면 빈 칸 · 값 칸 범위 값은 「80,100」 글(JS String 과 같음)
- 시험 견본에 값 칸 범위 · 범위 아닌 칸 더함

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
2026-10-01 13:16:21 +09:00
eomsangdon 124c3976d8 Merge remote-tracking branches 'origin/sub_laptop_1', 'origin/sub_laptop_6' and 'origin/sub_laptop_7' into main_laptop_1 2026-10-01 13:15:58 +09:00
eomsangdon 7b9e91f7e2 Merge remote-tracking branch 'origin/dev' into main_laptop_1 2026-10-01 13:15:56 +09:00
eomsangdonandClaude Opus 5.5 dd24ebc5c9 feat(m01-sl): 시트 로직 기존 로직 가져오기 · 6개 /calc 같은 값 시험
- M01_SL_Import.ts — 로직 줄 → 시트 로직(상자 = 시트 · 알약 · 선) · 만약/최소/최대/올림/버림/반올림 → IF/MIN/MAX/ROUNDUP/ROUNDDOWN/ROUND · 찾기 → 표 상자(맞음 칸 + INDEX/MATCH) · 로직 → 다른 로직 상자 · 바깥 값 자리 outsideOf
- M01_SL_Import_Parse.ts — 엔진 문법 식 읽기 · 품셈 표 칸 놓기
- 시험 test_m01_sl_import.py — 견본 6개 시트 셈 = /calc · 마스터 1,469 중 1,386 다 바뀜 · 바뀐 통합문서 #NAME? 없음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BU9gbNE3aWFUvE61pS2WGt
2026-10-01 13:14:59 +09:00
eomsangdonandClaude Opus 5.5 5f9240c9e3 fix(m01-sl): 시트 로직 서버 · Api 를 sub7 Model 모양으로 — SheetLogic · SlSource · SlOutsideAnswer
- 저장 몸 = Model SheetLogic(workbook · nodes · edges) · 바깥 값 칸 = Eval outsideCells 규칙(알약 outside · 상자 source · 표 · 로직 ref 짐작 · id 「상자!칸」)
- 몸의 outside: SlOutsideAt[](Item 항목 단가 — 칸마다 비목) 도 받음 · 같은 칸은 그쪽이 이김 · 값은 늘 마스터에서
- /outside 물음 = {id, ...SlSource} · 답 = Eval SlOutsideAnswer · 표 범위 칸 「·아래」 「·위」(Model RANGE_LOW · RANGE_HIGH)
- Api 겹친 타입(SlLogic · SlField · SlOutsideValue) 지우고 Model · Eval 것을 씀 · Item 이 쓰는 SlOutside · SlOutsideAt 는 SlQuery 별칭으로 남김
- 시험 test_m01_sl_router.py 를 Model 모양으로

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
2026-10-01 13:14:02 +09:00
eomsangdon 8e2d8d6bb3 Merge remote-tracking branch 'origin/main_laptop_1' into sub_laptop_7 2026-10-01 13:14:00 +09:00
eomsangdon e00676aa1b Merge remote-tracking branch 'origin/sub_laptop_3' into main_laptop_1 2026-10-01 13:13:47 +09:00
eomsangdonandClaude Sonnet 5.5 eb9082dc30 feat(m01-sl): 표 상자 Table 완성 — 내 표 붙여넣기 · 범위 조건 · 빈칸 무관 · 선 수식 보존 · 시험
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ACSGaHdLgnkEkoA4LDtMU
2026-10-01 13:13:03 +09:00
eomsangdonandClaude Opus 5.5 817826c1af feat(m01-sl): 항목 상자 틀을 Item 노무 틀과 한 벌로
- addNode(item) = M01_SL_Item moneyLayout(노무)과 같은 칸 — B1 수량 · B2~B4 노무/재료/경비 단가(노무 B2 만 바깥 값) · B5 단가 · B6 금액 · B7~B9 노무비/재료비/경비 · B10 사용 수량 · 머리 줄 없음
- 출력 알약 단가 · 금액 · 노무비 · 재료비 · 경비 · 사용 수량 · node.ref = {"what":"노무"}
- 시험 14개(틀 칸 대조 더함)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBToTCGk5dqDKeXCEP3vhk
2026-10-01 13:10:49 +09:00
eomsangdonandClaude Sonnet 5.5 7bd6e8d7d1 feat(m01-sl): 시트 로직 표 상자 손잡이 Table 초안 — 품셈 표 가져오기 · 내 표 · 찾기 수식 짜기
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ACSGaHdLgnkEkoA4LDtMU
2026-10-01 13:08:02 +09:00
eomsangdonandClaude Opus 5.5 ef0b4ae385 feat(m01-sl): 시트 로직 상자 이름 바꾸기 · 바깥 값 약속
- renameNode — 엔진 시트 이름 명령으로 시트 이름 · 그 시트를 가리키던 선 수식이 따라감 · 1~31 글자 · 못 쓰는 글자 · 같은 이름은 막고 까닭
- 상자 더하기 이름도 시트 이름 규칙대로 고쳐 만듦(못 쓰는 글자 → · · 31 글자)
- SlSource(서버 바깥 값 물음 한 줄) · SlField · SlOutside.id(상자 id!칸) · source · SlNode.source
- 표 범위 칸 약속 RANGE_LOW · RANGE_HIGH · rangeHead(이름) = 「이름·아래」 「이름·위」
- answersToValues — 서버 답(id · ok · value · rows) → 넣을 값 · 못 받은 것은 쉬운 말
- 시험 13개

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBToTCGk5dqDKeXCEP3vhk
2026-10-01 13:07:56 +09:00
eomsangdon e242183fed Merge remote-tracking branch 'origin/dev' into sub_laptop_7 2026-10-01 13:04:58 +09:00
eomsangdonandClaude Opus 5.5 67e4c27658 feat(m01-sl): 시트 로직 Model · Eval 속 채움 · 시험
- 상자 더하기(종류별 틀 시트 · 칸 A 이름 · B 값 · C 설명) · 지우기 · 같은 이름은 「 (2)」
- 선 잇기 = 받는 입력 알약 칸에 「'시트'!칸」 참조 수식(여러 선은 +) · 끊기 = 그 참조 뺌 · 순환 · 같은 상자 · 두 번 · 없는 알약은 막고 까닭
- 알약 정하기 · 빼기(이름 · 칸이 바뀌면 선이 따라감)
- 바깥 값 칸 목록 · 넣기(표는 칸 덩어리) · 화면 계산 = 우리 스프레드시트 엔진 recalcWorkbook · 결과 노무비 · 재료비 · 경비 · 계
- 검사: 빈 입력 알약 · 안 받은 바깥 값 · 결과 상자 없음 / 선 없음 · 오류 칸 · 순환(#CYCLE!)
- 시험 resources/tester/test_m01_sl_model.py 10개(엔진 그대로 Node)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBToTCGk5dqDKeXCEP3vhk
2026-10-01 13:04:15 +09:00
eomsangdonandClaude Opus 5.5 687484bdc3 feat(m01-sl): 시트 로직 서버 길 — 목록 · 열기 · 저장(서버 다시 셈) · 지우기 · 바깥 값
- M01_SL_Router.py — /api/m01/sl/list · get · save · delete · outside · 자리 SheetLogic/_data(git 밖) · 키 SL-0001 꼴
- 저장 때 바깥 값(품셈 표 · 노임 · 자재 · 장비 · 기존 로직 결과)을 마스터에서 다시 넣고 common_util_spreadsheet(Node)로 다시 셈 · 브라우저 계산값 버림
- 단가 · 장비 · 기존 로직은 /calc(Store.calc)와 같은 셈 · 표는 머리 줄 + 줄(범위는 「이름·아래」 「이름·위」)
- main.py 등록 한 문장(시스템 관리자 · 폴더째 지우면 이 줄도 지움)
- M01_SL_Api.ts 몸 — slList · slGet · slSave · slDelete · slOutside · slPlain(EasyCalc plainError)
- 시험 test_m01_sl_router.py — 저장 · 열기 · 목록 · 지우기 · 서버 다시 셈 · 바깥 값 · 403 · 마스터 사본 그대로

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
2026-10-01 13:03:32 +09:00
eomsangdonandClaude Opus 5.5 89f8af2ad4 chore(M01): 현장 일위대가 GX000002 채움재 · GX000003 돌쌓기 메쌓기 — 메인 폴더 화면 편집(사용자 편집)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YAxqrz1iadqdygC6bE3pic
2026-10-01 12:36:31 +09:00
eomsangdonandClaude Opus 5.5 57ce7bb21b chore(M01): 현장 일위대가 GX000001 돌쌓기 메쌓기(인력) — 메인 폴더 화면 편집(사용자 편집으로 봄)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YAxqrz1iadqdygC6bE3pic
2026-10-01 12:12:00 +09:00
eomsangdon bd5478a9ef Merge remote-tracking branch 'origin/sub_laptop_3' into main_laptop_1 2026-10-01 11:57:37 +09:00
eomsangdonandClaude Sonnet 5.5 c16d7fdda2 feat(m01-lb): 로직 만들기 판 단계 안내 Wizard 완성 — 표 칸 역할 · 문장 틀 · 항목 연결 · 값 종류 · 시험
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ACSGaHdLgnkEkoA4LDtMU
2026-10-01 11:57:01 +09:00
eomsangdon 668130618b Merge remote-tracking branch 'origin/main_laptop_1' into sub_laptop_8 2026-10-01 11:47:58 +09:00
eomsangdonandClaude Opus 5.5 f62689dff1 feat(M01): 로직 만들기 판 왼쪽 원문 Source · Check 를 LB 타입에 맞춤(PLAN 35-2)
- renderSource: 표 이름 · 원문번호 · 기준 · 격자 · 역할 칩 · 걸린 줄 · 해당 없음/중복 · 칸 고침(on.edit) · 주 · 사용처
- Check: runExpect(lb, tables, rows) · 같은 조건 두 칸 조회는 빈틈 한 번
- 시험 test_m01_lb_check.py 9 통과 · LogicBuilder 전부 검사 초록

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ly2oHAaTDYRjcniAmHR81z
2026-10-01 11:47:53 +09:00
eomsangdon afb3d30615 Merge remote-tracking branch 'origin/sub_laptop_7' into main_laptop_1 2026-10-01 11:47:20 +09:00
eomsangdonandClaude Opus 5.5 c22eaeb16c feat(m01-lb): 로직 만들기 판 Blocks 속 채움 · 시험
- readLogic: 식 자리(중간 · 수량 · 요소 · 비율 · 결과)를 엔진 문법으로 읽어 ① 입력값 ② 표 조회(Table readFinds) ③ 계산(값 · 곱나눔 · 할증 · 더하기 · 조건목록 · 최소최대 · 올림 · 단계 · Cond readCond) ④ 항목(Model EasyDoc) ⑤ 결과값
- writeLogic = Model toRow · setCond · setLookupTable · setCalc 는 그 자리 글만 갈아끼운 뒤 다시 읽음 · newLogic
- 못 읽는 꼴은 blocked 에 쉬운 말(표 조회 조건에 계산 · 그리고/또는 · 넘길 값에 계산)
- 마스터 1,469 왕복 다른 것 0 · 블록으로 다 읽힘 1,396(95%)
- 시험 resources/tester/test_m01_lb_blocks.py 14개(견본 여섯 · Node 고리로 EasyCalc 그대로 부름)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBToTCGk5dqDKeXCEP3vhk
2026-10-01 11:46:28 +09:00
eomsangdonandClaude Opus 5.5 a9efc452cc feat(m01-lb): 로직 만들기 판 시험 계산 서버 길 · 화면 부르기
- M01_LB_Calc.py — POST /api/m01/lb/calc {row, inputs, tables}: /calc 와 같은 셈 · 부를 때마다 새 사본에 표를 바꿔 끼움(전역 캐시 · 파일 안 건드림 · 저장 안 함)
- GET /api/m01/lb/table-users — 표 「용도.로직키」 + 로직 글 대조
- main.py 등록 한 줄(시스템 관리자 · 폴더째 지우면 이 줄도 지움)
- M01_LB_Api.ts — lbCalcLater(0.3초 · 최신만 · 쉬운 말) · tableUsers · fetchLbTable
- 시험 test_m01_lb_calc.py — 견본 표 덮어 값 바뀜 · 캐시 · 파일 그대로 · 표 없으면 /calc 와 같음 · 404 · 사용처 · 403

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
2026-10-01 11:45:22 +09:00
eomsangdonandClaude Opus 5.5 4f12eb3611 feat(M01): 로직 만들기 판 검사 Check 초안 — 빈틈 · 중복 · 걸린 줄 · 기대값 시험표(PLAN 35-2)
- 줄 찾기는 엔진 _match · find 규칙 그대로(범위규칙 넷 · 빈 칸 무관 · 위 끝 가장 작은 줄 · 결과 칸 있는 줄)
- 시험 test_m01_lb_check.py 7 통과

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ly2oHAaTDYRjcniAmHR81z
2026-10-01 11:43:52 +09:00
eomsangdon 2f52430454 Merge remote-tracking branch 'origin/sub_laptop_7' into main_laptop_1 2026-10-01 09:53:04 +09:00
eomsangdonandClaude Opus 5.5 3d52720759 feat(m01-easycalc): 조건 보고 고치기 창 · 시험
- openEasyCond(card, doc, trial) — 잠금 카드 수량 · 그 밖 덧붙임의 조건을 문장으로 · 고르기 · 숫자 칸으로 고쳐 새 식 글 · 취소 null
- 읽는 꼴: 만약(사슬) · 최소/최대 · 올림/버림/반올림 — 식 전체 또는 식 속 덩어리 · 중간 값 이름 하나면 따라감 · 못 읽으면 지금 화면 안내 한 줄
- 금액 미리 보기: Api calcLater · 준비 전이면 /calc 0.3초 뒤 최신만
- 표 칩은 Table 파일이 있으면 openEasyTable 로 엶(import.meta.glob)
- 마스터: 줄 자체에 조건이 있는 카드 824 가운데 767 읽음(93%)
- 시험 resources/tester/test_m01_easycalc_cond.py 19개

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBToTCGk5dqDKeXCEP3vhk
2026-10-01 09:52:20 +09:00
eomsangdonandClaude Opus 5.5 a06863e2ec feat(m01-easycalc): usesOf 회사 · 개인 층 조합까지 — M02 층 길 읽기만
- 내 층 /combos/all · 남의 회사 /layers/company/owners · 회사마다 사람 /layers/personal/owners → 층 조합 하나씩 읽어 담은 것만
- EasyUse.where(「회사 · 이름」 · 「개인 · 이름」) · 못 읽은 층은 「일부를 못 읽음」 한 줄
- 시험 — holding 견본(담은 것만 · 자리 글)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
2026-10-01 09:49:18 +09:00
eomsangdon ac19ac59c5 Merge remote-tracking branch 'origin/sub_laptop_8' into sub_laptop_4 2026-10-01 09:43:07 +09:00
eomsangdon f4699ae91c Merge remote-tracking branch 'origin/dev' into sub_laptop_4 2026-10-01 09:43:05 +09:00
eomsangdonandClaude Opus 5.5 73daf910ad feat(M01): 쉬운 단가산출 2단계 표 보고 고르기 — openEasyTable(PLAN 34-3c)
- 잠금 카드 수량 식 속 표 찾기를 엔진 문법대로 읽음(따옴표 · 괄호 · 겹친 찾기) · 못 읽는 꼴은 한 줄 안내
- 표를 그대로(머리 · 줄) · 지금 시험값으로 걸린 줄 노랑(서버 /text 표 조각 줄 차례) · 값 칸 굵게
- 줄 누르면 그 줄 값으로 · 조건마다 「설계 때 정함 / 이 값으로 고정」 · 범위 칸은 범위규칙대로 안쪽 수
- 바뀐 식으로 이 줄 금액 · 합계 미리 보임(/text · /calc) · 고른 줄이 안 걸리면 [이걸로] 막음
- 시험 test_m01_easycalc_table.py 6 통과 · typecheck 통과
- ORCA: GF000219 석공 줄 35 · 깬잡석 고정 → 87,395 원(서버 87,395.1) · 합계 132,133
  · GC000129 범위 줄 5~8 → 나무높이 6.5 · 541,940 → 709,080 · 값 칸 · 취소 · 닫기 null

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ly2oHAaTDYRjcniAmHR81z
2026-10-01 09:42:06 +09:00
eomsangdonandClaude Opus 5.5 87aabc4a0d feat(m01-easycalc): 쉬운 단가산출 Api 몸 — 서버 길 감싸기 · 기계 짝 · 쉬운 말
- listEasy(품셈 기본 / 내가 만든 것 · 돈 아닌 로직 「쉬운 길로 못 엶」) · openEasy(자동값) · calcLater(0.3초 · 최신 응답만)
- newEasy · copyEasy · editEasy · deleteEasy — /logic/* 만(/save 안 씀) · usesOf = 담은 조합 + 부르는 내 로직
- listMachines · machineElement — 기종 → 기계 시간당 경비 로직 부름 글 · 넘길 설계 값(부착 전용 · 손료만은 뒤로)
- plainError — 0 · 403 · 404 · 409 · 422 검사 글을 쉬운 말로(키 · 날 글 걸름)
- 시험 test_m01_easycalc_api.py — 사본 폴더 왕복 · 쓰는 곳 막음 · 기계 짝 · 쉬운 말 · 금지 낱말

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL
2026-10-01 09:42:02 +09:00
eomsangdonandClaude Opus 5.5 63235dc203 feat(m01-easycalc): 쉬운 단가산출 Model 속 채움 · 시험
- toDoc · toRow: 호표 인력 · 재료 · 기계경비 로직(GC000267~276) · 그 밖 로직 카드 · 숫자 아닌 수량은 잠금 + 쉬운 말 까닭
- 덧줄 「바탕 * 숫자 / 100」(노무비 · 재료비 · 경비 · 사람 줄 노임 합) = 덧붙임 카드 · 그 밖 = 잠금
- 안 바뀐 줄은 원래 글자 그대로 — 견본 셋 · 마스터 로직 1,469개 왕복 같음
- addCard · addPercent · withInputs · updateCard · removeCard · moveCard(같은 묶음 안) · checkCard · checkName · EasyHistory
- 시험 resources/tester/test_m01_easycalc_model.py 14개

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBToTCGk5dqDKeXCEP3vhk
2026-10-01 09:37:05 +09:00
eomsangdonandClaude Opus 5.5 bcb1c725c4 refactor(M02): 항목 카드 넷 공용 틀 CardShell (PLAN 31-7)
- 공용 틀 — 제목 줄(제목 · 저장 안 한 점 ● · 오른쪽 단추 자리) + 한 줄 부제(번호 · 이름 · 말줄임) · 상태(불러오는 중 · 실패 + 다시 불러오기 · 비었음) · [저장](늘 보임 · 고쳐야 켜짐 · 카드 안 Ctrl+S · 알림 글 한 벌) · ?(단축키 상자)
- 도면 정보 · 면적산출 · 재료산출(ItemCards) · 선택 입력(관리 화면 · 고르기 모달 값 카드)이 틀에 내용만 넣음
- 「〇〇 수정」 빈 단추 한 모양 · 엑셀 카드에도 ? · 불러오는 중 네 카드 · 실패는 카드 안 글(토스트 안 씀) · 물음 한 번(어느 카드든)
- 저장 길(saveTemplate · 도면 write · sheetEdit.save · 위 [저장] saveInputs) · 단축키는 그대로 · 고르기 모달은 보기만
- 시험 test_m02_card_shell 새로 · 옛 모양 시험 맞춤

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 21:24:49 +09:00
eomsangdonandClaude Opus 5.5 2f7acff79f fix(M02): 카드 넷 높이 = 화면에 맞춰 크게 · 엑셀 격자가 카드를 채움 (PLAN 31-6)
- 카드 높이 360px → min(640px, 70vh) · 도면 CAD 칸은 카드를 채움
- 엑셀 카드(면적 · 재료) 격자 = 카드 몫 최소 높이(카드 - 8rem) · 판이 없으면 채움 · 자재 조합 판은 그 아래 카드 안 스크롤(격자 높이 0 이던 흠 함께)
- 시험 한 줄

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 20:58:16 +09:00
eomsangdonandClaude Opus 5.5 8206bf6bb4 fix(M02): 자동 커밋 fedc0b5b 에 남은 충돌 표시 풂 — 63c6fa36 합친 모양으로
- main_laptop_1 의 8b2473af(같은 충돌을 먼저 푼 것)를 다시 합칠 때 충돌 · autopush 가 표시째 올림
- 두 풀이를 견줘 더 넓은 쪽(63c6fa36)을 씀 — 위 [저장]이 도면 카드도 먼저 저장 · 다른 항목 고름 물음 한 번(discard) · 나머지는 같음
- 대상: ItemCards · Structure · UI_Main · test_m02_drawing_card(DrawingCard 는 이미 같음)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ly2oHAaTDYRjcniAmHR81z
2026-09-30 20:40:00 +09:00
eomsangdon fedc0b5b15 auto: 2026-09-30 20:38 (ESD_LAPTOP) 2026-09-30 20:38:54 +09:00