🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
151 lines
3.7 KiB
Markdown
151 lines
3.7 KiB
Markdown
# SAM Project TODO
|
|
|
|
> **마지막 업데이트**: 2025-12-21
|
|
|
|
---
|
|
|
|
## 🔴 긴급 (보안/필수)
|
|
|
|
### [TODO-001] Settings 권한 관리 localStorage → API 전환
|
|
|
|
**발견일**: 2025-12-20
|
|
**우선순위**: 🔴 긴급
|
|
**카테고리**: 보안
|
|
|
|
**현재 상태**:
|
|
- 권한 관리가 `localStorage`에 저장됨
|
|
- 파일: `react/src/components/settings/PermissionManagement/index.tsx`
|
|
- 키: `buddy_permissions`
|
|
|
|
**문제점**:
|
|
| 문제 | 설명 |
|
|
|------|------|
|
|
| 클라이언트 저장 | 권한이 브라우저에만 저장됨 |
|
|
| 조작 가능 | DevTools에서 누구나 수정 가능 |
|
|
| 서버 미검증 | 서버에서 권한 검증 안 함 |
|
|
| 세션 비공유 | 다른 브라우저/기기에서 권한 없음 |
|
|
|
|
**해결 방안**:
|
|
```
|
|
현재: localStorage → 브라우저에 저장
|
|
개선: API 호출 → DB에 저장 → 서버에서 검증
|
|
|
|
필요 API:
|
|
- GET /api/v1/roles
|
|
- POST /api/v1/roles
|
|
- PUT /api/v1/roles/{id}/permissions
|
|
- GET /api/v1/permissions
|
|
```
|
|
|
|
**관련 문서**:
|
|
- `docs/projects/api-integration/phase-3-api-mapping/gap-analysis.md`
|
|
|
|
---
|
|
|
|
## 🟡 중요 (기능 완성)
|
|
|
|
### [TODO-002] Mock 데이터 → API 연동 전환
|
|
|
|
**발견일**: 2025-12-20
|
|
**우선순위**: 🟡 중요
|
|
**카테고리**: 기능 개발
|
|
|
|
**현재 상태**:
|
|
- 109개 React 페이지 중 95개 (87.2%)가 Mock 데이터 사용
|
|
- `generateMockData()` 함수 패턴
|
|
|
|
**영향 모듈**:
|
|
| 모듈 | 페이지 수 | 상태 |
|
|
|------|----------|------|
|
|
| Accounting | 17 | 🆕 Mock |
|
|
| HR | 9 | 🆕 Mock |
|
|
| Board | 6 | 🆕 Mock |
|
|
| Approval | 4 | 🆕 Mock |
|
|
| Settings | 10 | 🆕 Mock |
|
|
| Dashboard | 1 | ⏳ 미구현 |
|
|
| Reports | 2 | 🆕 Mock |
|
|
| Customer Center | 6 | 🆕 Mock |
|
|
| Production | 4 | 🆕 Mock |
|
|
| Sales (일부) | 4 | 🆕 Mock |
|
|
|
|
**관련 문서**:
|
|
- `docs/projects/api-integration/phase-3-api-mapping/mapping-matrix.md`
|
|
- `docs/projects/api-integration/phase-3-api-mapping/gap-analysis.md`
|
|
|
|
### [TODO-004] 프론트엔드 client_type 코드값 전송 개선
|
|
|
|
**발견일**: 2025-12-21
|
|
**우선순위**: 🟡 중요
|
|
**카테고리**: 데이터 정합성
|
|
|
|
**현재 상태**:
|
|
- 프론트엔드에서 `client_type`에 한글 이름(`매입`, `매출`) 전송
|
|
- API는 `common_codes.code` 값(`PURCHASE`, `SALES`) 기대
|
|
- 422 Validation Error 발생
|
|
|
|
**임시 해결**:
|
|
- API `ClientStoreRequest`, `ClientUpdateRequest`에서 `prepareForValidation()` 추가
|
|
- 한글 name → code 자동 변환 처리
|
|
|
|
**영구 해결 필요**:
|
|
| 파일 | 수정 내용 |
|
|
|------|----------|
|
|
| `react/src/hooks/useClientList.ts` | client_type 전송 시 code 값 사용 |
|
|
| `react/src/components/clients/*` | 폼에서 code/name 구분 처리 |
|
|
|
|
**유효한 코드값**:
|
|
| code | name |
|
|
|------|------|
|
|
| `PURCHASE` | 매입 |
|
|
| `SALES` | 매출 |
|
|
| `BOTH` | 매입매출 |
|
|
|
|
**관련 에러**:
|
|
```json
|
|
{
|
|
"error": {
|
|
"details": {
|
|
"client_type": ["선택된 client type은(는) 유효하지 않습니다."]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 🟢 개선 (최적화)
|
|
|
|
### [TODO-003] API 클라이언트 패턴 통일
|
|
|
|
**발견일**: 2025-12-20
|
|
**우선순위**: 🟢 개선
|
|
**카테고리**: 코드 품질
|
|
|
|
**현재 상태**:
|
|
| 패턴 | 사용처 | 비고 |
|
|
|------|--------|------|
|
|
| `/api/proxy/*` | Items, Clients | ✅ 표준 |
|
|
| `/api/v1/*` (Server Actions) | Pricing | 다른 패턴 |
|
|
| `generateMockData()` | 대부분 | Mock |
|
|
|
|
**권장사항**: `/api/proxy/*` 패턴으로 통일
|
|
|
|
---
|
|
|
|
## ✅ 완료
|
|
|
|
| ID | 제목 | 완료일 | 비고 |
|
|
|----|------|--------|------|
|
|
| - | - | - | - |
|
|
|
|
---
|
|
|
|
## 참고
|
|
|
|
- **Phase 3 분석 결과**: `docs/projects/api-integration/phase-3-api-mapping/`
|
|
- **전체 진행 상황**: `docs/projects/api-integration/PROGRESS.md`
|
|
|
|
---
|
|
|
|
*이 문서는 발견된 이슈와 개선사항을 추적합니다.*
|