배경
홈즈앱 가입률 같은 경영평가 지표를 실시간으로 보고 연월별 이력을 관리할 수 있게 함(‘26 2분기 과제).
화면은 보고서의 /rpt/opr-rpt/OprRpt/LhMngrRpt, 전국 운영단지 현황과 가입률 사이에 표로 들어감.
처음에는 기존 대시보드 쿼리로 값을 뽑았는데 과년도 성과지표와 값이 맞지 않았음. 조회 방법을 바꿔 전용 집계 테이블에서 가져오도록 했음.
변경 내용
신규 테이블
| 테이블 | 용도 |
|---|---|
cmn.TB_KPI_M | 성과지표 정의 (가입율, DR참여율 등 / 표시명·단위 관리) |
cmn.TB_KPI_GL_M | 연도별 목표값 (운영자가 직접 관리) |
cmn.TB_KPI_PFM_Y | 성과지표 집계 결과 (보고서 화면이 보는 곳) |
집계 테이블에 들어가는 값은 월(YYYYMM), 단지수, 전체 세대수, 가입 세대수임. 전체 세대수는 tb_sbd_opr_dly_y 기준임.
조회 쿼리
과년도(연도별 누계, AGG_UNIT_CD = 'Y')와 당해연도(월별, 'M')를 한 번에 가져옴.
<select id="findKpiStatus" parameterType="...ReportReqDto" resultType="...ReportResDto">
SELECT p.KPI_CD, p.AGG_UNIT_CD, p.STND_YM AS TRG_YMD,
p.SBD_CNT AS SBD_ID_CNT, p.DNM_VL AS ALL_HSH_CNT,
p.NUM_VL AS ACM_JN_HSH_CNT,
p.RATE_VL, p.GL_VL, p.ACHV_RATE_VL
FROM cmn.TB_KPI_PFM_Y p
INNER JOIN cmn.TB_KPI_M m
ON m.KPI_CD = p.KPI_CD
AND m.US_YN = 'Y'
WHERE p.KPI_CD = #{kpiCd}
AND (
(p.AGG_UNIT_CD = 'Y' AND #{curYr} > p.STND_YM)
OR (p.AGG_UNIT_CD = 'M' AND p.STND_YM BETWEEN #{curYr} AND #{trgYm})
)
ORDER BY p.AGG_UNIT_CD DESC, p.STND_YM
</select>파라미터
프론트에서는 trgYm = '202604' 한 값만 옴. Service에서 아래로 분해해 매퍼에 넘김.
| 파라미터 | 예시 | 설명 |
|---|---|---|
kpiCd | 'JN_RATE' | 조회할 성과지표 코드 |
curYr | '202600' | 입력연도 + '00'. 연도별 누계 조회 상한 (이보다 작은 누계 = ‘24년, ‘25년) |
ymFrom | '202601' | 올해 1월 (월별 조회 시작) |
ymTo | '202604' | 입력월 (월별 조회 끝) |
STND_YM의 202500은 ‘25년 누계, 202604는 26년 4월을 뜻함.
컬럼 의미
| 컬럼 | 의미 |
|---|---|
KPI_NM | 지표명 (예: 가입율) |
DNM_NM / NUM_NM | 분모 / 분자 표시명 (예: 전체세대수 / 가입세대수) |
UNIT_NM | 단위 (%, kWh 등) |
AGG_UNIT_CD | 집계단위 (Y: 연도 / M: 월) |
STND_YM | 기준년월 |
SBD_CNT | 단지수 |
DNM_VL / NUM_VL | 분모값 / 분자값 |
RATE_VL | 비율 (실적) |
GL_VL | 목표값 |
ACHV_RATE_VL | 달성도 |
화면 처리
AGG_UNIT_CD로 연도별 표와 월별 표를 나눠 그림.- 증감(△/▽)은 프론트에서 계산함. 같은 그룹 안에서 직전 행과 비교함.
- 당해연도 1월의 증감 기준은 전년도 누계 중 가장 최근 연도 행임.
- 지표가 추가돼도
kpiCd만 바꿔 호출하면 되고 매퍼·화면은 고치지 않아도 됨.
화면 위치 (2026-09-18 코드 확인)
독립 메뉴가 아니라 LMC 관리자 웹의 LH 관리자용 운영보고서 안의 두 표임.
- 화면 경로
/rpt/opr-rpt/OprRpt/LhMngrRpt, 컴포넌트views/rpt/opr-rpt/components/lh-mngr/LhMngrRptAllOprSbdXpn.vue - 표 제목은 “과년도 성과지표 관리”와 “월별 운영 현황” 임
- API는
GET /api/v1/report/findKpiStatus(ReportController.java:280)이고 보내는 값은kpiCd와trgYm둘뿐임. 화면이kpiCd를'JN_RATE'(가입률)로 고정해 호출함 - SMC(시스템 관리자 웹) 코드에는 이 화면도 쿼리도 없음 → 공개노트/개발/모듈/SMC 통합운영시스템
- 화면·기능 전체는 공개노트/개발/모듈/LMC 기능 상세
건설/매입 필터는 적용되지 않음 (2026-09-18 코드 확인)
검토 단계의 “reportYn으로 건설만 필터링” 방향은 코드에 들어가지 않았음. 확인된 사실은 아래와 같음.
reportYn은 건설/매입을 가르는 값이 아님. 건설(01)/매입(02) 구분은mntnLsTpCd이고, 공통 조인 조각Common.commonTableJoin이 이 값으로 조인 경로를 바꿈reportYn='Y'는 “보고서 화면에서 부른 호출인가”를 알리는 보고서 모드 플래그임. 대시보드용 실시간(금일·시간별) 쿼리를 월별·최근 12개월 집계로 바꾸는 용도임- 쓰이는 곳은
Dsbd_Mapper.xml6군데뿐이고,'Y'를 보내는 곳은 제어 현황(rptCmnApi.js:15)과 안전지원 이벤트 표(sbdMngrRptApi.js:16) 둘뿐임. 정의는DsbdReqDto.java:79 - 성과지표(
findKpiStatus)에는reportYn도mntnLsTpCd도 들어가지 않음 → 성과지표 표에는 건설/매입 필터가 없고,cmn.TB_KPI_PFM_Y에 적재된 값을 그대로 읽기만 함
즉 LMC는 이 값을 계산하지도 쓰지도 않음. 목표·실적·달성도·단지수·전체세대수·가입세대수가 전부 테이블 값임. 지표를 쓸지 말지는 cmn.TB_KPI_M.US_YN='Y' 로 정해짐.
성과지표 숫자가 틀리다는 문의는 LMC가 아니라 cmn.TB_KPI_PFM_Y를 채우는 쪽을 봐야 함. 화면에서 고칠 방법이 없음.
화면 각주: ”※ 가입률은 공가 세대(당월 임대료 청구 이력이 없는 세대)를 제외한 실세대 기준으로 산정됩니다.”
확인 필요
성과지표 수치의 적재 주체와 산출 범위 화면 각주는 “공가 세대를 제외한 실세대 기준”이라고 안내하지만, 그 계산을 어느 시스템·배치가 수행하는지, 건설임대와 매입임대를 합친 값인지 나눈 값인지는 LMC 코드로 알 수 없음.
cmn.TB_KPI_PFM_Y적재 주체와 수행 주기 확인 필요. 지표 코드가 화면에서'JN_RATE'하나로 고정돼 있어 다른 지표를 쓰려면 화면 수정이 필요함. 과년도 실적 수치는 ‘25년 12월 기준 1년 단위임. 기준일이 바뀌면 집계도 다시 만들어야 함.
확인 방법
- 보고서 화면에서 연도별 표와 월별 표가 따로 나오는지 봄.
trgYm = '202604'로 호출해Y(202400, 202500) +M(202601~202604) 행이 오는지 확인함.- 가입률 수치가 공개노트/개발/대시보드 세대수와 단지 현황의 대시보드 가입률과 같은지 대조함.