Files
2026-02-24 18:30:51 +09:00

75 lines
1.8 KiB
Python

from sqlalchemy import Column, Integer, String, Float, DateTime
from database import Base
from pydantic import BaseModel
from datetime import datetime
# 상품 테이블
class Item(Base):
__tablename__ = "items"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True)
price = Column(Float)
stock = Column(Integer)
weight = Column(Float) # 무게 로직용
expiry_date = Column(String) # 대시보드 유통기한 관리용
# 결제 내역 테이블
class Pay(Base):
__tablename__ = "payments"
id = Column(Integer, primary_key=True, index=True)
total_price = Column(Float)
created_at = Column(DateTime, default=datetime.now)
# 상품 생성 요청
class ItemCreate(BaseModel):
name: str
price: float
stock: int
weight: float
expiry_date: str
# 상품 조회 응답
class ItemSchema(BaseModel):
id: int
name: str
price: float
stock: int
weight: float
expiry_date: str
class Config:
from_attributes = True
# 결제 내역 응답 (대시보드 차트용)
class PaySchema(BaseModel):
id: int
total_price: float
created_at: datetime
class Config:
from_attributes = True
class CartScanResponse(BaseModel):
item: ItemSchema
cart_weight: float
expected_weight: float
weight_ok: bool
diff: float
allowed: float
# 무게 검증 응답
class CartScanResponse(BaseModel):
item: ItemSchema # 스캔된 상품 정보
cart_weight: float # 현재 실제 무게
expected_weight: float # 예상 무게
weight_ok: bool # 무게 일치 여부
diff: float # 오차
allowed: float # 허용 오차 범위
# 무게 포함 아이템 정보
class ItemWithWeight(ItemSchema):
cart_weight: float