o2o-negosium-original/negodata/backend/router/v1/quotation_setting/protocol.py
Mina Choi 019f3dbeac [feat] negodata: 견적 목표가 산정 개편 + 협상 초청메일 + 카드 사용구분
[견적·목표가]
- 목표가 산정 KTC 기준 정비(MD 우선, 없으면 인터넷최저가·매입가·판매가 중 최저 / 신규는 인터넷최저가만)
- 인터넷 평균 수수료 0.078 상수화(견적설정 컬럼 제거)
- 앵커링가 세션 저장 + 목표가 클릭 시 산정내역 모달
- 재생성 시 목표가·앵커링가 재계산 없이 직전 값 상속(KTC)
- MD 제시가·협력사 유형(유통·제조·총판·기타) 입력

[협상카드]
- 사용 구분(공통/신규견적전용/재견적전용)

[협상 진행]
- 협력사 초청 메일 발송(일괄/개별·재발송, 발송상태 표시)

[기타]
- 견적상세 창 닫기 버그 수정, 불필요한 컬럼 주석 정리
- DB: 기존 DB는 postgres-init/04-alter.sql 적용 필요(자동 마이그레이션 없음)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 13:33:08 +09:00

49 lines
1.2 KiB
Python

import uuid
from datetime import datetime
from typing import Optional
from pydantic import ConfigDict
from common.models.gmodel import Res_WebPacketProtocol, WebPacketProtocol
class QuotationSettingProtocol(WebPacketProtocol):
pass
class Req_CreateQuotationSetting(QuotationSettingProtocol):
target_margin_rate: float
anchoring_value: float = 0.01
card_count: int = 3
class Req_UpdateQuotationSetting(QuotationSettingProtocol):
target_margin_rate: Optional[float] = None
anchoring_value: Optional[float] = None
card_count: Optional[int] = None
class QuotationSettingData(WebPacketProtocol):
model_config = ConfigDict(from_attributes=True)
qt_setting_id: uuid.UUID
user_id: Optional[uuid.UUID] = None
target_margin_rate: float
anchoring_value: float
card_count: int
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
class Res_QuotationSetting(Res_WebPacketProtocol):
setting: Optional[QuotationSettingData] = None
class Res_QuotationSettingList(Res_WebPacketProtocol):
settings: list[QuotationSettingData] = []
total: int = 0
class Res_DeleteQuotationSetting(Res_WebPacketProtocol):
pass