- 네트워크 레이어 구현 (Dio 기반 ApiClient) - 환경별 설정 관리 시스템 구축 - 의존성 주입 설정 (GetIt) - API 엔드포인트 상수 정의 - 인터셉터 구현 (Auth, Error, Logging) - 프로젝트 아키텍처 개선 (core, data, di 디렉토리 구조) - API 통합 계획서 및 요구사항 문서 작성 - 필요 패키지 추가 (dio, flutter_secure_storage, get_it 등)
4.9 KiB
4.9 KiB
CLAUDE.md
이 파일은 Claude Code (claude.ai/code)가 SuperPort 프로젝트에서 작업할 때 필요한 가이드라인을 제공합니다.
🎯 프로젝트 개요
SuperPort는 Flutter 기반 장비 관리 ERP 시스템으로, 웹과 모바일 플랫폼을 지원합니다.
주요 기능
- 장비 입출고 관리 및 이력 추적
- 회사/지점 계층 구조 관리
- 사용자 권한 관리 (관리자/일반)
- 유지보수 라이선스 관리
- 창고 위치 관리
기술 스택
- Frontend: Flutter (Web + Mobile)
- State Management: Custom Controller Pattern
- Data Layer: MockDataService (API 연동 준비됨)
- UI Theme: Shadcn Design System
- Localization: 한국어 우선, 영어 지원
📂 프로젝트 구조
아키텍처 개요
lib/
├── models/ # 데이터 모델 (JSON serialization 포함)
├── services/ # 비즈니스 로직 서비스
│ └── mock_data_service.dart # Singleton 패턴 Mock 데이터
├── screens/ # 화면별 디렉토리
│ ├── equipment/ # 장비 관리
│ ├── company/ # 회사/지점 관리
│ ├── user/ # 사용자 관리
│ ├── license/ # 라이선스 관리
│ ├── warehouse/ # 창고 관리
│ └── common/ # 공통 컴포넌트
│ ├── layouts/ # AppLayoutRedesign (사이드바 네비게이션)
│ └── custom_widgets/ # 재사용 위젯
└── theme/ # theme_shadcn.dart (커스텀 테마)
상태 관리 패턴
- Controller Pattern 사용 (Provider 대신)
- 각 화면마다 전용 Controller 구현
- 위치:
lib/screens/*/controllers/ - 예시:
EquipmentInController,CompanyController
💼 비즈니스 엔티티
1. Equipment (장비)
- 제조사, 이름, 카테고리 (대/중/소)
- 시리얼 번호가 있으면 수량 = 1 (수정 불가)
- 시리얼 번호가 없으면 복수 수량 가능
- 입출고 이력: 'I' (입고), 'O' (출고)
2. Company (회사)
- 본사/지점 계층 구조
- 지점별 독립된 주소와 연락처
- 회사 → 지점들 관계
3. User (사용자)
- 회사 연결
- 권한 레벨: 'S' (관리자), 'M' (일반)
4. License (라이선스)
- 유지보수 라이선스
- 기간 및 방문 주기 관리
🛠 개발 명령어
# 개발 실행
flutter run
# 빌드
flutter build web # 웹 배포
flutter build apk # Android APK
flutter build ios # iOS (macOS 필요)
# 코드 품질
flutter analyze # 정적 분석
flutter format . # 코드 포맷팅
# 의존성
flutter pub get # 설치
flutter pub upgrade # 업그레이드
# 테스트
flutter test # 테스트 실행
📐 코딩 컨벤션
네이밍 규칙
- 파일: snake_case (
equipment_list.dart) - 클래스: PascalCase (
EquipmentInController) - 변수/메서드: camelCase (
userName,calculateTotal) - Boolean: 동사 기반 (
isReady,hasError)
파일 구조
- 300줄 초과 시 기능별 분리 고려
- 모델별 파일 분리 (
equipment.dartvsequipment_in.dart) - 재사용 컴포넌트는
custom_widgets/로 추출
UI 가이드라인
- Metronic Admin Template 디자인 패턴 준수
- Material Icons 사용
- ShadcnCard: 일관된 카드 스타일
- FormFieldWrapper: 폼 필드 간격
- 반응형 디자인 (웹/모바일)
🚀 구현 가이드
새 기능 추가 순서
lib/models/에 모델 생성MockDataService에 목 데이터 추가- 화면 디렉토리에 Controller 생성
- 목록/폼 화면 구현
AppLayoutRedesign에 네비게이션 추가
폼 구현 팁
- 필수 필드 검증
- 날짜 선택: 과거 날짜만 허용 (이력 기록용)
- 카테고리: 계층적 드롭다운 (대→중→소)
- 생성/수정 모드 모두 처리
📋 현재 상태
✅ 구현 완료
- 로그인 화면 (Mock 인증)
- 메인 레이아웃 (사이드바 네비게이션)
- 모든 엔티티 CRUD
- 한국어/영어 다국어 지원
- 반응형 디자인
- Mock 데이터 서비스
🔜 구현 예정
- API 연동
- 실제 인증
- 바코드 스캔
- 테스트 커버리지
- 장비 보증 추적
- PDF 내보내기 (의존성 준비됨)
🔍 디버깅 팁
- 데이터 문제:
MockDataService확인 - 비즈니스 로직: Controller 확인
- 정적 분석:
flutter analyze - 웹 문제: 브라우저 콘솔 확인
💬 응답 규칙
언어 설정
- 코드/변수명: 영어
- 주석/문서/응답: 한국어
- 기술 용어는 영어 병기 가능
Git 커밋 메시지
type: 간단한 설명 (한국어)
선택적 상세 설명
타입:
feat: 새 기능fix: 버그 수정refactor: 리팩토링docs: 문서 변경test: 테스트chore: 빌드/도구
주의: AI 도구 속성 표시 금지