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

50 lines
5.1 KiB
Markdown

# 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-* 하네스 구축 이어서 완료 |