diff --git a/app/api/documents.py b/app/api/documents.py index affaa43..714e3d0 100644 --- a/app/api/documents.py +++ b/app/api/documents.py @@ -36,6 +36,7 @@ class DocumentResponse(BaseModel): ai_sub_group: str | None ai_tags: list | None ai_summary: str | None + user_note: str | None source_channel: str | None data_origin: str | None extracted_at: datetime | None @@ -60,6 +61,7 @@ class DocumentUpdate(BaseModel): ai_domain: str | None = None ai_sub_group: str | None = None ai_tags: list | None = None + user_note: str | None = None source_channel: str | None = None data_origin: str | None = None diff --git a/app/models/document.py b/app/models/document.py index 4352852..ce56d94 100644 --- a/app/models/document.py +++ b/app/models/document.py @@ -44,6 +44,9 @@ class Document(Base): embed_model_version: Mapped[str | None] = mapped_column(String(50)) embedded_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True)) + # 사용자 메모 + user_note: Mapped[str | None] = mapped_column(Text) + # 메타데이터 source_channel: Mapped[str | None] = mapped_column( Enum("law_monitor", "devonagent", "email", "web_clip", diff --git a/frontend/src/lib/components/DocumentCard.svelte b/frontend/src/lib/components/DocumentCard.svelte index aa3443a..2530d17 100644 --- a/frontend/src/lib/components/DocumentCard.svelte +++ b/frontend/src/lib/components/DocumentCard.svelte @@ -24,6 +24,11 @@ } function handleClick() { + // 모바일에서는 항상 detail 페이지로 이동 + if (window.innerWidth < 1024) { + goto(`/documents/${doc.id}`); + return; + } if (onselect) { onselect(doc); } else { diff --git a/frontend/src/lib/components/PreviewPanel.svelte b/frontend/src/lib/components/PreviewPanel.svelte index 603a14f..de9459c 100644 --- a/frontend/src/lib/components/PreviewPanel.svelte +++ b/frontend/src/lib/components/PreviewPanel.svelte @@ -1,10 +1,79 @@