feat: 대규모 코드베이스 개선 - 백엔드 통합성 강화 및 UI 일관성 완성
Some checks failed
Flutter Test & Quality Check / Test on macos-latest (push) Has been cancelled
Flutter Test & Quality Check / Test on ubuntu-latest (push) Has been cancelled
Flutter Test & Quality Check / Build APK (push) Has been cancelled

- CLAUDE.md 대폭 개선: 개발 가이드라인 및 프로젝트 상태 문서화
- 백엔드 API 통합: 모든 엔티티 간 Foreign Key 관계 완벽 구현
- UI 일관성 강화: shadcn_ui 컴포넌트 표준화 적용
- 데이터 모델 개선: DTO 및 모델 클래스 백엔드 스키마와 100% 일치
- 사용자 관리: 회사 연결, 중복 검사, 입력 검증 기능 추가
- 창고 관리: 우편번호 연결, 중복 검사 기능 강화
- 회사 관리: 우편번호 연결, 중복 검사 로직 구현
- 장비 관리: 불필요한 카테고리 필드 제거, 벤더-모델 관계 정리
- 우편번호 시스템: 검색 다이얼로그 Provider 버그 수정

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
JiWoong Sul
2025-08-31 15:49:05 +09:00
parent 9dec6f1034
commit df7dd8dacb
46 changed files with 2148 additions and 2722 deletions

View File

@@ -87,13 +87,21 @@ class WarehouseRemoteDataSourceImpl implements WarehouseRemoteDataSource {
'${ApiEndpoints.warehouses}/$id',
);
if (response.data != null && response.data['success'] == true && response.data['data'] != null) {
return WarehouseDto.fromJson(response.data['data']);
} else {
throw ApiException(
message: response.data?['error']?['message'] ?? 'Failed to fetch warehouse location',
);
// 백엔드가 직접 데이터를 반환하는 경우 처리
if (response.data != null) {
// success 필드가 없으면 직접 데이터로 간주
if (response.data is Map && !response.data.containsKey('success')) {
return WarehouseDto.fromJson(response.data);
}
// success 필드가 있는 경우 기존 방식 처리
else if (response.data['success'] == true && response.data['data'] != null) {
return WarehouseDto.fromJson(response.data['data']);
}
}
throw ApiException(
message: response.data?['error']?['message'] ?? 'Failed to fetch warehouse location',
);
} catch (e) {
throw _handleError(e);
}
@@ -107,13 +115,21 @@ class WarehouseRemoteDataSourceImpl implements WarehouseRemoteDataSource {
data: request.toJson(),
);
if (response.data != null && response.data['success'] == true && response.data['data'] != null) {
return WarehouseDto.fromJson(response.data['data']);
} else {
throw ApiException(
message: response.data?['error']?['message'] ?? 'Failed to fetch warehouse location',
);
// 백엔드가 직접 데이터를 반환하는 경우 처리
if (response.data != null) {
// success 필드가 없으면 직접 데이터로 간주
if (response.data is Map && !response.data.containsKey('success')) {
return WarehouseDto.fromJson(response.data);
}
// success 필드가 있는 경우 기존 방식 처리
else if (response.data['success'] == true && response.data['data'] != null) {
return WarehouseDto.fromJson(response.data['data']);
}
}
throw ApiException(
message: response.data?['error']?['message'] ?? 'Failed to create warehouse location',
);
} catch (e) {
throw _handleError(e);
}
@@ -127,13 +143,21 @@ class WarehouseRemoteDataSourceImpl implements WarehouseRemoteDataSource {
data: request.toJson(),
);
if (response.data != null && response.data['success'] == true && response.data['data'] != null) {
return WarehouseDto.fromJson(response.data['data']);
} else {
throw ApiException(
message: response.data?['error']?['message'] ?? 'Failed to fetch warehouse location',
);
// 백엔드가 직접 데이터를 반환하는 경우 처리
if (response.data != null) {
// success 필드가 없으면 직접 데이터로 간주
if (response.data is Map && !response.data.containsKey('success')) {
return WarehouseDto.fromJson(response.data);
}
// success 필드가 있는 경우 기존 방식 처리
else if (response.data['success'] == true && response.data['data'] != null) {
return WarehouseDto.fromJson(response.data['data']);
}
}
throw ApiException(
message: response.data?['error']?['message'] ?? 'Failed to update warehouse location',
);
} catch (e) {
throw _handleError(e);
}