o2o-negosium-original/negodata/backend/services/quotation/__init__.py

29 lines
1.3 KiB
Python

"""견적 서비스 파사드 — 관심사별 모듈(mixin)을 QuotationService 하나로 조립한다.
밖(라우터·테스트)에서 보는 클래스 이름·메서드 시그니처는 분할 전과 동일하다.
pricing.py 목표가·앵커 계산 + 산정내역
build.py 생성·재생성(_build_quotation)
closing.py 마감 판정·수동 마감·직접 낙찰
queries.py 조회·삭제·공용 _fetch
invites.py 초청 메일
"""
from fastapi import Depends
from crud.quotation_crud import IQuotationCRUD, QuotationCRUD
from services.quotation.build import BuildMixin
from services.quotation.closing import ClosingMixin
from services.quotation.invites import InvitesMixin
from services.quotation.pricing import PricingMixin
from services.quotation.queries import QueriesMixin
class QuotationService(PricingMixin, BuildMixin, ClosingMixin, QueriesMixin, InvitesMixin):
"""견적 비즈니스 로직.
회사 스코프(멀티테넌트)는 작성자(user_id)→users.company_id 조인으로 건다(quotations 에 company_id 컬럼이 없음).
목록(list_quotations)은 회사 스코프로 제한한다. user_id 는 '내 견적만' 추가 필터로도 쓴다.
"""
def __init__(self, quotation_crud: IQuotationCRUD = Depends(QuotationCRUD)):
self.quotation_crud = quotation_crud