mirror of
https://github.com/sotam0316/brain_dogfood.git
synced 2026-04-25 03:48:38 +09:00
Refactor: Modularize memo.py to 3-layer architecture, Fix tag extraction regex, and Enhance infinite scroll for large screens
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
# [Bug Report] 초기 로딩 시 날짜 필터로 인한 무한 스크롤 중단
|
||||
|
||||
## 1. 버그 내용
|
||||
- **현상**: 로그인 후 첫 화면에서 최근 5일 이내의 메모만 표시됨. 스크롤을 내려도 그 이전의 메모(5일 전 이전)들이 로드되지 않음.
|
||||
- **원인**:
|
||||
- `app/routes/memo.py`의 `get_memos` API에서 `offset == 0`(첫 페이지)인 경우에만 강제로 `updated_at >= T-5 days` 필터를 적용하도록 설계되어 있었음.
|
||||
- 만약 최근 5일 이내의 메모가 페이지당 제한 수량(20개)보다 적을 경우, API는 20개 미만의 결과를 반환하게 됨.
|
||||
- 프론트엔드(`AppService.js`)는 반환된 개수가 제한 수량보다 적으면 `hasMore = false`로 설정하여 더 이상의 조회를 중단함. 이로 인해 5일 이전의 메모 데이터가 존재하더라도 조회 시도조차 하지 않게 됨.
|
||||
|
||||
## 2. 조치 사항
|
||||
- `app/routes/memo.py`에서 `offset == 0` 일 때 적용되던 강제 날짜 필터 로직을 삭제함.
|
||||
- 기본 정렬 순서가 `updated_at DESC`이므로, 필터 없이도 자연스럽게 최신 메모부터 로드되며 데이터 일관성이 유지됨.
|
||||
- 무한 스크롤 시 `hasMore` 판정이 정상적으로 이루어져 모든 과거 메모를 순차적으로 불러올 수 있게 됨.
|
||||
|
||||
## 3. 향후 주의사항
|
||||
- 무한 스크롤이 적용된 API에서는 특정 `offset` 값에 따라 `WHERE` 조건이 동적으로 변해서는 안 됨.
|
||||
- 전체 데이터셋에 대한 페이징 일관성을 유지해야 데이터 누락이나 중복 로딩을 방지할 수 있음.
|
||||
@@ -0,0 +1,18 @@
|
||||
# [Bug Report] HTML 색상 코드 태그 오인 및 AI 태그 수정 불가 문제
|
||||
|
||||
## 1. 버그 내용
|
||||
- **현상**:
|
||||
1. HTML 코드를 본문에 붙여넣을 때, CSS 색상 코드(예: `#ffffff`)를 태그(`#태그`)로 잘못 인식하여 추출함.
|
||||
2. AI 분석으로 생성된 태그가 편집 UI에는 노출되지 않으나 카드에는 표시되며, 저장 시 삭제되지 않고 계속 남아있음.
|
||||
- **원인**:
|
||||
1. 태그 추출 정규식이 전방 탐색 조건을 충실히 따지지 않아, 색상 앞에 공백이 있는 경우 이를 태그로 인식함.
|
||||
2. `update_memo` API가 저장 시 `source = 'user'`인 태그만 삭제하고 교체하기 때문에, `source = 'ai'`인 태그는 사용자가 수동 저장해도 지워지지 않음.
|
||||
|
||||
## 2. 조치 사항
|
||||
- **정규식 최종 강화**: `app/utils/__init__.py`의 `parse_metadata` 함수에서 앞에 공백이나 줄 시작(`\s|^`)이 있더라도, **콜론(:)이나 등호(=) 직후**에 오는 `#`은 HTML 속성이나 CSS 색상값으로 간주하여 무시하도록 정규식을 고도화함.
|
||||
- 최종 정규식: `(?<![:=])(?<![:=]\s)(?:(?<=\s)|(?<=^))#([^\s\#\d\W][\w가-힣-]*)`
|
||||
- **저장 로직 강화**: `app/routes/memo.py`의 `update_memo` 함수에서 수동 저장 시 해당 메모의 모든 태그(AI 태그 포함)를 일단 삭제한 뒤, 사용자가 편집창에서 보고 있던 최종 리스트로 갱신하도록 변경함.
|
||||
|
||||
## 3. 향후 주의사항
|
||||
- 특수 문자가 포함된 외부 코드(HTML/JS 등)를 붙여넣을 때 메타데이터 추출기와 충돌할 수 있으므로, 정규식은 항상 보수적으로(Context-aware) 설계해야 함.
|
||||
- 사용자 인터페이스(UI)와 데이터베이스 상태 간의 괴리(편집창에 안 보이는 데이터가 DB에 남는 경우)는 사용자에게 큰 혼란을 주므로 지양해야 함.
|
||||
Reference in New Issue
Block a user