export interface Sido { adstDstrCd: string; sido: string; bsnmCd: string; } export interface SearchCondition { yearList: string[]; sidoList: Sido[]; } export interface Sgg { adstDstrCd: string; gugun: string; bsnmCd: string; } export interface cancelSubmitRequest { statsYr: string; ctpvNm: string; sggNm: string; sewerBzmnCd: string; statsCd: string; mdfrId: string; } export interface cancelSubmitResponse { status: string; message?: string; } export interface ApiResponse { status: string; data: T; message?: string; } /** 통계 컬럼 가이드(영문 컬럼명·한글명·유형·계산 여부·가이드 문구) 한 행 */ export interface StatisticsColumnGuideItem { engColNm: string; korColNm: string; colType: string; isCalcCol: string; columnGuide: string; } /** 컬럼 가이드 정보 조회 응답 (`data`: 컬럼 가이드 배열) */ export type StatisticsColumnGuideListResponse = ApiResponse; /** 통계 입력 관리 등 — 연도·구분·분류(입력/검증)별 입력 기간 한 행 */ export interface StatsInputPeriodItem { statsYr: string; seCd: number; seType: string; inptBgngYmd: string; inptEndYmd: string; } /** `data`가 `StatsInputPeriodItem[]` 인 조회 응답 */ export type StatsInputPeriodListApiResponse = ApiResponse; /** 통계 입력 기간 목록 조회 요청 쿼리 */ export interface StatsInputPeriodListRequest { statsYr?: string; seType?: string; } export interface StatsInputPeriodDetailRequest { statsYr: string; seType: string; seCd: number; } export interface StatsInputPeriodDetailResponse { status: string; message?: string; data: StatsInputPeriodItem; } /** 통계 입력 기간 등록·수정 등 요청 본문 */ export interface StatsInputPeriodSaveRequest { statsYr: string; seType: string; seCd?: number; /** 시작일 (백엔드 형식 문자열, 예: YYYYMMDD) */ inptBgngYmd: string; /** 종료일 (백엔드 형식 문자열, 예: YYYYMMDD) */ inptEndYmd: string; rgtrId: string; } /** 통계 입력 기간 저장 응답 */ export type StatsInputPeriodSaveApiResponse = ApiResponse; /** 통계 입력 기간 삭제 요청 */ export interface StatsInputPeriodDeleteRequest { statsYr: string; seType: string; seCd: number; inptBgngYmd: string; inptEndYmd: string; rgtrId: string; } /** 통계 입력 기간 삭제 응답 */ export type StatsInputPeriodDeleteApiResponse = ApiResponse; /** 하수 입력/보급률 등 조회 `data.statusInfo` 공통 (LAE 제출·담당자 정보) */ export interface SewerageStatusInfo { laePicNm: string | null; laePicTelNo: string | null; laeKbrdrDeptNm: string | null; laeKbrdrJbgdNm: string | null; laeIdfrNm: string | null; laeIdfrTelNo: string | null; laeIdfrDeptNm: string | null; laeIdfrJbgdNm: string | null; laeSbmsnSttsCd: string | null; laeSbmsnYmd: string | null; rjctOpnnCn: string | null; } export interface ImrRequest { user_id?: string; sewer_bzmn_cd: string; stats_cd: string; stats_yr: string; lae_sbmsn_stts_cd: string; gen_verify_stts_cd?: string; } export interface ImrResponse { anls_sn: number; job_id: string; total_otlr_cnt: number; status_code: string; error_msg: string; processing_time_ms: number; job_prog: number; queue_position: number; } export interface ImrStatusResponse { job_id: string; anls_sn: number; status: string; job_prog: number; total_otlr_cnt: number; total_nml_cnt: number; total_excl_cnt: number; processing_time_ms: number; error_msg: string; queue_position: string; } export interface VerificationResultListRequest { statsYr: string; sewerBzmnCd?: string; ctpvNm?: string; sggNm?: string; statsCd?: string; /** 검증 방법 코드 (예: IMR) */ vrfcMthdCd?: string; /** 처리여부 코드 목록, 콤마 구분 */ prcsYnList?: string; pbcpAprvYn?: string; page?: number; size?: number; } /** 검증 결과 리포트 목록 한 행 (`verifyResultList` 원소) */ export interface VerificationResultReportItem { statsYr: string; statsCd: string; statsNm: string; sewerBzmnCd: string; ctpvNm: string; sggNm: string; admdstNm: string; vrfcSn: number; vrfcMthdCd: string; vrfcMthdNm: string; vrfcTrgtNm: string; regDt: string; rsnExpln: string; nowVlCn: string; compVlCn: string | null; prcsYn: string; prcsYnNm: string; prcsOpnnExpln: string | null; prcrId: string | null; rjctOpnnCn: string | null; pbcpAprvYn: string; mdfrId: string | null; mdfcnDt: string; } export interface VerificationResultListPageInfo { totalElements: number; totalPages: number; currentPage: number; size: number; } export interface VerificationResultListData { verifyResultList: VerificationResultReportItem[]; pageInfo: VerificationResultListPageInfo; } /** 검증 결과 리포트 조회 API 응답 */ export interface VerificationResultListResponse { status: string; message?: string; data?: VerificationResultListData; } export interface SubmitExceptionRequest { statsYr: string; statsCd: string; ctpvNm: string; sggNm: string; sewerBzmnCd: string; userId: string; superAdmin?: string; laePicNm: string; laePicTelNo: string; laeKbrdrDeptNm: string; laeKbrdrJbgdNm: string; laeIdfrNm: string; laeIdfrTelNo: string; laeIdfrDeptNm: string; laeIdfrJbgdNm: string } export interface SubmitExceptionResponse { status: string; message?: string; } export interface StatisticsLog { statsLogSn?: number; menuNm?: string; tabNm?: string; tblNm?: string; statsDataChgComCd?: string; rgtrId?: string; regDt?: string; ctpvNm?: string; sggNm?: string; statsDataChgComNm?: string; statsYr?: string; } export interface StatisticsLogRequest { page: number; size: number; statsCd?: string; startDate?: string; endDate?: string; /** 시도명 */ ctpvNm?: string; /** 시군구명 */ sggNm?: string; sewerBzmnCd?: string; /** 요청 기능(통계 데이터 변경 공통코드) */ statsDataChgComCd?: string; } export interface StatisticsLogResponse { status: string; message?: string; data?: { statsLogList: StatisticsLog[]; pageInfo: { totalElements: number; totalPages: number; currentPage: number; size: number; }; }; } /** * 통계 로그 데이터 상세조회 `data[]` 행. * `rmrk`, `sggNm`, `admdstCd`, `admdstNm`는 공통이고, 그 외 키는 통계/탭에 따라 가변. */ export interface StatisticsLogDetailRow { rmrk: string; sggNm: string; admdstCd: string; admdstNm: string; [key: string]: string | number | null | undefined; } export interface StatisticsLogDetailResponse { status: string; message?: string; data?: StatisticsLogDetailRow[]; } export interface getReviewOpinionDetailRequest { statsYr: string; sewerBzmnCd: string; statsCd: string; } export interface ReviewOpinionDetailItem { statsYr: string; sewerBzmnCd: string; statsCd: string; splmntOpnnCn: string | null; wrterOpnnCn: string | null; } export interface getReviewOpinionDetailResponse { status: string; message?: string; data?: ReviewOpinionDetailItem[]; } /** 검토의견 저장 API body */ export interface ReviewOpinionSaveRequest { statsYr: string; sewerBzmnCd: string; statsCd: string; splmntOpnnCn: string; wrterOpnnCn: string; mdfrId: string; } export interface ReviewOpinionSaveResponse { status: string; message?: string; } export interface ReviewReturnSaveRequest { type: "REVIEW"; statsYr: string; sewerBzmnCd: string; statsCd: string; rjctOpnnCn: string; mdfrId: string; vrfcSn?: string; } export interface ReviewReturnSaveResponse { exceptionCnt: number; message: string; resultCode: string; updatedStts: string; } export interface ReviewInputSaveRequest { type: "INPUT"; statsYr: string; sewerBzmnCd: string; statsCd: string; /** 미입력·빈 문자열이면 요청 body에 포함하지 않음 */ rjctOpnnCn?: string; mdfrId: string; vrfcSn?: string; } export interface ReviewSubmitRequest { statsYr: string; sewerBzmnCd: string; statsCd: string; mdfrId: string; splmntOpnnCn: string; wrterOpnnCn: string; } export interface ReviewSubmitResponse { status: string; message?: string; } /** 통계 일괄 승인 `/stats/approve` 쿼리 파라미터 `type` */ export type StatsInputStatusApproveKind = "INPUT" | "REVIEW"; /** 통계 입력 현황 승인 요청 항목 (행 단위) */ export interface StatsInputStatusApproveItem { statsYr: string; sewerBzmnCd: string; statsCd: string; mdfrId: string; } /** 통계 입력 현황 일괄 승인 API 요청 본문 */ export interface StatsInputStatusApproveBatchRequest { list: StatsInputStatusApproveItem[]; } /** 통계 입력 현황 일괄 승인 API 응답 */ export interface StatsInputStatusApproveResponse { status: string; message?: string; } export interface SubmitVerifyExceptionItem { vrfcSn: number; prcsOpnnExpln: string; } export interface SubmitVerifyExceptionRequest { sewerBzmnCd: string; statsYr: string; statsCd: string; userId: string; exceptionList: SubmitVerifyExceptionItem[]; } export interface SubmitVerifyExceptionResponse { status: string; message?: string; } export interface ReviewerInfoRequest { sewerBzmnCd: string; statsYr: string; statsCd: string; instSeCd : string; } export interface ReviewerInfoResponse { status: string; data: { userNm: string; telOffrm: string; dpmNm: string; cps: string; splmntOpnnCn: string; wrterOpnnCn: string; } } export interface StatisticsService { getSidoList(params?: { instSeCd?: string }): Promise>; getSggList(sidoName: string, params?: { instSeCd?: string; gugunSkipYn?: "Y" | "N" }): Promise>; getSggAllList(sidoName: string, params?: { instSeCd?: string; gugunSkipYn?: "Y" | "N" }): Promise>; getStatsInputPeriodList(params?: StatsInputPeriodListRequest): Promise; getStatsInputPeriodDetail(param: StatsInputPeriodDetailRequest): Promise; saveStatsInputPeriod(param: StatsInputPeriodSaveRequest): Promise; deleteStatsInputPeriod(param: StatsInputPeriodDeleteRequest): Promise; cancelSubmit(param: cancelSubmitRequest): Promise; callImrService(param: ImrRequest): Promise; submitException(param: SubmitExceptionRequest): Promise; getLogList(param: StatisticsLogRequest): Promise; getLogDetail(param: string): Promise; saveReviewOpinion(param: ReviewOpinionSaveRequest): Promise; getReviewOpinionDetail(param: getReviewOpinionDetailRequest): Promise; saveReviewReturn(param: ReviewReturnSaveRequest): Promise; saveInputReturn(items: ReviewInputSaveRequest[]): Promise; approveStatsInputStatus( param: StatsInputStatusApproveBatchRequest, type?: StatsInputStatusApproveKind, ): Promise; submitReview(param: ReviewSubmitRequest): Promise; getVerificationResultList(param: VerificationResultListRequest): Promise; getImrStatus(param: string): Promise; SubmitVerifyException(param: SubmitVerifyExceptionRequest): Promise; getColumnGuides(param: string): Promise; getReviewerInfo(param: ReviewerInfoRequest): Promise; }