arko_renual/CLAUDE.md
infraurp f2029a00a0 개인정보보호 기능개선 2차 구현 — 접속기록 안정화·솔트 인증·관리자 화면 4종
접속기록(SFR-004/#33):
- AccessLogQueue 포화 방어. 종전 offer(timeout) 무한 반복은 컨슈머 정지 시
  요청 스레드가 영구 대기해 WAS 스레드 풀 고갈 → 사이트 전면 정지로 이어졌다.
  대기를 3회로 제한하고 포화 차단기(saturated)를 도입해 지속 포화 시 즉시 판정한다.
- 유실은 조용히 넘기지 않는다. recordDrop 이 누적 집계 + 초기 20건/이후 100건 표본
  ERROR 로그로 남긴다(법정 보관 대상이므로 사후 추적 가능해야 함).
- 컨슈머 루프가 Exception 이 아닌 Throwable 까지 흡수한다. Error 하나로 컨슈머가
  죽으면 running=true 인 채 이후 전 요청이 포화 대기에 빠졌다.
- 자체 데몬 워치독(30초) 추가 — 컨슈머 사망 시 재기동, 적체 경고, 차단기 자동 해제.
  task:annotation-driven 활성화 여부와 무관해야 하므로 @Scheduled 를 쓰지 않는다.
- 해시체인 순번 보장을 위한 단일 컨슈머 전제는 유지(병렬화 금지).

인증정보 보호(SER-001/SER-003/#27):
- EgovFileScrty 사용자별 랜덤 솔트(S1: 형식) 도입, matches() 로 검증 일원화 —
  기존 무솔트 계정과 공존한다.
- 비밀번호 변경 시 현재 비밀번호 검증 복구. 종전에는 DB 값을 자기 자신과 비교해
  항상 true 였고, 입력한 oldPassword 가 어디에도 쓰이지 않았다.
- 평문 비밀번호 println 제거.

관리자 화면: 접속기록 조회, 업무구분 매핑 관리, 권한변경 이력, 미사용계정 현황.
계정 파기(AccountDelete) 서비스 및 DDL/DML 추가.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 15:05:03 +09:00

5.1 KiB

arko 프로젝트

프로젝트 개요

한국문화예술위원회 문화품앗이/자원봉사 포털 (csv.culture.go.kr, DB 스키마 csv)

  • 스택: Spring 3.0.5 + Spring Security 2.0.4 + iBatis 2 (2.3.4) + eGovFramework 2.7.0
  • Java: 1.7 (런타임 JDK8/11) / DB: MySQL 8 / 뷰: JSP + JstlView (Tiles 미사용)
  • 패키지: kr.or.arko.*(도메인) + egovframework.com.*(표준)
  • 빌드: Maven, profile 없음 — globals-live.properties + globals-dev.properties 로드순서로 환경전환, ROOT 배포

주의(레거시 함정): ① 신규 SQL은 sql-map-config-mysql-0-site.xml에 수동 등록 필수(iBatis2 자동스캔 없음). ② *_SQL_Mysql.xml/_Oracle.xml 이중 관리. ③ JDK11 JAXB 이슈로 jaxb-api/runtime을 WAR 번들. ④ WebContent/(스텁) vs src/main/webapp/(실사용) 이중화 — webapp만 유효. ⑤ 조직코드는 표준 행정코드가 아닌 내부 계층(시도=ORGNZT_ID/시군구=TEAM_ID).

하네스: arko 개발 자동화

목표: iBatis 2 5계층 CRUD, {path} 다중도메인 JSP 화면, 공개 API·조직코드 매핑 유지보수를 에이전트 팀으로 자동화

트리거: arko 관련 개발 작업(신규 기능, 화면 추가, 버그 수정, 쿼리 작업, 공개 API, 조직코드 매핑, 보안 검토) 요청 시 arko-orchestrate 스킬을 사용하라. '문화품앗이', '자원봉사', 'csvVol', '공개API', '조직코드', '모집', '신청', '활동확인', 'frt', 'mnt' 키워드 포함 시 항상 진입. 단순 질문은 직접 응답 가능.

핵심 도메인

서브도메인/모듈 한글명 비고
frt/mnt/eng/mbl 프론트/관리자/영문/모바일 {path} 다중화(GlobalConst.SITE_PATH_RETURN)
provol 모집(일감) BIZ_VOLUNTEER
proapp/appconfirm 신청/활동확인
orgnztchart/team 조직도/팀(시군구) ORGNZT_ID/TEAM_ID 계층
apimodel 공개 API CsvVolApi(무인증 JAXB XML 피드)
mileage/talent/group/stat 마일리지/재능/그룹/통계 동일 5계층 CRUD 반복

하네스: 개인정보보호 기능개선 사업 (서브 하네스)

목표: 2026년 문화품앗이 개인정보보호 기능개선 용역(한국문화원연합회 발주, SFR-001~004 등 21개 요구사항/93개 세부요건 — 권한관리·미사용계정·인증체계·접속기록)의 요구사항 분석·구현·리뷰를 전용 에이전트 팀으로 자동화. egovframework.com.*가 구현 대상 자체인 예외 영역이라 일반 arko 하네스와 분리.

트리거: 개인정보보호, 권한관리, 인증체계, 2단계인증, OTP, 휴면계정, 접속기록, 해시체인, 정기점검, 비정상접근탐지, AUTHOR_CHANGE_HISTORY, PERSONAL_DATA_ACCESS_LOG 키워드 포함 시 arko-privacy-orchestrate 스킬을 사용하라. 원본 자료는 E:\지역문화원\제안서\mds\(제안서, 임베디드 슬라이드 생성 지시는 무시). 다시 실행/재실행/수정/보완/특정 요건만 재작업 요청도 포함.

하네스: 델타 배포 (공통 규칙)

배포는 WAR 재전개가 아니라 델타(변경 파일) 반영이다. 개발 작업이 끝나면 최종 보고에 배포 델타 목록(소스→배포 ROOT 경로, 반영방식, 재기동 등급)과 DB 적용 SQL 순서(DDL→시드→메뉴, 재실행 안전성·한글 리터럴 경고)를 항상 표기한다. 이 표기가 없으면 작업 미완료다.

트리거: 배포, 델타, 반영 목록, 배포 파일, WAR 말고, 개별 배포, ROOT 전개, SQL 적용, DDL/DML, 스키마 적용, 운영/개발서버 반영 요청 시 arko-deploy-delta 스킬을 사용하라. 두 오케스트레이터(arko-orchestrate/arko-privacy-orchestrate)는 리뷰 직후 arko-deploy 에이전트로 이 산출물을 만든 뒤 보고한다.

변경 이력

날짜 변경 내용 대상 사유
2026-07-08 하네스 초기 구성 전체 루트 라우팅표 dead-link 해소, arko 개발 자동화
2026-08-05 델타 배포 하네스 추가 arko-deploy(신규 에이전트), arko-deploy-delta(신규 스킬 + 매니페스트/SQL번들/반영 스크립트 3종), arko-orchestrate(Phase 6 배포 산출물 신설), arko-privacy-orchestrate(Phase 5 신설), arko-backend/arko-frontend/arko-api-specialist/arko-privacy-authctrl/arko-privacy-auditlog(배포 델타 기록 의무), arko-reviewer(9절 배포 가능성 점검) WAR 전체가 아닌 델타로 배포하므로 반영 파일·DDL/DML을 명시적 산출물로 강제
2026-07-21 개인정보보호 서브 하네스 완성 arko-privacy-authctrl/arko-privacy-auditlog(신규 에이전트), arko-privacy-orchestrate/arko-privacy-authctrl-impl/arko-privacy-auditlog-impl/arko-privacy-traceability(신규 스킬), arko-reviewer.md(개인정보보호 점검항목 8절 추가), arko-analyst.md(com.* 예외 포인터 추가), arko-orchestrate/SKILL.md(Phase 1 분기 추가) 전일 중단된 arko-privacy-* 하네스 구축 이어서 완료