// ============================================================================ // 보험계약 API — 백엔드 /api/contracts (ContractController) // 계약(contract): 고객이 가입한 보험증권 1건. 모든 수수료 계산의 출발점. // - premium(보험료): 계약자가 내는 보험료. payCycle(납입주기): 월납/연납 등. // - policyNo(증권번호): 계약 식별 번호. contractorName(계약자)/insuredName(피보험자). // ============================================================================ import api, { PageResponse, unwrap } from './request'; // 계약 조회 응답. 설계사/상품/보험사/보험료/상태 등 계약 요약. export interface ContractResp { contractId: number; agentId: number; agentName: string; orgName?: string; productCode?: string; productName?: string; companyCode?: string; companyName?: string; insuranceType?: string; policyNo: string; contractorName?: string; insuredName?: string; premium?: number; payCycle?: string; payCycleName?: string; status: string; statusName?: string; contractDate: string; salesChannel?: string; salesChannelName?: string; } export interface ContractSearchParam { pageNum?: number; pageSize?: number; searchKeyword?: string; agentId?: number; companyId?: number; insuranceType?: string; status?: string; startDate?: string; endDate?: string; } // 계약 등록/수정 요청. payPeriod(납입기간)/coveragePeriod(보장기간) 등 포함. export interface ContractSaveReq { agentId: number; productId: number; policyNo: string; contractorName?: string; insuredName?: string; premium?: number; payCycle?: string; payPeriod?: number; coveragePeriod?: number; contractDate?: string; effectiveDate?: string; salesChannel?: string; } export const contractApi = { // 계약 목록 — GET /api/contracts list: (p: ContractSearchParam) => unwrap>(api.get('/api/contracts', { params: p })), // 계약 상세 — GET /api/contracts/{id} detail: (id: number) => unwrap(api.get(`/api/contracts/${id}`)), // 계약 등록(생성된 id 반환) — POST /api/contracts create: (req: ContractSaveReq) => unwrap(api.post('/api/contracts', req)), // 계약 수정 — PUT /api/contracts/{id} update: (id: number, req: ContractSaveReq) => unwrap(api.put(`/api/contracts/${id}`, req)), };