Files
Aislo/docs/raw/요구_1008_4/조사_A_M02.md
T

10 KiB

조사 A — M02 4차 (10-8 저녁 · 읽기 전용 조사 에이전트)

M02 = M02_MasterTemplete/ · SS = A00_Common/spreadsheet/ · 「추정」 = 코드로 확인 못 한 판단.

1. 일위대가 로직 표: 옵션 줄을 구분 · 이름 · 별칭 병합 칸으로

  • 현재 열: [차례(⠿+번호)][구분(+품셈)][이름][별칭 입력][수량산출 2줄][결과 단위][노무비][재료비][경비][계][순서 칸(▲▼ · 옵션|수정 · 삭제)](Labor_Rows.ts:352-441 · 머리 :490-499) · 옵션 줄 = [차례 빈칸][옵션 글 colspan=9][순서 칸 빈칸](:40-41 SPAN · :444-460) · CSS Labor.css:160-198(한 줄 말줄임 · 위 줄 아래선 없앰 · hover · 고름 한 덩이 · 고른 줄 왼쪽 띠) · 좁은 칸 grid :313-446(옵션 :421-431) · 같은 표 = 상세 · 카드(ItemCards.ts:313-319) · 서고(Labor_RefEdit.ts:94)는 Labor_Detail.ts:192-210 · 면적 패널 보기 Labor_View.ts:91.
  • 해석(추정): 옵션 줄 높이 그대로 · 옵션 글은 구분 · 이름 · 별칭 3칸만 · 차례 · 수량산출 · 단위 · 금액 넷 · 순서 칸은 위 줄에서 rowspan=2 로 내려와 옵션 줄 자리까지 → 항목마다 약 한 줄 줄어듦.
  • 고칠 자리: Labor_Rows.ts 옵션 글 있을 때만 위 줄 칸 일곱 + 순서 칸 rowspan:"2" · 옵션 줄은 td.m02-labrow__opt colspan=3 하나 · SPAN 3 · Labor.css :176-178 아래선 규칙은 구분 · 이름 · 별칭만 · :184-187 hover 에 .m02-labrow__row:has(+ .m02-labrow__optrow:hover) · :195-198 옵션 줄 첫 칸 띠 지움 · :134-136 끌기 아래선을 위 줄 rowspan 칸에도 · 좁은 칸 grid 는 rowspan 무시(그대로).
  • 재사용: 끌기 묶음은 tr[data-labor-logic] 다음 형제들(Labor_RowDrag.ts:36-40 · 칸 구조 무관).
  • 시험: ui_checks/44-6_일위대가_표.js:7,61(opt.colspan 기대 8 · 코드는 이미 9 → 3) · ui_checks/45-7_일위대가_표_줄.js:29-61(rowspan 모름 → 고침) · 47-5 · test_m02_card_shell.py:157 · test_m02_labor_rowdrag.py:66-85 통과 추정.
  • 위험: 하위 줄(:243-296)이 옵션 줄 뒤 → rowspan 2 고정 · 옵션 없는 로직은 rowspan 없음(섞임) · 상세 · 카드 · 서고 · 좁은 칸 · 밝음 · 어두움.
  • 크기: 작음~중간.

2. 상세 머리 이동 단추: 지금 페이지 숨김 · [다시 열기]와 같은 꼴

  • 현재: 머리 [back][title][nav.root][helpSlot][slot][reload][save](UI_Main.ts:156-169) · [다시 열기] = createButton({label:L("M02_Reload"), variant:"ghost"}) 보통 크기(UI_Main.ts:137 · 글 ui_template_locale_m2.ts:34) · 이동 단추 createDetailNav(DetailNav.ts:33-43) size:"sm"(:35) · 지금 페이지 aria-pressed(:50-54) + 강조 CSS(UI_Style.css:245-253) · 보임 조건 = 뒤로 단추(UI_Main.ts:250) · ? = helpParts(CardShell.ts:163-195 · :167 ghost sm · m02-struct__help) 카드 ? 와 공용 · 머리엔 UI_Main.ts:251-253.
  • 고칠 자리: DetailNav.ts:35 size:"sm" 지움 · :50-54 → button.hidden = on · UI_Style.css:250-253 눌림 규칙 지움 · ? 는 머리에서만 키움(UI_Main.ts:252 뒤 help.button.classList.remove("ui-btn--sm") · 카드 ? 는 작게).
  • 시험: test_m02_detail_nav.py:101-112 pressed → hidden · :127 aria-pressed CSS 단정 지움 · test_m02_structure_panel.py:218-221 통과 · ⚠ test_m02_layer_screen.py:307-311 은 정규식에 nav.root 가 없어 105-4 뒤 이미 깨짐(같이 고침).
  • 위험: 단추 커져 좁은 창 머리 줄바꿈 늚 · 크기: 작음.

