memo: 두서없는 메모 → LLM(PARA+GTD) 자동정리·분류 저장

- MemoService(save_memo tool): organize(정리·분류→구조화 JSON) + saveMemo(카테고리
  findOrCreate + 노트+태그 적재) 분리 설계. GUI/외부API/향후 MCP 공통 사용.
- 분류 체계: PARA(카테고리 경로) + GTD(next-action/waiting/someday/reference 태그) 하이브리드.
- NoteController: POST /api/notes/organize (미리보기, save=true면 원샷 저장),
  POST /api/notes/memo (구조화 필드 저장).
- NoteRepository: insertMemo(project 포함), addTag/findTags.
- DB: notes.project 컬럼 + note_tags 테이블 (V2 마이그레이션).
- 프론트: notes/new 텍스트 모드에 'AI로 정리' → 미리보기(카테고리/제목/태그/
  프로젝트/요약/본문 수정) → 정리본 저장 흐름 추가.
- LLM은 OCI GenAI(현재 gpt-5.6-terra) 구조화 JSON 출력 방식(tool-calling 의존 없음).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-01 04:09:21 +00:00
parent e1e71dc954
commit df9c6a6b50
5 changed files with 444 additions and 10 deletions

View File

@@ -0,0 +1,15 @@
-- 메모 자동정리·분류(PARA+GTD) 기능용 스키마
-- 2026-07-01 적용 (SQLcl로 수동 반영됨)
-- notes에 프로젝트 컬럼 추가
ALTER TABLE notes ADD (project VARCHAR2(200));
-- 노트 검색 태그 테이블 (GTD 액션 태그: next-action/waiting/someday/reference 포함)
CREATE TABLE note_tags (
note_id RAW(16) NOT NULL,
tag VARCHAR2(100) NOT NULL,
CONSTRAINT fk_note_tags_note FOREIGN KEY (note_id) REFERENCES notes(id) ON DELETE CASCADE,
CONSTRAINT uq_note_tags UNIQUE (note_id, tag)
);
CREATE INDEX idx_note_tags_note ON note_tags(note_id);
CREATE INDEX idx_note_tags_tag ON note_tags(tag);