# 현재 코드베이스 메모 ## 멀티모듈 이관 상태 - 기존 단일 모듈의 업무 API 이관을 완료하고, 레거시 소스는 저장소에서 제거했습니다. - core/admin/front 모듈은 각각 독립 bootJar로 빌드·배포합니다. - 이후 신규 기능도 core standard/bespoke와 admin/front 업무 Service 경계를 기준으로 추가합니다. ## 이관 원칙 - 범용적인 단일 테이블 데이터 처리는 `core.modules.standard`에 둡니다. - JOIN·집계·복합 SQL 데이터 처리는 `core.modules.bespoke`에 둡니다. - admin/front는 Controller, 업무 Service, Form, 화면 VO를 소유합니다. - admin/front 업무 Service가 업무 정책과 트랜잭션을 소유하며 core standard/bespoke Service를 조합합니다. - Mapper는 core standard/bespoke에 통합하고, Controller는 core Service 또는 Mapper를 직접 호출하지 않습니다. - core VO는 내부 업무·조회 결과를 표현하고, admin/front 업무 Service가 필요한 필드만 화면/API 응답 VO로 조립합니다. - 비밀번호, refresh token 등 민감 정보는 일반 core VO와 외부 응답 VO에 포함하지 않습니다. - core는 화면 전용 VO나 Controller를 소유하지 않습니다. ## 파일과 TUS - 단순 파일 업로드는 DB 기록 없이 파일을 저장하고 uploadPath를 반환합니다. - 일반 file Controller는 admin/front 양쪽에 둘 수 있으며, 저장 구현은 core 공통 기능으로 이관합니다. - TUS는 `02-api-admin/modules/tus`의 admin 전용 기능입니다. front에는 TUS Controller나 `tus-file.*` 설정을 두지 않습니다. - TUS Controller는 요청 바인딩과 응답만 담당하고, `TusFileService`가 core standard/bespoke Service를 조합합니다. - `FILE_MASTER`, `FILE_DETAIL`, 업로드·다운로드 이벤트 로그의 단일 테이블 처리는 core standard를 사용합니다. 토큰 소유권, 완료 파일 목록·조회, 파일 이동 대상 조회, 마스터 집계는 core bespoke `fileDetailTusFile`, `fileMasterTusFile`에 둡니다. - 완료 파일의 최종 저장 루트는 일반 업로드와 같은 `file.storage.root-path`입니다. TUS 임시 파일은 admin의 `tus-file.upload.tmp-root`를 사용합니다. - TUS 업로드 인증 경로와 Hook 경로만 admin SecurityConfig에서 비인증으로 열고, 나머지 TUS API는 ADMIN 권한을 요구합니다. - tusd 실제 Hook, 임시 파일 이동, nginx 파일 제공은 tusd와 file-domain 설정이 준비된 환경에서 통합 검증합니다. ## CORS 동기화 - Dynamic CORS 필터와 캐시는 core를 통해 admin/front 양쪽 JVM에서 동작합니다. - CORS 관리 API는 admin에만 둡니다. - 허용 Origin 목록은 Redis `alist:cors:allow-origins` 키에 JSON 목록으로 저장합니다. - admin에서 정책을 변경하면 트랜잭션 커밋 후 Redis Pub/Sub 채널 `alist:cors:allow-origins:changed`로 갱신 이벤트를 발행합니다. - 각 JVM은 해당 채널을 구독해 즉시 Redis 목록을 다시 읽고, 예외 상황에 대비해 60초 주기 Redis 재조회도 수행합니다. ## 주의 사항 - `application-local.yaml`에 민감정보가 있을 수 있으므로 공유와 커밋 전에 확인합니다. - Mapper 인터페이스, XML namespace, XML id, DTO resultType/parameterType은 이관 시 함께 변경합니다. - 파일 경로 변경은 nginx alias, tusd 경로, API 환경 설정을 함께 확인합니다.