Commit Graph
9497 Commits
Author SHA1 Message Date
eomsangdonandClaude Opus 5.5 333d4f63ee merge(dev): dev 받기 — E01 생성 = sub1 동결 복사(532-1) 뒤 E02 초기값 · main.py 라우터 D04 · E02 둘 다 · test_528 복사 · 초기값 가짜 둘 다
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 20:07:33 +09:00
eomsangdon b31f4e960c Merge remote-tracking branch 'origin/sub_laptop_6' into sub_laptop_8 2026-10-25 20:03:53 +09:00
eomsangdon 973f389bf2 Merge remote-tracking branch 'origin/sub_laptop_7' into main_laptop_1 2026-10-25 20:02:44 +09:00
eomsangdonandClaude Sonnet 5.5 bc933a61cf feat(E05): 안정성평가 보고서 양식(시트 여섯) · 자리표 · 시험 (534-3 양식 부분)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 20:01:57 +09:00
eomsangdonandClaude Opus 5.5 f0c5232f80 feat(532-3): E02 지반 조건 — 기본값 정본 · 물성 표(지층 추가 · 지움) · 구간 덮어쓰기 · KDS 기준안전율 · 노면 하중 · 지하수 · 지진 · 저장 · 초기화
- 기본값 정본 resources/master_template/stability/ground_defaults.json — 지층 여섯 · 값마다 출처(07 표 · 절) · KDS 11 70 05 표 4.3-1~3 · 노면 10 kPa · 지하수 규칙 · 지진 끔 · 범위
- 07 원문 대조 — 성토 φ 25 → 28(07 §4 종합 28~30 아래값) · 나머지 범위 안
- API GET · PUT /api/projects/{id}/stab/ground · POST …/reset — 작업본 E02_StabGround/ground.json · 초기값 initial_snapshot/E02_StabGround/ground.json(E 생성 직후 기본값 + B06 측점 암 경계) · 측점은 서버 값
- 검사 · 측점 적용 = 파이썬 · TS 짝(E02_StabGround_Model.py ↔ logic/E02_StabGround_Check.ts) · 거울 시험
- 화면 — 카드 넷 · 칸 위 근거 · 기본값 툴팁 · 틀린 칸 표시 · sessionStorage 캐시 · 자동저장 없음
- test_528 E01 시험 — 생성 뒤 E02 초기값 부름 확인 더함

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 20:00:44 +09:00
eomsangdon f09e854323 Merge remote-tracking branch 'origin/sub_laptop_1' into sub_laptop_2 2026-10-25 20:00:04 +09:00
eomsangdonandClaude Opus 5.5 d8c9c60beb feat(531-3): 예정노선 → 임도 연결 API · 업데이트 있음 지문 · [내보내기] 받기 · D04 요약
- POST /api/dashboard/plan-routes/{assignee_id}/link — new(B02 등록 함수) · existing(우리 회사 임도) · 그 연도 shp 한 벌을 B03 input/shp 에 · input_files 행 · metadata.json · 입력이 다 차면 B03 완료 판정(옛 결과 지우기 확인 409) 뒤 WF1 · 원본 칸 · 연결 표시
- GET /api/projects/{id}/plan-source — 임도가 이어 받은 예정노선 · update_available
- 받은 예정노선 목록 — 확정된 연도(또는 연결한 것)만 · assignee_id · 지문 비교 update_available
- D04 GET plan/summary(연도 요약) · GET plan/export(산림청 = 전 연도 + 전체 · 지정 회사 = 확정된 자기 연도)
- 지문 = 고른 중심선 점(mm) sha1 — D03 fingerprint 칸은 분석 입력 지문이라 갈래만 바꿔도 안 변해 따로 셈

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:59:36 +09:00
eomsangdon b33c3cfe3e Merge remote-tracking branch 'origin/sub_laptop_2' into main_laptop_1 2026-10-25 19:59:28 +09:00
eomsangdonandClaude Opus 5.5 244a2bf8eb feat(528-2): 대시보드 표 종류 열 · 종류별 단계 막대 · 「받은 예정노선」 구역
- 프로젝트 표 「종류」 열(임도설계 · 예정노선 · 안정성평가 · 사방설계 · 칸 없음 = 임도)
- 단계 막대 = 종류별(ROAD B03~B09 그대로 · PLAN D02~D04 · STABILITY E02~E05) · 누름 = 그 단계 화면
- 받은 예정노선(회사관리자 · 사용자 · 받은 것 있을 때만) = 예정노선 · 연도 · 연결 상태 · 업데이트 배지 · [보기] = D02 · [연결] 자리만(531-3)
- E01 [등록] 고르기 칸 setError 없음 오류 걷음(목록 비면 단추 꺼짐)
- tsconfig D0* · E0* → 폴더 안까지(D0*/**/*) — 앞 판은 폴더 안 파일을 안 잡아 타입 검사가 빠졌음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:57:13 +09:00
eomsangdon 94c47acd1e Merge remote-tracking branch 'origin/sub_laptop_7' into sub_laptop_3 2026-10-25 19:49:58 +09:00
eomsangdon 20081ee362 feat(D04): 업체 지정 · 확정 API · 완료 메일 · 시험 (531-1 · 531-2) 2026-10-25 19:49:39 +09:00
eomsangdon 07a99085a6 Merge remote-tracking branch 'origin/sub_laptop_3' into sub_laptop_1 2026-10-25 19:48:50 +09:00
eomsangdonandClaude Opus 5.5 83d38681df fix(530-2): D 분석 지점 0.1 mm 반올림 — 노선 끝점 = 지점 · 연도 경계 정확히 맞물림 · 복도 300 m 실측 근거 주석
- 엔진 출력 자리수(4)로 지점을 맞춰 넣음 · 저장본 지점 대조 1 mm
- 실측(검증_sub3 근처 두 구간): 복도 100 · 200 · 300 m 못 지킨 곳 5 · 8 · 1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:47:30 +09:00
eomsangdon 16b456aff6 Merge remote-tracking branches 'origin/sub_laptop_1' and 'origin/sub_laptop_6' into main_laptop_1 2026-10-25 19:47:26 +09:00
eomsangdonandClaude Opus 5.5 94a7fd5808 feat(528-4 · 532-1): 공용 프로젝트 복사 · E01 안정성평가 생성 복사
- common_util_project_copy — 복제 도구 본체 이전 · 범위 full | stability · 파일 안 UUID 치환 · copy_manifest.json
- tools_clone_project — CLI 껍데기(동작 그대로 · main(argv))
- E01 생성 = stability 복사(E01_StabRegister/source/ · 동결 db.json + B05 route · B06 종횡단 · 쓰인 DTM 하나 · 최신 corridor · 관 편집분) · 지문 · 복사 시각 기록 · 실패 = 만든 E 지움
- E01_StabRegister_Source — 복사본 읽기(측점 · 횡단 · 지형 격자 · corridor · 구조물)
- 시험 test_532_1_project_copy(임시 storage) · test_528 E01 생성에 복사 응답 반영

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:47:12 +09:00
eomsangdonandClaude Opus 5.5 76a399026c feat(529-3): D02 지점 정본 API · 경위도 ↔ TM 점 변환
- common_util_crs: 경도로 TM 띠(5185 · 5186 · 5187) · lonlat_to_tm · tm_to_lonlat
- D02_PlanBase_Router: GET · PUT /api/projects/{id}/plan/points — 잇기(직전 종점 = 다음 시점) · 범위 밖 · 빈 연도 거절 · 산림청만 고침 · 바뀐 연도만 분석 노선 비움
- 지킴 시험 test_529_3_plan_points

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:46:43 +09:00
eomsangdon f93d996279 Merge remote-tracking branch 'origin/sub_laptop_8' into sub_laptop_7 2026-10-25 19:45:46 +09:00
eomsangdon 4e9c298247 Merge remote-tracking branch 'origin/dev' into sub_laptop_7 2026-10-25 19:45:43 +09:00
eomsangdon 6ec6042655 fix(D04): 내보내기 엔진 머리말 줄 길이 2026-10-25 19:45:35 +09:00
eomsangdon 557681499c feat(D04): 예정노선 내보내기 엔진 · 메일 첨부 인자 (531-1 · 531-2 일부) 2026-10-25 19:45:23 +09:00
eomsangdonandClaude Opus 5.5 39e8ee837e chore(535-3): requirements 에서 PyMuPDF(AGPL) 제거 — requirements-dev.txt 로 이관(지식DB _pipeline · PDF 읽는 시험 전용)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:45:02 +09:00
eomsangdon 52b2df3568 Merge remote-tracking branch 'origin/sub_laptop_8' into main_laptop_1 2026-10-25 19:43:51 +09:00
eomsangdonandClaude Opus 5.5 b8ef5d033d feat(535-2): B09 도면 PDF PyMuPDF(AGPL) 제거 — 장마다 SVG 쪽 → 공용 PDF 엔진(Chromium) · pypdf 합치기
- 점선 = 미리 자른 실선 조각(Chromium 이 점선을 채운 윤곽으로 풀어 PDF 3 배 커지는 것 막음)
- 글 안 빈칸 그대로(white-space: pre) · 세운 글 방향 = 화면(openwebcad canvas)과 같게
- 못 넣은 그림 = data: 아님 · base64 깨짐
- test_302_2: PDF 읽기 pymupdf → pypdf · add_drawing_page(pymupdf 문서) 시험 → drawing_page(SVG) 로 고침 · 점선 조각 · 빈칸 시험 더함

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:42:54 +09:00
eomsangdon 02bb502ad9 Merge remote-tracking branch 'origin/sub_laptop_6' into main_laptop_1 2026-10-25 19:41:43 +09:00
eomsangdonandClaude Opus 5.5 fbd9721931 feat(534-1): 내장 엑셀 그림 겹판 · 쪽 나눔 점선 — 늦게 불러옴 · 행열 넣기 · 스크롤 따라감
- spreadsheet_figures: 시트 그림을 닻 범위에 얹음(figureSrc 없으면 이름 상자) · 쪽 나눔 행 아래 점선 · overlay 맨 아래 층
- spreadsheet: figureSrc 선택 · 그림 · 쪽 나눔 있는 문서일 때만 import()

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:40:31 +09:00
eomsangdon e250e0fde0 Merge remote-tracking branch 'origin/sub_laptop_2' into sub_laptop_3 2026-10-25 19:39:50 +09:00
eomsangdonandClaude Opus 5.5 eefc241ba4 chore(merge): dev 받기 — 528 공통 백엔드 · DB 020 · main.py 라우터 import 충돌 풂(D01 · D03 · E01 모두 살림)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:39:38 +09:00
eomsangdonandClaude Opus 5.5 a08dd82112 feat(529-1): D01 예정노선 등록 · E01 안정성평가 만들기 화면
- D01 칸: 사업연도 시작 · 끝 · 사업지역 · 종류 「노선 계획」 고정 · 임도 종류(B02 값) · 설계속도(종류별 고를 값 · 기본 최저 = resolve_design_speed) · 프로젝트명(B02 이름 조합기 · 연도 자리 「시작~끝」) · 노선 시작 · 종료 누가거리 · 도면 칸 없음
- E01: 대상 임도(source-candidates = B06 완료만) · 이름(손대기 전 「원본 이름 안정성평가」)
- [등록] = POST /api/d01/project · /api/e01/project → 현재 프로젝트 · 첫 단계(D02 · E02) · 공용 createGroupProject
- 설계속도 선택지 = B05 SPEED_CHOICES(파이썬 거울 시험 있음) · 모양 = B02 등록 CSS 그대로

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:39:20 +09:00
eomsangdon 61c3d66d23 Merge remote-tracking branch 'origin/안티그래비티' into sub_laptop_3 2026-10-25 19:39:03 +09:00
eomsangdon 76a8752b0b Merge remote-tracking branch 'origin/sub_laptop_8' into sub_laptop_3 2026-10-25 19:39:02 +09:00
eomsangdon 545701604a Merge remote-tracking branch 'origin/sub_laptop_6' into sub_laptop_3 2026-10-25 19:39:01 +09:00
eomsangdon cdfcd09604 Merge remote-tracking branch 'origin/sub_laptop_4' into sub_laptop_3 2026-10-25 19:39:01 +09:00
eomsangdon 5d5e8d4849 Merge remote-tracking branch 'origin/sub_laptop_2' into sub_laptop_3 2026-10-25 19:39:00 +09:00
eomsangdonandClaude Opus 5.5 17534a01ad feat(530-1 · 530-2): D 예정노선 지형 받기 · 2단계 분석 서버 — B05 엔진 인자 셋(models_dir · cache_dir · 복도 반폭) · D03 지형 서비스 · 분석 · API
- B05 지형 로더 models_dir · cache_dir=None · 비용면 cache_dir=None · 탐색 복도 corridor_m(기본 100 m · 기본이면 묶음 열쇠 그대로)
- D03_PlanAnalysis_Terrain — 지점 + 1 km 표본 3×3 도엽 · prune 없음 · 병합 옛 ∪ 새 · 위성 합집합 · 연도별 models_<연도> DEM · plan.prj
- D03_PlanAnalysis_Analyze — 연도 구간마다 갈래 넷 · 법정 기준 · 누가 이어 셈 · 파생 저장본(입력 지문)
- D03_PlanAnalysis_Router — POST plan/terrain · plan/analyze(뒤에서 · 진행률) · GET plan/progress · plan/analysis · PUT [저장]
- 지킴 시험 test_530_1_plan_terrain · test_530_2_plan_analyze · test_530_2_plan_router

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:38:40 +09:00
eomsangdon 55cc9ea93c Merge remote-tracking branch 'origin/dev' into main_laptop_1 2026-10-25 19:35:54 +09:00
eomsangdonandClaude Opus 5.5 786b0d8394 chore(요구): 요구 352 — ORCA 브라우저 탭 하나 재사용
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:35:47 +09:00
eomsangdon c3083ba50b Merge remote-tracking branch 'origin/dev' into sub_laptop_2 2026-10-25 19:34:48 +09:00
eomsangdonandClaude Opus 5.5 dc124d3108 feat(528-2): 대시보드 [+] 고르기 모달 — 카드 넷(예정노선 · 임도설계 · 사방설계 · 안정성평가)
- [+] 세 자리(시스템관리자 · 회사관리자 · 사용자) = 고르기 모달
- 그림 = SVG 직접(선 = 글자 색 · 밝음/어두움) · 산림청 아니면 예정노선 흐림 + 까닭 툴팁 · 누름 = 같은 알림
- 사방 = 준비 중 · 임도 = B02 · 예정노선 = D01 · 안정성평가 = E01
- 세션 is_forest_service 칸(SessionUser)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:34:39 +09:00
eomsangdonandClaude Opus 5.5 f20aea412a feat(534-2): 내장 엑셀 내보내기 — 인쇄 HTML(Node print) · xlsx · SVG→PNG · PDF
- spreadsheet_print_html: 통합문서 → 인쇄 HTML(DOM 없음 · 화면 엔진 값 · formatValue · 병합 · colgroup 폭 · 쪽 나눔 덩이 · thead 머리행 반복 · 그림 img · 시트마다 @page)
- 서식 → CSS 를 클립보드에서 떼어 공용(medium · thick · double 굵기 반영)
- 서버 Node 진입 prints · 파이썬 print_htmls · workbook_pdf(공용 PDF 엔진 page_size=None)
- common_util_workbook_xlsx: openpyxl 로 값 · 식 · 서식 · 병합 · 폭 · 높이 · 틀 고정 · 인쇄 설정 · 쪽 나눔 · 그림(두 칸 닻)
- common_util_svg_png: Playwright 로 SVG → PNG(PyMuPDF 안 씀)
- 시험 test_spreadsheet_print(인쇄 HTML · xlsx 되읽기 · PNG 크기 · PDF 쪽 수)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:33:57 +09:00
eomsangdon 7434f10c7a Merge remote-tracking branches 'origin/sub_laptop_1' and 'origin/sub_laptop_2' into main_laptop_1 2026-10-25 19:33:12 +09:00
eomsangdon acf55f37fe Merge remote-tracking branch 'origin/안티그래비티' into main_laptop_1 2026-10-25 19:32:55 +09:00
eomsangdonandClaude Opus 5.5 ff8a8bad08 feat(528): 신규 프로젝트 그룹 공통 백엔드 — 종류 칸 · 산림청 판정 · D01 · E01 생성 API · 공유 GET 만 · 가입 go.kr = 산림청
- DB 020(추가만): projects 종류 · 사업연도 끝 · 설계속도 · 원본 칸 · plan_route_years · plan_route_assignees · 회사 「산림청」 행
- is_forest_email · is_forest_service · /api/auth/session 에 is_forest_service
- require_project_access 한 곳 — 지정 회사 = GET · HEAD 만 · 그 밖 403
- POST /api/d01/project(산림청만 · PLAN · 설계속도 기본 = resolve_design_speed) · GET /api/dashboard/plan-routes/assigned
- GET /api/e01/source-candidates · POST /api/e01/project(B06 완료만 · STABILITY · 원본 칸 · 자료 복사는 528-4)
- 종류별 단계 시드(PLAN 3 · STABILITY 4) · storage 허용 D0x · E0x · B01 목록에 project_kind
- 가입 인증 — 메일 *.go.kr = 회사 산림청 · ACTIVE · 화면 회사 칸 「산림청」 잠금 표시
- 지킴 시험 test_528_project_groups.py

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:32:25 +09:00
eomsangdonandClaude Opus 5.5 a1069f270a feat(529-1): 단계 틀 인자(아이콘 · [<][>] 묶음 · 도움말 이름) · D · E 단계 빈 길 일곱
- createWorkflowLayout icons 인자(없으면 B 일곱 아이콘 그대로)
- [?] [<] [>] 묶음 = B05~B09 · D02~D04 · E02~E05 · 묶음 안에서만 오감 · 설명서 이름 B0N/D0N/E0N
- 서버 설명서 주소 D01~D04 · E01~E05 허용 · 우클릭 막기 · 돋보기 d · e 주소
- ROUTES D01~E05 · PLAN_STEP_ROUTES · STAB_STEP_ROUTES · A00_Common/group_workflow(빈 단계 = 틀 · 좌측 [?] 줄 · 단계 막대)
- 페이지 폴더마다 draft/<폴더>_Route.ts · tsconfig 에 D0* · E0* · 문구 ui_template_locale_de
- 시험: 280-2 대역에 D · E 묶음 · 54-2 D · E 설명서 길

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:32:09 +09:00
eomsangdon 6a19ad195b knowledge(안정성평가): 상용 사면안정 SW 기능·검증예제 및 지반물성치 원문 근거 추가 (351) 2026-10-25 19:32:05 +09:00
eomsangdon 173b961494 Merge remote-tracking branch 'origin/sub_laptop_2' into main_laptop_1 2026-10-25 19:27:06 +09:00
eomsangdonandClaude Opus 5.5 c2876aef60 refactor(529-2): 카카오 지도 부품 B08 → ui_template 공용 이전 · 키 길 공용(/api/map/kakao-key)
- ui_template_kakao_map.ts(editMap · loadKakaoMaps) · 지도 CSS 공용 이름(ui-kakao-map*)
- B08 거리이정표 네 곳은 공용을 부름 · projectId 인자 걷음(키가 프로젝트 무관)
- B08 /quantity/milestone/map-key 걷음 → common_util_map_router 로 옮김
- B08 이정표 시험 파일 경로 · fetch 가짜 · 공용 CSS 로 고침(동작 판정 그대로)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:26:34 +09:00
eomsangdon 280072a16d Merge remote-tracking branch 'origin/dev' into sub_laptop_6 2026-10-25 19:25:48 +09:00
eomsangdonandClaude Opus 5.5 9c6ef7ca1e feat(534-1): 내장 엑셀 계약 더함 — 시트 인쇄 설정 · 그림 칸 · 행열 넣기 때 따라감
- spreadsheet_types: Sheet.인쇄(용지 · 방향 · 배율/맞춤 · 여백 · 머리행 · 쪽나눔) · Sheet.그림(열쇠 · 닻) · 머리 금지 규칙을 요구 347-5 로 고침
- spreadsheet_commands: 행열 넣기 · 지우기 때 그림 닻 · 쪽 나눔 · 머리 행 옮김
- 견본 JSON 에 인쇄 · 그림 · 엔진 시험 다섯 줄

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:25:37 +09:00
eomsangdon 4730edba31 Merge remote-tracking branch 'origin/sub_laptop_8' into sub_laptop_5 2026-10-25 19:24:10 +09:00
eomsangdonandClaude Opus 5.5 9add13ccbc refactor(535-1): PDF 엔진 공용화 — common_util_print_pdf(render_html_to_pdf · render_htmls_to_pdfs · merge_pdfs · 엑셀 인쇄 설정) · B09 표 인쇄는 부르기만
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 19:23:42 +09:00