feat: 리비전 관리 시스템 및 구매확정 기능 구현

- 리비전 관리 라우터 및 서비스 추가 (revision_management.py, revision_comparison_service.py, revision_session_service.py)
- 구매확정 기능 구현: materials 테이블에 purchase_confirmed 필드 추가 및 업데이트 로직
- 리비전 비교 로직 구현: 구매확정된 자재 기반으로 신규/변경 자재 자동 분류
- 데이터베이스 스키마 확장: revision_sessions, revision_material_changes, inventory_transfers 테이블 추가
- 구매신청 생성 시 자재 상세 정보 저장 및 purchase_confirmed 자동 업데이트
- 프론트엔드: 리비전 관리 컴포넌트 및 hooks 추가
- 파일 목록 조회 API 추가 (/files/list)

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2025-12-06 07:36:44 +09:00
parent c258303bb7
commit 17843e285f
12 changed files with 2759 additions and 83 deletions

View File

@@ -70,6 +70,25 @@ class Material(Base):
drawing_reference = Column(String(100))
notes = Column(Text)
created_at = Column(DateTime, default=datetime.utcnow)
is_active = Column(Boolean, default=True)
# 추가 필드들
main_nom = Column(String(50))
red_nom = Column(String(50))
purchase_confirmed = Column(Boolean, default=False)
purchase_confirmed_at = Column(DateTime)
purchase_status = Column(String(20), default='not_purchased')
purchase_confirmed_by = Column(String(100))
confirmed_quantity = Column(Numeric(10, 3))
revision_status = Column(String(20), default='active')
material_hash = Column(String(100))
normalized_description = Column(Text)
full_material_grade = Column(String(100))
row_number = Column(Integer)
length = Column(Numeric(10, 3))
brand = Column(String(100))
user_requirement = Column(Text)
total_length = Column(Numeric(10, 3))
# 관계 설정
file = relationship("File", back_populates="materials")