From 05b478372a57240638ebcf70f83aa8f5bc64b4a5 Mon Sep 17 00:00:00 2001 From: byun Date: Thu, 28 May 2026 11:46:23 +0900 Subject: [PATCH] =?UTF-8?q?Claude=20Code=20=EC=BB=A8=ED=85=8D=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..ccac327 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,89 @@ +# EV 충전기 AS 관리 시스템 + +## 프로젝트 개요 +전기차 충전기 고장 신고 및 AS 관리 시스템. +cs.byunc.com 으로 운영 중. 5825u Debian 서버, Docker Compose. + +## 기술 스택 +- Backend: Python FastAPI (포트 8000 내부) +- DB: PostgreSQL (evuser / evcharger) +- Frontend: 순수 HTML/CSS/JS (Nginx 정적 서빙) +- Reverse Proxy: Nginx (포트 5700 노출) +- Container: Docker Compose + +## 폴더 구조 +ev-charger-as/ +├── docker-compose.yml +├── .env ← git 제외 (SECRET_KEY, DB 비번) +├── nginx/nginx.conf +├── backend/ +│ ├── main.py ← FastAPI 앱 진입점 +│ ├── models.py ← SQLAlchemy ORM +│ ├── auth.py ← bcrypt 직접 사용 (passlib 충돌 이슈 있었음) +│ ├── database.py +│ ├── utils.py ← QR생성, 파일저장 +│ ├── init_db.sql ← 최초 DB 스키마 + 기본데이터 +│ └── routers/ +│ ├── auth_router.py +│ ├── chargers.py ← 충전기 + 충전기종류 CRUD +│ ├── reports.py ← AS 신고 (공개 엔드포인트 포함) +│ ├── repairs.py ← 정비사 조치 +│ ├── costs.py ← 출장비 관리 +│ ├── improvements.py ← 개선항목 +│ ├── accounts.py ← 계정 관리 +│ ├── settings.py ← 시스템설정 + 이미지압축설정 +│ └── export.py ← 엑셀 다운로드 +└── frontend/static/ + ├── css/style.css + ├── js/ + │ ├── api.js ← fetch 래퍼 (download 함수 포함) + │ ├── auth.js ← JWT 로컬스토리지 관리 + │ └── imageCompress.js ← Canvas API 이미지 압축 + └── pages/ + ├── login.html + ├── report.html ← QR 신고 페이지 (공개, 현황 표시 포함) + ├── admin/ + │ ├── dashboard.html + │ ├── reports.html + │ ├── report-detail.html ← 출장비 요약+수정 폼 + │ ├── costs.html + │ ├── improvements.html + │ ├── improvement-detail.html + │ ├── chargers.html + │ ├── charger-types.html ← 수정 기능 포함 + │ ├── qr.html + │ ├── accounts.html + │ └── settings.html ← 이미지압축 설정 포함 + ├── mechanic/ + │ ├── dashboard.html + │ ├── repair.html ← 다중사진 + 이미지압축 + │ └── scan.html + └── manufacturer/ + ├── dashboard.html + └── improvement.html + +## 사용자 역할 +- 일반 사용자: QR 스캔 신고 (로그인 불필요) +- 정비사 (mechanic): 조치 입력, 중복신고 처리 +- 제조사 (manufacturer): 개선항목 열람·업데이트 +- 관리자 (admin): 전체 관리 + +## 주요 개발 원칙 +- Frontend HTML 수정 → Docker 재시작 불필요 (nginx 정적 서빙) +- Backend Python 수정 → docker compose build backend && docker compose up -d --no-deps backend +- bcrypt: passlib 충돌로 bcrypt 라이브러리 직접 사용 (auth.py 참고) +- 한글 파일명 엑셀: urllib.parse.quote() 로 URL 인코딩 필수 +- 이미지 압축: 브라우저 Canvas API (imageCompress.js), 설정은 /api/settings/public + +## DB 주요 테이블 +charger_types, chargers, users, reports, report_photos, +repairs, repair_reports, repair_photos, repair_costs, +improvements, improvement_reports, improvement_attachments, +improvement_logs, system_settings + +## 현재 운영 환경 +- 서버: root@debian5825u ~/cs_charger/ev-charger-as +- 접속: https://cs.byunc.com +- 내부포트: 5700 +- Gitea: gitea.byunc.com +- 백업: ~/backups/ (매일 새벽 3시 크론)