chore(조사): 요구 304 분석 H — 계산 자리 시간 측정 · 보안 등급 · 실행 자리 스위치 설계

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AbccG79TsSMUjnGqBq1MUE
This commit is contained in:
2026-10-20 20:33:01 +09:00
co-authored by Claude Opus 5.5
parent 4939844cb2
commit 714b30196d
@@ -0,0 +1,238 @@
# 요구 304-1 (D2) 계산 자리 — 시간 먼저 · 보안 · 스위치 (분석 · 코드 고침 없음)
- 원문 = `docs/raw/요구_1020/사용자요구_1020.md` 요구 298-5 · 302-2(D2) · 304-1 · 앞 자료 = `2026-10-20_요구298_F_보안_속도.md`(F) · `2026-10-20_요구298_D_노선저장_토스트_메모리.md`(D) 계획고 덮어쓰기 절.
- 기준 = `main_laptop_1` `406556c3b` · 랩탑(ESD_LAPTOP) · Node 22.17 · Python 3.12.7 · 다른 창 병행 중(같은 값 ±30% 흔들림).
- 추정 = 안 잰 값 · 그 밖은 실측.
## 0. 결론
- 계산 자체는 빠름 — B05 · B06 조작 한 번의 TS 셈 = 계획고 ▲ 36~43 ms · 노선 점 놓기 70~82 ms(그중 발자국 그림 자료 25~36 ms). B09 총괄 셈 0.03 ms.
- 서버로 옮기면 붙는 것 = 회선 20~80 ms + **Node 새 프로세스 0.1 s + 자료 넘김 0.1~0.15 s** 또는 **파이썬 짝 6~100 배 느림** → 조작 한 번 0.2~3 s. 「끌면서 0.1 s」 · 「놓고 0.3 s」는 지금 서버 길로 못 맞춤(상주 Node 를 만들면 0.05~0.1 s 가능 · 추정).
- 보안 이득은 계산 자리보다 **S1(개발 서버가 원본 TS · 한글 주석 · 소스맵째 내줌 — 랩탑 메인 5173 에서 확인)** · S2 · S4 가 먼저 — 그대로면 무엇을 서버로 옮겨도 원본이 새어 나감.
- 방향 = **F 의 (d) 섞음 + 스위치판 하나** — B05 · B06 조작 계산 = 「둘 다」(브라우저 미리보기 + [저장] 서버 정본) · 값어치 A(B09 · M01 · M02 · 배분 · 추천 · 배수) = 「서버」 · 도구 · 그림 = 「브라우저」. 스위치는 **빌드 때 값**이어야 보안이 됨(실행 중 값이면 코드가 묶음에 남음).
- D2 계획고 덮어쓰기 = 같은 「옮기기」를 브라우저(TS) · 서버(파이썬 짝)가 각자 하고 둘 다 저장에 씀 — 「코드 두 벌 + 정본 두 곳」 둘 다 원인 → 「[저장] 정본은 늘 서버 한 곳 · 저장 본문은 사용자 입력만」을 구조로 박음.
## 1. 측정 방법 · 견본
| 항목 | 방법 |
|---|---|
| 견본 | `resources/tester/fixtures/golden_472`(검증_랩탑메인 노선 370 사본 · 읽기만) — 노선 1,080 m · 측점 57 · 노드 27 · 관 1 · 구조물 0 · 측점당 지반 표본 81 · 상세 1.45 MB · 격자 2.1 MB. 구조물 0 이라 구조물 셈은 가벼운 쪽 · 측점 수에 거의 비례 |
| 브라우저 근사 | 화면 단계 함수 그대로(472-1 헬퍼 배선 · vite ssr 묶음) Node 한 프로세스 안에서 — 처음 1 + 이어서 4 · 노선 교점 ±1 m 12 번 · 계획고 ▲▼ 0.1 m 12 번 · 따로 잰 셈 4~200 번 중앙값. 그리기 · GC · 메인 스레드 경합 빠짐 → **셈 몫**(340 화면 실측 ▲ 0.06 s · 횡단 그리기 포함 0.21 s 와 맞음) |
| 서버 Node | 서버와 같은 배관(`common_util_node_bundle.run_bundle_json` · 부를 때마다 새 `node` · 임시 JSON) · 묶음은 지금 코드로 tmp 에 새로 지은 사본(config 묶음 안 건드림 · 7 묶음 모두 낡음 상태였음) |
| 서버 파이썬 | 472-1 길(`server_save` = [저장] 재계산 · `server_route` = 노선 저장 체인) · DB 없이 고정 자료 사본 · 단계 함수를 감싸 잼 · 5 번 · 3 번 |
| 회선 | 쿠키 없는 읽기만 — TCP 연결 · 401 창구(DB 안 감) · `/api/health` · 5173 프록시 거친 401 · ping · 20~30 번 중앙값 |
| [저장] · [확정] 실제 | 서버 로그 `[계측]` 줄(`_log_steps`) 모음 — 랩탑 메인 + 서브 1~8 `tmp/server.log` 아홉 · 새로 저장 안 함 |
| 브라우저 실측 | 안 함 — Node 근사가 340 화면 실측과 맞아 꼭 필요하지 않음 |
| 자료 | 스크립트 · 원자료 = `tmp/req304/`(`bench.mjs` · `bench_cross.mjs` · `py_bench.py` · `net.py` · `parse_log.py` · `bench_out*.json` · `py_out*.json`) |
- 주의 — `localhost` 이름은 IPv6 먼저라 파이썬 클라이언트가 2 s 헛기다림(서버가 IPv4 만 들음) · 브라우저는 영향 없음 · 잴 때는 `127.0.0.1`.
- `/api/health` 는 개발 모드에서 소스 파일을 훑어 130 ms — 회선 값은 401 창구로.
## 2. 시간 표
### 2.1 B05 · B06 조작 — 브라우저 셈(TS · Node 근사 · ms)
| 단계(등록부 id) | 처음 열기(차가움) | 처음 열기(데워짐) | 노선 점 놓기 | 계획고 ▲ |
|---|---|---|---|---|
| route(R1 · R3) | 0.2 | 0.06 | 0.25 | — |
| follow(P5 · P6 · F1 · F2) | 0.1 | 0 | 2.1 | — |
| stations(R5~R7 · F3) | 2.4 | 1.9 | 1.3 | — |
| ground(G1) | 8.5 | 2.1 | 1.2 | — |
| planline(P1) | 2.8 | 0.4 | 2.3 | — |
| profile(P2~P4 · P8) | 7.0 | 1.9 | 0.9 | 0.8(+ ▲ 셈 `adjustStation` 4.4) |
| cross(C1~C6 · G2 · G4 · F4) | 64 | 31 | 24~27 | 2.1(앞뒤 꼭짓점 범위만) |
| footprint(D4 · 그림 자료) | 72 | 38 | 31~36 | 24~37 |
| **합(벽시계)** | **159~188** | **83~96** | **70~82**(p90 105) | **36~43**(p90 58) |
| 따로 잰 셈 | ms |
|---|---|
| 횡단 설계선 57 측점(`computeCrossDesign`) | 18~19(처음 45) · 측점당 0.33 |
| 구조물 면적 · 관 길이(F7) | 0.5 |
| 누가토량(E1) | 0.06 |
| 유토 배분(E2 · 서버 정본) | 1.4~1.7 |
| 3D 길 모형(D3) | 168~202 |
| 상세 맞춤(`draftSectionDetail`) | 0.7 |
| B09 총괄 · 원가계산서(`computeTotal` · 시험 엑셀 견본) | 0.02~0.03 |
| 묶음 읽기 · 격자 풀기 | 47 · 0.5 |
### 2.2 같은 셈을 서버에서
| 셈 | 브라우저(TS) | 서버 Node(새 프로세스 · 처음 / 이어서) | 서버 파이썬 짝 | 배수 |
|---|---|---|---|---|
| node 기동만 | — | 52 / 52 ms | — | — |
| 묶음 읽기까지(빈 셈) | — | 93~138 / 90~111 ms | — | — |
| 면적 + 누가토량 + 배분(상세 1.45 MB) | 2.3 ms | 217~228 / 234~268 ms | — | 약 100 배 |
| [저장] 끝 묶음(server-calc · 면적 · 누가토량) | 0.6 ms | 170~209 / 154~165 ms | — | 약 250 배 |
| 횡단 설계선 57 측점 | 18~19 ms | 130~202 / 129~286 ms | 100~173 ms | Node 7~15 · 파이썬 5~9 |
| 노선 · 측점 · 지반 · 첫 계획선 | 4.5~5 ms | — | 0.51~0.60 s(`run_section_generation` · 파일 쓰기 포함) | 약 100 |
| 계획고 편집 적용 · 경고 | 1~2 ms | — | 0.10~0.11 s(파일 읽기 쓰기 포함) · 경고 다시 37~43 ms | 약 50~100 |
| 포장 · 세월교 보정(C3) | (cross 안) | — | 0.23~0.31 s | — |
| 기본 횡단 설계(노선 바뀜) | (cross 안) | — | 0.55~0.68 s | — |
| 3D 길 모형 | 0.17~0.20 s | 0.88~1.1 s(출력 14.6 MB) | — | 약 5 |
| B09 총괄 | 0.03 ms | — | 0.03 ms | 같음 |
| 묶음 낡음 검사(30 s 마다) | — | 35~41 ms | — | — |
| 낡으면 다시 짓기 | — | 0.4~0.5 s + npm 기동 0.74 s | — | — |
- 서버 Node 한 번 ≈ **고정 0.1 s + 자료 넘김 0.1~0.15 s(1.45 MB · 파이썬 dumps 36 ms · Node 파싱 15 ms · 파일 쓰기 읽기)** + 셈. B05 · B06 셈(2~30 ms)보다 배관이 큼.
- 고정 자료 [저장] 서버 재계산 한 바퀴(DB · 저장 없음) = 0.52~0.80 s · 노선 저장 체인 한 바퀴 = 2.2~3.0 s(브라우저 같은 셈 0.07~0.08 s 의 30~40 배).
### 2.3 회선 왕복(중앙값)
| 길 | TCP 연결 | 빈 API(이어 쓴 연결) | 비고 |
|---|---|---|---|
| 랩탑 안(127.0.0.1:8000) | 0.4 ms | 0.9 ms | |
| 랩탑 안 5173 프록시 | — | 2.9 ms | 화면이 쓰는 길 |
| 랩탑 → 데스크탑 임시 배포 5173 프록시(Tailscale) | — | **23 ms**(최소 19) | 화면이 쓰는 길 · ping 10 ms |
| 랩탑 → 데스크탑 8000 바로 | 10.6 ms | 76 ms(최소 61) | 응답 머리 · 몸 따로 보냄 + 지연 응답(추정) · 화면은 이 길 안 씀 |
| 요청마다 세션 확인(DB 왕복) | — | 13.6 ms | 09-07 지난 값 |
| 바깥 회선(사용자 사무실 · 4G) | — | 30~80 ms | 추정 · 안 잼 |
### 2.4 [저장] · [확정] 실제(서버 로그 `[계측]` · 아홉 로그)
| 창구 | n | 중앙 | p90 | 단계 중앙 |
|---|---|---|---|---|
| [저장] 서버 재계산 내부 | 661 | 1.6 s | 3.1 s | 정본 저장 0.7 · Node 묶음(면적 · 유토곡선) 0.2 · 포장 · 세월교 보정 0.2 · 상세 + DB 조회 0.2 · 종단 선형 0.1 |
| B06 [확정] | 227 | 4.0 s | 6.3 s | 서버 재계산 1.8 · 3D 서버 짓기 1.2 · 확정 저장 0.7 · 조회 0.2 · 측구 방향 역반영 0.2 |
| 노선 바뀐 [저장](재확정 체인) | 148 | 10.5 s | 16.4 s | B06 확정 · 재계산 · 3D 4.2 · 노선 풀기 · 구조물 따라감 1.9 · 종횡단 1.6 · 횡단 이월 1.2 · 계획고 옮김 0.6 · 관 따라감 0.6 |
| 노선 [확인] 재계산 | 190 | 14.2 s | 89.7 s | 배수유역 다시 셀 때 큼 |
| 배수유역 분석 내부 | 55 | 58 s | 101 s | 유역 산정 54 s |
- 셈보다 **정본 저장 · DB · 3D · 배수유역**이 큼 — [저장]을 서버 정본으로 두는 값(1~4 s)은 이미 치르는 중 · 셈 자리를 바꿔도 [저장] 시간은 거의 그대로.
### 2.5 서버로 옮기면 조작 한 번(추정 = 위 값 더함)
| 조작 | 목표(09-07) | 지금 브라우저 | 서버 파이썬 | 서버 Node 새 프로세스 | 상주 Node(추정) |
|---|---|---|---|---|---|
| 노선 점 끌기 한 걸음 | 0.1 s | 3~5 ms(340) | 불가 | 불가 | 회선 + 1 ms(노선 선만) |
| 노선 점 놓기 → 종단 · 횡단 | 0.3 s | 0.07~0.08 s | 2.2~3.0 s | 0.4~0.6 s | 0.05~0.13 s |
| 계획고 ▲ 한 번 | 0.1 s(반응) · 0.3 s | 0.04 s | 0.15~0.3 s + 회선 | 0.25~0.4 s | 0.03~0.09 s |
| 횡단 카드 칸 고침 | 0.3 s | 0.07 s(340) | 0.05~0.1 s + 회선 | 0.2~0.3 s | 0.03~0.09 s |
| B08 · B09 · M02 칸 고침 | 1 s | < 1 ms | 회선 + 세션 14 ms + 자료 읽기(못 잼) | — | — |
- B09 전체 셈(GET 한 바퀴) = 못 잼 — B09 자료가 있는 프로젝트가 storage 에 없음 · 로그인 POST 금지.
## 3. 보안 등급 표
- 등급 — **A** 영업 핵심(원가 · 단가 · 마스터 · 노하우 엔진) · **B** 설계 기술 규칙(사용자: B05 · B06 에도 있음) · **C** 일반 기하 · 공개 기준 · 그림 · 입력 도구. 등급은 제안 · 정함은 사용자.
- 위조 = [저장] 때 서버가 다시 세는지.
| 묶음 · id | 등급(제안) | 지금 브라우저 묶음 | [저장] 서버 다시 셈 | 이어지는 F 빈틈 |
|---|---|---|---|---|
| B09 바탕단가 · 일위대가 · 내역 · 원가 요율(Calc_Base · Labor · Bill · Total) | A | 식 + 요율 압축표 실림 | 예(사용자 값만 저장) · **인쇄물은 아니오** | S5 · S6 |
| M01 단가 로직 · M02 일위대가 · 실무호표 | A | 결과만 | 예 | **S2(로그인만 통째 읽음)** · **S3(오라클)** |
| M02 흐름도 · 면적 시트 · 표 수식 엔진 | A | 엔진 실림 | 흐름 · 면적 · 표 예 · 프로젝트 층 양식 셋 받은 그대로 | S5 · S6 |
| 유토 배분 · 운반거리(E2) | A | 안 실림(`import type`) | 서버 단독 | — |
| 노선 추천(N1) · 배수유역 · 관 자리(D1 · D2) · 넓힘(G3) | A | 결과만 | 서버 단독 | — |
| B08 자재 3표 · 배합 · 할증 · 운반 사이클 | B~A | 실림 | 예 | S5 |
| 구조물 수량 규칙 — 관 세트 · 벽 · 면적 · 터파기(F5~F8) | B | 실림 | 예 · 세월교 높이(F9)는 **입력 그대로** | S6 |
| 종단 규칙 — 첫 계획선 · 곡선 법칙 · 직선 · 옮김 · 세움 · 경고(P1~P6 · P8) | B | 실림 | 예 · **P5 계획고 옮김은 두 곳이 씀(D2 흠)** | — |
| 횡단 규칙 — 설계선 · 면적 · 보정 · 소단 · 맹암거 · 미교차 넓힘 · 상단측(C1~C6 · G2 · G4 · F4) | B | 실림 | 예 · 면적 = 서버 셈만 | — |
| 노선 곡선 · 노드 규칙 · 측점 · 열쇠 · 지반 표본 · 따라감(R1 · R3 · R5~R7 · G1 · F1~F3 · F10 · R9) | C | 실림 | 예 | — |
| 누가토량(E1 · 평균단면법 + 환산계수) | C | 실림 | 예 | — |
| 3D(D3) · 발자국(D4) · 입력 도구(R2 · R4 · R8 · P7 · C7) | C | 실림 | 3D 서버 지음 · 발자국 서버 정본 없음(B07 파이썬 따로) · 도구 해당 없음 | — |
- 바탕 빈틈(계산 자리와 무관 · 먼저 막아야 위 표가 뜻을 가짐):
- **S1** — 랩탑 메인 5173 `/../B09_Estimation/B09_Estimation_Calc_Total.ts` · `/../common_util/common_util_cross_design.ts` 둘 다 200 · 원본 TS · 한글 주석 · 인라인 소스맵(이번 확인 · 내 서버만). 임시 배포(데스크탑 5173)는 같은 설정이라 같을 것(추정 · 안 잼). storage 가 같은 길로 열리는지는 안 잼(F 결정 4 허락 뒤).
- **S2 · S4** — 로그인만으로 A 등급 마스터 읽음 · 남의 프로젝트 표제란. 서버로 옮긴 A 등급도 이 길로 새면 소용 없음.
- **S3** — 단가 오라클(입력 바꿔 결과 긁기) — A 를 서버 단독으로 해도 남음 · 호출 상한(F 결정 8)이 짝.
## 4. 스위치 설계
### 4.1 꼴 — 스위치판 한 곳 · 값 셋
| 값 | 뜻 | 브라우저 묶음 | 조작 중 | [저장] 정본 |
|---|---|---|---|---|
| `both` | 브라우저 미리보기 + 서버 정본 | 실림 | 브라우저 즉시 | 서버 다시 셈 |
| `server` | 서버만 | **안 실림**(빌드에서 빠짐) | 서버에 물음(「계산 중」 · 최신만 · 옛 요청 끊기) | 서버 |
| `browser` | 브라우저만 | 실림 | 브라우저 | 없음(입력 도구 · 그림) |
- 자리 = 등록부 `site` 칸(`design_calc_registry.ts` · `_facility.ts` 45 id) — 지금은 기록 · 시험용 4 값 → 위 3 값 + `fixed`(못 옮김: GIS · 래스터 · 추천 · 입력 도구) 표.
- 파이썬도 같은 판을 읽게 — 등록부에서 `id → site · runner` 만 뽑은 JSON 한 벌(빌드 때 생성 · 시험이 등록부와 같은지 봄) · 화면 · 서버가 그 한 벌만 봄.
- **두 겹**:
- 빌드 스위치(보안) — `server` 인 id 의 TS 를 브라우저 묶음에서 뺌. vite `define` 상수로 단계 공장이 가지를 고르고 로컬 쪽은 dynamic import → 죽은 가지 걷힘. 실행 중 값으로만 고르면 코드가 묶음에 남아 보안 이득 0. 바꾸면 다시 지어 배포.
- 실행 자리(속도 · 검산) — `both` 안에서 미리보기 끄기 · 켜기는 실행 중 값으로도 됨(개발 · 측정용).
- 시험 — 운영 묶음(`config/node_modules/.build`)에 `server` id 의 함수 · 속성 이름 · 상수가 없음 · 등록부 = JSON 판 같음 · `both` id 는 거울 시험 있음.
### 4.2 지금 코드에서 바꿀 자리
| 자리 | 지금 | 바꿈 |
|---|---|---|
| 화면 단계 묶음 `A00_Common/design/design_pipeline_page.ts`(route~footprint 8 단계) | 단계 함수를 바로 import | 단계 공장마다 `local` · `remote` 둘을 받고 판 값으로 고름 — 선례 = ground `remote`(`B05_Profile/logic/B05_Profile_Pipeline_RouteGround.ts:100`) · cross `savedCross`(`design_pipeline_page.ts:354`) · 배분 `B05_Profile_Api_HaulPlan.ts`(`import type` 로 묶음 밖) |
| 스위치 단위 | — | **단계**(한 단계가 여러 id 를 한 번에 셈 — cross = C1 C2 C3 C5 C6 G2 G4 F4) · 단계 밖 id(E1 · E2 · F5~F8 · D3 · B08 · B09 · M02 칸)는 부르는 자리마다 |
| 서버 실행기 `common_util/common_util_calc_runner.py` | `NODE_IDS` 박음 · 파이썬 짝은 부르는 곳이 직접 import | 판의 `runner` 를 보고 node · py 고름 — 부르는 곳은 `run_calc(id)` 하나로 |
| 서버 창구 | 배분 `/haul-plan` 하나 | `server` 단계용 `/api/projects/{id}/calc/{stage}` — 본문 = 사용자 입력 + 초안 · 정본 자료는 서버가 붙임 |
| Node 배관 `common_util_node_bundle.py` | 부를 때마다 새 프로세스 | 조작 중 `server` 가 생기면 상주 Node 필요(고정 0.1 s + 자료 0.1~0.15 s 가 셈보다 큼) · 9-07 「안 함」 다시 판단 |
| 저장 본문 `design_save.ts` · `B06_Section_Router_DesignSave.py` | 계획고 초안 = follow 가 옮긴 값 통째 | 4.4 |
### 4.3 파이썬으로만 있는 계산 · 짝
| 갈래 | id | 스위치로 고를 수 있나 |
|---|---|---|
| ② TS 한 벌 · 서버 Node | R9 · P6 · C1 · C2 · C4 · C5 · F1 · F2 · F7 · F8 · F10 · E1 · E2 · D3(14) | 예 — 지금도 고를 수 있는 꼴 |
| ① 짝 · 472-4 동안 서버 = 파이썬 | R1 · R3 · R5 · R6 · R7 · G1 · G2 · G4 · P1~P5 · P8 · C3 · C6 · F3 · F4(18) | **아니오** — 서버가 다른 코드를 돎 · TS 한 벌로 옮긴 뒤(472-4)에만 참 |
| ① 짝 유지(파이썬 소비자 B04 · B07 · B08) | F5 · F6 · F9(3) | 아니오 — 서버 정본은 파이썬 · TS 는 미리보기 |
| ③ 서버 단독 | D1 · D2 · G3 · N1 · B07 도면 · B08 토적 · B09 산근 · 집계 · M01 · M02 셈 | 고정 `server` — GIS · 래스터 라이브러리 · 값어치 · 브라우저로 안 옮김 |
| ① 짝 · B08 · B09 · M02 칸 셈 | B09 Calc_* · B08 Material_Calc · Haul_Cycle · M02 DF_Eval | `server` 로 고르면 **파이썬 한 벌로 충분**(TS 걷음 · 옮길 필요 없음) |
### 4.4 「[저장] 정본은 늘 서버 한 곳」 — 구조로 막기
- 규칙 — `browser` 아닌 모든 id 의 정본 = 서버 · 저장 본문 = **사용자 입력(`input.*`)과 초안 동안 사용자가 손댄 것만** · 단계 출력 · 따라감이 고친 값은 안 보냄 · 서버 꼴(Pydantic)도 파생 칸을 안 받음.
- 지금 흠(D2) — follow 단계가 옮긴 계획고를 입력 칸(`input.alignment`)에 되씀(`FOLLOW_KEYS` · `design_pipeline.ts`) → 저장 본문에 실림 → 서버 노선 저장이 이미 옮긴 계획고(`_carry_profile` · 파이썬 `carry_edits`) 위를 덮음 → 서버 측점과 어긋난 키 버림. 브라우저 TS `carryEdits` · 서버 파이썬 `carry_edits` = 코드도 두 벌.
- 막는 꼴:
1. follow 출력은 출력 칸에만 · 입력 칸은 사용자 값만(뒤 단계는 `follow ?? input` 을 읽음).
2. 노선 바뀐 저장 = 관 · 구조물처럼(`rebasePipeDraft` · F10) 계획고도 「서버 옮김 위에 사용자 손댐만 다시 얹기」 — D 보고 고칠 자리 6 과 같은 뜻.
3. 시험 — 저장 본문 칸마다 등록부 `input.*` 하나에 닿음 · 출력 id 가 본문에 들어가면 실패.
### 4.5 서버로 옮기면 「조작 응답 — 네트워크 왕복 금지 · 즉시」(CLAUDE.md 5장)와 부딪히는 것
| 부딪힘 | id | 까닭 |
|---|---|---|
| 끌기 중(0.1 s) | R1 · R3 · F1 · F2 · P5 · P6 | 끄는 걸음마다 |
| 놓기 · ▲ · 횡단 고침(0.3 s) | R5~R7 · F3 · G1 · P1~P4 · P8 · C1~C6 · G2 · G4 · F4 · F5 · F6 · F7 · E1 | 종단 · 횡단 · 유토곡선 즉시 다시 그림 |
| 그림 · 도구 | D4 · R2 · R4 · R8 · P7 · C7 | 화면 자체 |
| 안 부딪힘 | E2 · D1 · D2 · G3 · N1 · D3(뒤 · 워커) · R9 · F10(저장 때) · F8 · F9 · B08 · B09 · M02 칸(목표 1 s · 왕복 허용 · 선례 M01 쉬운단가 0.3 s) | |
- B 등급(B05 · B06 규칙)을 `server` 로 하려면 5장 「조작 중 브라우저 즉시」를 「상주 Node 로 놓고 0.1 s」로 바꿔야 함 — 지침 고침 + 상주 Node 공사.
## 5. 계산마다 추천 자리
| 묶음 · id | 브라우저 셈 | 서버 길(지금) | 등급 | 지금 | 추천 | 비고 |
|---|---|---|---|---|---|---|
| 노선 R1 · R3 | 0.1~0.3 ms | 파이썬 0.5~0.6 s(측점 · 지반 함께) | C | both | **both** | 472-4 로 Node |
| 측점 R5~R7 · F3 | 1.3~1.9 ms | 위에 포함 | C | both | **both** | 472-4 |
| 지반 G1 | 1.2~2.1 ms | 표본기 22 ms + 위 | C | both | **both** | 격자 받음 2.1 MB |
| 첫 계획선 P1 | 0.4~2.3 ms | 위에 포함 | B | both | **both**(결정 1) | |
| 계획선 · 법칙 · 직선 · 경고 P2~P4 · P8 | 0.8~1.9 ms(+ ▲ 4.4) | 파이썬 0.10~0.11 s · 경고 37~43 ms | B | both | **both**(결정 1) | X5 기준표 두 벌 정리 |
| 따라감 · 옮김 · 세움 P5 · P6 · F1 · F2 | 0~2.1 ms | P5 파이썬 · 나머지 Node 0.1 s+ | B · C | both | **both + 정본 한 곳(4.4)** | D2 흠 먼저 |
| 횡단 C1~C6 · G2 · G4 · F4 | 전 측점 24~31 · 범위 2 ms | Node 0.13~0.29 s · 파이썬 0.10~0.17 s | B | both | **both**(결정 1) | 472-4 ② 계속 |
| 구조물 F5~F8 | 0.5 ms | server-calc 0.15 s | B | both | **both**(결정 2 면 server) | F9 세월교 = 서버 다시 셈으로 |
| 누가토량 E1 | 0.06 ms | Node 포함 | C | both | **both** | |
| 유토 배분 E2 | 1.4~1.7 ms | Node 0.22~0.27 s | A | server | **server** | 그대로 |
| 3D D3 | 0.17~0.20 s | Node 0.9~1.1 s | C | both | **both**(뒤 · 워커) | |
| 발자국 D4 | 25~36 ms | 없음 | C | browser | **browser** | 조작마다 가장 큰 몫 — 속도 따로(350-1) |
| 이월 · 다시 얹기 R9 · F10 | 저장 때 | Node | C | both | **both** | |
| 입력 도구 R2 · R4 · R8 · P7 · C7 | — | — | C | browser | **browser** | |
| 배수 · 넓힘 · 추천 D1 · D2 · G3 · N1 | — | 파이썬 3~110 s | A | server | **server(고정)** | |
| B08 자재 3표 · 할증 · 운반 사이클 | < 1 ms(추정) | 파이썬(GET · PUT 셈) | B~A | both | **server**(결정 2) | TS 걷음 |
| B09 바탕단가 · 일위대가 · 내역 · 요율 | 0.03 ms(총괄) | 파이썬 0.03 ms(총괄) | A | both | **server** | TS · 요율 압축표 걷음 · 인쇄 = 서버 정본 |
| M02 흐름도 · 면적 시트 · 표 수식 | 못 잼 | Node · 파이썬 | A | both | **server** | 관리자 화면 반응 1 s 확인 |
## 6. 방향 · 차례
- 한 줄 — **「B05 · B06 조작 = both · 값어치 A = server · 그림 · 도구 = browser」를 등록부 한 칸(빌드 스위치)으로 고르고, 그 앞에 원본이 새는 길(S1 · S2 · S4)부터 막음.**
| 차례 | 할 일 | 고칠 양 | 이득 |
|---|---|---|---|
| 1 | S1 — 임시 배포 = 운영 묶음 · 5173 바깥 안 엶(전역 깃 싱크 때) | 작음(설정) | 원본 · 주석 · 소스맵 노출 닫힘 · 이것 없이 2~5 는 뜻 없음 |
| 2 | S2 · S4 — 마스터 길 · 쿼리 project_id 길 권한 | 작음(창구 몇) | A 등급 마스터 · 남의 표제란 |
| 3 | D2 정본 한 곳(4.4) — follow 출력 분리 · 계획고 다시 얹기 · 본문 시험 | 작음~중간 | 계획고 버림 흠 · 같은 꼴 흠을 구조로 막음 |
| 4 | 스위치판 — `site` 3 값 + JSON 한 벌 + vite 상수 + 단계 공장 local · remote + 운영 묶음 검사 시험 | 중간 | 요구 273 · 304 「한 곳에서 고름」 |
| 5 | B09 → B08 → M02 = server(TS 걷음 · 칸 고침 = 요청 · 「계산 중」) | 중간 | A 등급 식 · 요율 걷힘 · 속도 손해 = 칸마다 회선 + 서버 셈(목표 1 s 안 · 추정) |
| 6 | 472-4 짝 모으기(18 id) 계속 | 큼(진행 중) | 서버 · 화면 같은 코드 → 스위치가 참 |
| 7 | (결정 1 이 「숨김」 일 때만) B 등급 server + 상주 Node + 5장 지침 고침 | 큼 | B05 · B06 규칙 숨김 · 놓고 0.05~0.13 s(추정) · 끌기 중엔 노선 선만 |
## 사용자 결정 필요
1. **B05 · B06 설계 기술 규칙(B 등급 — 종단 규칙 · 횡단 규칙 · 구조물 수량 규칙)** — (가) 지금처럼 브라우저 즉시 + 서버 정본(빠름 · 운영 묶음 안에서 읽힘) (나) 서버 숨김(상주 Node 공사 · 놓고 0.05~0.13 s 추정 · 회선 나쁘면 0.1~0.3 s · 끌기 중 미리보기는 노선 선만).
2. **구조물 수량 규칙(F5~F8) · B08 자재**를 A 로 볼지 — A 면 B08 과 함께 server(B05 · B06 조작 중 구조물 면적 · 관 길이 미리보기가 회선 뒤로).
3. **스위치 바꾸는 때** — 빌드 스위치만(보안 · 바꾸면 다시 지어 배포) · 실행 중 바꾸기도 둘지(측정 · 개발용 · 보안 이득 없음).