Files
Aislo/docs/raw/plans/2026-10-25_plan_528-535.md
T

64 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 계획서 이관 — 528 · 529 · 530 · 534 · 535 (2026-10-25 · 요구 348 · 완료 절)
## 528. 신규 프로젝트 그룹 공통 — 종류 · [+] 네 카드 · 산림청 · 공유 보기 · 복사 (요구 345 · 346 · 요구서 345 2장 · 528-1 · 3 · 5 sub1 · 528-2 sub2 · Opus high · 528-4 뒤)
- 사용자 확정(요구 345 · 346): [+] = 예정노선 · 임도설계 · 사방설계 · 안정성평가 카드(그림 + 제목) · 예정노선 = 산림청(*.go.kr) · 시스템관리자만 · 지정 업체 보기만 · 연결 · 생성 시점 복사 · E 업데이트 없음.
- 정함(브레인 · 사용자 바꿀 수 있음): 요구서 345 6장(산림청 = go.kr 전부 · 기관도 회사로 등록 · 지정 회사 구성원 전부 보기 · 공유 판정은 공용 접근 판정 한 곳).
- [x] 528-1 DB 020(projects 종류 · 사업연도 끝 · 원본 칸 + 예정노선 연도 구간 · 지정 업체 표) · 산림청 판정 함수 · B02 API 종류 검사 — 지킴 시험(판정 · 일반 사용자 PLAN 403 · 원본 B06 미완료 400).
- 검증완료 — 시험 19 통과 · 기존 B01 · 접근 · 로그인 63 통과 · 실 API: 일반 D01 403 · 산림청 PLAN(속도 20 · 단계 3 · D 폴더) · E 원본 B06 미완료 400 · 완료 = STABILITY 단계 4 · 공유 DB 에 020 적용(기존 16행 ROAD)
- [x] 528-2 [+] 네 카드 모달 · B01 종류 열 · 종류별 첫 화면 · 종류별 단계 시드 · storage 폴더 허용 — ORCA 세 역할(산림청 · 업체 · 시스템관리자).
- 검증완료 — 실 API 세션 산림청(go.kr 임시 계정) · 시스템관리자 = 참 · D01 200 / 회사관리자 · 사용자 = 거짓 · D01 403 · ORCA 모달: 시스템관리자 카드 넷 켬(사방만 0.45) · 회사관리자 · 사용자 = 예정노선 0.45 + 까닭 툴팁 · 누름 알림 · 어두움 선 색 = 글자 색 · 표 종류 열 · PLAN 행 단계 누름 → D03 · 받은 예정노선 2줄 · [보기] → D02 · E01 → E02 · DB STABILITY 단계 4 · 만든 행 모두 지움
- [x] 528-3 공유 회사 GET 만 판정 · 대시보드 「받은 예정노선」 구역 — 시험(공유 GET 200 · PUT 403 · 미지정 403) + ORCA.
- 검증완료 — 실 API: 지정 회사 GET 200 · PUT 403 · 미지정 GET 403 · 받은 예정노선 1건(지정 회사) · 0건(그 밖) · 화면 구역은 528-2
- [x] 528-4 공용 복사 함수(복제 도구 본체 이전 · CLI 껍데기 · 범위 인자) — 임시 storage 시험(새 id · UUID 치환 · 원본 그대로).
- 검증완료 — 시험 2 통과(full: 표 7 행 수 같음 · 지표면 id 다시 이음 · UUID 0 · 원본 해시 그대로) · 옛 도구 대 새 CLI 같은 원본: 표 9 · 파일 234 같음(단계 params 는 자동증가 id 만 다름)
- [x] 528-5 회원가입 메일 *.go.kr → 회사 「산림청」 자동 입력 · 고정(요구 347-8) + 산림청 회사 행 미리 둠 — 지킴 시험(go.kr 가입 = 산림청 회사 · 다른 회사 보내도 무시) + ORCA 가입 화면.
- 검증완료 — 시험: go.kr 인증 = 산림청 · ACTIVE · 보낸 회사 값 무시 · 다른 메일 NO_COMPANY · ORCA 가입 화면: Kim@Forest.GO.KR → 회사 칸 「산림청」 readOnly 보임 · gmail → 숨김
- [x] 528-6 D · E 생성 가볍게(요구 351) — B 양식 복사 · B0x 빈 폴더 없음(D = D0x + B04_PreProcess · E = E0x) · 경로 풀이가 D · E 루트에 B 폴더 안 만듦 · ROAD 그대로 · 기존 검증 D · E 셋 정리.
- 검증완료 — 시험 528 25 · D03 지형 · 분석 · E01 복사 19 통과 · 실 DB 생성: E 31.03 MB(복사 20.27 + 양식 10.76) → 20.27 MB · B 폴더 0 · D 10.76 MB → 0 MB(D02~D04 + B04) · 기존 셋(검증_sub7 · 검증531 · 검증_sub8) 양식 · 빈 B 폴더 지움 · 사용자 D · E 없음
## 529. D 예정노선 — 등록 · 1단계 기준 지정 (D01 · D02 · 요구서 345 3-1 · 3-2 · 529-1 · 2 sub2 · Opus high · 529-3 뒤)
- 사용자 확정(요구 345 · 349): 등록 칸(사업연도 범위 · 지역 · 종류 「노선 계획」 · 임도 종류 · 설계속도(기본 최저 속도) · 이름 수기/자동 · 시작 · 종료 누가 · 도면 칸 없음) · 연도별 시점 · 종점(직전 종점 = 다음 시점) · 카카오 끌기 · 좌표 입력 · B05~B09 틀 재활용.
- 정함(브레인): 틀 아이콘 · [<][>] · 도움말 인자 · 카카오 지도 ui_template 이전 · 작업 좌표계 경도 자동(5185~5187) · 변환 서버 pyproj · 근거 _분석_345-B.
- [x] 529-1 틀 인자 + D 경로 + D01 등록(B02 이름 조합기 · 임도 종류 · 설계속도 = B02 칸 · resolve_design_speed 재활용) — ORCA 등록 → DB 행 · 이름 자동 · 속도 기본 20 · B05 틀 그대로.
- 검증완료 — ORCA D01: 속도 기본 20(간선 20/30/40 · 작업 20) · 이름 「2026~2028 확인군 작업임도」 자동 · 손댄 뒤 지역만 갈아 끼움 · 등록 → DB PLAN 2026~2028 · fire 30 · 0~2500 · 단계 3 → D02 · D/E [<][>] 묶음 안(D04 · E05 [>] 흐림) · [?] D03 · B05 틀 그대로(B 아이콘 · [<] 흐림 · [?] 14 항목) · 시험 280-2 · 54-2 · 218-1 통과
- [x] 529-2 카카오 지도 ui_template 이전 · 키 길 공용 — B08 이정표 시험 + ORCA B08 지도 그대로.
- 검증완료 — B08 이정표 시험 99 통과 · ORCA B08 거래처 모달 지도: /api/map/kakao-key 로 SDK 적재 · 칸 높이 480 · 시점 알약 그대로
- [x] 529-3 좌표 변환 common_util_crs + D02 지점 정본 API(잇기 · 빈 연도 거절) + D02 화면(연도 표 · 좌표 칸 · 끌기 · 구간 선 · [>] 저장) — 지킴 시험(왕복 1 mm · 잇기) + ORCA 끌기 ↔ 표 수치.
- 검증완료 — 시험 13 통과(원점 3 띠 · 왕복 1 mm · 띠 경계 · 잇기 · 빈 연도 · 범위 · 권한 · 바뀐 연도만 비움) · 실 API 빈 연도 400 · 범위 밖 400 · 임도 프로젝트 400 · 다른 회사 403 · ORCA 지도 누름 3번 = 시점 → 경계 → 종점 차례 · 끌기 P1 → 표 127.125 / 37.515 · 입력 → 표지 127.165 · 연도 선 빨강 · 파랑 · [>] 뒤 D03 · DB 2027 시점 = 2026 종점 (211050.971, 546176.272) EPSG 5186 = pyproj 값 · 만든 프로젝트 지움
## 530. D 예정노선 — 지형 받기 · 2단계 분석 (D03 · 요구서 345 3-3 · 530-1 · 2 sub3 · Opus high · 530-3 뒤)
- 사용자 확정(요구 345): [>] 때 수치지형도 외부 API 받아 영구저장 · 범위 넘으면 더 받기 · [분석] = B05 추천 로직 한 벌 · 보임 = 중심선 · 측점 스냅 · 표기 · 지반 횡단 · 3D(구조물 X) · 노견 · 절성토선 · 종단 · 배수유역 X.
- 정함(브레인): 추천 기준 = 등록 임도 종류 · 설계속도 · 지형 = D storage 안 B04_PreProcess 배치 · DEM 연도 구간별 · 갈래 넷 연도마다 고름 · 연도 경계 꺾인 채 · 계류 이격 반영 · 복도 폭 D 만 넓힘(B 기본 그대로) · 근거 _분석_345-B.
- [x] 530-1 지형 받기 서비스(합집합 · prune 없음 · 지점 사이 메움 · 위성) + 연도별 DEM · 모델 행 — 가짜 내려받기 시험(옛 도엽 유지 · 새 도엽만 · 빠짐 없음).
- 검증완료 — 시험 3 통과 · 실측(검증_sub3 노선 근처 두 연도 1.23 · 1.22 km · 5187) 받기 123 s · 도엽 12매 · 위성 1장 · DEM 726×1935 · 1700×1400 칸 · 다시 받기 0매 · 위성 건너뜀
- [x] 530-2 B05 엔진 인자 셋(models_dir · cache_dir · 복도) + D 분석 API(구간 반복 · 잇기 · 누가 · 진행률 · 저장본) — B05 추천 시험 그대로 통과 + 경계 좌표 일치 시험.
- 검증완료 — B05 추천 시험 11파일 그대로 통과 · D 시험 7 통과 · 실측 두 구간 갈래 넷 복도 100 · 200 · 300 m = 116 · 140 · 183 s · 못 지킨 곳 5 · 8 · 1 → 복도 300 m · 같은 입력 다시 0.07 s · 경계 좌표 일치
- [x] 530-3 D03 평면(MapRender · 측점 · 스냅 · 지점 끌기 · 범위 밖 더 받기) + 지반만 횡단 + 3D 모달 — ORCA(측점 · SVG 표고 = 격자 · 구조물 0).
- 검증완료 — B05 횡단 시험 48 · D 시험 30 통과 · typecheck 0 · ORCA 산림청 계정 새 예정노선(2026~2027): 열자 받기 도엽 9매 · 갈래 넷 카드 · 2027 토공 최소 고름 → [저장] DB 갈래 · 누가 2861.19~4218.94 = 화면 · 측점 150+0 누름 SVG 지반선 = 격자 표고 차 0.000001 m · 3D 코리도 · 구조물 0 · 종점 1 km 끌기 → 범위 밖 · 더 받기 도엽 9 → 12매 · 끈 지점 [분석] · [저장] = 정본 종점 · 노선 끝 누가 5725.28 · 프로젝트 지움
## 534. E 안정성평가 — 내장 엑셀 보고서 (E05_StabReport · 요구 347-5 · 534-1 · 2 sub6 · Opus high · PDF 는 535 공용 모듈 뒤 · 534-3 뒤)
- 사용자 확정(요구 347-5): 내장 엑셀 양식화 · 페이지 구분 · 내용 정리 · 사용자 고침 · 보기 = 내장 엑셀 · 내보내기 = xlsx · PDF.
- 정함(브레인 · 사용자 바꿀 수 있음): 시트 여섯(표지 · 요약 = 사용자 몫 · 입력 조건 · 측점표 · 대표 단면 · 3D 요약 = 프로그램 몫) · [보고서 갱신] = 프로그램 몫 시트 · 그림만 다시(사용자 몫은 수식으로 따라감 · 옛 판 _지난/) · PDF = 인쇄 HTML → B09 Edge 엔진 공용화 · 그림 = 서버 SVG → PNG(Playwright · PyMuPDF 안 씀 — AGPL) · 양식 = master_template/report/stab_report.json · 대표 단면 = 자동(쌓기 10 m · 깎기 15 m · 최소 안전율 하위 5 · E03 에서 고침) · 칸 잠금 없음 · 내장 엑셀 계약 고침 = 534 창만 · 근거 _분석_345-F(그 파일의 E04 = E05).
- [x] 534-1 내장 엑셀 계약 더함(인쇄 설정 · 쪽 나눔 · 그림 칸) + 그림 겹판 · 쪽 나눔 점선 — spreadsheet 시험 통과 + 크기 예산.
- 검증완료 — 엔진 시험 9 · 크기 52.0 KB/128 · 행 넣기 때 쪽나눔 4→5 · 그림 B8:F12→B9:F13 · 겹판 칸 자리 0 px 차(스크롤 포함) · M02 면적산출 그대로
- [x] 534-2 PDF 엔진 공용화(B09 는 부르기만) + 인쇄 HTML(TS · Node) + Workbook → xlsx — B09 인쇄 시험 그대로 + 되읽기 시험(병합 · 쪽 나눔 · 그림 · 머리 줄 반복).
- 검증완료 — 인쇄 HTML 덩이 3 · thead 1줄씩 · 병합 잘림 2+2 · xlsx 되읽기(병합 2 · row_breaks [6,12] · 그림 1 · $2:$2 · 식) · PDF 3쪽 = 쪽 나눔 2 + 1(가로) · PDF 엔진 = sub8 535-1 공용 모듈
- [x] 534-3 보고서 양식 · 빌더 · 길 · E05 화면([저장] · [초기화] · [보고서 갱신] · [엑셀] · [PDF]) — 시험(측점 수 = 줄 수 · 사용자 몫 불변) + ORCA(PDF 쪽 수).
- 검증완료 — 양식(sub7 · 시트 여섯 · 자리표) + 빌더 · 길 · 화면 시험 7(측점 30 = 줄 30 · N.G 4 · 그림 4 · 갱신 뒤 표지 · 개요 그대로 · 덮임 [측점표] · 판 409 · xlsx 되읽기 · PDF 쪽 = 3 + 측점표 n + 단면 3 + 1) · ORCA 일반 계정 · 검증_sub6 복사 E(측점 57 · 2D = 같은 엔진 · 정한 저장본 꼴): 시트 6 · 단면 그림 3 · 표지 C10 · C12 고침 → [보고서 갱신] 뒤 남음 · 측점표 고침 = 덮임 알림 · 해석 바뀜 띠 · [초기화] · PDF 10쪽(3 + 측점표 3 + 단면 3 + 3D 1) · xlsx 시트 6 · 측점 줄 57 · N.G 28 · E 지움
- [x] 534-4 E 전 흐름 확인(요구 345 · 347 · 351 · sub1) — 일반 계정 회사 3 · [+] → E01 → E05 · 원본 바꿔도 불변 · 다른 회사 403 · 시스템 관리자 보기 · 숫자 맞춤 · 고침 = E05 가 E03 정본 저장본(stab2d_summary · stab2d_station · 대표 켬/끔)을 바로 읽음 · 3D요약 같은 조건 비교 · E04 판정 · 입력조건 적용 구간.
- 검증완료 — 검증_sub1 회사 3 사본 → E 생성 3.0 s(화면 ≤ 5.8 s) · 16 MB · 측점 63 = 원본 63 − missing 0 · E03 182.6 s · 건기 N.G 13 · 우기 30(화면 같음) · 임계면 SVG 6점 = API · E05 측점 줄 63 · N.G 30 · 대표 17 = E03 켬 · 입력조건 = E02 저장값(c 12 · 점토층 · 0~100 m · 노면 12) · 3D/2D 1.7314 = 0.838/0.484 · 광역요약 면적 = E07 · xlsx 시트 7 · PDF 25쪽 · 원본 B06 바꿈 = E 지문 그대로 · 회사 1 E 403 · 관리자 200 · 시험 40 · typecheck · 만든 E 둘 · 사본 지움 · 남음 = E04 화면 2D 최소 · 비 비어 보임(fs_min 칸 없음 · sub7)
- 공통(532~534): 해석 엔진 직접 만듦 · 외부는 BSD · MIT · Apache 만(요구 350 · 요구서 345 9장) · GPL · AGPL · LGPL · 비상업 코드 금지.
## 535. 라이센스 — PDF 엔진 공용화 · B09 도면 PDF 의 PyMuPDF(AGPL) 교체 (요구 350 · 351 · sub8 · Opus high)
- 사용자 확정(요구 351): 상용 가능한 무료 PDF 라이브러리 중 품질 좋은 것은 브레인이 정함 · B 는 어쩔 수 없을 때만 고침(라이센스라 고침).
- 정함(브레인): 만들기 = Playwright(Chromium PDF · Apache-2.0 · 벡터 · 글꼴 묻음 · B09 인쇄와 같은 엔진) · 합치기 · 쪽 다루기 = pypdf(BSD · 설치됨) · 큰 도면에서 느리면(측정) ReportLab(BSD) · PyMuPDF 는 제품 코드에서 없앰(지식DB 변환 스크립트는 개발 도구라 둠).
- [x] 535-1 PDF 엔진 공용화(B09 인쇄 함수 → common_util/common_util_print_pdf.py · B09 는 부르기만) — B09 인쇄 시험 그대로.
- 검증완료 — test_302_1_print_frame 16 통과 · 공용 render_html_to_pdf · render_htmls_to_pdfs · merge_pdfs · sheet_title · print_setup
- [x] 535-2 B09 도면 PDF PyMuPDF → SVG + Playwright · pypdf — 시험(쪽 수 · 글자 · 선 수) + 전후 그림 대조 · 시간 · 제품 폴더 pymupdf 0.
- 검증완료 — 검증_sub8 9장(평면도 지형 = 옛 판도 못 읽음 · 뺌) 쪽 9/9 · 글자 9장 모두 같음 · 선 조각 ±15 % · 쪽 그림 차 0.9~3 %(글 0.76 pt 밀림 · 토적도 세운 글 116 개 = 화면 방향으로 바로잡힘 · 옛 판은 뒤집힘) · 크기 391 → 413 KB · 렌더 1.1 → 2.4 s(브라우저 띄움 +1.5 s · 장당 0.145 s 같음) · 큰 장(선 3만 · 글 1만) 22.5 → 13.8 s · test_302_1 16 · 302_2 8 통과 · ORCA 인쇄 미리보기 9쪽 · 제품 폴더 pymupdf 0