전체 코드, 구조 검토 - P2 코드 수정 진행
This commit is contained in:
@@ -156,7 +156,7 @@
|
||||
|
||||
## 5. 이행 순서 제안
|
||||
|
||||
1. **Step 1 (P0, 코드 수정 소규모)**
|
||||
1. **Step 1 (P0, 코드 수정 소규모) ✅ 완료 (2026-07-04)**
|
||||
- P0-1: extension `getActionTarget` select 전환 + db.ts Password 마스킹
|
||||
- P0-2: 승인/취소/거절 4개 함수 조건부 UPDATE 가드
|
||||
- P0-3: docker-compose `TZ: Asia/Seoul` + 날짜 문자열 변환 통일
|
||||
@@ -172,8 +172,16 @@
|
||||
- API route 2곳: `void sendXxxDoneEmail` → `await emailSent`, 응답에 `emailSent: boolean` 포함
|
||||
- 테이블 UI 2곳: 응답 body를 단일 파싱으로 통일, 승인 성공 후 `emailSent === false`이면 인라인 경고 표시 (`router.refresh()` 후에도 client state 유지됨)
|
||||
- stage 실측(체험→유료, 유료→유료 메일 검증)은 별도 수동 테스트 항목으로 남김
|
||||
4. **Step 4 (P2 일괄)**
|
||||
- 소규모 항목 묶음 처리 후 AGENTS.md / phase 문서 갱신
|
||||
4. **Step 4 (P2 일괄) ✅ 완료 (2026-07-04)**
|
||||
- P2-2: `updateMaestro`에서 파싱 불가 날짜 silent skip → 400 반환으로 교체 (`lib/maestros.ts`)
|
||||
- P2-5: `withApiHandler` catch 블록 `throw error` → JSON 500 응답으로 교체 (`lib/api-handler.ts`)
|
||||
- P2-6: NextAuth `session.maxAge: 8 * 60 * 60` 추가 (`auth.ts`)
|
||||
- P2-7: 인메모리 브루트포스 방어 추가 (`auth.ts`) — 5회 실패 시 15분 잠금, 성공 시 카운터 초기화
|
||||
- P2-8: 연장·업그레이드 신청 목록 `status` 기본값 `undefined`(전체) → `REQUEST_STATUSES.REQUESTED` 변경; 결과 타입 `status?: number | "all"` → `status: number | "all"` 업데이트; 초기화 링크 `?status=1` 포함으로 변경
|
||||
- P2-4: 이메일 중복 검사 추가 안 함 (기존 서비스 정책 유지)
|
||||
- P2-9: SQL 파라미터 PII 로깅 정책 — 이름·이메일 등이 debug 레벨에서 노출됨. stage에서 실데이터 사용 시 phase9 마스킹 규칙과 대조해 마스킹 대상 확정 (별도 작업)
|
||||
- P2-10: 변경 없음 (신청 시점 스냅샷 유지)
|
||||
- AGENTS.md 인증 섹션 및 구현 phase 목록 갱신
|
||||
|
||||
각 Step 완료 시 AGENTS.md의 규칙 표(로그 타입, 검증 규칙)를 함께 갱신한다.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user