3. (재요청) 행/열 넣기 · 지우기 뒤 범위 유지 · 「도면으로 보내기 안 됨」

실제 자료(연결표 있는 구조물 전부 · 회사 층 · 프로젝트 사본은 연결표 0)

층 · 열 연결표 줄 이름 있는 줄 면적 이름정의
시스템 item3_2 / item3_3 / item3_3_2 각 1 (E7:J13 / E7:J17 / B2:H8) 0 없음
개인(회사1 · 사용자10) item1 · item1_2(2장) · item2(s2) · item3 · item3_2 · item3_3 각 1 0 없음
개인(회사1 · 사용자3) item3_3 3 (T2 E7:J17 · T1 E8:I14 · T3 E7:J17) 2 (T1 · T3) 도면_T1 · 도면_T3
개인(회사1 · 사용자3) item3_3_2 1 (T1 E7:J13) 0 없음
13줄 중 이름 있는 줄 2(104 합친 뒤 16:4617:28 보낸 것) · 112 뒤(17:38) 새로 보낸 연결은 자료에 없음.
원인(그럴듯한 차례)
  1. 옛 연결(이름 없음)은 설계상 적힌 범위로 폴백 — 점선(links.ts:182-191) · 저장(refresh_drawing M02_Area_Table.py:139-149) · 도면 열 때 비교(checkStale AreaToDrawing.ts:289-300) 모두 고정 범위 → 행 넣어도 안 따라감 · 이름은 「도면 저장 때 파일에 없던 새 줄」에만(fresh_names Area_Table.py:47-58) · withLinks(AreaToDrawing.ts:377-394)는 옛 줄을 이름 없이 다시 적음 → 옛 줄은 영영 이름 없음 · 시험이 못박음(test_m02_area_table.py:303-307) · 사용자3 item3_3 은 T2(이름 없음) · T3(이름 있음)이 같은 범위라 행 넣으면 테두리 둘이 갈라짐.
  2. 셀 삽입/삭제(밀기 · 당기기)는 이름을 안 옮김 — 칸 메뉴 「셀 삽입 ▸」(spreadsheet_menu_items.ts:200-229) · Ctrl+Shift+= 창(spreadsheet_actions_run.ts:33-44)이 칸 명령(spreadsheet_insert_dialog.ts:54-101) — 알약만 옮기고(104-2) 이름 · 병합 · 식 참조 · 조건부서식 제자리 · 잘라 붙이기(spreadsheet_commands.ts:365-421)도 이름 · 알약 안 옮김.
  3. 놓고 도면 [저장] 안 하면 연결 · 이름 안 생김(112 의도 Store.py:174-191 · 사용자에겐 「보내기 안 됨」으로 보일 수 있음 · 추정).
  4. 카드 도면 저장은 withLinks 를 안 거침(DrawingCard.ts:133-138) → 카드에서 표를 지워도 연결표 줄이 남아 점선 계속.
  5. 알약 모듈 늦게 로드 전 행 넣으면 알약 안 옮겨짐(spreadsheet.ts:169-181,198-205 · 드묾).
  • 행열 통째 길은 문제없음(머리 우클릭 · 「행/열 삽입 ▸」 · 통째 고른 단축키 → insertDelete spreadsheet_commands.ts:259-359 · applyLinked links.ts:131-145 — 칸 · 식 · 메모 · 병합 · 이름 · 조건부/유효성 · 알약 모두).
  • 개인 · 회사 층 길 끊긴 곳 없음(보내기 owner AreaToDrawing.ts:101-104 · 저장 owned() Api_Fetch.ts:74-84 → _store_save Router_Layers.py:341-347,393-399 · 프로젝트 층은 보내기 단추 없음 AreaToDrawing.ts:340) · Node 번들 17:38:48 새로 만들어짐.
  • 참고(추정): 시스템 item3_3 알약 7개(G8G20)가 74ab07bc9(사용자 화면 저장)에서 통째로 빠짐 · 칸 값 그대로 · 일위대가 수량 「칸」→「없음」 · 행열 길로는 안 생기는 꼴 · 일위대가 로직을 바꾼 뒤 고아 알약을 [×] · [연결 모두 해제]로 푼 것으로 보임. 고칠 자리: 원인 1(권장) — 면적 상세 열 때 화면이 이름 없는 표시범위마다 도면_{연결} 이름정의를 책에 넣고 그 이름으로 점선(UI_Main.ts:298-305 · sentRanges 가 연결 도 넘김) · 고침 표시 안 켬 · 면적 [저장] 때 서버 refresh_drawing 이 책에 그 이름이 있으면 줄에 이름 적음(112 「저장 때 기록」 그대로) · test_m02_area_table.py:303-307 뒤집음 · 대안 define_names(Area_Table.py:61-88)로 모든 층 한 번에 굳히는 도구 / 원인 2 — insert_dialog.ts dispatchShift(:84-101)에서 이름정의도 shiftLinks(:57-82) 규칙으로 / 원인 4 — 카드 저장에서도 표 없는 연결표 줄 뺌(withLinks 몸 재사용). 위험: 행 넣고 이미 저장한 옛 연결은 적힌 범위가 벌써 어긋났을 수 있음 → 굳히기 전 사용자가 점선 확인. 재현: 사용자3 item3_3 면적 → 6행 「위에 1행 삽입」 → T3 점선 E8:J18 · T2 E7:J17 그대로 → [저장] → 도면 T2 표 첫 줄 빔 · 끝 줄 빠짐 / T3 범위 안 「셀 삽입 ▸ 아래로 밀기」 → 값만 내려가고 T3 점선 그대로. 크기: 원인 1 중간 · 원인 2 작음중간 · 원인 4 작음.

