diff --git a/docs/raw/요구_1102/_분석_579-2_참조대사본.md b/docs/raw/요구_1102/_분석_579-2_참조대사본.md new file mode 100644 index 000000000..9a5a640fe --- /dev/null +++ b/docs/raw/요구_1102/_분석_579-2_참조대사본.md @@ -0,0 +1,138 @@ +# 579-2 검색 추가 = 참조인가 사본인가 — 조사 (읽기 전용) + +조사 범위 = M02 단가산출(SK) · 일위대가(SC) [항목 추가] 찾아 넣기 창. 구조물 조합(labor) → SC 참조는 범위 밖(언급만). +실측 = `tmp/brain_579/test_579_probe.py`(임시 storage · `world` fixture) → 결과 `tmp/brain_579/_probe_out.txt`. +저장소 훑기(읽기만) = `resources/master_template` + `storage` 층 문서. + +--- + +## 0. 한눈 요약 + +- 지금은 **전부 참조(키만)** — M02 문서(SK · SC)를 넣으면 `{층, 주인, 키}` 한 줄 · 셈 때마다 원본을 읽음 · 사본 · 판 · 지문 안 남김. +- **출처 칸 = 참조 키 그 자체**(줄 단위 따로 없음). 문서 단위 `본뜬` 칸은 [복사] · 붙여넣기 · 실무자료 때만 채워짐. +- **안쪽 고침**: M01 기초 줄 · SC 안 SK 참조 줄 = 덮개로 됨 / **SK 안 SK · SC 참조 = 수량만** / **SC 안 SC 참조 = 원본을 직접 고침(모든 쓰는 곳에 번짐 · 위 층이면 읽기만)** / SC 고정 줄 · 자재 줄 단가 = 못 고침. +- **원본이 바뀌면 따라감**(실측 129,073 → 481,406) · 덮은 줄이 원본에서 사라지면 덮개가 **알림 없이** 빠짐 · 관리자가 원본을 지우면 **내 문서의 그 줄도 지워짐**(735). +- 권함 = (다) **위 층(마스터 · 회사)에서 넣을 때만 내 층 사본(본뜬 + 판) · 내 층 것끼리는 지금 참조 + 덮개**. + +--- + +## A. 찾아 넣기 저장 꼴 (넣는 대상별) + +창 = `M02_MasterTemplete_Find_Pick.ts` · 고를 수 있는 층 = 위 층 + 자기 층(`Find_Pick.ts:94-104`) · M02 문서 줄 누름 = `opt.ref(x.ref)`(`Find_Pick.ts:229-238`). + +### A-1. SK [항목 추가] (`Sangeun_Pick.ts:79-90` → `Sangeun_Detail.ts:101-142`) + +| 넣는 대상 | 저장 꼴(SK 문서 칸) | 참조/사본 | 출처를 아는 길 | 파일:줄 | +|---|---|---|---|---| +| M01 기초 첫째 | `바탕 {로직: GF…}` · 단위 빈칸 · 「식」이면 기초 결과단위 | 참조(키 · M01 개정 = `바탕판` 알림) | 로직 키 · 꼬리표 원문번호 | `Sangeun_Detail.ts:107,137-142,473-476` · `Sangeun_Calc.py:440` | +| M01 기초 둘째 이후 | `더한줄 {종류:로직, 로직, 입력값, 수량(환산 처음값)}` | 참조(키 · `바탕판` 저장) | 로직 키 · 꼬리표 | `Sangeun_Detail.ts:118-135` · `Sangeun_Calc.py:448-461` | +| M01 인력 · 재료 | `더한줄 {종류, 요소: LB…/MT…, 이름, 단위, 수량 1}` | 참조(값 = M01 · 단가 책) · 이름 · 단위만 글 사본 | 요소 키 | `Sangeun_Pick.ts:87-89` · `Sangeun_Doc.py:182-194` | +| M01 기계 | 막힘(넣는 길 없음) | — | — | `Sangeun_Pick.ts:88` · `Find_Pick.ts:73-74`(`machine` 미전달) | +| 다른 SK · SC (마스터 · 회사 · 내 층) | `더한줄 {참조: {층, 주인, 키}, 수량 1}` | **참조(키만)** · 셈마다 원본 읽음 | 참조 키뿐(판 · 이름 사본 없음) | `Sangeun_Pick.ts:86` · `Sangeun_Doc.py:158-162` · `Sangeun_Calc.py:281-293` | + +### A-2. SC [항목 추가] (`Labor_Table.ts:354-400` · `Labor_Pick.ts:103-113`) + +| 넣는 대상 | 저장 꼴(SC `담은로직` · `자재`) | 참조/사본 | 출처를 아는 길 | 파일:줄 | +|---|---|---|---|---| +| M01 기초 | `{로직, 입력값 {}, 수량 null}` | 참조(키) | 로직 키 | `Labor_Table.ts:398` | +| M01 인력 | `{고정: {이름, 규격, 단위, 단가(그때 값), 이음 {노임: LB…}}}` | 반쯤 사본(글 · 단가) + 이음(노임은 단가 책 따라감 · 품 그대로) | 이음 키 | `Find_Pick.ts:82-91` · `Labor_Table.ts:369-374` · `Labor_Fixed.py:6-7` | +| M01 재료 | `자재 {코드, 이름, 규격, 단위, 수량 null}` | 참조(값 = M01 기준단가) | 코드 | `Labor_Table.ts:377-388` | +| M01 기계 | 막힘 | — | — | `Labor_Pick.ts:105-113`(`machine` 미전달) | +| SK · SC (마스터 · 회사 · 내 층) | `{참조: {층, 주인, 키}, 별칭, 수량 null}` | **참조(키만)** | 참조 키뿐 | `Labor_Table.ts:360-367` | + +### A-3. 출처 칸 현황 + +- 줄 단위 출처 칸 = 없음(참조 키가 출처 겸 연결). 고정 줄 `출처 {파일, 호표, 줄, 판}` = 엑셀 불러오기 전용(`Labor_Fixed.py:9`). +- 문서 단위 `본뜬` = [복사] · 붙여넣기(`Precombo_Folders.py:202-226` · `Labor_Ref.py:378-391`) · 실무자료(`Hopyo_Build.py:10`). 화면 = SC 상세 「본뜬 곳」 칸만(`Labor_Table.ts:431-433`) · SK 상세엔 안 보임. +- [단가산출로도 저장](줄 → 개인 층 새 SK) = 출처 안 남김(`Labor_Patch.py:117-123` · `Sangeun_Calc.py:484-503`). +- 저장소 실제(층 문서): SK 17(바탕 로직 15 · 더한줄 로직 5 · 인력 1 · **참조 0** · 본뜬 13) · SC 3(로직 줄 10 · **SC 참조 1(개인)** · 본뜬 2) · 구조물 조합 206(→ 마스터 SC 참조 27 · 옛 SP 27 · 범위 밖). + +--- + +## B. 넣은 뒤 안쪽 값을 고칠 수 있나 + +고친 값이 남는 곳 = 늘 **부모 문서**(SK `덮개 · 뺀줄 · 더한줄` · SC 줄 `패치`) — 원본 안 바뀜. **예외 = SC 안 SC 참조 줄(원본 직접 고침)**. + +### B-1. SK 상세 안 + +| 줄 | 고칠 수 있는 것 | 못 고치는 것 | 남는 곳 | 파일:줄 | +|---|---|---|---|---| +| 바탕 로직 줄 | 품(qty · 열린입력 = 배율) · 비목 단가 · 줄 빼기 · 고름 · 자재표시 · 옵션 · 환산 | 이름 · 단위 · 식 | SK `덮개 · 뺀줄 · 고름 · 자재표시 · 입력값` | `Sangeun_Detail.ts:367-414,423-435` · `Cover_Model.ts:312-334` | +| 둘째 기초(727-2) | 수량 · 세부 줄 품 · 단가 · 세부 빼기 · 옵션 · [기초 빼기] | 세부 줄 더하기(SK 에 더하기만 됨) | 그 더한줄 `덮개 · 뺀줄 · 입력값` | `Sangeun_Doc.py:200-210` · `Sangeun_Calc.py:243-278` | +| 더한줄 인력 · 재료 · 기계 | 수량 · 단가 · 별도계상(재료) · 빼기 | 이름 · 단위 | 그 더한줄 `수량 · 단가 · 별도계상` | `Cover_Model.ts:267,315-321,356-361` | +| **더한줄 SK · SC 참조** | **수량 · 빼기만** | 안쪽 전부(펼침 없음 · 단가 칸 잠김) | 그 더한줄 `수량` | `Cover_Model.ts:267`(priceEdit) · `Sangeun_Calc.py:330`(펼침 = 로직 줄만) | +| 더한줄 SC 참조(값) | — | **금액 자체 없음**「수량 없음 — 쓰는 자리에서 연결」(실측 E5 · 723-1 설계대로) | — | `Sangeun_Calc.py:281-293` · `Labor_Expand.py:43-50` | + +### B-2. SC(일위대가) 상세 안 (`Labor_Table.ts:269-299`) + +| 줄 | 고칠 수 있는 것 | 못 고치는 것 | 남는 곳 | 파일:줄 | +|---|---|---|---|---| +| 로직 줄 | 줄 모달 = SK 상세 줄 모드(723-3 · 724): 품 · 단가 · 빼기 · 더하기(인력 · 재료 · 기계 · 로직 · 고정) · 옵션 · 고름 · 자재표시 · 켜쌓기율 | 더한줄에 참조(400) | 그 SC 줄 `패치 · 입력값 · 고름 · 자재표시 · 켜쌓기율` | `RowModal.ts:163-187` · `RowSk.ts:62-79` · `Labor_Patch.py:28-45` | +| SK 참조 줄 | 같은 줄 모드 — 품 · 단가 · 빼기 · 더하기 | **옵션(입력값)** · 열린입력 SK 품 = 배율만 · 더한줄 참조 | 그 SC 줄 `패치` | `RowModal.ts:199`([옵션] 숨김) · `RowSk.ts:70-71` · `Cover_Model.ts:616` · `Labor_Patch.py:48-59` | +| **SC 참조 줄** | 「서고 원본 모달」 = **원본 문서를 고쳐 저장**(그 원본을 쓰는 모든 곳에 번짐) | 이 자리만 고침 · **다른 층이면 읽기만** | **원본 문서** | `Labor_Table.ts:274-279` · `Labor_RefEdit.ts:1-5,39-42` | +| 고정 줄(인력) | 별칭 · 위아래 · 삭제(우클릭) | **단가 · 이름 · 규격**(줄 모달 없음) | — | `Labor_Table.ts:281` | +| 자재 줄(재료) | 세 칸(자재구분 · 별도계상 · 운반비) | **단가**(M01 기준단가 고정) | 그 자재 줄 | `RowModal.ts:219-251` · `Labor_Doc.py:56-60` | +| 공통 | [단가산출로도 저장] = 그 줄(+패치)을 개인 층 새 SK | — | 새 SK(출처 없음) | `RowModal.ts:175-183` · `RowSk.ts:90-102` | + +--- + +## C. 원본이 나중에 바뀌면 + +| 일 | 넣은 쪽 지금 동작 | 근거 | +|---|---|---| +| 원본 SK · SC 를 남이 고침 | **따라감** — 셈마다 원본 읽음(한 셈 안 캐시만). 덮은 칸만 내 값 | `Labor_Expand.py:51-66` · 실측 E1: 밖 SC 계 129,072.99 → **481,406.31**(원본 SK 다른 줄 품 2) | +| 원본이 내가 덮은 줄을 뺌 · 바꿈 | 덮개 짝 잃음 → **그 덮개 조용히 빠짐** · SC 표 · 셈 답에 알림 없음(`안` 줄은 이름 · 단위 · 기준 · 까닭만) · 줄 모달을 열어야 「짝 잃은」 띠 | 실측 E2: 계 **8,949.24** · `짝잃음` 없음 · `Labor_Expand.py:150` · `Labor_Doc.py:648-654` · `Sangeun_Detail.ts:287-294` | +| 「원본 바뀜」 알림 | SK 바탕 로직 · 둘째 기초만(`바탕판`) · **SC 줄 패치 · SK 참조 더한줄 = 판 · 원값 안 남음** | `Sangeun_Detail.ts:159-161` · `Sangeun_Doc.py:140`(원값 버림) · `Labor_Patch.py:44` | +| 안 SC 원본에 줄 더함 | 밖 SC 따라감(실측 E3: 6,822.48 → 13,273.70) · 새 안 줄 수량 알약은 쓰는 쪽에서 다시 이어야 함(723-1) | `Labor_Expand.py:125-160` | +| 원본 지움(735) | 경고 → 확인 시 **쓰는 문서의 그 줄 통째 지움(덮개 · 패치째)** · 모든 층 훑음 · 권한 밖 = 409 막힘 · SYSTEM_ADMIN = 모든 층 쓰기 → **마스터 원본 지움이 개인 문서 줄까지 지움** · 되돌림 기록 `_합친것` | `Library_Delete.py:1-15,166-181` · `Layer_Access.py:3-7` | +| 중복 합치기(733-3) | 쓰는 곳 참조를 남김 쪽으로 옮김(쓰기 닿는 곳만) · 같은 내용이라 덮개 짝 유지 | `Library_Same_Router.py:7-9,201` · 지문 = 가리킨 문서 내용 `Library_Same.py:90-98` | +| B09 굳힘 | 가져올 때 닿는 참조 문서 통째 값(`참조사본`) · SK = 풀어 굳힘(GX 키) → 그 뒤 원본 바뀜 안 따라감 · 「마스터가 바뀜」 = `원본판` | `Labor_Ref.py:474-489` · `Item_Sangeun.py:1-15` · `Item_Source.py:10` | + +### C-곁. 조사 중 본 빈틈(579-2 밖 · 브레인 판단용) + +1. **B09 공사 호표 블록이 SC 줄 `패치`를 안 읽음** — 로직 줄 = 산근 키(로직 · 입력값 · 켜쌓기율 · 고름)만 · SK 참조 줄 = 굳힌 SK 만. M02 셈은 패치 반영 → M02 값 ≠ B09 값 가능. (코드 읽기 · 실측 안 함) `B09_Estimation_Labor_Source.py:286-298,311-316` 대 `Labor_Doc.py:518,532` +2. 덮개 짝 잃음이 SC 표에 안 보임(위 C 둘째 줄). +3. SK 에 SC 를 넣으면 금액 없음(E5) — 내역 20-1 「일위대가를 단가산출에 한 줄」과 어긋남 · 수량 기본값 규칙 필요. +4. M01 기계 = SK · SC [항목 추가]에서 막힘. + +--- + +## D. 사용자 원문 대 지금 + +| 원문 | 지금 | 판정 | +|---|---|---| +| 「연결정보는 가지고 있음」 | 참조 키 = 연결 · 출처 겸함 | 됨(판 · 지문 없음 · 원본 지우면 줄째 사라짐) | +| 「내부 데이터는 별도 수정」 | M01 기초 · SC 안 로직 · SC 안 SK 참조 = 덮개 됨 | 일부 | +| 〃 | SK 안 SK · SC 참조 = 수량만 · SC 안 SC = 원본 고침(번짐 · 위 층 읽기만) · 고정 · 자재 단가 · SK 참조 줄 옵션 | **안 됨** | +| 「어디서 복사했는지 알고」 | 줄 단위 사본 · 출처 칸 없음(본뜬 = 문서 단위 · [복사] 때만) | **안 됨** | +| 「선택하고 저장하는 시점에」 | 저장 때 굳힘 없음(참조 그대로) · 프로젝트 가져올 때만 굳힘 | **안 됨** | +| 「자유롭게 수정/삭제」 | 위 층 원본 고침이 내 값에 번짐 · 관리자 원본 지움이 내 줄을 지움 | **어긋남** | + +### 갈래 셋 + +| | (가) 참조 + 덮개 넓힘 | (나) 줄 안 통째 사본 + 출처 | (다) 위 층에서 넣을 때만 내 층 문서 사본 + 그 사본 참조 · 내 층끼리 = 지금 참조 + 덮개 | +|---|---|---|---| +| 뜻 | 원본 따라감 · 고친 칸만 내 값 · 출처 = 참조 키 | 넣을 때 그 줄 안에 내용 통째 · 원본 안 따라감 · 출처 {층, 주인, 키, 판} | 마스터 · 회사 것 = 지금 [복사] 길로 내 층 새 키(`본뜬` + 판) · 같은 원본 · 같은 내용 사본 있으면 재사용 · 줄은 그 사본을 가리킴 | +| 할 일 | SC 안 SC 줄 덮개(새 SC 패치 꼴) · SK 안 SK · SC 참조 펼침 + 세부 덮개(727-2 넓힘) · SK 참조 줄 옵션 · 고정 · 자재 단가 덮개 · 짝잃음 알림 · 패치 원값 · 판 | SK → SC = 로직 줄 + 패치 꼴로 풀기(바탕 참조 사슬 · 환산 단위 되돌림 필요) · SK → SK = 727-2 꼴 + 더한줄 풀기 · SC → SC · SK = 줄 안 SC 몸 새 꼴 · 판 대조 · [원본으로 다시 받기] | 서버 「층 문서 가져오기」 길 하나(`refs.carry` + `origin_mark` + 판 · 안 참조도 깊게 사본 · `_reused`) · 찾기 창 갈래 · 줄 꼬리표 「← 마스터 SK-…」 · SK 사본 열기 모달 · 판 대조 · [원본으로 다시 받기](선택) · 사본 둘 폴더 | +| 바뀌는 파일 | `Labor_Patch.py` · `Labor_Expand.py` · `Labor_Doc.py` · `Sangeun_Doc.py` · `Sangeun_Calc.py` · `Cover_Model.ts` · `Sangeun_Detail.ts` · `Labor_Table.ts` · `RowModal.ts` · `RowSk.ts` · 새 SC 줄 모달 · `Library_Same.py` · B09 `Labor_Source.py` (약 13) | `Find_Pick.ts` · 새 풀기 서버 길 · `Sangeun_Doc.py` · `Labor_Doc.py` · `Labor_Ref.py` · `Labor_Expand.py` · `Labor_Table.ts` · `Sangeun_Detail.ts` · `Library_Same.py` · B09 `Labor_Source.py` (약 11) | `Find_Pick.ts` · 새 서버 길(`Labor_Router.py` 또는 `Sangeun_Router.py`) · `Labor_Ref.py`(carry 깊은 갈래) · `Library_Same.py` · `Library_Same_Router.py` · `Labor_Table.ts` · `Sangeun_Detail.ts` (약 7) | +| 저장 꼴 | 그대로 + 패치 갈래 늘림 | SC 줄 새 갈래 `사본` · `출처` 칸 · SK 더한줄 `출처` | 그대로(참조) + 사본 문서 `본뜬 {층, 주인, 키, 판}` | +| 733 중복 | 지문에 패치 이미 듦(`Library_Same.py:99-112`) · 합치기 그대로 | 문서 지문 영향 작음 · `출처` 를 DROP 에 | **사본이 위 층 원본과 「같은 내용」으로 잡힘(실측 E4)** → 본뜬 짝은 묶음에서 빼야 함 · 같은 층 중복 막음(733-2)과는 안 부딪힘 | +| 735 지움 | 원본 지우면 **내 고침째 줄 사라짐**(지금 그대로 · 뜻과 부딪힘) | 원본 지워도 내 줄 그대로 · 출처만 「원본 없음」 | 위 층 원본 지워도 **내 사본 · 줄 그대로**(쓰는 곳 = 사본) · 내 층 원본 지움은 지금 길 | +| B09 굳힘 | 패치 갈래 늘어 C-곁 1 빈틈이 넓어짐 → 같이 고쳐야 | 새 사본 줄 · 패치 읽기 필요 | **그대로**(사본도 SK · SC 문서 = 719-1 · 참조사본 길) · C-곁 1 은 따로 | +| 기존 문서 옮기기 | 없음 | 위 층 · 내 층 참조 줄 거의 없음(SK 안 0 · SC 안 1) | 위 층 참조 줄 = SK · SC 안 **0** → 옮길 것 없음 · 새로 넣는 것부터 | +| 원본 바뀜 | 안 고친 값 몰래 바뀜(관리자 고침이 개인 단가에 번짐) | 안 바뀜 · 판 대조 알림 | 위 층 = 안 바뀜 · 알림 · 내 층끼리 = 따라감 | +| 걸림 | 일감 큼 · 번짐 · 지움 위험 남음 | 일감 큼 · 풀기(사슬 · 환산) 까다로움 · 같은 SK 를 여러 SC 에 풀면 내용 반복 | 사본이 내 서고 나무에 쌓임(원본 하나 = 사본 하나) · 그 사본을 여러 곳이 쓰면 사본 고침은 그 모두에 번짐(내 것 = 연결 원칙) | +| 크기 | 큼 | 큼 | **중** | + +--- + +## E. 권함 · 물음 + +**권함** — (다): 위 층에서 가져올 때만 내 층 사본(어디서 왔는지 + 그때 판) · 내 층 것끼리는 지금 참조 + 덮개. 원문의 「어디서 복사했는지 알고 · 내부 수정」을 채우고, 관리자 고침 · 지움이 개인 값에 번지지 않고, 기존 [복사] 길 · B09 굳힘 · 733 같은 층 중복 막음을 그대로 씀. 일감 중. + +**사용자에게 물을 물음(하나)** + +> 검색으로 넣은 단가산출 · 일위대가의 원본을 나중에 누가 고치면, 넣은 쪽은 어떻게 할까? +> ① 마스터 · 회사 것은 넣을 때 내 쪽에 복사(어디서 왔는지 기억 · 원본이 바뀌면 알림만) · 내 것끼리는 지금처럼 연결 — **권함** +> ② 내 것끼리도 늘 복사(같은 내용 문서 · 줄이 늘어남 · 중복 경고와 부딪힘) +> ③ 다 연결 그대로 + 안쪽 덮어쓰기만 넓힘(고치지 않은 값은 원본 따라 바뀜 · 관리자가 원본을 지우면 내 줄도 지워짐) diff --git a/docs/raw/요구_1102/사용자요구_1102.md b/docs/raw/요구_1102/사용자요구_1102.md index b17833a1c..6c4c1edc0 100644 --- a/docs/raw/요구_1102/사용자요구_1102.md +++ b/docs/raw/요구_1102/사용자요구_1102.md @@ -85,3 +85,7 @@ 4. 일위대가 불러오기 컨테이너의 별칭장부와 M01에서 관리하는 별칭 장부의 차이점. 내가 보기에는 중앙관리 형태가 더 나을것같은데 어떻게 생각함? → (브레인 안: 자동 장부 = M01 중앙 하나 · 불러오기 짝 = 승인 대기 · 불러오기 장부 화면 = 내 제안 목록 · 층 장부 짝은 후보로) 진행. 앞으로 이렇게 반복적으로 요청을 하겠음. 자체적으로 조사하여 작업진행. 단, 선택이 필요한 경우에만 물어볼것. + +## 요구 581 (11-02 · 사용자 · 579-2 복사 범위 물음 답) + +서로간의 독립성을 확보할 생각임. 여러군데에서 서로 연결할 경우 확인이 어려우며 하나를 바꾼다면 자연스럽게 연결로 데이터가 바뀌니 참조가 어려움. 다시말해서 단가산출과 일위대가의 연결고리정보는 M01의 기초데이터의 키 값으로 연결 정보를 알 수만 있게하고 데이터를 독립성을 가져야함. 이때 M02에서 만들어져 있던 정보들은 M02의 키값이 아니라 M01의 키값을 가져가야한다는 것임. 그리고 만약 단가산출과 일위대가에서 사용자가 변경한 값을 초기화를 한다면 연결된 키 값을 보고 다시 데이터를 가져오면 됨. 이해했음? 단가산출에서 초기화는 기본정보와 별도로 입력된 항목을 한번에 연결된 M01 키의 값으로 대체하면 됨. 초기화버튼은 삭제버튼 좌측에 배치.