|
|
|
@@ -0,0 +1,166 @@
|
|
|
|
|
# 조사 AF — 강조(하이라이트) 체계 전수 · 3D 측점 띠 바로 꺼짐 (요구 104 · 105)
|
|
|
|
|
|
|
|
|
|
기준 = HEAD `a22deacf6`(231-1 · 231-2 · 230-2 합친 뒤) · 코드 · 자료 · git 안 바꿈 · 재현은 시스템 임시 폴더 스크래치.
|
|
|
|
|
약칭 — DSel `A00_Common/design/design_selection.ts` · DVP `…/design_view_profile.ts` · DVC `…/design_view_cross.ts` · DP `…/design_profile.ts` · MK3 `B05_Profile/B05_Profile_UI_Markers.ts` · MI `…_Viewer_Marker_Input.ts` · SPK `…_Viewer_Structure_Pick.ts` · PKS `…_Structure_Pick_Session.ts` · SY `…_Selection.ts` · R `…_Profile_Render.ts` · SP5 `…_Structures_Panel.ts` · CM `…_Structures_Panel_Commit.ts` · LI `…_Structures_List.ts` · DrP `…_Drainage_Panel.ts` · DrPi `…_Drainage_Pipes.ts` · SV `B06_Section/B06_Section_UI_Section_View.ts` · SVP `…_Section_View_Profile.ts` · CV `…_Cross_View.ts` · SP6 `…_Page_Structures_Panel.ts` · DET `…_Cross_Detail.ts` · DTS `…_Cross_Detail_Select.ts` · NC `…_Cross_Notice_Chips.ts`
|
|
|
|
|
|
|
|
|
|
## 1. 한눈 결론
|
|
|
|
|
|
|
|
|
|
- 104 까닭 확정 — 3D 띠를 누르면 **누를 때 켜고(마커 듣개) 뗄 때 끔(3D 부재 고름 듣개)**. 부재 고름은 띠를 못 보고 「빈 곳 누름」으로 읽어 고름 전체를 지움(세션 · 띠 · 핀 · 종단 선). 09-04(2878ab961)부터 있던 구멍 · 오늘 띠 누름이 폼 · 세션까지 움직이게 되어(188-1 · 216-1) 눈에 띔.
|
|
|
|
|
- 스크래치 재현 — 진짜 코드로 누름 뒤 빨강 · 핀 · 세션 {at:120} → 뗌 뒤 노랑 · 핀 끔 · 세션 비움(코리도 있든 없든 같음). 「누름이 띠에 맞으면 부재 고름 건너뜀」 흉내로 뗌 뒤에도 유지.
|
|
|
|
|
- 강조 자리 = 화면 7곳 · 25개 남짓 · 상태 변수 15개 넘게 · 공유는 세션 한 칸(`structure-pick`)뿐. 알림 장치(`subscribeSelection`)는 있으나 **듣는 곳 0** — 화면끼리 손으로 서로 부르는 사슬.
|
|
|
|
|
- 되풀이 까닭 — 원천 여럿 · 같은 누름을 듣개 둘이 받음 · 재진입 가드가 뒤 고름을 버림 · 「해제」 뜻이 화면마다 다름 · 다시 계산이 강조를 버림 · 찾는 거리 제각각.
|
|
|
|
|
- 추천 — (가) 104 구멍 두 줄 먼저(작음) → (나) 「세션 한 칸 = 유일 원천 · 화면은 구독해 파생」으로 단계별 묶음(해제 규칙은 사용자 협의 뒤).
|
|
|
|
|
|
|
|
|
|
## 2. 강조 지도
|
|
|
|
|
|
|
|
|
|
| 자리 | 켬 | 끔 · 리셋 | 상태 | 듣는 것 · 다시 그림 때 |
|
|
|
|
|
| --- | --- | --- | --- | --- |
|
|
|
|
|
| 3D 측점 띠(빨강) + 핀 | MK3:493 `selectStation` ← MI:124 누름 · DVP:143 · :149 · :229 · :332 | 같은 함수 null ← PKS:63 → SY:112 · DVP:332 · :568 | MK3:121 `selectedStationId` | 다시 그림(MK3:403)은 유지(:437) · 숨은 핀은 마지막 자리에 남음(:487-491) |
|
|
|
|
|
| 3D 구조물 부재(자체발광) | SPK:134 누름 · :153 `selectAtChainage` · :160 `select` | SPK:134 빈 곳 = null · `selectAtChainage(null)` | SPK:53 `selected` | 코리도 새로 만듦 → reapply(`B05_Profile_UI_Viewer.ts:166`) 유지 |
|
|
|
|
|
| 종단 측점 세로선 · 표 값 칸 · 유토곡선 선 | DP:243 `selectStation`(토글 · 바깥 알림 :248 는 이것만) · :519 `setSelectedStation` · :569 `setSelectedStructure` | R:223 빈 곳 · R:457 · DP:610 · `setSelectedStructure(null)`(keepStation 거짓이면 끔 · B06 만 참 SVP:268 · 177-3) | DP:211 | 매 그림 다시 칠함(R:130 · :267) |
|
|
|
|
|
| 종단 구조물 알약 · 구간 띠 | R:326-332 누름 · DP:246 · :522 · :570 짝 | 다시 누름 · R:226 · DP:562-564 목록에 없으면 조용히 버림 | DP:218 | 관 알약 id = `pipe-`+toFixed(2)(`B05_Profile_UI_Page_Structures.ts:207`) → 관이 움직이면 끊김 |
|
|
|
|
|
| 배수유역도 유역 채움 · 유역 목록 줄 | DrP:323 `selectBasin` | **DrP:364 재계산마다 끔** | DrP:128 | 지도 그림 rAF(DrP:305) |
|
|
|
|
|
| 배수유역도 관 마커 | DrPi:178 ← DrP:642 | **DrPi:172 `setPipes` 재계산마다 null** | DrPi:70 | 폼 · 목록 · 종단은 관을 계속 고름 → 지도만 꺼짐 |
|
|
|
|
|
| 배수유역도 측점 마름모 | DrP:598 `markStation`(SY:73 만) | 같은 함수 null | DrP:130 | 지도 · 유역에서 고를 땐 안 옮김(SY:98-125) |
|
|
|
|
|
| 좌측 목록 줄 | LI:223(구조물) · LI:231-233(관 · **폭 0.05 m**) | `renderList` 마다 다시 셈 | SP5:177 · :179 · :183 | 관 0.51 m 안 옮김에 `selectedPipeChainage` 안 고침(SP5:590-600) → 줄 강조 빠짐 |
|
|
|
|
|
| 좌측 폼 | CM:94 `loadForm`(늘 onSelect) · CM:163 `loadPipeForm` | SP5:374 `resetForm` · EV `startNew`(+세션 비움) | 위와 같음 | `setStructures`(SP5:556 · 저장 · 새로 읽기 뒤)가 관 폼 닫고 onSelect(null) → 종단 선 · 알약 끔(DVP:349) |
|
|
|
|
|
| B06 카드 고름 테두리 | SV:293 `selectStation` · SV:587 `focusStation` | SV:295 다시 누름 · :322 `clearSelection` · :598 `revealStation`(알림 없이) | SV:102 | 다시 그림이 다시 얹음(SV:350) |
|
|
|
|
|
| B06 `--span` 범위 테두리 · 포장층 | SV:607 `selectMark` → :256 `applySpan` | `selectMark(null)` · span 거짓(SV:609) | SV:245 `spanMarkId` | 다시 얹음(SV:374) · **카드 해제 DVC:388 · `releaseCross` DVC:498 이 `selectMark(null)` 안 부름 → 남을 수 있음** |
|
|
|
|
|
| B06 면적 띠 | CV:286 · SV:309 | SV:298 · CV:221 | SV:104 · CV:192 | 고른 카드에서만 다시 얹음 |
|
|
|
|
|
| B06 벽 · 집수정 · 관 · 도수로 형상 · 세월교 · BOX 몸체 | CV:232 · `…_View_Box.ts:52` | 같은 토글 · CV:262 · DVC:498 | `…_Page_Station_Controls.ts:272` · `…_Ford_Controls.ts:227` · :428 | 다시 얹음 |
|
|
|
|
|
| B06 계획선 조각(보라) | CV:308 → `…_Design_Pick.ts:523` | CV:205 | `…_Design_Pick.ts:278` | 고른 카드 · 다른 고름 없을 때만 다시 얹음(CV:325) |
|
|
|
|
|
| B06 좌측 조정 묶음 | `…_Adjust_Dock.ts:162` | :114 | DOM | 카드 다시 그릴 때마다 다시 붙고 좌측을 스크롤(:184) |
|
|
|
|
|
| 횡단 → 종단 선 · 알약 | SVP:270 `showCard` · SVP:266 | `showCard(null)` | DP 상태 공유 | — |
|
|
|
|
|
| [상세] 모달 칸 · 그림 | DET:304 | 다시 누름 · 키 없어짐 DET:297 | DET:293 | paint 마다 다시 얹음(DET:337) |
|
|
|
|
|
| [상세] 모달 선 조각 | DTS:193 | **DTS:212 다시 칠할 때마다 지움**(창 크기 · 카드 다시 세움 DET:316 · :412) | DTS:167 | 「바로 꺼짐」 또 한 자리 |
|
|
|
|
|
| 알림 칩 측점 단추(207) | NC:65(SV 카드 고름 읽음) | 고르면 목록 닫음 NC:88 | NC:47 | 구독 없음 → 열린 동안 고름이 바뀌면 낡음 |
|
|
|
|
|
|
|
|
|
|
## 3. 고름 원천 · 차례
|
|
|
|
|
|
|
|
|
|
원천 여덟 무리(공유는 ①뿐):
|
|
|
|
|
① 세션 한 칸 `structure-pick` {at · sid · key} — DSel:150 `selectDesign`. 쓰는 곳 B05: DVP:118 `rememberPick`(알약 :182 · 측점 :244 · 관 목록 :322 · 구조물 목록 :345) · PKS:62 · :68(3D) · EV `startNew` / B06: DVC:372(부재) · :390(카드 해제) · :398(카드) · :515(`releaseCross`) · SP6:207 · :233(231-2 목록 고름 늘) · :319(관). 읽는 곳: DVP:135 · PKS:34(되살림 DVP:252 · :560) · DVC:466 · :569 · SP6:197 · :409.
|
|
|
|
|
② 3D 띠 MK3:121 ③ 3D 부재 SPK:53 ④ 종단 DP:211 · :218 ⑤ 좌측 폼 SP5:177-183 ⑥ 배수유역도 DrP:128 · :130 · DrPi:70 ⑦ B06 SV:102 · :104 · :245 + 형상 · 계획선 · `preferredId` · `openingAtStation`(SP6) ⑧ 모달 · 칩.
|
|
|
|
|
|
|
|
|
|
누가 이기나:
|
|
|
|
|
- B05 안 = 손 사슬 + 재진입 가드 `selectionSyncing`(DVP:216). 가드가 켜진 동안 들어온 고름은 **통째로 버려짐**(SY:79 · :99 · DVP:323 · :346) → 188-1 이 끝에 `remember`(SY:96)로 덮어 「마지막 하나」를 맞춤.
|
|
|
|
|
- 세션 = 한 누름 안에서도 여러 번 적힘 — 측점선 누름 → 폼 콜백이 구조물 id 적음 → 끝에 측점으로 덮음. 마지막 `selectDesign` 이 이김.
|
|
|
|
|
- B05 ↔ B06 = 숨은 보기는 세션만 남기고 보일 때 다시 풂(DVP:558 `syncPick` · DVC:564 onShow → SP6 `load()` → `restoreStructurePick`). 다시 풀 때 거름(노면공 `coverable`)이 길마다 따로 넘겨져 한 곳 빠지면 다른 것이 열림(조사 AD · 231).
|
|
|
|
|
- 덮어쓰는 길 — (a) 3D 빈 곳 누름 PKS:62 세션 비움 = 104 (b) 새로 놓기 (c) 카드 해제 · `releaseCross` (d) `setStructures` 가 관 폼 닫음 (e) 배수 재계산이 지도 강조 끔.
|
|
|
|
|
|
|
|
|
|
## 4. 104번 까닭 · 재현
|
|
|
|
|
|
|
|
|
|
차례(3D 띠 하나 누름):
|
|
|
|
|
1. 누름 — MI:105 `handlePointerDown` → :124 `markers.selectObject(hit)` → MK3:523 → :493 띠 빨강 · 핀 · :502 알림 → DVP:380 → 종단 선 + SY:78 → 폼 열기(`openAtStation`) · 세션 {at}. MI:125 는 `stopPropagation` — 같은 캔버스의 다른 듣개는 그대로 돎.
|
|
|
|
|
2. 같은 누름을 SPK:121 `handleDown` 도 받아 적음 — `blocked()`(MI:184)는 「점 끌기 · 이동 대기」만이라 띠 누름은 안 막힘.
|
|
|
|
|
3. 뗌 — SPK:128 `handleUp` → :98 `pickAt` 은 **코리도 무리만** 봄(띠는 마커 무리) → 띠 뒤 리본 · 지형이거나 코리도가 없으면 null → :136 `onPick(null)` → PKS:61-64 세션 비움 + `selectStationOfPipe(null)` → SY:112 띠 노랑 · 핀 끔 → DVP:381 종단 선 끔 · 좌측 `selectPipeByChainage(null)`.
|
|
|
|
|
4. 결과 — 누름~뗌 사이(0.1초 안팎)만 빨강. 1에서 연 구조물 폼은 남을 수 있음(관 폼만 닫음 SP5:603-609) · 세션이 비어 B06 로 가면 카드 없음 · `--span` 은 남을 수 있음(2장).
|
|
|
|
|
|
|
|
|
|
갈래:
|
|
|
|
|
- 관 측점 띠 = 뗌이 띠 뒤 관 부재를 집으면 관 측점으로 다시 켜짐(SY:109) · 리본에 맞으면 꺼짐.
|
|
|
|
|
- 벽 등 구조물 위 일반 측점 = 부재 강조만 남고 띠는 꺼짐(`selectStationOfPipe` 는 관 측점만 찾음 SY:103-108).
|
|
|
|
|
- 언제부터 — 2878ab961(09-04 3D 부재 고름)의 「null → `selectStation(null)`」. 08-05 규칙 「3D 빈 곳 누름은 측점 고름을 안 풂」(MK3:526-529)과 정면으로 어긋남.
|
|
|
|
|
|
|
|
|
|
스크래치 재현(진짜 MK3 · MI · SPK · SY · PKS · DSel + three 0.185 · 가짜 캔버스 · 저장소 밖):
|
|
|
|
|
|
|
|
|
|
| 경우 | 누름 뒤 | 뗌 뒤 |
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
| 코리도 있음(리본) | 띠 #ef4444 · 핀 보임 · 세션 {at:120} | 띠 #facc15 · 핀 끔 · 세션 null |
|
|
|
|
|
| 코리도 없음 | 같음 | 같음 |
|
|
|
|
|
| 흉내 고침(누름이 마커 · 띠에 맞으면 부재 고름 건너뜀) | 같음 | 빨강 · 핀 · 세션 그대로 |
|
|
|
|
|
|
|
|
|
|
시험 빈칸 — MI · SPK 를 한 누름으로 함께 도는 시험 없음(test_231_1 은 `onPick` 을 바로 부름) → 104 를 못 잡음. 위 스크래치 꼴이 고칠 때 시험 바탕.
|
|
|
|
|
곁 구멍 — three 레이캐스트는 `visible` 을 안 봄(three.cjs `intersect`) → 숨은 핀(마지막 고른 자리에 남음) · 꺼 둔 측점선 · 라벨이 누름을 가로챔(MI:89 첫 맞음). 띠 가운데를 누르면 숨은 핀에 먼저 맞아 띠가 안 켜짐(스크래치에서 실제 겪음).
|
|
|
|
|
|
|
|
|
|
## 5. 되풀이 구조 원인
|
|
|
|
|
|
|
|
|
|
1. 원천이 여럿 — 공유 세션 하나 + 화면마다 자기 변수. 세션은 「넘김용」이고 화면 안 강조는 자기 변수가 진짜라 둘이 어긋남(104 = 변수 켬 → 세션 지움 → 변수 끔).
|
|
|
|
|
2. 알림 장치 놀고 있음 — `subscribeSelection`(DSel:135) 듣는 곳 0 · DVP 한 파일에 고름 길 일곱(측점선 :148 · 지도 :176-177 · 알약 :180 · 관 목록 :321 · 구조물 목록 :342 · 3D 띠 :380 · 3D 부재 PKS:60)이 저마다 다른 화면을 다른 차례로 부름 → 길마다 빠지는 화면이 다름(지도 마름모 · 관 → 구조물 때 지도 강조 남음).
|
|
|
|
|
3. 재진입 가드가 「막기」 — 순서 의존 · 뒤 고름 버림 → 덮어쓰기 덧댐(188-1).
|
|
|
|
|
4. 같은 누름을 듣개 둘이 받음 — 3D(마커 · 부재) · 종단(측점선 · 도구 R:207-221) · B06(카드 · 형상 SV:426 캡처). 서로 다른 결론을 차례로 적음.
|
|
|
|
|
5. 「해제」 뜻이 제각각 — 3D 빈 곳(08-05 안 풂 ↔ 09-04 풂) · 종단 빈 곳 풂 · 카드 다시 누름 풂 · 보기 오감 `releaseCross` 풂. 어디까지 푸는지(세션 · 폼 · span)도 다름.
|
|
|
|
|
6. 다시 계산이 상태를 버림 — 배수 재계산(DrP:364 · DrPi:172) · [상세] 조각(DTS:212) · `setStructures`. 반대로 B06 카드는 다시 그림이 다시 얹음 → 화면마다 규칙이 다름.
|
|
|
|
|
7. 찾는 거리 · 키 제각각 — 0.51(DSel) · 0.05(LI:232) · 0.01(SPK:75) · 0.006(213) · 관 알약 id toFixed(2) → 관이 조금만 움직여도 강조가 안 이어짐(7장과 같은 뿌리).
|
|
|
|
|
8. 거름(노면공)을 부르는 쪽마다 넘겨야 함 → 한 곳 빠지면 샘(AD · 231-1 이 다섯 곳에 덧댐).
|
|
|
|
|
|
|
|
|
|
## 6. 고칠 방향 비교 · 추천
|
|
|
|
|
|
|
|
|
|
(가) 구멍만 막기 — 각 1~5줄 · 위험 낮음 · 고친 곳마다 시험 하나
|
|
|
|
|
- a1(104) SPK 가 마커 · 띠에 맞은 누름을 건너뜀(`B05_Profile_UI_Viewer.ts:261` `blocked` 에 「누름이 마커에 맞음」 · MI 에 값 하나) + `onPick(null)` 은 3D 부재 강조만 풀고 세션 · 측점 고름은 안 지움(PKS:61-64 · 08-05 규칙).
|
|
|
|
|
- a2 숨은 핀 · 꺼진 측점선을 레이캐스트에서 뺌(MI:89 · `visible` 거름).
|
|
|
|
|
- a3 배수 재계산 뒤 고른 관 · 유역 다시 얹음(DrP:364).
|
|
|
|
|
- a4 카드 해제 · `releaseCross` 에 `selectMark(null)`(DVC:388 · :498).
|
|
|
|
|
- a5 목록 관 줄 폭 0.05 → `PIPE_MATCH_M` · 옮김 때 고른 자리 갱신(LI:232 · SP5:590-600).
|
|
|
|
|
- a6 지도 · 유역 고름 때도 마름모 옮김(SY:98-125 에 `markStation`).
|
|
|
|
|
- 흠 — 오늘만 177-3 · 177-4 · 188 · 189 · 216 · 231 · 104 일곱 번째 덧댐 · 다음 길이 또 샘.
|
|
|
|
|
|
|
|
|
|
(나) 원천 하나 + 강조 파생
|
|
|
|
|
- 원천 = DSel 세션 한 칸(이미 있음) + 고름 갈래 칸 하나(측점 · 구조물 · 부재 · 관 — 189 세 갈래를 값으로).
|
|
|
|
|
- 쓰기 = 모든 누름은 `selectDesign` 만 · 화면끼리 직접 부르기와 `selectionSyncing` 지움.
|
|
|
|
|
- 읽기 = 화면마다 `subscribeSelection` 듣개 하나 → 「값 → 그 화면 강조」 함수 하나(3D 띠 = 측점 id · 종단 = `graphTargetAt` · 폼 = `resolveSelection` + `coversAtStation` · 카드 · span = `applyStructurePick`) · 다시 그림 · 다시 계산 뒤에도 같은 함수로 다시 얹음.
|
|
|
|
|
- 해제 규칙 표 하나 · 찾는 거리 한 값(7장).
|
|
|
|
|
- 크기 큼(DVP · SY · PKS · DVC · SP6 · SV · DP · CM · DrP 등 10파일 안팎 · 300~500줄) · 위험 중~높음 — 지금 규칙을 박은 시험(165 · 177_3 · 177_4 · 188_1 · 189_1 · 216_1 · 231_1 · selection_single)이 안전망.
|
|
|
|
|
- 차례 — ① 값 모양 · 해제 규칙 사용자 협의 ② B05 3D · 종단을 구독으로(104 길 포함) ③ 좌측 폼 ④ B06 카드 · span ⑤ 지도 · 모달 · 칩 ⑥ 직접 부르기 · 가드 지움. 단계마다 위 시험 통과.
|
|
|
|
|
|
|
|
|
|
231 겹침 — 231-1(64c9470f9) · 231-2(4db793117) 모두 메인에 합쳐짐. a1 은 231 이 만진 PKS `onPick` 안 null 갈래만 → 충돌 없음 · test_231_1 함께 돌림. 231 의 `coverable` 은 (나) ③ 폼 파생 함수 한 곳으로 들어감.
|
|
|
|
|
|
|
|
|
|
추천 — a1 + a2 먼저(104 바로 풂) → (나)는 협의 뒤 단계별 · a3~a6 은 (나) ②~⑤에 흡수(급하면 따로).
|
|
|
|
|
⬜ 사용자 협의 — 「3D 빈 곳 누름 = 고름 해제」 여부(08-05 안 풂 ↔ 09-04 풂) · 해제가 어디까지(세션 · 폼 · span)인지.
|
|
|
|
|
|
|
|
|
|
## 7. 소수 측점 1단위 반올림 (요구 105)
|
|
|
|
|
|
|
|
|
|
언제 · 어떻게
|
|
|
|
|
| 날짜 · 커밋 | 장 | 내용 |
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
| 07-30 12f166650 · 08-02 32fd199db | — | 「같은 자리」 폭 0.51 m — ±0.5 라 사실상 1 m 사사오입 맞춤(고름 · 유역↔관 짝) |
|
|
|
|
|
| **08-28 0979927df** | — | **기억하신 그것** — 서버가 관 · 구조물 측점을 `int(round())` 로 같은 정수 m 격자 측점에 붙임(관 80.17 = 카드 80 에 이름표만 · 까닭 = 횡단 파일 이름이 정수 m) |
|
|
|
|
|
| 09-29 867c4650c · 08e493f13 | 20장(사용자 확정 9-29) | 붙임 풂 — 카드 80 과 80.17 따로 · 파일 이름 소수 2자리 · 0.005 m 안만 합침(`B05_Profile_Engine_Sections_Core.py:349-353`) · **화면 표기만 정수**(119.8 → 5+20) |
|
|
|
|
|
| 09-29 8a9456579 | 24-2d | 0.51 을 `PIPE_MATCH_M`(DSel:17) 한 값으로 — 사본 · 손으로 적은 0.51 은 TS 21곳 남음 |
|
|
|
|
|
| 10-10 002165f04 · ca3786115 | 213-1 · 219-1 | 같은 측점 폭 0.006 m(서버 · TS 짝 `B05_Profile_UI_Profile_Alignment.ts:202`) |
|
|
|
|
|
| 10-10 42673505e | 231-1 | 넘김 카드 한 곳만 「찾는 거리 안 가장 가까운 카드」(관 80.17 → 카드 80 막음) |
|
|
|
|
|
|
|
|
|
|
지금 동작(관 80.17 · 카드 80)
|
|
|
|
|
- 고름 풀기 = 0.51 안 관 먼저(DSel:94 · SY:131-142 · SVP:43 · :276-279) → 카드 80 을 눌러도 관 80.17 폼 · 종단 관 선. 「관 먼저」는 9-29 전 「한 카드」 전제.
|
|
|
|
|
- 0.51 안 **첫** 항목 — DVC:128-131 `ownerAt` · `B06_Section_UI_Page_Structures_Spec.ts:146-148` · `…_Pipe_Options.ts:68-69` · `B05_Profile_UI_Profile_Structures.ts:121` · `:181` · `B05_Profile_UI_IrregularStations.ts:483-543` → 1 m 안 소수 측점 둘이면 엉뚱한 것을 고름 · 옮김 · 지움(앞 셋은 코드로 읽은 추정).
|
|
|
|
|
- 표기 `common_util/common_util_station.ts:24` 반올림 → 80 과 80.17 둘 다 「4+0」 · 119.8 = 「5+20」.
|
|
|
|
|
- 바른 본보기 — `B06_Section_UI_Page_Structure_Pick.ts:61`(231-1) · `design_structure_pipe_calc.ts:63-68`.
|
|
|
|
|
|
|
|
|
|
흠 — ① 9-29 뒤 0.17 m 떨어진 두 카드를 폭 0.51 이 한 자리로 봄 ② 관 측점 ↔ 일반 측점 혼동 ③ 폭 일곱 갈래(0.005 · 0.006 · 0.01 · 0.02 · 0.05 · 0.1 · 0.51) ④ 다른 두 카드가 같은 글자로 보임.
|
|
|
|
|
|
|
|
|
|
지금 자료(검증 프로젝트 13개 · 읽기만)
|
|
|
|
|
- 관 136/136 개 모두 소수(자동 배치 3자리 484.213 · 고친 것 2자리) · 20 m 일반 측점 1 m 안 관 = 프로젝트당 0~4개(대부분 11 중 4) · 엄상준_검증 80.17(초기 80.374 · 카드 80 옆) · 263.31(초기 263.206 · 213 · 219 방향키 흠 자취).
|
|
|
|
|
- 구조물(structures.json 있는 4개) 1/4 소수(표지 127.86).
|
|
|
|
|
|
|
|
|
|
근거(지식DB)
|
|
|
|
|
- 별표2(`resources/knowledge/original/법률/산림자원의 조성 및 관리에 관한 법률 시행규칙/별표/별표2_…md` L25) — 20 m 중심말뚝 · 구조물 지점 보조말뚝 · 정밀도 규정 없음.
|
|
|
|
|
- 교재 `산림과임업기술(임도)/2. 임도/5. 설계.md` L157 — 「No.11+13」 정수 예 · 소수는 곡선 BC · EC(L184-189)뿐.
|
|
|
|
|
- 실무 자료 — 오솔길 PIN 보조측점 449개 · 구조물BOM 42개 · 울진 · 영덕 수량산출 = 구조물 · 횡단 측점 전부 정수 m · 소수는 곡선점 · 운반거리 셈표뿐.
|
|
|
|
|
- 품셈 1-2-2(`원가계산/산림_표준품셈/본문/제01장_적용기준/1-02_설계_및_수량.md` L53-60) — 연장 · 관 길이 소수 2자리(측점 규정 아님).
|
|
|
|
|
- 관이 꼭 소수 자리여야 할 까닭 — 못 찾음. 계곡 관도 0.5 m 안 옮김은 실무 꼴과 같음. 곡선점은 소수가 맞으나 구조물 기준 측점 아님.
|
|
|
|
|
|
|
|
|
|
정수 맞춤 — 넣을 자리(지금은 어디서도 정수로 안 맞춤 · 0.01 이거나 날값)
|
|
|
|
|
| 길 | 자리 | 지금 | 맞춤 |
|
|
|
|
|
| --- | --- | --- | --- |
|
|
|
|
|
| 좌측 폼 시작 · 기준 · 종료 측점 | `B05_Profile_UI_Structures_Fields.ts:142` · `:144`(잔여 칸 step 0.1 · 막지 않음) · `:156-171` 정규화 · `:182-199` 읽기(날값) | 날값 | step 1 · 확정 때 반올림 |
|
|
|
|
|
| 구간형 시작 · 끝 | `B05_Profile_UI_Structures_Panel_Commit.ts:307-308`(기준 − 앞 길이 · + 길이 0.1 m) | 소수 | 기준만 맞추면 시작 · 끝 소수 남음 · 측점은 세 곳에 심김(`B05_Profile_Engine_Sections.py:285-311`) |
|
|
|
|
|
| 종단 알약 · 측점선 끌기 · 우클릭 추가 | `B05_Profile_UI_Structures_Marks.ts:339` · `B06_Section_UI_Longitudinal.ts:186` · `B05_Profile_UI_Profile_Structures.ts:81` · `B05_Profile_UI_Viewer_Menu.ts:79` | 0.01 | 1 m |
|
|
|
|
|
| 방향키 | `B05_Profile_UI_Profile_Panel_Tools.ts:36` · `:237` | 0.1 m | 1 m(219 소속 규칙 그대로) |
|
|
|
|
|
| 배수유역도 관 놓기 · 끌기 | `B05_Profile_UI_Drainage_Pipes.ts:236` · `:264-294` | 날값 | 1 m |
|
|
|
|
|
| B06 관 옮김 · 폼 | `B06_Section_UI_Page_Structures_Panel.ts:483` · `:265-270`(**0.51 m 넘을 때만 옮김 → 80.17→80 고침은 무시됨**) | 0.01 | 1 m · 폭 거름 손봄 |
|
|
|
|
|
| 서버 자동 배치 · 재계산 · 노선 바뀜 재투영 | `common_util/common_util_drainage_detail.py:437-457`(1 m 걸음이나 시작이 소수) · `:476-490`(관 재계산 한 곳 `round(,2)`) · `common_util/common_util_drainage_pipes.py:207-230`(좌표 정본 → 다시 소수) | 소수 | 재계산 한 곳 · 재투영 뒤 반올림 |
|
|
|
|
|
| 기존 자료 | pipe_points.json · structures.json | 소수 | [정수 맞춤] 단추 |
|
|
|
|
|
|
|
|
|
|
- 받는 곳에서 한 번 — 화면은 `moveById`(SP5:670) · 폼 commit · 관 목록 문(DrPi `moveTo` · `addAtChainage` · `addAt` · 끌기) · B06 `movePipeTo` · `KEY_STEP_M`, 서버는 관 재계산 한 곳 + 재투영 뒤. 서버에서만 자르면 시설 옵션 이어받기 폭 0.05(`common_util_drainage_pipes.py:371`)를 넘어 관 종류 · 옵션이 기본값으로 돌아감 → 화면 입력에서 맞춤이 먼저.
|
|
|
|
|
- 다시 쓸 함수 — `design_profile_free.ts:79` `snapStation`(215-1 79 m → 80 m) · `B05_Profile_UI_Profile_Guard.ts:79` `snapToMasterStations` · 서버 격자 합침 `B05_Profile_Engine_Sections_Core.py:347-354`.
|
|
|
|
|
|
|
|
|
|
영향 — 관 길이 · 형상은 가까운 측점에 붙어 그대로(`B06_Section_Engine_Culvert.py:639-666`) · 정수 관이 일반 측점 자리면 서버가 이미 한 카드로 합침(Sections_Core:349-353 · 08-28 꼴) · 정수 파일 이름은 옛 규칙과 같아짐(`B05_Profile_Engine_Sections.py:130-134`) · 225 관보호공 0.1 m 이동은 횡단 안 자리라 무관.
|
|
|
|
|
기존 자료 정리 함정 — 한꺼번에 옮기면 213 편집 키 「사라진 것 하나 · 새것 하나」 규칙(`B05_Profile_UI_Profile_Alignment.ts:189-199`)이 안 맞아 옛 계획고 편집이 [저장] 때 버려짐 · B08 · M02 `pipe@측점` 키는 [저장]을 거쳐야 이름이 따라감(`M02_Item_Snapshot.py:227`) · 80.17 자리 횡단 설계 · B07 도면 id 는 고아 · 관 id `pipe-`+toFixed(2) 세션 고름 한 번 풀림 → 단추는 하나씩 옮기는 길(213 따라감) + [저장] 거침.
|
|
|
|
|
깨질 시험 — test_b05_station_roundtrip(119.8 · 120 따로) · test_b06_patch_station · test_b05_b06_save_roundtrip · test_b05_extra_stations_supplier · test_213_1(263.206).
|
|
|
|
|
|
|
|
|
|
방안
|
|
|
|
|
- A 정수 강제 — 입력 · 끌기 · 방향키 · 자동 배치 모두 1 m. 실무 표기와 같음 · 9-29 확정을 뒤집음. 단 81 처럼 격자 옆 1 m 카드는 남음.
|
|
|
|
|
- B 일반 측점 붙기(스냅) — 일반 측점 ±폭 안이면 그 측점으로(snapStation 재사용) · 밖이면 정수 m. 「격자 옆 소수 측점 없애기」에 가장 바로.
|
|
|
|
|
- C [정수 맞춤] 단추 — 기존 소수 관 · 구조물을 하나씩 옮겨 편집 키가 따라가게 · [저장]으로 마침.
|
|
|
|
|
- 공통 — 고름 · 강조는 측점 id(카드 `station_id` · 관 id)로 정확히 잇기 · 같은 측점 폭 상수 하나 · 반올림은 표시에만.
|
|
|
|
|
|
|
|
|
|
추천 — A + B + C(입력 1 m 단계 · 일반 측점 붙기 · 기존 자료 단추) · 고름 폭은 한 값으로. 정수 · 붙기면 관 80 = 카드 80 한 자리라 흠 ①②④가 함께 사라짐. 크기 중(화면 받는 곳 6~7곳 각 1~3줄 + 서버 두 곳 + 단추) · 위험 중(213 편집 키 · B08 키 · 깨질 시험 다섯).
|
|
|
|
|
⬜ 사용자 확정 — 9-29 「저장값 소수 · 표기만 정수」를 「저장값도 정수 m」로 바꿀지 · 붙기 폭(예 1 m) · 구간형 시작 · 끝도 정수인지.
|