feat: 사용자 요구사항 기능 완전 구현 및 전체 카테고리 추가
Some checks failed
SonarQube Analysis / SonarQube Scan (push) Has been cancelled

- 사용자 요구사항 저장/로드/엑셀 내보내기 기능 완전 구현
- 백엔드 API 수정: Request Body 방식으로 변경
- 데이터베이스 스키마: material_id 컬럼 추가
- 프론트엔드 상태 관리 개선: 저장 후 자동 리로드
- 입력 필드 연결 문제 해결: 누락된 onChange 핸들러 추가
- NewMaterialsPage에 '전체' 카테고리 버튼 추가 (기본 선택)
- Docker 환경 개선: 프론트엔드 볼륨 마운트 및 포트 수정
- UI 개선: 벌레 이모지 제거, 디버그 코드 정리
This commit is contained in:
Hyungi Ahn
2025-09-30 08:55:20 +09:00
parent 0f9a5ad2ea
commit 50570e4624
34 changed files with 942 additions and 181 deletions

View File

@@ -963,7 +963,7 @@ logger.error("에러 발생")
---
## 🐛 자주 발생하는 이슈 & 해결법
## ⚠️ 자주 발생하는 이슈 & 해결법
### 1. 파이프 길이 합산 문제
```python
@@ -2104,4 +2104,50 @@ const materials = await fetchMaterials({
---
**마지막 업데이트**: 2025년 9월 24일 (사용자 피드백 기반 개선사항 정리)
## 🚀 메인 서버 배포 가이드
### 📋 **데이터베이스 마이그레이션**
메인 서버에 배포할 때 반드시 실행해야 하는 데이터베이스 마이그레이션:
#### **필수 추가 컬럼들** (materials 테이블)
```sql
-- 파이프 사이즈 정보
ALTER TABLE materials ADD COLUMN IF NOT EXISTS main_nom VARCHAR(50);
ALTER TABLE materials ADD COLUMN IF NOT EXISTS red_nom VARCHAR(50);
-- 전체 재질명
ALTER TABLE materials ADD COLUMN IF NOT EXISTS full_material_grade TEXT;
-- 업로드 행 번호
ALTER TABLE materials ADD COLUMN IF NOT EXISTS row_number INTEGER;
```
#### **성능 최적화 인덱스**
```sql
CREATE INDEX IF NOT EXISTS idx_materials_main_nom ON materials(main_nom);
CREATE INDEX IF NOT EXISTS idx_materials_red_nom ON materials(red_nom);
CREATE INDEX IF NOT EXISTS idx_materials_full_material_grade ON materials(full_material_grade);
```
#### **자동 마이그레이션 스크립트**
```bash
# 메인 서버에서 실행
psql -U tkmp_user -d tk_mp_bom -f backend/scripts/PRODUCTION_MIGRATION.sql
```
### ⚠️ **중요 사항**
- 이 컬럼들이 없으면 파일 업로드 시 500 에러 발생
- 완전 초기화 시: `database/init/99_complete_schema.sql` 사용
- 기존 서버 업데이트 시: `backend/scripts/PRODUCTION_MIGRATION.sql` 사용
### 🔧 **배포 체크리스트**
1. [ ] 데이터베이스 백업
2. [ ] 마이그레이션 스크립트 실행
3. [ ] 컬럼 존재 확인
4. [ ] 파일 업로드 테스트
5. [ ] 자재 분류 기능 테스트
---
**마지막 업데이트**: 2025년 9월 28일 (메인 서버 배포 가이드 추가)