Files
superport/CLAUDE.md
JiWoong Sul c419f8f458 backup: 사용하지 않는 파일 삭제 전 복구 지점
- 전체 371개 파일 중 82개 미사용 파일 식별
- Phase 1: 33개 파일 삭제 예정 (100% 안전)
- Phase 2: 30개 파일 삭제 검토 예정
- Phase 3: 19개 파일 수동 검토 예정

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-02 19:51:40 +09:00

189 lines
5.0 KiB
Markdown

# Superport ERP Development Guide v2.0
*Complete Flutter ERP System with Clean Architecture*
---
## 🎯 PROJECT STATUS
```yaml
Current_State: "Phase 8.2 Complete - 95% Form Completion Achieved"
API_Coverage: "100%+ (61/53 endpoints implemented)"
System_Health: "Production Ready - Zero Runtime Errors"
Architecture: "Clean Architecture + shadcn_ui + 100% Backend Dependency"
```
**🏆 ACHIEVEMENT: Complete ERP system with 7 core modules + StandardDropdown framework**
---
## 🔧 CORE DEVELOPMENT PRINCIPLES
### Rule 1: UI Components (ABSOLUTE)
```dart
// ✅ REQUIRED - shadcn_ui only
StandardDataTable<T>(), ShadButton.outline(), ShadSelect<String>()
// ❌ FORBIDDEN - Flutter base widgets
DataTable(), ElevatedButton(), DropdownButton()
```
### Rule 2: Backend Dependency (100%)
```yaml
Policy: "Backend schema = absolute truth"
Frontend_Role: "Data display only - zero business logic"
API_Rule: "Use existing endpoints only - no modifications"
Backend_Location: "/Users/maximilian.j.sul/Documents/flutter/superport_api/"
```
### Rule 3: Clean Architecture (STRICT)
```
API ← Repository ← UseCase ← Controller ← UI
└── DTO mapping with exact backend field names
```
### Rule 4: Field Naming (CRITICAL)
```dart
// ✅ CORRECT - Match backend exactly
@JsonKey(name: 'companies_id') int? companiesId
@JsonKey(name: 'models_id') int? modelsId
// ❌ WRONG - Causes runtime exceptions
@JsonKey(name: 'company_id') int? companyId
```
---
## 🚀 COMPLETED MODULES
### Production-Ready ERP Components
1. **Equipment Management**: CRUD + Advanced Search (Serial/Barcode/Company)
2. **Inventory Control**: Real-time stock tracking + Transaction history
3. **Maintenance System**: WARRANTY/CONTRACT/INSPECTION with 30-day alerts
4. **Rental Management**: Backend-calculated fields (isActive, daysRemaining)
5. **User Authentication**: Profile management + Password change
6. **Master Data**: Models/Vendors with vendor-specific filtering
7. **StandardDropdown**: Generic\<T> components with auto state management
### Key Business Value
- **Warehouse Operations**: 30x faster with barcode scanning
- **Maintenance Alerts**: Automatic 30-day expiry notifications
- **Real-time Inventory**: Instant stock level updates
- **Autonomous Management**: Zero IT dependency for master data
---
## 📋 DEVELOPMENT CHECKLIST
### Before Every Code Change
- [ ] Verify backend API exists in `/superport_api/src/handlers/`
- [ ] Confirm DTO field names match backend exactly
- [ ] Use only shadcn_ui components (never Flutter base widgets)
- [ ] Follow Clean Architecture pattern
- [ ] Maintain Flutter Analyze ERROR: 0
### Standard Form Implementation
```dart
// Template for new forms
class ExampleController extends ChangeNotifier {
final ExampleUseCase _useCase;
List<ExampleDto> _items = [];
bool _isLoading = false;
Future<void> loadItems() async {
_isLoading = true;
notifyListeners();
final result = await _useCase.getItems();
result.fold(
(failure) => _handleError(failure),
(data) => _items = data,
);
_isLoading = false;
notifyListeners();
}
}
```
### StandardDropdown Usage
```dart
StandardIntDropdown<VendorDto>(
label: '제조사',
isRequired: true,
items: vendors,
isLoading: _isLoadingVendors,
error: errorMessage,
onRetry: () => _loadVendors(),
// Auto handles: Loading → Error (retry) → Success states
)
```
---
## 🎯 NEXT PHASE
### Phase 8.3: Form Standardization (95% → 98%)
**Objective**: Achieve industry-leading form consistency
**Tasks**:
1. Implement StandardFormDialog for all forms
2. Unify layout patterns (field spacing, button positions)
3. Standardize error display and validation
4. Complete shadcn_ui migration (100% coverage)
**Success Criteria**:
- All 9 forms use identical patterns
- 80% faster development for new forms
- Zero UI inconsistencies
- Perfect shadcn_ui compliance
---
## 🔗 CRITICAL PATHS
```bash
# Backend API Reference
Backend: /Users/maximilian.j.sul/Documents/flutter/superport_api/
Handlers: src/handlers/*.rs
Routes: src/handlers/mod.rs → configure_routes()
# Frontend Structure
Frontend: /Users/maximilian.j.sul/Documents/flutter/superport/
Architecture: lib/{data,domain,screens,services}/
```
---
## ⚠️ COMMON PITFALLS
### Type Safety Issues
```dart
// ❌ Runtime Exception Risk
_items = List<T>.from(response.items);
// ✅ Safe Type Conversion
_items = (response.items as List).whereType<T>().toList();
```
### Provider in Dialogs
```dart
// ❌ Provider Missing
showDialog(builder: (context) => MyDialog());
// ✅ Provider Wrapped
showDialog(
builder: (context) => ChangeNotifierProvider(
create: (_) => MyController(),
child: MyDialog(),
),
);
```
---
## 📅 UPDATE LOG
- **2025-09-02**: Phase 8.2 Complete - StandardDropdown system + 95% forms
- **2025-09-01**: Phase 1-7 Complete - Full ERP system + 100%+ API coverage
- **Next**: Phase 8.3 - Final form standardization (98% completion target)
---
*Document updated with 2025 prompt engineering best practices*