Files
frontend/apps/st/src/entities/statistics/model/statistics-interface.ts
T

464 lines
12 KiB
TypeScript

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<T> {
status: string;
data: T;
message?: string;
}
/** 통계 컬럼 가이드(영문 컬럼명·한글명·유형·계산 여부·가이드 문구) 한 행 */
export interface StatisticsColumnGuideItem {
engColNm: string;
korColNm: string;
colType: string;
isCalcCol: string;
columnGuide: string;
}
/** 컬럼 가이드 정보 조회 응답 (`data`: 컬럼 가이드 배열) */
export type StatisticsColumnGuideListResponse = ApiResponse<StatisticsColumnGuideItem[]>;
/** 통계 입력 관리 등 — 연도·구분·분류(입력/검증)별 입력 기간 한 행 */
export interface StatsInputPeriodItem {
statsYr: string;
seCd: number;
seType: string;
inptBgngYmd: string;
inptEndYmd: string;
}
/** `data`가 `StatsInputPeriodItem[]` 인 조회 응답 */
export type StatsInputPeriodListApiResponse = ApiResponse<StatsInputPeriodItem[]>;
/** 통계 입력 기간 목록 조회 요청 쿼리 */
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<unknown>;
/** 통계 입력 기간 삭제 요청 */
export interface StatsInputPeriodDeleteRequest {
statsYr: string;
seType: string;
seCd: number;
inptBgngYmd: string;
inptEndYmd: string;
rgtrId: string;
}
/** 통계 입력 기간 삭제 응답 */
export type StatsInputPeriodDeleteApiResponse = ApiResponse<unknown>;
/** 하수 입력/보급률 등 조회 `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<ApiResponse<SearchCondition>>;
getSggList(sidoName: string, params?: { instSeCd?: string; gugunSkipYn?: "Y" | "N" }): Promise<ApiResponse<Sgg[]>>;
getSggAllList(sidoName: string, params?: { instSeCd?: string; gugunSkipYn?: "Y" | "N" }): Promise<ApiResponse<Sgg[]>>;
getStatsInputPeriodList(params?: StatsInputPeriodListRequest): Promise<StatsInputPeriodListApiResponse>;
getStatsInputPeriodDetail(param: StatsInputPeriodDetailRequest): Promise<StatsInputPeriodDetailResponse>;
saveStatsInputPeriod(param: StatsInputPeriodSaveRequest): Promise<StatsInputPeriodSaveApiResponse>;
deleteStatsInputPeriod(param: StatsInputPeriodDeleteRequest): Promise<StatsInputPeriodDeleteApiResponse>;
cancelSubmit(param: cancelSubmitRequest): Promise<cancelSubmitResponse>;
callImrService(param: ImrRequest): Promise<ImrResponse>;
submitException(param: SubmitExceptionRequest): Promise<SubmitExceptionResponse>;
getLogList(param: StatisticsLogRequest): Promise<StatisticsLogResponse>;
getLogDetail(param: string): Promise<StatisticsLogDetailResponse>;
saveReviewOpinion(param: ReviewOpinionSaveRequest): Promise<ReviewOpinionSaveResponse>;
getReviewOpinionDetail(param: getReviewOpinionDetailRequest): Promise<getReviewOpinionDetailResponse>;
saveReviewReturn(param: ReviewReturnSaveRequest): Promise<ReviewReturnSaveResponse>;
saveInputReturn(items: ReviewInputSaveRequest[]): Promise<ReviewReturnSaveResponse>;
approveStatsInputStatus(
param: StatsInputStatusApproveBatchRequest,
type?: StatsInputStatusApproveKind,
): Promise<StatsInputStatusApproveResponse>;
submitReview(param: ReviewSubmitRequest): Promise<ReviewSubmitResponse>;
getVerificationResultList(param: VerificationResultListRequest): Promise<VerificationResultListResponse>;
getImrStatus(param: string): Promise<ImrStatusResponse>;
SubmitVerifyException(param: SubmitVerifyExceptionRequest): Promise<SubmitVerifyExceptionResponse>;
getColumnGuides(param: string): Promise<StatisticsColumnGuideListResponse>;
getReviewerInfo(param: ReviewerInfoRequest): Promise<ReviewerInfoResponse>;
}