PyQt5 기반의 데스크톱 애플리케이션을 웹 브라우저 기반으로 전환한 자율주행 경로 편집 도구입니다.
- FastAPI: 고성능 REST API 서버
- Pydantic: 데이터 검증 및 직렬화
- Python: 기존 로직 재활용
- Leaflet: 인터랙티브 지도 라이브러리
- Vanilla JavaScript: 프레임워크 없는 순수 JavaScript
- HTML5/CSS3: 반응형 UI
- Leaflet을 활용한 인터랙티브 지도
- 실시간 노드/링크 시각화
- 다양한 편집 모드 지원
- Select Mode: 노드 선택 및 정보 확인
- Drag Mode: 드래그 앤 드롭으로 노드 위치 변경
- Add Mode: 지도 클릭으로 새 노드 추가
- 실시간 GPS ↔ UTM 좌표 변환
- QuickLink Mode: 두 노드 클릭으로 빠른 링크 생성
- 자동 거리 계산 및 화살표 시각화
- 노드 이동 시 연결된 링크 길이 자동 재계산
- 노드/링크 정보를 테이블 형태로 표시
- 실시간 데이터 동기화 (지도 ↔ 테이블)
- 테이블에서 직접 삭제 가능
- JSON 파일 업로드/다운로드
- 서버에 파일 저장/로드
- 기존 PyQt 버전과 호환되는 데이터 포맷
cd web_version/backend
pip install -r requirements.txtcd web_version/backend
python main.py브라우저에서 http://localhost:8000 접속
web_version/
├── backend/
│ ├── app/
│ │ ├── models/ # 데이터 모델 (Pydantic)
│ │ ├── api/ # REST API 엔드포인트
│ │ ├── services/ # 비즈니스 로직
│ │ └── utils/ # 유틸리티 함수
│ ├── main.py # FastAPI 서버 진입점
│ └── requirements.txt # Python 의존성
├── frontend/
│ ├── index.html # 메인 HTML
│ ├── css/styles.css # 스타일시트
│ └── js/
│ ├── api.js # API 클라이언트
│ ├── map.js # 지도 관리 (Leaflet)
│ ├── ui.js # UI 관리 및 테이블
│ └── app.js # 메인 애플리케이션
└── data/ # JSON 데이터 파일
GET /api/path/files: 파일 목록 조회POST /api/path/load/{filename}: 파일 로드POST /api/path/save/{filename}: 파일 저장POST /api/path/upload: 파일 업로드GET /api/path/download/{filename}: 파일 다운로드
GET /api/path/nodes: 모든 노드 조회POST /api/path/nodes: 새 노드 생성PUT /api/path/nodes/{node_id}/position: 노드 위치 업데이트DELETE /api/path/nodes/{node_id}: 노드 삭제
GET /api/path/links: 모든 링크 조회POST /api/path/links: 새 링크 생성DELETE /api/path/links/{link_id}: 링크 삭제
- 파일 로드: 좌측 패널에서 기존 JSON 파일 선택
- 편집 모드 선택: 상단 모드 버튼으로 원하는 작업 선택
- 지도에서 편집: 노드 추가, 이동, 링크 생성 등
- 데이터 확인: 우측 테이블에서 실시간 데이터 확인
- 저장: Save 버튼으로 편집된 데이터 저장
1-4: 편집 모드 변경 (Select/Drag/Add/QuickLink)Q: QuickLink 모드D: Drag 모드A: Add Node 모드Ctrl+S: 파일 저장Ctrl+O: 파일 열기ESC: 취소/모달 닫기
- 노드 클릭으로 선택
- 선택된 노드 정보가 좌측 패널에 표시
- 노드를 클릭하고 드래그하여 위치 변경
- 연결된 링크의 길이 자동 재계산
- 지도의 원하는 위치 클릭
- 노드 정보 입력 모달에서 세부사항 설정
- 첫 번째 노드 클릭 (노란색으로 하이라이트)
- 두 번째 노드 클릭하여 링크 자동 생성
✅ 웹 기반: 브라우저에서 실행, 설치 불필요
✅ 반응형 UI: 다양한 화면 크기 지원
✅ 실시간 동기화: 지도와 테이블 간 즉시 반영
✅ 키보드 단축키: 빠른 작업을 위한 단축키 지원
✅ REST API: 다른 시스템과의 연동 가능
✅ 모든 기존 편집 기능 (노드/링크 추가, 수정, 삭제)
✅ GPS ↔ UTM 좌표 변환
✅ JSON 파일 포맷 호환성
✅ 드래그 앤 드롭 노드 이동
✅ QuickLink 기능
// 현재 데이터 확인
window.debug.getCurrentData()
// 지도 정보 확인
window.debug.getMapInfo()
// 특정 노드로 이동
window.debug.goToNode('N0001')
// API 상태 확인
await window.debug.healthCheck()
// 앱 재시작
await window.debug.restart()- 서버 실행 필요: 백엔드 서버가 실행되어야 함
- 데이터 백업: 중요한 데이터는 주기적으로 저장
- 브라우저 호환성: 모던 브라우저 권장 (Chrome, Firefox, Safari, Edge)
- 사용자 인증 및 권한 관리
- 실시간 다중 사용자 편집
- 더 많은 지도 타일 서비스 지원
- 데이터 내보내기 형식 확장
- 모바일 터치 최적화