# 배포 및 실행 가이드 (Deployment & Execution Guide) ## 🎯 목표 **한 명령어로 전체 웹앱 실행** — Python의 `main.py` 하나만 실행하면 백엔드 + 프론트엔드 모두 자동 구동. --- ## 🚀 실행 방법 (How to Run) ### 1단계: 환경 설정 (One-time Setup) ```bash # 프로젝트 루트로 이동 cd d:\02_Software_Prog\임도설계\ 및\ 견적자동화\ 프로그램\ 개발 # Python 가상환경 활성화 .\venv\Scripts\activate # Node.js 패키지 설치 (처음 한 번만) npm install # Python 패키지 설치 (이미 설치됨, 필요시) pip install -r requirements.txt # MariaDB 데이터베이스 초기화 (처음 한 번만) # MariaDB CLI에서: # > USE aislo_db; # > SOURCE db_management/001_create_schema.sql; # > SOURCE db_management/002_auth_security.sql; ``` ### 2단계: 웹앱 실행 (Startup) ```bash # 프로젝트 루트에서 단일 명령: python main.py # 출력 예시: # INFO:__main__:[development] 앱 시작 중... # INFO:__main__:[Frontend] npm run build 시작... # ✓ built in 256ms # INFO:__main__:✓ 프론트엔드 개발 서버 백그라운드 실행 # INFO:__main__:✓ DB 풀 초기화 완료 # INFO: Application startup complete. # INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) ``` ### 3단계: 브라우저 접속 ``` http://localhost:8000 ``` --- ## 📁 프로젝트 구조 (Project Layout) ### 루트 레벨 (Root-level — Build Configuration) ``` . ├── package.json ← 프론트엔드 패키지 (루트에만 있음) ├── vite.config.ts ← Vite 빌드 설정 (루트에만 있음) ├── tsconfig.json ← TypeScript 설정 (루트에만 있음) ├── node_modules/ ← npm 의존성 └── main.py ← FastAPI 진입점 (백엔드 + 프론트엔드 자동 실행) ``` ### 프론트엔드 (Frontend) ``` A00_Common/ ← 페이지 진입점 (index.html) ├── main.ts ├── router.ts ← SPA 라우터 ├── app_shell.ts ← 헤더/네비/푸터 └── ... A01_Home/ ← 로그인 전 페이지 A02_ProgDetail/ A03_CompDetail/ ... B01_AccountDetail/ ← 로그인 후 페이지 B02_ProjRegister/ B03_FileInput/ ... ui_template/ ← 공유 컴포넌트 & 스타일 ├── ui_template_elements.ts ├── ui_template_locale.ts └── ui_template_theme.css config/config_frontend.ts ← 프론트엔드 설정 (API 주소, 경로, 상수 등) ``` ### 백엔드 (Backend) ``` main.py ← 앱 진입점 config/ ├── config_system.py ← 환경 변수 로드 ├── config_db.py ← DB 풀 설정 └── config_frontend.ts ← 프론트엔드 설정 (TypeScript) common_util/ ├── common_util_auth.py ├── common_util_auth_repository.py ├── common_util_email.py └── ... A06_Login/ ├── A06_Login_Router.py ← 로그인 API ├── A06_Login_Schema.py └── A06_Login_Api_Fetch.ts ← 프론트엔드 API 호출 A07_Register/ A09_Security/ B03_FileInput/ ... ``` ### 데이터베이스 (Database) ``` db_management/ ├── 001_create_schema.sql ← 기본 스키마 (users, companies 등) └── 002_auth_security.sql ← 인증 테이블 (sessions, email_otps 등) ``` --- ## ✅ 주의사항 (Important Notes) ### 빌드 설정 | 파일 | 위치 | 설명 | |------|------|------| | `package.json` | **루트만** | npm 의존성 관리 | | `vite.config.ts` | **루트만** | 프론트엔드 번들 설정 | | `tsconfig.json` | **루트만** | TypeScript 컴파일 설정 | | ❌ config/ 폴더 | **금지** | 빌드 설정 이중화 방지 | ### 실행 명령어 | 명령 | 위치 | 용도 | |------|------|------| | `python main.py` | 루트 | 웹앱 전체 실행 (추천) | | `npm run build` | 루트 | 프론트엔드 빌드만 (dev용) | | `npm run dev` | 루트 | Vite 개발 서버만 (필요시) | ### 코드 작성 시 - ❌ 루트의 `package.json`, `vite.config.ts` 두지 말 것 - ❌ `config/` 폴더에 `node_modules` 두지 말 것 - ✅ 프론트엔드 코드는 `A00_Common/`, `A0*/`, `B0*/` 에만 작성 - ✅ 백엔드 라우터는 모듈별 폴더에 `*_Router.py` 로 작성 --- ## 🔧 문제 해결 (Troubleshooting) ### 문제 1: 포트 이미 사용 중 ```bash # 기존 프로세스 찾기 netstat -ano | findstr :8000 # 강제 종료 (Windows) taskkill /PID /F ``` ### 문제 2: npm 빌드 오류 ```bash # 의존성 재설치 rm -rf node_modules package-lock.json npm install npm run build ``` ### 문제 3: DB 연결 오류 ```bash # .env 파일 확인 # DB_HOST, DB_USER, DB_PASSWORD 정확한지 확인 # MariaDB 상태 확인 mysql -u root -p -h localhost ``` --- ## 📚 추가 읽기 - **로그인/보안**: `.agent/login_security_plan.md` - **DB 스키마**: `.agent/db_schema_simple.md` - **코더 핸드오프**: `.agent/CODER_HANDOFF.md` - **프로젝트 규칙**: `CLAUDE.md` (프로젝트 루트) --- **최종 정리**: `python main.py` → 브라우저 `http://localhost:8000` → 완료! 🎉