#22(실패이력 활성 경로 이설)로 적재는 살아났으나 LOGIN_HISTORY가
ID/CREATE_DATE/GUBUN 3컬럼뿐이라 (1) 접속 IP 미기록 (2) 로그인 성공 시
당일 이력 DELETE로 무차별 대입 흔적 소멸 문제가 있었다.
- DDL: LOGIN_HISTORY에 CONECT_IP(45)/RESET_YN + 인덱스 2종,
ACCOUNT_MNG_POLICY.LOGIN_HIST_KEEP_DAY(기본 730일) 추가
- 적재: insertFailHistory 컬럼 명시 전환 + ClientIpResolver IP 세팅
(종전 무컬럼 VALUES(3값)은 컬럼 추가 시 ERROR 1136 — DDL과 한 쌍)
- 보존: 성공 시 DELETE -> RESET_YN='Y' 소프트 리셋.
selectFailCount가 RESET_YN='N'만 세므로 계정잠금 동작은 종전과 동일
- 화면: /mnt/sec/loginFailHistory/listView.do (계정·구분·IP·기간·리셋여부
검색 + 페이징), 메뉴 9100039 + left.jsp 분기
- 정책화면: 계정 관리 정책에 보관기간 입력 항목·검증 추가
- 배치: purgeExpiredLoginFailHistoryScheduler 매일 03:30, 1회 5,000건 상한
- Mysql/Oracle sqlmap 쌍 + sql-map-config 등록
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
개별 CSS에 맑은고딕/돋움/굴림/dotum/Tahoma/Arial 지정이 흩어져 있고,
나눔 @font-face 도 파일마다 4중(nanumttf/nanumeot/_r) 으로 중복 선언되어
화면마다 글꼴이 달라 보이던 것을 하나로 정리한다.
- css/site/mnt/nanumgothic.css 신규: "NanumGothic" 패밀리 단일 정의(400/700/800),
local() 우선 + eot/woff/ttf fallback, 전역 적용 및 벤더 위젯 override
- head.jsp 에 마지막 스타일시트로 등록 → /mnt/include/head.do 를 가져가는
관리자 화면 293개(egovframework.com.* 표준화면 포함)에 일괄 적용
- mnt CSS 11개 파일의 font-family 지정 39곳 교체, 레거시 @font-face 16줄 제거
- head.do 를 쓰지 않는 쪽지 팝업 4개는 개별 link 추가
- ckeditor/contents.css: "nanumttf_r" 이 @font-face 선언 없이 사용되어
실제로는 적용되지 않던 상태를 정상화(관리자 21 / 프론트 26 화면 공용)
- NanumGothicBold.ttf 추가: 기존에 Regular/ExtraBold 만 있어
font-weight:bold 가 ExtraBold 로 렌더링되던 것을 정상 Bold 로 교정
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
권한 신청·승인 워크플로(N:신설=추가부여)로 사용자가 AUTHOR_CODE를 2개 이상
갖게 되면, 레거시 eGov 표준 메뉴 쿼리(selectMainMenuHead/Left/LastMenuNo(Cnt))의
"= (서브쿼리)"가 다중 행을 반환해 Subquery returns more than 1 row로 500 오류가
발생했다(2FA/OTP 등록 직후 /mnt/main.do 진입 시 재현). 서브쿼리를 IN으로,
상위 SELECT에 DISTINCT를 추가해 다중 역할을 지원하도록 수정.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>