- item/supplier/quotation/quotation_setting CRUD·service·router 추가 - item protocol delivery_type str→int (ERD/스키마 SMALLINT 일치) - DeliveryType enum + 한글 라벨, 공용 GET /v1/enums (도메인 코드 메타데이터) - CompanyBrief → CompanyData 로 *Data 네이밍 통일 - CORS: WebServerConfig.client_url(단일) 도입 (config_models/router) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
53 lines
2.2 KiB
Python
53 lines
2.2 KiB
Python
from uuid import UUID
|
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
from common.models.gmodel import UserInfo
|
|
from router.v1.validator.dependencies import IsValidAccessToken, RemoveNoneResponse
|
|
from services.quotation_setting_service import QuotationSettingService
|
|
from .protocol import (
|
|
Req_CreateQuotationSetting,
|
|
Req_UpdateQuotationSetting,
|
|
Res_DeleteQuotationSetting,
|
|
Res_QuotationSetting,
|
|
Res_QuotationSettingList,
|
|
)
|
|
|
|
# 라우터(컨트롤러). 인증(Depends(IsValidAccessToken))으로 UserInfo 를 받아 user_id 로 스코프.
|
|
router = APIRouter(
|
|
prefix="/v1/quotation-setting", tags=["QuotationSetting"], responses={404: {"description": "Not found"}}
|
|
)
|
|
|
|
|
|
@router.get(path="/list", response_model=Res_QuotationSettingList, summary="견적 설정 목록")
|
|
async def list_settings(service: QuotationSettingService = Depends(), user_info: UserInfo = Depends(IsValidAccessToken)):
|
|
return RemoveNoneResponse(await service.list_settings(user_info.user_id))
|
|
|
|
|
|
@router.post(path="/create", response_model=Res_QuotationSetting, summary="견적 설정 등록")
|
|
async def create_setting(
|
|
req: Req_CreateQuotationSetting,
|
|
service: QuotationSettingService = Depends(),
|
|
user_info: UserInfo = Depends(IsValidAccessToken),
|
|
):
|
|
return RemoveNoneResponse(await service.create_setting(user_info.user_id, req.model_dump(exclude_unset=True)))
|
|
|
|
|
|
@router.patch(path="/update/{qt_setting_id}", response_model=Res_QuotationSetting, summary="견적 설정 수정")
|
|
async def update_setting(
|
|
qt_setting_id: UUID,
|
|
req: Req_UpdateQuotationSetting,
|
|
service: QuotationSettingService = Depends(),
|
|
user_info: UserInfo = Depends(IsValidAccessToken),
|
|
):
|
|
return RemoveNoneResponse(
|
|
await service.update_setting(user_info.user_id, str(qt_setting_id), req.model_dump(exclude_unset=True))
|
|
)
|
|
|
|
|
|
@router.delete(path="/delete/{qt_setting_id}", response_model=Res_DeleteQuotationSetting, summary="견적 설정 삭제")
|
|
async def delete_setting(
|
|
qt_setting_id: UUID, service: QuotationSettingService = Depends(), user_info: UserInfo = Depends(IsValidAccessToken)
|
|
):
|
|
return RemoveNoneResponse(await service.delete_setting(user_info.user_id, str(qt_setting_id)))
|