docs: 보류(유지보수 부채) 항목 카테고리별 정리 + 누락 항목 보강
This commit is contained in:
parent
805e1b5ec9
commit
8a8548e2d7
1 changed files with 26 additions and 9 deletions
|
|
@ -72,16 +72,33 @@
|
|||
|
||||
---
|
||||
|
||||
## 보류 (지금 안 함 — 큰 리팩터링)
|
||||
## 보류 (지금 안 함 — 버그/보안 아님, 유지보수 부채)
|
||||
|
||||
당장 아픈 문제가 아니므로 해당 영역 작업 시 곁들이는 것을 권장:
|
||||
- 봇 라우트 3종(festival/x/youtube) CRUD 팩토리화
|
||||
- 모바일 `ScheduleDetail.jsx`(1304줄) → `sections/` 분리(PC 구조와 일치)
|
||||
- React Query 캐시 키 팩토리 중앙화 + 공통 데이터 훅(`useScheduleData` 등) 실제 사용
|
||||
- PC/모바일 `ScheduleCard`·`BirthdayCard`·`DebutCard` 공통 파생 훅(`useScheduleCardData`)
|
||||
- `getActiveMemberCount` 중복 통합, 매직넘버/Nitter URL config 이전
|
||||
- 타임존(KST) 처리 통일, 멤버 PUT 트랜잭션화, `saveTweet` DUP catch
|
||||
- JWT 수명 단축, CORS `credentials` 제거, Gemini 키 헤더 전달
|
||||
> 당장 깨지는 문제가 아니므로 **해당 영역을 어차피 만질 때 곁들여** 처리 권장.
|
||||
> "같은 수정을 두 군데 반복하게 돼 짜증날 때"가 착수 신호.
|
||||
|
||||
### A. 중복 제거 (비용 가장 큼)
|
||||
- **일정 타입별 CRUD 공통화** — events/variety/concert/x/youtube가 "schedules insert + members + 이미지 저장 + meili 동기화"를 각자 복붙. 공통 `scheduleCore`(createBase/updateBase/setMembers/saveImage)로 추출. *(미완성 generic `/admin/schedules` 경로 정리도 함께)*
|
||||
- **봇 라우트 3종(festival/x/youtube) CRUD 팩토리화** — formatRow·GET·POST·UPDATE빌더·DELETE가 거의 동일 → `createBotRoutes()` 팩토리
|
||||
- **PC/모바일 카드 공통 파생 훅** — `ScheduleCard`/`BirthdayCard`/`DebutCard`의 날짜·카테고리·멤버 계산을 `useScheduleCardData(schedule)`로, JSX만 플랫폼별 유지
|
||||
- **모바일 `ScheduleDetail.jsx`(1304줄) → `sections/` 분리** (PC `sections/` 구조와 일치시켜 이중 관리 해소)
|
||||
- **`getActiveMemberCount` 중복 통합**(4곳), 멤버 API 모듈 이중화(admin/members.js vs public/members.js) 정리
|
||||
|
||||
### B. 거대 컴포넌트 분리
|
||||
- admin `Schedules.jsx`, 봇 다이얼로그(`YouTubeBotDialog` 912줄 등) — 데이터/UI 관심사 분리
|
||||
|
||||
### C. 일관성·정리
|
||||
- **React Query 캐시 키 팩토리 중앙화**(`['members']` vs `["members"]` 등) + 공통 데이터 훅(`useScheduleData` 등) 실제 사용
|
||||
- **에러 핸들링 컨벤션 통일** — `reply.code().send({error})` 직접 vs `utils/error.js` 헬퍼 혼용 → 헬퍼로 통일
|
||||
- **타임존(KST) 처리 통일** — `getTodayKST` vs 로컬 `new Date()` 혼용
|
||||
- **미완성 legacy `ScheduleForm` 제거** (죽은 generic 경로 관련)
|
||||
- 매직넘버/Nitter URL `config`로 이전, JSON 컬럼 파싱 `parseJsonColumn` 유틸화
|
||||
- React key에 index 사용 지양(특히 PC 검색 추천), `getScheduleDetail`의 `s.*` → 필요 컬럼만 명시
|
||||
|
||||
### D. 안전·견고성 (소규모)
|
||||
- 멤버 PUT 트랜잭션화, `saveTweet` `post_id` UNIQUE + `ER_DUP_ENTRY` catch *(스키마 변경 동반)*
|
||||
- suggestions 수동 `fetch`에 `AbortController`(언마운트 후 setState 방지)
|
||||
- JWT 수명 단축, CORS 불필요한 `credentials:true` 제거, Gemini 키 쿼리스트링 → 헤더
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue