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

585 lines
16 KiB
TypeScript

export interface Sido {
adstDstrCd: string;
sido: string;
bsnmCd: string;
/** Y: 시군구 생략(광역시 등), N: 시군구 필요(도) */
gugunSkipYn: "Y" | "N";
}
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;
mdfrUuid: 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 {
extSchdlId?: number;
statsYr: string;
cyclSeNo: number;
seTypeCd: string;
bgngYmd: string;
endYmd: string;
}
/** `data`가 `StatsInputPeriodItem[]` 인 조회 응답 */
export type StatsInputPeriodListApiResponse = ApiResponse<StatsInputPeriodItem[]>;
/** 통계 입력 기간 목록 조회 요청 쿼리 */
export interface StatsInputPeriodListRequest {
statsYr?: string;
seTypeCd?: string;
}
export interface StatsInputPeriodDetailRequest {
statsYr: string;
seTypeCd: string;
cyclSeNo: number;
extSchdlId?: number;
}
export interface StatsInputPeriodDetailResponse {
status: string;
message?: string;
data: StatsInputPeriodItem;
}
/** 통계 입력 기간 등록·수정 등 요청 본문 */
export interface StatsInputPeriodSaveRequest {
extSchdlId?: number;
statsYr: string;
seTypeCd: string;
cyclSeNo?: number;
/** 시작일 (백엔드 형식 문자열, 예: YYYYMMDD) */
bgngYmd: string;
/** 종료일 (백엔드 형식 문자열, 예: YYYYMMDD) */
endYmd: string;
rgtrUuid: string;
}
/** 통계 입력 기간 저장 응답 */
export type StatsInputPeriodSaveApiResponse = ApiResponse<unknown>;
/** 통계 입력 기간 삭제 요청 */
export interface StatsInputPeriodDeleteRequest {
extSchdlId?: number;
statsYr: string;
seTypeCd: string;
cyclSeNo: number;
bgngYmd: string;
endYmd: string;
rgtrUuid: string;
}
/** 통계 입력 기간 삭제 응답 */
export type StatsInputPeriodDeleteApiResponse = ApiResponse<unknown>;
/** 입력 조회 `data.commonInfo` 공통 필드 */
export interface StatisticsInputCommonInfoBase {
isVerificationFailed: boolean;
}
/** 하수 입력/보급률 등 조회 `data.statusInfo` 공통 (제출·담당자 정보) */
export interface SewerageStatusInfo {
lclgvPicNm: string | null;
lclgvPicTelnoCn: string | null;
lclgvKbrdrDeptNm: string | null;
lclgvKbrdrJbgdNm: string | null;
lclgvIdfrNm: string | null;
lclgvIdfrTelnoCn: string | null;
lclgvIdfrDeptNm: string | null;
lclgvIdfrJbgdNm: string | null;
lclgvSbmsnSttsCd: string | null;
lclgvSbmsnYmd: 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;
hb_pass_yn?: 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;
/** 검증 방법 코드 (예: NV, IMR, HB) */
vrfcMthdCd?: string;
/** 검증결과상태 코드 목록, 콤마 구분 (예: 0, 0,2, 2) */
vrfcSttsCdList?: string;
/** @deprecated 신규 API에서는 미사용 */
pbcpAprvYn?: string;
page?: number;
size?: number;
}
/** 검증 결과 리포트 목록 한 행 (`verifyResultList` 원소) */
export interface VerificationResultReportItem {
statsYr: string;
statsCd: string;
sewerBzmnCd: string;
ctpvNm: string;
sggNm: string;
admdstNm: string;
fcltNm: string | null;
vrfcSn: number;
vrfcMthdCd: string;
vrfcMthdNm: string;
vrfcTrgtNm: string;
rsnExpln: string;
nowCn: string;
cmprCn: string | null;
vrfcSttsCd: string;
vrfcSttsNm: string;
prcsOpnnExpln: string | null;
statsVrfcRjtComCd: string;
statsVrfcRjtComNm: string;
rjctOpnnCn: string | null;
regDt: string;
mdfcnDt: string;
/** 하위 호환: 일부 API/화면에서만 내려올 수 있음 */
statsNm?: string;
prcrId?: string | null;
pbcpAprvYn?: string;
mdfrUuid?: string | null;
}
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;
userUuid: string;
superAdmin?: string;
lclgvPicNm: string;
lclgvPicTelnoCn: string;
lclgvKbrdrDeptNm: string;
lclgvKbrdrJbgdNm: string;
lclgvIdfrNm: string;
lclgvIdfrTelnoCn: string;
lclgvIdfrDeptNm: string;
lclgvIdfrJbgdNm: string
}
export interface SubmitExceptionResponse {
status: string;
message?: string;
}
export interface StatisticsLog {
statsLogSn?: string;
statsYr?: string;
ctpvNm?: string | null;
sggNm?: string | null;
sewerBzmnCd?: string | null;
menuNm?: string;
tbmnNm?: string;
tblNm?: string;
statsDataChgComCd?: string;
statsDataChgComNm?: string;
rgtrUuid?: string;
regDt?: 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[] | StatisticsLogDetailRow;
}
export interface getReviewOpinionDetailRequest {
statsYr: string;
sewerBzmnCd: string;
statsCd: string;
}
export interface ReviewOpinionDetailItem {
statsYr: string;
sewerBzmnCd: string;
statsCd: string;
splmntOpnnCn: string | null;
splmntRsltCn: string | null;
mdfrUuid: string | null;
}
export interface getReviewOpinionDetailResponse {
status: string;
message?: string;
data?: ReviewOpinionDetailItem[];
}
/** 검토의견 저장 API body */
export interface ReviewOpinionSaveRequest {
statsYr: string;
sewerBzmnCd: string;
statsCd: string;
splmntOpnnCn: string;
splmntRsltCn: string;
mdfrUuid: string;
}
export interface ReviewOpinionSaveResponse {
status: string;
message?: string;
}
export interface ReviewReturnSaveRequest {
type: "REVIEW";
statsYr: string;
sewerBzmnCd: string;
statsCd: string;
rjctOpnnCn: string;
mdfrUuid: 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;
mdfrUuid: string;
vrfcSn?: string;
}
export interface ReviewSubmitRequest {
statsYr: string;
/** 항목 단위 제출: string / 통계 입력 현황 일괄 제출: string[] */
sewerBzmnCd: string | string[];
mdfrUuid: string;
/** 통계항목 단위 제출 시 사용 (통계 입력 현황 일괄 제출에는 미사용) */
statsCd?: string;
splmntOpnnCn?: string;
splmntRsltCn?: 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;
mdfrUuid: string;
}
/** 통계 입력 현황 일괄 승인 API 요청 본문 */
export interface StatsInputStatusApproveBatchRequest {
list: StatsInputStatusApproveItem[];
}
/** 통계 입력 현황 일괄 승인 API 응답 */
export interface StatsInputStatusApproveResponse {
exceptionCnt: number;
message: string;
resultCode: string;
updatedStts: string;
}
export interface SubmitVerifyExceptionItem {
vrfcSn: number;
prcsOpnnExpln: string;
}
export interface SubmitVerifyExceptionRequest {
sewerBzmnCd: string;
statsYr: string;
statsCd: string;
userUuid: 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;
splmntRsltCn: string;
}
}
export interface StatiscicsManagementReviewHistoryRequest {
statsYr: string;
sewerBzmnCd?: string;
ctpvNm?: string;
sggNm?: string;
statsCd?: string;
}
/** 공통 코드 메모리 캐시 동기화 (`INPUTCOMMON/codes-refresh`) 응답 */
export interface CodesRefreshResponse {
status: string;
message?: string;
}
/** 통계관리 검토 이력 조회 API `data` 배열 요소 */
export interface StatiscicsManagementReviewHistoryItem {
statsYr: string;
ctpvNm: string;
sggNm: string;
menuNm: string;
wrterOpinionSm: string | null;
chckerOpinionSm: string | null;
returnOpinionSm: string | null;
}
export interface StatiscicsManagementReviewHistoryResponse {
status: string;
message?: string;
data: StatiscicsManagementReviewHistoryItem[];
}
export interface StatiscicsExceptionResetRequest {
statsYr: string;
sewerBzmnCd: string;
statsCd: string;
mdfrUuid: string,
vrfcSnList: number[]
}
export interface StatiscicsExceptionResetResponse {
status: string;
message?: string;
}
export interface CheckStatusCodeRequest {
statsCd: string;
statsYr: string;
sewerBzmnCd: string;
}
export interface CheckStatusCodeResponse {
status: string;
data: string;
}
export interface unSubmitDataRequest {
statsYr: string;
dtlInstCd: string;
enoCd: string;
laeSeCd: string;
sewerBzmnCd?: string;
sido: string;
sggNm: string;
unSubmitOnly: boolean;
}
export interface UnSubmitDataStatusItem {
sidoSggNm: string;
statsCd: string;
statsNm: string;
sbmsnYn: string;
statusCd: string;
statusNm: string;
}
export interface UnSubmitData {
statsYr: string;
totalCount: number;
submittedCount: number;
unSubmittedCount: number;
statusList: UnSubmitDataStatusItem[];
}
export interface unSubmitDataResponse {
status: string;
message?: string;
data: UnSubmitData;
}
export interface StatisticsService {
getSidoList(params?: { instSeCd?: string }): Promise<ApiResponse<SearchCondition>>;
getSidoListInput(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>;
getStatiscicsManagementReviewHistory(param: StatiscicsManagementReviewHistoryRequest): Promise<StatiscicsManagementReviewHistoryResponse>;
StatiscicsExceptionReset(param: StatiscicsExceptionResetRequest): Promise<StatiscicsExceptionResetResponse>;
CheckStatusCode(param: CheckStatusCodeRequest): Promise<CheckStatusCodeResponse>;
getUnSubmitData(param: unSubmitDataRequest): Promise<unSubmitDataResponse>;
refreshCommonCodes(): Promise<CodesRefreshResponse>;
refreshManagementCommonCodes(): Promise<CodesRefreshResponse>;
refreshAllCommonCodes(): Promise<PromiseSettledResult<CodesRefreshResponse>[]>;
}