범위
공개노트/개발/모듈/MAW 앱 API 서버에서 세대 업무·헬스케어·에너지·AutoDR API만 떼어 낸 페이지임. 인증·공통 응답 형식·traceId·로깅·우리집제어(IoT) API는 본 페이지가 아니라 공개노트/개발/모듈/MAW 앱 API 서버에 있음.
| 경로 접두 | 담당 화면 |
|---|---|
/maw/v1/household/** | 대시보드, 단말기, 방문 내역, 공지, 관리비, 임대료, 전자투표, 입출차, 전기차, 방문주차, 주차 기록, 층간소음, 에너지 목표량, 날씨 |
/maw/v1/healthCare/** | 복약, 건강생활정보, 체중·신장, 혈압, 비상연락처, 비상호출, 안심서비스 |
/maw/v1/energy/** | 에너지 화면(이음 연동) |
/maw/v1/autoDr/** | AutoDR 참여·대상기기·정산 |
원리·응대 기준은 기능 페이지에 있음 — 공개노트/기능/헬스케어, 공개노트/기능/에너지와 이음 연동, 공개노트/기능/AutoDR.
공통
- 위 4개 경로는 전부
ResidentAccessControlFilter대상임. 전출·세대원 제외 상태면 JWT가 살아 있어도SQI3001(403)로 막힘 - 응답은 공통 형식
{resCd, resMsg, resData, traceId}임. 단 파일을 내려주는 API(공지 첨부, 주차 사진)는 바이너리를 그대로 반환함 - 세대 업무에만 걸리는 전용 예외 처리 두 개가 공통 처리보다 먼저 붙음
- 관리비 입력 오류 → 400 +
SQI8001 - WISE 임대료 조회 오류 → 사유별 409 / 503 / 504 / 401 / 502
- 관리비 입력 오류 → 400 +
- 그 밖의 업무 예외는 전부 500 +
SQI9002로 뭉개짐
세대 업무 API
대시보드
GET /maw/v1/household/getDahboard — 경로 이름이 getDahboard 오타 상태임(Dashboard 아님). 앱 배포와 엮여 못 고친 것으로 보임(추정).
임대료 → 저번달 관리비 → 저저번달 관리비 → 전자투표 → 전기차 → 층간소음 순으로 모아 한 번에 내려줌.
- 임대료·관리비·층간소음 조회는 각각 예외를 삼켜서 일부가 실패해도 대시보드는 200으로 나감. 실패한 항목만 값이 빔
- 전자투표만 예외를 삼키지 않음 → 여기서 실패하면 대시보드 전체가 500
- 전기차 충전 상태는
"00"고정 하드코딩이라 실제 값이 아님 - 차량 입출차 조회는 응답 지연 때문에 대시보드에서 제거된 상태임
- 투표가 없으면 제목
현재 투표중이 아닙니다.+ 상태CMP가 하드코딩으로 나감 - 로그 키워드:
임대료 목록 조회 실패,저번달 관리비 정보 조회 실패,층간 소음 조회 실패
테이블 — smah.tb_hsh_rfe_m, smah.tb_hsh_mngexp_m, smah.tb_elc_vt_m, smah.tb_elc_vt_pgrs_l, cmn.tb_evn_occ_l
단말기(게이트웨이) 조회
GET /maw/v1/household/getGatewayInfo — JWT의 세대 ID로 cmn.tb_hsh_ter_m에서 del_yn='N' 1건을 그대로 반환함. 없으면 500 + SQI9002.
이 테이블의 단말기 ID가 홈넷 기기 목록·AutoDR 대상기기 조회의 키로 쓰임. 우리집제어가 안 된다는 문의의 1순위 확인점임.
방문 내역
GET /findVisitsList, GET /findVisitsDetail — 홈넷서버에서 실시간 조회함. 자체 저장 없음.
- 목록 N건이면 홈넷 호출이 1 + N회 발생함(건마다 사진 상세를 다시 부름). 홈넷 응답 타임아웃이 3초라 건수가 많으면 누적으로 느려짐
- 상세 호출이 실패하면 그 건의 사진만 비우고 계속 진행함 → “목록은 뜨는데 사진만 안 보임”이 정상 동작임
- 입력값 검증 애노테이션이 빠져 있어 필수값 검사가 사실상 동작하지 않음
- 로그 키워드:
방문 내역 목록 조회 시작,[홈넷사 오류] result_code:
공지사항
GET /findNoticeList, GET /findNoticeDetailInfo/{noticeId}, GET /noticeImg/{ahflSn}(인증) / GET /maw/v1/web/noticeImg/{ahflSn}(비인증).
임대유형(cmn.tb_sbd_m.mntn_ls_tp_cd)에 따라 조회 범위가 갈림.
| 임대유형 | 조회 조건 |
|---|---|
01 건설임대 | 단지 ID 일치만 |
02 매입임대 | 단지 공지(단지 ID + 거점관리소 ID) · 거점관리소 공지(거점관리소 ID만) · 시군구 공지(거점관리소 ID + 시군구) 세 가지를 OR |
| 그 외·빈값 | 조건이 만들어지지 않아 무조건 빈 목록 |
- 위 조건에 항상
annc_trg_mch_cd IN ('ALL','APP')가 AND로 붙음. 월패드 전용 공지는 앱에 안 보임 - 상세·첨부 조회도 같은 범위 조건을 다시 적용함 → 다른 단지 공지 번호를 알아도 못 봄
- 구분 코드 표기:
GNRL→“일반 공지”,MGOF→“관리소 공지”, 그 외 전부→“보건복지 공지” - 목록을 등록일시 내림차순으로 페이징한 뒤 페이지 안에서만 공지 일련번호 내림차순으로 다시 정렬함 → 페이지 경계에서 순서가 어긋날 수 있음
- 첨부 URL은 서비스가 만들면서
http를https로 강제 치환함(임시 코드, “추후 아파치에서 설정하고 제거” 주석) - 매입임대인데 거점·시군구 공지가 안 보이면 공지 행의 단지 ID·시군구가 null 또는 빈 문자열인지 확인할 것. 조건이 그 둘만 허용함
화면 미리보기 쪽은 공개노트/개발/공지사항 미리보기.
테이블 — cmn.tb_rsd_annc_fcts_l, cmn.TB_AHFL_M, cmn.tb_hsh_m, cmn.tb_sbd_m, cmn.tb_pch_ls_sbd_d
관리비
GET /findManagementExpenseList/{yyyyMM}(최근 3개월), GET /findManagementExpenseDetailInfo/{일련번호}, GET /findManagementExpenseDetailInfoByYyyyMM?yyyyMM=&cmprType=.
yyyyMM은 6자리 숫자이고0000으로 시작할 수 없음. 어기면 400 +SQI8001cmprType은MOM(전월, 기본)·YOY(전년동월)만 허용. 다른 값이면 400 +SQI8001- 목록은 항상 요청월 기준 3개월 고정임. 데이터가 하나도 없으면
resData가 빈 배열이 아니라 null로 나감 - 증감은 34개 금액 필드 각각에 대해 (당월 − 비교월)로 계산함. 비교월 행이 없으면 증감 필드 자체가 안 붙음
- 같은 달 비교 행이 2건 이상이면 500(중복 적재 방어)
단지 양식에 없는 계정과목(추가항목)
smah.tb_hsh_mngexp_m.ext_data가 jsonb 컬럼이고 MAW는 키·값을 가공 없이 그대로 앱에 내려줌. 화면 이름은 jsonb 키 그대로임- 단위는
smah.tb_hsh_mngexp_ext_itm(단지 ID + 항목명)에 등록돼 있을 때만 붙음. 등록된 단위가 하나도 없으면 단위 맵이 null - 추가항목 증감은 현재월 키 기준으로만 계산하고, 숫자로 바뀌지 않는 값·무한값은 증감에서만 제외함(원본 값은 그대로 보임)
- 업로드·엑셀 파싱 코드는 MAW에 없음. MAW는 읽기만 함 → 공개노트/개발/관리비 등록 엑셀 파싱
임대료 (DB 적재분)
GET /findRentFeeList(최근 5개월), GET /findRentFeeDetailInfo/{id}, GET /rentFeeNonPayment, GET /rentFeeNonPayment/{id}.
- 목록은 현재월 기준 최근 5개월 고정임. 청구월이 미래이거나 형식이 6자리가 아니면 그 건만 조용히 빠지고
올바르지 않은 청구년월 형식 - clmYm:경고가 남음 - 미납은 시스템 현재월이 아니라
tb_hsh_rfe_m에 실제로 등록된 마지막 청구월 기준임. 최신월 고지를 올렸는데 그 달 미납 행이 없으면 미납 목록이 빔 - 임대료 상세에 미납은 포함되지 않음(별도 API)
- 데이터가 없어도 200 + 빈 배열임
테이블 — smah.tb_hsh_rfe_m, smah.tb_hsh_rfe_npy_l
임대료 — WISE 실시간 연계 (rfeList)
GET /maw/v1/household/rfeList — DB 적재분이 아니라 WISE 임대료 시스템에 실시간 조회해 고지월별 임대료와 그 고지에 포함된 미납·연체료를 내려주는 신규 API임.
운영에서는 아직 켜져 있지 않음. WISE 설정 키가 로컬·개발·운영 어느 프로필에도 없어 기본값
DISABLED로 동작함 → 호출하면 항상 503임. 개발계에서만 외부 설정으로 목업 모드를 켜서 씀.
- 주소는 properties가 아니라 DB 상수
cmn.tb_cstt_m의WISE_API_ADR에서 읽음.us_yn='Y'이고 값이 있어야 하며 http/https만 허용함 - 목업 응답에 전용 헤더가 없으면 잘못된 데이터로 처리함 — 실 WISE를 잘못 부르는 것을 막는 안전장치임
- 공통 WebClient의
Authorization기본 헤더를 명시적으로 제거함(토큰 유출 방지) - 타임아웃 connect 3초 / response 5초 / total 8초, 본문 최대 1MiB, 재시도·리다이렉트 없음
- 매핑 규칙: 고지월·정산월 모두 6자리 유효 연월, 고지월은 최대 5개, 고지월=정산월인 “당월” 행이 없거나 그 행의 연체료가 0이 아니면 오류.
arfe는 연체료이지 부가세가 아님 - 예외 메시지에 주소·원문·계약번호를 남기지 않음. 실패 로그에 계약번호가 안 찍히므로 사유와 세대로 추적해야 함
- 로그 키워드:
WISE rfeList complete: notices=,WISE rfeList failed: reason=
이 API만 응답 코드 체계가 다름
| 사유 | HTTP | resCd |
|---|---|---|
| 계약 없음 | 409 | SQI0002 |
| 계약 다건 | 409 | SQI0003 |
| 계약번호 형식 오류 | 409 | SQI9002 |
| 설정 미비 | 503 | SQI9002 |
| 상위 타임아웃 | 504 | SQI9002 |
| 인증 없음 | 401 | SQI3000 |
| 상위 실패·잘못된 데이터·그 외 | 502 | SQI9002 |
목업 서버는 저장소의 WISE 목업 도구로 띄움(로컬 18081 포트). 테스트 계약번호 8개로 정상·미납·빈결과·장애·타임아웃·깨진 응답·업무오류·0원 시나리오를 재현함.
전자투표
GET /findElectronVoteList, POST /saveElectronVote, GET /findElectronVoteDetailInfo/{elcVtSn}.
- 목록 조건: 단지 일치 + 상태가
PRE(사전)가 아님 + 대상이BLD(동 단위)면 세대의 동이 일치 - 투표는 세대주만 가능. 세대주는 별도 플래그가 아니라 그 세대에서 입주 승인일시가 가장 빠른 사람임 → 공개노트/기능/로그인과 세대 승인. 아니면
SQI3001 - 다시 투표하면 기존 진행 행을 지우고 새로 등록함(수정이 아니라 삭제-재등록)
- 집계는 진행 테이블 전체를 읽어 계산함. 결과 테이블(
smah.tb_elc_vt_rsl_l)은 엔티티만 있고 미사용임 - 한 세대당 1표 구조임
테이블 — smah.tb_elc_vt_m, smah.tb_elc_vt_itm_l, smah.tb_elc_vt_pgrs_l
입출차·전기차·방문주차
| API | 나가는 곳 |
|---|---|
GET /findCarEnterOrLeaveInfoList | 홈넷 GET /api/um/vehicles |
GET /findEvChargingInfo | 홈넷 GET /api/um/evcharge |
GET /findChargeCenterInfo | 이음 POST /api/smaHom/evChrgFcls |
POST /inputVisitVehicleReservation | 홈넷 POST /api/um/visitorCars |
GET /findVisitVehicleReservation | 홈넷 GET /api/um/visitorCars |
POST /deleteVisitVehicleReservation | 홈넷 DELETE /api/um/visitorCars |
GET /findLatelyVisitVehicle | 홈넷 입출차 + DB |
POST /inputFavoriteVisitVehicle, deleteFavoriteVisitVehicle | DB만 |
파라미터·동기화 규칙은 공개노트/개발/인터페이스 정의에 정리해 둠. 여기서는 MAW 쪽 처리만 적음.
- 입출차 조회에 기간·건수·차량번호 필터와 페이징이 없음. 홈넷이 주는 만큼 그대로 나감
- 방문주차 조회가 홈넷을 기준으로 DB를 덮어씀. 홈넷에 없는 DB 행은
del_yn='Y'처리되고, 홈넷이 예약번호를 재사용하면 삭제된 행을 되살림 - 등록·취소는 1초 대기 후 홈넷 재조회로 반영을 확인함. 등록 한 번에 홈넷 호출이 여러 번 나감
- 방문자명은 MAW DB에만 저장하고 홈넷에는 보내지 않음. 예약번호가 바뀌면 방문자명이 끊길 수 있음
- 월 허용·잔여시간은 홈넷이 주는 값 그대로이고, 비면 문자열
"0"으로 채움 - 즐겨찾기는 세대가 아니라 사용자 단위임. 세대원이 등록한 즐겨찾기는 안 보임
- 최근 방문차량 조회도 홈넷 입출차를 호출함 → 홈넷이 죽으면 목록 자체가 실패함
- 전기차 충전기 상태는 커넥터 9종을 “사용가능”/“충전중” 두 값으로 축약해 내려줌.
Faulted(고장)·Unavailable(사용불가)도 “충전중”으로 보임
응답코드 — SQI0000 / 값 없음 SQI0009 / 길이·형식 SQI8001 / 대상 없음 SQI0005 / 반영 실패 SQI0001 / 홈넷 오류 500 + SQI9002
테이블 — smah.tb_vst_vhc_rsvt_m(PK 예약 일련번호, 유니크 세대 ID + 주차서버 예약번호), smah.tb_vst_vhc_fvrt_l
주차 위치 기록(내 차 주차 사진)
GET /parking, GET /parking/{id}, POST /parking(multipart, 사진 3장), POST /deleteParking/{id}, GET /parkingImg/{filename}.
- 파일명을 랜덤 salt + 원본파일명의 SHA-256 해시로 바꿔 저장해 원본 파일명이 드러나지 않음
- 1MB 초과 파일만 리사이즈하고, 그래도 1MB를 넘으면 품질을 0.9부터 0.1씩 낮추며 최대 9회 반복 압축함
- 목록은 사용자 + 차량번호 조합별 가장 최근 1건씩만 나옴
- 사진 URL 경로는 비인증(permitAll) 임. 파일명이 해시라 추측은 어렵지만 URL만 알면 인증 없이 열림
- 삭제해도 디스크 파일은 지우지 않음(디스크 증가)
테이블 — smah.tb_prk_l
층간소음
GET /getFloorNoiseList?page=&pageSize=.
- 소음 이벤트 코드가
NT008,NT009두 개로 하드코딩되어 있음. 새 코드가 생겨도 안 나옴. 이벤트 유형은RSN고정 - 등급 이름은 로컬 캐시에서 가져오고 없으면 빈 문자열임. 이 캐시는 기동 시 1회만 적재되고 만료가 없어 DB에 코드를 추가해도 WAS 재기동 전까지 안 보임
totalCount가 전체 건수가 아니라 현재 페이지 건수임. 페이지 수 계산에 쓰면 안 됨- 소음 데이터 자체는 감지기 연동(외부)이 만듦. MAW는 읽기만 함
테이블 — cmn.tb_evn_occ_l
에너지 목표량
GET /getEnergyGoals, POST /saveEnergyGoals — 전기·수도·가스·난방·온수 월 목표량을 홈넷서버에 저장/조회함.
- MAW DB에 목표량을 저장하지 않음. 원본은 홈넷서버에 있고 MAW에는 이력이 없음
- 빈 값 항목은 아예 보내지 않고, 저장 성공 시 요청 값을 그대로 응답에 돌려줌(홈넷 응답값이 아님)
- 난방 필드명이
thermostat임 - 에너지 화면이 이 조회를 내부적으로 다시 호출함 → 홈넷이 죽으면 에너지 화면 전체가 실패함
날씨
GET /getNowWeather, GET /getHourlyWeather, GET /getOtherWeather — MyBatis 매퍼가 PostgreSQL 함수 3개(cmn.sf_now_wthr_for_usr, sf_frcst_wthr_for_usr, sf_now_wthr_arqlt_for_usr)를 그대로 호출함.
날씨가 안 나오면 MAW가 아님. 함수와 원천 수집 배치를 먼저 볼 것 → 공개노트/개발/모듈/SCW 스케줄러 서버. 함수가 사용자 ID를 받으므로 사용자-단지-지역 매핑이 깨지면 사용자별로 결과가 갈릴 수 있음. 로그 키워드 현재 날씨 정보 조회 실패 - usrId:.
헬스케어 API
원리·응대 기준은 공개노트/기능/헬스케어에 있음. 여기에는 경로·테이블만 둠.
| 묶음 | API |
|---|---|
| 복약 | GET /medicineList, /searchMedicineList, /medicine/{tkmdcnSn}, /medicineRecord/{tkmdcnSn}, /medicineRecordByYyyyMMddPOST /insertTakingMedicine, /updateTakingMedicine, /deleteTakingMedicine, /takingMedicine |
| 건강생활정보 | GET /lifeInfoList, /lifeInfo/{hltLfInfSn} |
| 체중·신장 V1 | GET /weightList, /recentWeight, POST /weight, /deleteWeight/{id}, POST /goalWeight |
| 체중·신장 V2 | GET /v2/weightList, /v2/recentWeight, POST /v2/weight, /v2/deleteWeight/{id} |
| 혈압 V1 | POST /bloodPressure, GET /bloodPressureList, POST /deleteBloodPressure/{id} |
| 혈압 V2 | POST /v2/bloodPressure, GET /v2/bloodPressureList, POST /v2/deleteBloodPressure/{id} |
| 비상연락처 | POST /emergencyTel/otp/send, GET /emergencyTelList, POST /emergencyTelList, POST /deleteEmergencyTel |
| 비상호출 | POST /emergencyTel |
| 안심서비스·헬스체크 | GET /safetyService, POST /safetyService, POST /healthCheck |
V1과 V2는 저장 테이블부터 다름
| 구분 | V1 | V2 |
|---|---|---|
| 체중·신장 | hc.tb_hlt_mea_l (측정 태그 코드로 구분) | hc.tb_bdwg_mea_l |
| 혈압 | hc.tb_hlt_mea_l | hc.tb_bldprs_mea_l |
| 목표 체중 | hc.tb_hlt_mea_gl_l — V1/V2 공용 | 〃 |
측정 태그 코드(V1): 10001 신장, 10002 체중(목표 체중도 같은 코드), 30001 최고혈압, 30002 최저혈압, 30004 맥박, 30006 복약여부. 측정 방식은 MN(수동) 고정임.
비상연락처 OTP만 응답 코드 체계가 SQI가 아님. HTTP는 전부 200이고 resCd로 분기해야 함.
| 코드 | 뜻 |
|---|---|
E4001 | 인증번호 불일치 |
E4002 | 인증번호 만료(Redis 180초 경과) |
E4003 | 시도 횟수 초과 / 재발송 쿨다운 / 발송 한도 초과 |
E4004 | 요청 정보 불명, 번호 불일치, 요청 주인 불일치 |
OTP 발송 제한은 재발송 60초 / 수신번호 10분 5회·1일 20회 / 사용자 10분 10회·1일 30회 / 입력 실패 5회 잠금임. 키는 Redis maw_ctf:*에 있고 요청 TTL은 180초임.
테이블 — hc.tb_tkmdcn_m·tb_tkmdcn_d·tb_tkmdcn_l·tb_tkmdcn_nc_m, hc.tb_hlt_lf_inf_m, hc.tb_hlt_mea_l, hc.tb_hlt_mea_gl_l, hc.tb_bdwg_mea_l, hc.tb_bldprs_mea_l, hc.tb_lhecr_pod_brf_l, cmn.tb_emcrt_l, cmn.tb_sft_svc_set_d
에너지 API
GET /energy/getMonthly/{yyyyMM}, /getMonthlyEnergyUsageList/{yyyyMM}, /getYearlyEnergyFeeList/{yyyyMM}, /getDailyEnergyUsageList/{yyyyMM}, /getCurrentMonthlyEnergyFee/{yyyyMM}.
호출하는 이음(EEP) API — /api/smaHom/anlEngySpt(패턴분석), /csmEngyAmus(소비량), /csmRpsnEngyAvAmus(동일평형 평균 소비량), /csmRpsnEngyAmt(동일평형 사용금액), /csmRpsnEngyAvAmt(동일평형 평균 금액), /evChrgFcls(충전시설).
- 주소는 DB 상수
EEP_API_ADR, 인증은 헤더auth(상수SMAH_TO_EEP_API_KEY) +vendor-id: herit, 응답 타임아웃 20초 - 이음 API 2~4개를 동시 호출해 합침. 한 건만 느려도 전체가 느려짐
- 요청·응답이 전부
alog스키마에 남음 - 에너지 타입 코드:
01전기 /02가스 /03수도 /04난방 /05온수 — 앱 화면에 쓰이는 것은 여기까지임.06~12(태양광·지열·태양열·ESS·비상발전·풍력·연료전지)는 정의만 있음 - 요금 구간 표기:
"2"→Tier2,"3"→Tier3,"4"도 Tier3, 나머지는 전부 Tier1 - 검침일 보정 규칙은 공개노트/기능/에너지와 이음 연동에 있음
- 로그 키워드:
eepapi 응답 오류 발생 - payload:,eepapi 호출 중 오류 발생 :
AutoDR API
GET /autoDr/getAutoDrInfo, GET /autoDr/getAutoDrDeviceList, GET /autoDr/getMonthlyAutoDRUsageList/{yyyyMM}, POST /autoDr/updateAutoDrInfo, POST /autoDr/updateAutoDrDeviceList.
- MAW는 DR 이벤트를 처리하지 않음. 참여 설정·대상 기기·정산 조회만 함. 발령 수신은 APW, 실제 자동제어는 SCW임 → 공개노트/기능/AutoDR
- 대상 기기는 세대 단말기 ID로
cmn.tb_hsh_dvc_m에서 가져와 기기별atdr_trg_yn을 보여줌 - 참여 계약·기기·정산 행이 하나라도 없으면 전부
SQI0002→ 500임. “없음”과 “오류”가 구분되지 않음
테이블 — smah.tb_dr_ctctr_m(참여계약), smah.tb_dr_exa_l(월 정산), cmn.tb_hsh_dvc_m, cmn.tb_hsh_ter_m
외부 호출 타임아웃
| 대상 | 응답 타임아웃 | 인증 |
|---|---|---|
| 홈넷서버 | 3초 | Authorization: Bearer (토큰은 APW에서 매번 받아옴) |
| 내부 APW — 홈넷 토큰 | 3초 | 헤더 ApiKey |
| 내부 APW — SMS·이벤트 | 30초 | 헤더 ApiKey |
| 이음(EEP) | 20초 | 헤더 auth + vendor-id |
| WISE 임대료 | connect 3초 / response 5초 / total 8초 | 없음(목업) |
| NICE 본인인증 | 20초 | 전용 헤더 |
전부 시스템 프록시(Squid)를 거쳐 나감. 전체 연동 그림은 공개노트/개발/시스템 구성.
스케줄러 없음
MAW에는 스케줄러가 없음. 전 소스에 @Scheduled·@EnableScheduling·cron이 0건임. 시간과 엮인 동작은 셋 중 하나임.
| 구분 | 내용 |
|---|---|
| 앱이 부르는 “스케줄” | POST /healthCare/healthCheck — 이름은 헬스체크(스케줄)이지만 앱이 호출할 때마다 이력 1행을 넣음 |
| 기동 시 1회 | 공통코드·이벤트코드 캐시 적재, 권한 매트릭스 구성, 주차 업로드 디렉터리 생성 |
| 요청마다 즉시 계산 | 비밀번호 만료, 계정 잠금 해제, 임대료 5개월·관리비 3개월, 에너지 검침일 보정, OTP 만료·발송 횟수 |
MAW가 읽는 데이터를 만드는 배치는 전부 외부에 있음.
| MAW가 읽는 것 | 만드는 쪽 | 없을 때 증상 |
|---|---|---|
관리비 tb_hsh_mngexp_m | 외부 적재 | 관리비 목록이 null |
임대료 tb_hsh_rfe_m / 미납 tb_hsh_rfe_npy_l | 외부 적재 | 목록·미납 빈 배열 |
| 날씨 DB 함수의 원천 | 외부 배치 | 날씨 500 |
층간소음 tb_evn_occ_l | 감지기 연동 | 내역 0건 |
공지 tb_rsd_annc_fcts_l | 관리자 시스템 | 공지 0건 |
AutoDR 정산 tb_dr_exa_l | 외부 정산 | 정산 조회 500 |
| 공가세대 전출 처리 | 공개노트/개발/모듈/SCW 스케줄러 서버 | 전출 반영 지연 |
캐시와 DB 상수
- 로컬 캐시(공통코드·이벤트코드)에 만료 설정이 없음. 최대 1000개만 두고 기동 시 1회 적재하며, 비우거나 다시 읽는 API·스케줄도 없음. 코드 주석의 “60분/30분”은 주석일 뿐 설정에 반영돼 있지 않음 → 코드 테이블(
cmn.tb_cd_grp_m,tb_cd_dtl_m,tb_evn_m)을 바꾸면 WAS 재기동이 필요함 - 반대로 DB 상수
cmn.tb_cstt_m은 캐시하지 않고 호출할 때마다 읽음 → 값을 바꾸면 재기동 없이 즉시 반영됨
MAW가 읽는 상수 키: SMAH_INTERNAL_API_WAS_ADR, SMAH_INTERNAL_API_KEY, EEP_API_ADR, SMAH_TO_EEP_API_KEY, ELV_API_URL, ELV_API_KEY, SAMSUNG_SCI_API_ADR, WISE_API_ADR, NICE 본인인증 4종. 값은 전부 [REDACTED] 대상임.
MAW가 다루지 않는 테이블
cmn.tb_inif_trt_l(개인정보 취급 내역)은 MAW 코드에 없음. 엔티티·리포지토리·매퍼·문자열 어디에도 등장하지 않음(전체 검색 0건). MAW는 이 테이블에 적재하지 않음. 적재하는 쪽은 LMC 관리자 웹임 → 공개노트/개발/모듈/LMC 기능 상세- MAW가 남기는 개인정보 관련 흔적은
alog스키마의 API 감사 로그와cmn.tb_mob_conn_l(앱 접속 로그)임
확인 필요
확인 필요
- 관리비 시트를 올리는 주체와 그쪽 검증 규칙 — MAW는 조회만 하므로 양식에 없는 계정과목이 어디서 어떻게 걸러지는지는 관리자 시스템 담당자가 답해야 함. 화면에 그대로 내려가도 되는 항목인지 업무 기준 확인 필요
- 홈넷사별 방문차량 예약번호(
index) 재사용 정책 — MAW는 재사용을 가정하고 삭제된 행을 되살림. 홈넷사가 실제로 번호를 재사용하는지, 재사용하면 방문자명이 엉뚱한 예약에 붙을 수 있는지 홈넷사 확인 필요- 월 허용시간의 단위와 계산 주체 — 홈넷이 주는 값을 그대로 보여주고 있음. 단위(분인지 시간인지)와 누가 차감하는지 확인 필요
- 공통코드·이벤트코드 캐시에 만료를 넣을지, 갱신 API를 만들지 — 지금은 코드 추가 후 WAS 재기동이 유일한 방법임
- 헬스체크 이력 보관 정책 — 앱이 호출할 때마다 1행씩 쌓는데 정리 배치가 없음. 앱 호출 주기와 보관 기간(파티셔닝·삭제 배치) 확인 필요
- 현재 배포된 앱이 측정 API V1과 V2 중 어느 쪽을 쓰는지, V1 데이터를 V2로 옮길 계획이 있는지 — 이관 없이 V2만 쓰면 과거 기록이 화면에서 사라짐
- WISE 실연계 규격 — 실 WISE의 경로·메서드·요청 형식·성공/오류 코드·인증(GPKI 등)이 확정되지 않았음. 규격이 정해져야 실연계 어댑터를 붙일 수 있음
- 개발용 세대 분기가 운영에 남아 있음 — 특정 세대 ID이면 홈넷 대신 로컬 목업으로 가는 분기가 운영 코드에 그대로 있음. 운영 DB에 그 세대가 실제로 존재하는지, 존재한다면 그 세대의 방문주차·입출차가 목업으로 가고 있는지 확인 필요
관련
공개노트/개발/모듈/MAW 앱 API 서버 공개노트/기능/헬스케어 공개노트/기능/에너지와 이음 연동 공개노트/기능/AutoDR 공개노트/기능/로그인과 세대 승인 공개노트/개발/인터페이스 정의 공개노트/개발/관리비 등록 엑셀 파싱 공개노트/개발/공지사항 미리보기 공개노트/개발/모듈/SCW 스케줄러 서버 공개노트/개발/모듈/LMC 기능 상세 공개노트/개발/시스템 구성