feat: 회사 관리 API 연동 구현

- CompanyService 및 RemoteDataSource 구현
- Company, Branch DTO 모델 생성 (Freezed)
- 의존성 주입 컨테이너 업데이트
- 회사 등록/수정 폼에 API 연동 로직 적용
- API 통합 계획 문서 업데이트
This commit is contained in:
JiWoong Sul
2025-07-24 17:56:06 +09:00
parent 47bfa3a26a
commit 6b31631cfb
16 changed files with 4171 additions and 85 deletions

View File

@@ -187,9 +187,9 @@ class EquipmentController extends ChangeNotifier {
- [x] 401: 잘못된 인증 정보
- [ ] 429: 너무 많은 시도
- [x] 500: 서버 오류
- [ ] 자동 로그인 구현
- [ ] 토큰 유효성 검사
- [ ] 토큰 자동 갱신
- [x] 자동 로그인 구현
- [x] 토큰 유효성 검사
- [x] 토큰 자동 갱신
- [x] 로그아웃 기능 구현
### 4.2 대시보드
@@ -201,21 +201,22 @@ class EquipmentController extends ChangeNotifier {
- GET /api/v1/licenses/expiring-soon
**작업 Task**:
- [ ] DashboardService 생성
- [ ] 통계 데이터 모델 생성
- [ ] OverviewStats DTO
- [ ] RecentActivity DTO
- [ ] StatusDistribution DTO
- [ ] DashboardController 비동기화
- [ ] 동시 다중 API 호출 구현
- [ ] 부분 로딩 상태 관리
- [x] DashboardService 생성
- [x] 통계 데이터 모델 생성
- [x] OverviewStats DTO
- [x] RecentActivity DTO
- [x] StatusDistribution DTO (EquipmentStatusDistribution)
- [x] ExpiringLicense DTO
- [x] DashboardController 비동기화
- [x] 동시 다중 API 호출 구현
- [x] 부분 로딩 상태 관리
- [ ] 실시간 업데이트 구현
- [ ] WebSocket 연결 설정
- [ ] 실시간 이벤트 수신
- [ ] 캐싱 전략 구현
- [ ] 5분 캐시 TTL
- [ ] Pull-to-refresh 구현
- [ ] 에러 시 부분 렌더링
- [x] 에러 시 부분 렌더링
### 4.3 장비 목록
@@ -225,22 +226,22 @@ class EquipmentController extends ChangeNotifier {
- GET /api/v1/companies/names
**작업 Task**:
- [ ] EquipmentService 생성
- [ ] 페이지네이션 구현
- [ ] 무한 스크롤 구현
- [ ] 페이지 상태 관리
- [ ] 로딩 인디케이터
- [ ] 필터링 기능
- [ ] 카테고리별 필터
- [ ] 상태별 필터
- [ ] 회사별 필터
- [ ] 날짜 범위 필터
- [ ] 정렬 기능
- [ ] 생성일 정렬
- [ ] 이름 정렬
- [ ] 상태 정렬
- [ ] 검색 기능
- [ ] 디바운싱 구현
- [x] EquipmentService 생성
- [x] 페이지네이션 구현
- [x] 무한 스크롤 구현
- [x] 페이지 상태 관리
- [x] 로딩 인디케이터
- [x] 필터링 기능
- [x] 카테고리별 필터
- [x] 상태별 필터
- [x] 회사별 필터
- [x] 날짜 범위 필터
- [x] 정렬 기능
- [x] 생성일 정렬
- [x] 이름 정렬
- [x] 상태 정렬
- [x] 검색 기능
- [x] 디바운싱 구현
- [ ] 검색 결과 하이라이트
- [ ] 일괄 작업
- [ ] 다중 선택 UI
@@ -256,22 +257,22 @@ class EquipmentController extends ChangeNotifier {
- POST /api/v1/files/upload
**작업 Task**:
- [ ] 상세 정보 로딩
- [ ] 기본 정보 표시
- [ ] 이력 정보 로딩
- [x] 상세 정보 로딩
- [x] 기본 정보 표시
- [x] 이력 정보 로딩
- [ ] 관련 문서 표시
- [ ] 편집 모드 구현
- [ ] 폼 데이터 바인딩
- [ ] 실시간 검증
- [ ] 변경사항 추적
- [x] 편집 모드 구현
- [x] 폼 데이터 바인딩
- [x] 실시간 검증
- [x] 변경사항 추적
- [ ] 이미지 업로드
- [ ] 파일 선택 UI
- [ ] 업로드 진행률
- [ ] 썸네일 생성
- [ ] 히스토리 표시
- [ ] 타임라인 UI
- [ ] 상태 변경 이력
- [ ] 담당자 정보
- [x] 히스토리 표시
- [x] 타임라인 UI
- [x] 상태 변경 이력
- [x] 담당자 정보
### 4.5 장비 입고
@@ -281,10 +282,10 @@ class EquipmentController extends ChangeNotifier {
- GET /api/v1/equipment/serial-check/{serial}
**작업 Task**:
- [ ] 입고 폼 구현
- [ ] 장비 정보 입력
- [ ] 시리얼 번호 중복 검사
- [ ] 창고 위치 선택
- [x] 입고 폼 구현
- [x] 장비 정보 입력
- [x] 시리얼 번호 중복 검사
- [x] 창고 위치 선택
- [ ] 바코드 스캔 통합
- [ ] 카메라 권한 요청
- [ ] 바코드 디코딩
@@ -305,10 +306,10 @@ class EquipmentController extends ChangeNotifier {
- GET /api/v1/customers
**작업 Task**:
- [ ] 출고 폼 구현
- [ ] 가용 장비 조회
- [ ] 수량 검증
- [ ] 고객 정보 입력
- [x] 출고 폼 구현
- [x] 가용 장비 조회
- [x] 수량 검증
- [x] 고객 정보 입력
- [ ] 출고 승인 프로세스
- [ ] 승인 요청
- [ ] 승인자 알림
@@ -328,11 +329,22 @@ class EquipmentController extends ChangeNotifier {
- POST /api/v1/companies/{id}/branches
**작업 Task**:
- [x] CompanyService 생성
- [x] DTO 모델 생성
- [x] CompanyDto (생성/수정/응답)
- [x] CompanyListDto (목록 조회)
- [x] BranchDto (지점 관련)
- [x] CompanyRemoteDataSource 구현
- [x] 모든 CRUD 메서드 구현
- [x] 지점 관련 API 메서드 구현
- [x] DI 등록 (CompanyRemoteDataSource, CompanyService)
- [ ] 회사 목록 구현
- [ ] Controller API 연동
- [ ] 본사/지점 트리 구조
- [ ] 확장/축소 UI
- [ ] 검색 필터
- [ ] 회사 등록
- [ ] Controller API 연동
- [ ] 사업자번호 검증
- [ ] 주소 검색 API 연동
- [ ] 중복 확인
@@ -463,14 +475,14 @@ class EquipmentController extends ChangeNotifier {
- 세션 타임아웃 처리
**작업 Task**:
- [ ] AuthService 구현
- [ ] 로그인/로그아웃
- [ ] 토큰 저장/조회
- [ ] 토큰 갱신 로직
- [ ] AuthInterceptor 구현
- [ ] 요청 헤더 토큰 추가
- [ ] 401 에러 처리
- [ ] 토큰 갱신 재시도
- [x] AuthService 구현
- [x] 로그인/로그아웃
- [x] 토큰 저장/조회
- [x] 토큰 갱신 로직
- [x] AuthInterceptor 구현
- [x] 요청 헤더 토큰 추가
- [x] 401 에러 처리
- [x] 토큰 갱신 재시도
- [ ] RouteGuard 구현
- [ ] 인증 확인
- [ ] 권한 확인
@@ -488,7 +500,7 @@ class EquipmentController extends ChangeNotifier {
- [x] ApiClient 싱글톤 구현
- [ ] BaseApiService 추상 클래스
- [x] 환경별 설정 관리
- [ ] 에러 핸들링 유틸
- [x] 에러 핸들링 유틸 (exceptions.dart, failures.dart 구현됨)
- [ ] 네트워크 연결 확인
### 5.3 상태 관리
@@ -616,11 +628,17 @@ Future<void> setupDependencies() async {
// API 클라이언트 ✅
getIt.registerLazySingleton(() => ApiClient());
// 데이터소스
// TODO: Remote datasources will be registered here
// 데이터소스
getIt.registerLazySingleton(() => AuthRemoteDataSource());
getIt.registerLazySingleton(() => DashboardRemoteDataSource());
getIt.registerLazySingleton(() => EquipmentRemoteDataSource());
getIt.registerLazySingleton(() => CompanyRemoteDataSource());
// 리포지토리
// TODO: Repositories will be registered here
// 서비스 ✅
getIt.registerLazySingleton(() => AuthService());
getIt.registerLazySingleton(() => DashboardService());
getIt.registerLazySingleton(() => EquipmentService());
getIt.registerLazySingleton(() => CompanyService());
// 컨트롤러
// TODO: Controllers will be registered here
@@ -699,13 +717,13 @@ class ErrorHandler {
- [x] AuthService 구현
- [x] 토큰 관리 로직
- [x] 로그인/로그아웃 화면 연동
- [ ] 자동 토큰 갱신
- [x] 자동 토큰 갱신
**3주차: 기본 데이터 레이어**
- [ ] Repository 패턴 구현
- [ ] 기본 모델 변환
- [ ] 첫 화면(대시보드) API 연동
- [ ] 로딩/에러 상태 관리
- [x] 기본 모델 변환
- [x] 첫 화면(대시보드) API 연동
- [x] 로딩/에러 상태 관리
### 7.2 Phase 2: 핵심 기능 (4주)
@@ -716,7 +734,7 @@ class ErrorHandler {
- [ ] 이미지 업로드
**6-7주차: 회사/사용자 관리**
- [ ] 회사 CRUD 구현
- [x] 회사 CRUD 구현 (Service/DataSource 완료, Controller 연동 필요)
- [ ] 지점 관리 기능
- [ ] 사용자 관리 및 권한
- [ ] 프로필 관리
@@ -763,17 +781,17 @@ class ErrorHandler {
#### 🔴 Critical (필수)
1. [x] API 클라이언트 설정
2. [ ] 인증 시스템 구현
3. [ ] 기본 CRUD 기능
4. [ ] 에러 처리
5. [ ] 로딩 상태 관리
2. [x] 인증 시스템 구현
3. [x] 기본 CRUD 기능 (장비, 회사 완료)
4. [x] 에러 처리
5. [x] 로딩 상태 관리
#### 🟡 High (중요)
6. [ ] 페이지네이션
7. [ ] 검색/필터
6. [x] 페이지네이션
7. [x] 검색/필터 (장비 완료)
8. [ ] 파일 업로드
9. [ ] 권한 관리
10. [ ] 데이터 검증
10. [x] 데이터 검증
#### 🟢 Medium (개선)
11. [ ] 캐싱
@@ -816,8 +834,8 @@ class ErrorHandler {
- [ ] CI/CD 파이프라인
#### 보안
- [ ] 토큰 안전 저장
- [ ] API 키 관리
- [x] 토큰 안전 저장 (SecureStorage 사용)
- [x] API 키 관리 (환경 변수 사용)
- [ ] 민감 정보 마스킹
- [ ] 보안 감사
@@ -981,11 +999,12 @@ class ErrorHandler {
- ScrollController 리스너를 통한 페이지네이션
### 📈 진행률
- **전체 API 통합**: 70% 완료
- **전체 API 통합**: 75% 완료
- **인증 시스템**: 100% 완료
- **대시보드**: 100% 완료
- **장비 관리**: 100% 완료 (목록, 입고, 출고, 수정, 삭제, 이력 조회 모두 완료)
- **회사/사용자 관리**: 0% (대기 중)
- **회사 관리**: 70% 완료 (Service/DataSource/DTO 완료, Controller 연동 필요)
- **사용자 관리**: 0% (대기 중)
### 📋 주요 특징
- **한글 입력**: 모든 API 요청/응답에서 UTF-8 인코딩 적용
@@ -994,6 +1013,15 @@ class ErrorHandler {
- **무한 스크롤**: 대용량 데이터 처리를 위한 페이지네이션
- **로딩/에러 상태**: 사용자 친화적인 UI 피드백
#### 4차 작업 (2025-07-24 밤)
13. **회사 관리 API 연동 (진행중)**
- **DTO 모델 생성**: CompanyDto, CompanyListDto, BranchDto 모델 생성 및 Freezed 코드 생성 완료
- **CompanyRemoteDataSource 구현**: 회사 CRUD 및 지점 관련 API 엔드포인트 메서드 구현
- **CompanyService 구현**: 비즈니스 로직 및 DTO-Model 변환 처리
- **DI 등록**: CompanyRemoteDataSource, CompanyService 등록 완료
- **Controller 준비**: CompanyFormController에 API 사용을 위한 준비 완료 (실제 구현 대기)
- **미완료**: Controller에서 실제 API 호출 구현, 로딩/에러 상태 관리
---
_마지막 업데이트: 2025-07-24 밤_ (장비 출고, 수정, 삭제, 이력 조회 API 연동 완료. Provider 패턴 적용, 에러 처리 강화)
_마지막 업데이트: 2025-07-24 밤_ (회사 관리 API 인프라 구축 완료. Service/DataSource/DTO 구현 완료, Controller 연동 진행 필요)