feat(WEB): QMS 검사 모달 개선, 전자결재/생산대시보드/템플릿 기능 수정
- QMS: InspectionModal/InspectionModalV2 개선, mockData 정리 - 전자결재: DocumentCreate 기능 수정 - 생산대시보드: ProductionDashboard 개선 - 템플릿: IntegratedDetailTemplate/UniversalListPage 기능 수정 - 문서: i18n 가이드 업데이트, 문서뷰어 아키텍처 계획 추가 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,154 @@
|
||||
|
||||
---
|
||||
|
||||
## 적용 현황 분석 (2026-02-03 기준)
|
||||
|
||||
### 인프라 상태: 완비
|
||||
|
||||
| 항목 | 상태 | 설명 |
|
||||
|------|------|------|
|
||||
| 라이브러리 | `next-intl` ^4.4.0 | 설치 및 설정 완료 |
|
||||
| 지원 언어 | ko, en, ja | 3개 locale |
|
||||
| 번역 파일 | `src/messages/{ko,en,ja}.json` | 13개 네임스페이스, ~215개 키 |
|
||||
| 미들웨어 | `src/middleware.ts` | locale 라우팅 + 인증 통합 완료 |
|
||||
| Provider | `[locale]/layout.tsx` | `NextIntlClientProvider` 정상 |
|
||||
| URL 라우팅 | `localePrefix: 'as-needed'` | ko는 URL 생략, en/ja는 prefix |
|
||||
|
||||
### 실제 적용 현황: 극히 일부만 적용
|
||||
|
||||
**`useTranslations` 사용 중인 파일: 3개 (전체의 ~1% 미만)**
|
||||
|
||||
| 파일 | 사용 네임스페이스 |
|
||||
|------|-------------------|
|
||||
| `src/components/auth/LoginPage.tsx` | auth, common, validation |
|
||||
| `src/components/auth/SignupPage.tsx` | auth, signup, validation |
|
||||
| `src/app/[locale]/layout.tsx` | Provider 설정만 |
|
||||
|
||||
**하드코딩된 한국어가 있는 파일: ~1,131개**
|
||||
|
||||
### 영역별 하드코딩 현황
|
||||
|
||||
| 영역 | 파일 수 | 주요 내용 |
|
||||
|------|---------|----------|
|
||||
| `business/` (건설) | ~171 | 계약, 입찰, 견적, 기성, 현장관리, 노무, 단가 |
|
||||
| `items/` (품목) | ~101 | 품목마스터, BOM, 폼, 동적 품목관리 |
|
||||
| `accounting/` (회계) | ~69 | 거래처, 입출금, 매출, 매입, 어음, 카드 |
|
||||
| `settings/` (설정) | ~59 | 계정, 권한, 팝업, 구독, 회사정보, 직급, 휴가정책 |
|
||||
| `hr/` (인사) | ~45 | 직원, 근태, 휴가, 급여, 카드, 부서 |
|
||||
| `production/` (생산) | ~38 | 작업지시, 작업일지, 검사, 작업자화면 |
|
||||
| `ui/` (공통 UI) | ~26 | file-list, confirm-dialog, error-card, inputs 등 |
|
||||
| `approval/` (결재) | ~26 | 결재 워크플로우, 문서생성, 상세 |
|
||||
| `quotes/` (견적) | ~21 | 견적 등록, 관리, 문서, 계산 |
|
||||
| `outbound/` (출고) | ~21 | 출고증, 배차차량 |
|
||||
| `quality/` (품질) | ~13 | 제품검사, 수입검사 |
|
||||
| 기타 (dashboard, board 등) | ~541 | 대시보드, 게시판, CRM 등 |
|
||||
|
||||
### 하드코딩 유형 분류
|
||||
|
||||
**1. Config 파일 (~47개)** - 페이지 타이틀, 설명, 라벨
|
||||
```typescript
|
||||
// 예: vehicleDispatchConfig.ts
|
||||
title: '배차차량 상세',
|
||||
description: '배차차량 정보를 조회합니다',
|
||||
backLabel: '목록',
|
||||
```
|
||||
|
||||
**2. JSX 직접 텍스트** - 버튼, 라벨, placeholder
|
||||
```tsx
|
||||
<Button>삭제</Button>
|
||||
placeholder="거래처명"
|
||||
<Label>비고</Label>
|
||||
```
|
||||
|
||||
**3. 토스트/알림 메시지**
|
||||
```typescript
|
||||
toast.success('저장되었습니다');
|
||||
toast.error('삭제에 실패했습니다');
|
||||
```
|
||||
|
||||
**4. 상태/상수 정의 (types.ts)**
|
||||
```typescript
|
||||
export const STATUS_LABELS = { draft: '작성대기', completed: '작성완료' };
|
||||
export const FREIGHT_COST_LABELS = { prepaid: '선불', collect: '착불' };
|
||||
```
|
||||
|
||||
**5. 로딩/에러 상태**
|
||||
```typescript
|
||||
if (isLoading) return <div>로딩 중...</div>; // 79+ 인스턴스
|
||||
```
|
||||
|
||||
**6. Mock 데이터 (~7개)**
|
||||
```typescript
|
||||
siteName: '위브 청라',
|
||||
orderCustomer: '두산건설(주)',
|
||||
```
|
||||
|
||||
### 번역 파일 동기화 상태
|
||||
|
||||
| 비교 | 상태 | 이슈 |
|
||||
|------|------|------|
|
||||
| ko ↔ en | 동기화 완료 | 231줄 일치 |
|
||||
| ko ↔ ja | 1건 누락 | `auth.loggingIn` 키 없음 (ja.json) |
|
||||
|
||||
### 현재 번역 파일 네임스페이스
|
||||
|
||||
```
|
||||
common : ~25개 키 (기본 UI 액션)
|
||||
auth : ~63개 키 (로그인, 회원가입, 역할, 직급)
|
||||
signup : ~14개 키 (업종, 회사규모)
|
||||
navigation : ~10개 키 (메인 메뉴)
|
||||
dashboard : ~10개 키 (대시보드 위젯)
|
||||
inventory : ~15개 키 (재고관리)
|
||||
finance : ~11개 키 (회계)
|
||||
hr : ~14개 키 (인사)
|
||||
crm : ~8개 키 (고객관리)
|
||||
settings : ~13개 키 (설정)
|
||||
errors : ~7개 키 (에러 메시지)
|
||||
validation : ~6개 키 (폼 유효성)
|
||||
messages : ~8개 키 (성공/실패 알림)
|
||||
```
|
||||
|
||||
### 작업 규모 (전체 적용 시)
|
||||
|
||||
| 작업 항목 | 수량 | 비고 |
|
||||
|-----------|------|------|
|
||||
| 번역 키 추출 대상 파일 | ~1,131개 | 반복적 패턴 작업 |
|
||||
| 추가 필요 번역 키 (추정) | ~3,000~5,000개 | 3개 언어 동기화 필요 |
|
||||
| Config 파일 전환 | ~47개 | 패턴 동일, 일괄 처리 가능 |
|
||||
| 공통 UI 컴포넌트 | ~26개 | 영향 범위 넓음 (전체 앱) |
|
||||
| 비즈니스 컴포넌트 | ~1,000+개 | 단순 반복이나 양 많음 |
|
||||
|
||||
### 단계별 적용 계획 (권장)
|
||||
|
||||
**Phase 1: 공통 기반** - 효과 가장 큼
|
||||
- 공통 UI 컴포넌트 26개 (confirm-dialog, error-card, inputs 등)
|
||||
- 공통 라벨 (저장, 삭제, 취소, 검색, 로딩 중... 등)
|
||||
- "로딩 중..." 같은 반복 문자열 일괄 처리
|
||||
- 이것만 해도 전체 앱에 영향
|
||||
|
||||
**Phase 2: Config 파일** - 기계적 작업
|
||||
- 47개 config 파일의 title/description/label
|
||||
- 패턴이 동일해서 일괄 처리 가능
|
||||
|
||||
**Phase 3: 영역별 비즈니스 컴포넌트**
|
||||
- accounting (69개) → hr (45개) → production (38개) → ...
|
||||
- 영역당 번역 네임스페이스 1개씩 추가
|
||||
- business/ (171개)가 가장 큰 덩어리
|
||||
|
||||
**Phase 4: 나머지 + 검증**
|
||||
- 누락 확인, 빌드 테스트
|
||||
- 실제 언어 전환 테스트 (ko → en → ja)
|
||||
- ja.json `auth.loggingIn` 누락 수정
|
||||
|
||||
### 즉시 수정 필요 사항
|
||||
|
||||
1. **ja.json 누락 키**: `auth.loggingIn` 추가 필요
|
||||
- ko: `"loggingIn": "로그인 중..."`
|
||||
- en: `"loggingIn": "Logging in..."`
|
||||
- ja: (누락) → `"loggingIn": "ログイン中..."` 추가
|
||||
|
||||
---
|
||||
|
||||
## 📦 설치된 패키지
|
||||
|
||||
```json
|
||||
@@ -697,6 +845,7 @@ export default function ClientComponent() {
|
||||
| 날짜 | 버전 | 변경 내용 |
|
||||
|-----|------|---------|
|
||||
| 2025-11-06 | 1.0.0 | 초기 i18n 설정 구현 (ko, en, ja 지원) |
|
||||
| 2026-02-03 | 1.1.0 | 전체 프로젝트 다국어 적용 현황 분석 추가 (하드코딩 현황, 단계별 적용 계획) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user