Files
Aislo/.agent/complete_and_old/coding_b02_project_creation.md
T
2026-07-10 16:41:22 +09:00

4.2 KiB

B02_ProjRegister 프로젝트 생성 기능 코드 작업 완료 보고서

작성일: 2026-07-09
대상 계획서: .agent/plan_b02_project_creation.md
작업 범위: B02 프로젝트 등록 프론트엔드, 백엔드 API, DB 저장, 프로젝트 저장소 초기화


1. 작업 완료 요약

B02 프로젝트 등록 화면의 TODO 제출 흐름을 실제 API 연동으로 교체하고, FastAPI 백엔드에 POST /api/b02/project 엔드포인트를 추가했습니다.

프로젝트 생성 시 다음 작업이 수행됩니다.

  1. 프론트엔드 1차 검증
    • 프로젝트명 필수값 검증
    • 사업 지역 필수값 검증
    • 사업 연도 범위 검증
    • 예상 연장 숫자/음수 검증
  2. 백엔드 Pydantic 2차 검증
    • name, region, road_type, project_year, estimated_length_m, memo
  3. DB 저장
    • projects 테이블 신규 레코드 생성
    • 초기 상태 NEW
    • 기본 좌표계 crs_epsg = 5178
    • storage_path = storage/{company_id}/{user_id}/{project_id}
  4. 저장소 초기화
    • storage/{company_id}/{user_id}/{project_id}/ 생성
    • B03~B09 단계별 하위 폴더 생성
    • workflow.json 초기화
    • project_manifest.json 생성
  5. 프론트 상태 반영
    • 응답받은 project_idCURRENT_PROJECT_ID_KEY에 저장
    • 성공 토스트 표시
    • B03_FileInput 페이지로 이동

2. 생성 및 수정 파일

신규 파일

  • B02_ProjRegister/B02_ProjRegister_Schema.py

    • 프로젝트 생성 요청/응답 Pydantic 스키마 추가
  • B02_ProjRegister/B02_ProjRegister_Repository.py

    • 프로젝트 UUID 생성
    • projects Raw SQL INSERT
    • 단계별 저장소 폴더 생성
    • workflow.json, project_manifest.json 초기화
  • B02_ProjRegister/B02_ProjRegister_Router.py

    • POST /api/b02/project 엔드포인트 추가
    • 세션/회사 연결 검증
    • 저장소/DB 예외 처리

수정 파일

  • B02_ProjRegister/B02_ProjRegister_UI_Page.ts

    • TODO 제출 로직 제거
    • fetch("/api/b02/project") 연동
    • credentials: "include" 적용
    • 로딩 오버레이 및 에러 토스트 처리
    • localStorage에 현재 프로젝트 ID 저장
  • main.py

    • B02 라우터 import 추가
    • app.include_router(b02_proj_register_router) 등록

3. 저장소 생성 구조

프로젝트 생성 시 실제 파일시스템에 다음 구조를 생성합니다.

storage/{company_id}/{user_id}/{project_id}/
├── B03_FileInput/input/
├── B04_wf1_Surface/processed/
├── B05_wf2_Route/route/
├── B06_wf3_ProfileCross/profiles/
├── B07_wf4_DesignDetail/structures/
├── B08_wf5_Quantity/quantities/
├── B09_wf6_Estimation/v1/
├── workflow.json
└── project_manifest.json

DB에는 기존 B03 업로드 로직이 해석 가능한 상대 경로 형식인 storage/{company_id}/{user_id}/{project_id}를 저장합니다.


4. 검증 결과

통과

  • venv\Scripts\ruff.exe format B02_ProjRegister main.py
  • venv\Scripts\ruff.exe check --fix B02_ProjRegister main.py
  • venv\Scripts\ruff.exe check B02_ProjRegister main.py
  • venv\Scripts\python.exe -m compileall B02_ProjRegister main.py
  • npx prettier --write B02_ProjRegister/B02_ProjRegister_UI_Page.ts
  • npx prettier --check B02_ProjRegister/B02_ProjRegister_UI_Page.ts

미통과

  • npx tsc --noEmit

실패 원인은 B02 작업 범위 밖의 기존 오류입니다.

  • B01_Dashboard/B01_Dashboard_UI_Helper.ts: 미사용 매개변수
  • B01_Dashboard/B01_Dashboard_UI_Modals.ts: 미사용 import
  • B01_Dashboard/B01_Dashboard_UI_Page.ts: RoutePath 타입 누락
  • ui_template/ui_template_locale.ts: 중복 locale key

5. 참고 및 주의사항

  • .agent/db_schema_simple.md 파일은 현재 저장소에서 찾을 수 없어, 실제 db_management/001_create_schema.sql, 기존 B03 저장 경로 유틸, config_system.py 기준으로 구현했습니다.
  • npm install은 타입 검사 확인 중 1회 실행했으나, 추적 중인 node_modules에 불필요한 변경이 발생하여 node_modules만 복원했습니다.
  • 실제 DB INSERT와 세션 기반 API 호출은 MariaDB/로그인 세션이 필요한 통합 환경에서 추가 확인이 필요합니다.