4. 면적 상세 「도면 연결」: 연결 여부 보이고 지우기

  • 현재(「도면 연결」 = 시트 위 보낸 범위 표시로 추정): 점선 테두리 + 왼쪽 위 이름표 ss-link-range__tag 「T1 도면」(links.ts:489-534 · CSS spreadsheet_links.css:255-285 — 10px 글 · 위만 둥근 네모라 라벨처럼) · 자료 = 같은 열 도면 연결표(sentRanges AreaToDrawing.ts:145-163 · 글 :85-86) · 누르면 범위 고름 + 테두리 강조(:508-514) · 지우기는 숨어 있음(우클릭 [보내기 취소] :515-531 = 112 길 · 저장 때 apply_cancels · refresh_drawing(unlink) Area_Table.py:91-109,118-138) · 안 보이는 것: 도면에 그 표가 실제로 있나(연결표 줄만 봄) · 값이 맞나(도면 상세 열 때 checkStale 알림에서만) · 아래 알약 막대(renderBar links.ts:360-412)엔 일위대가 알약만.
  • 고칠 자리: sentRanges — 이미 읽는 구조물 문서로 「표 있음」(sheetsOf · isTable · linkOf :124-134) · 값 맞음 — 지금 책으로 areaTable(spreadsheet_area_table.ts:55) → sameValues(:136)(112-1 AreaDrawing.ts:117-128 꼴) · links.ts 표시범위 에 상태(:64-71) · renderBar 에 도면 알약(글 「T1 도면 E7:J17」+ 상태 · 색 = 테두리 · × = mark.취소 · 누르면 범위 고름).
  • 재사용: pill()(links.ts:256-338) + .ss-link · .is-linked · .ss-link__x(spreadsheet_links.css:13-60,231-246) · 상태 createTag(label, variant)(ui_template_elements.ts:217 · ui-tag--success|warning|danger) · 취소 112 cancel · withCancels(AreaToDrawing.ts:326-331).
  • 위험: 옛 연결은 값 비교도 고정 범위(3 원인 1 먼저) · 값 비교 150ms 모음 · 시험 test_m02_area_marks.py:32-35 · test_m02_area_to_drawing.py · ui_checks/50-1_*.js.
  • 크기: 중간.

미결 (조사 에이전트 제시)

  1. (1) 해석 — 옵션 글은 구분 · 이름 · 별칭 병합 칸 · 오른쪽 칸은 위 줄과 두 줄 병합 · 차례 칸도 두 줄 병합.
  2. (2) 카드 ? 도 키울지.
  3. (3) 옛 연결 굳히기: 면적 열 때 화면 + 저장 때 서버(권장) vs 한 번 도구 · 이미 어긋난 옛 연결은 다시 보낼지.
  4. (3) 셀 밀기 · 당기기 · 잘라 붙이기에도 보낸 범위 · 병합 · 조건부서식이 따라가야 하는지.
  5. (3) 시스템 item3_3 알약 7개 빠짐이 의도였는지.
  6. (4) 「도면 연결」 = 「T1 도면」 이름표가 맞는지 · 아래 알약 막대로 옮기고 이름표 지울지 · 「도면에 없음」 줄 자동 정리.