From 8bb2ea4f299be4e902aedd0afea9cafde024b0a9 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Mon, 6 Apr 2026 15:18:50 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EB=89=B4=EC=8A=A4=20=ED=95=84=ED=84=B0?= =?UTF-8?q?=20=ED=8A=B8=EB=A6=AC=20=E2=80=94=20=EC=8B=A0=EB=AC=B8=EC=82=AC?= =?UTF-8?q?=EB=AA=85=20=EC=A0=95=ED=99=95=20=EC=B6=94=EC=B6=9C=20+=20API?= =?UTF-8?q?=20datetime=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PAPER_NAMES 매핑으로 'Le Monde', 'Der Spiegel' 등 정확 분리 - NewsSourceResponse datetime 타입 수정 Co-Authored-By: Claude Opus 4.6 (1M context) --- app/api/news.py | 5 +++-- frontend/src/routes/news/+page.svelte | 11 ++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/api/news.py b/app/api/news.py index 3823870..119779d 100644 --- a/app/api/news.py +++ b/app/api/news.py @@ -1,5 +1,6 @@ """뉴스 소스 관리 API""" +from datetime import datetime from typing import Annotated from fastapi import APIRouter, Depends, HTTPException @@ -24,8 +25,8 @@ class NewsSourceResponse(BaseModel): category: str | None language: str | None enabled: bool - last_fetched_at: str | None - created_at: str + last_fetched_at: datetime | None = None + created_at: datetime | None = None class Config: from_attributes = True diff --git a/frontend/src/routes/news/+page.svelte b/frontend/src/routes/news/+page.svelte index 434d4d0..3eaf8a3 100644 --- a/frontend/src/routes/news/+page.svelte +++ b/frontend/src/routes/news/+page.svelte @@ -30,8 +30,17 @@ try { const srcData = await api('/news/sources'); const tree = {}; + // 신문사 매핑: 이름에서 마지막 단어를 분야로 분리 + const PAPER_NAMES = { + '경향신문': '경향신문', '朝日新聞': '朝日新聞', 'NYT': 'NYT', + 'Le Monde': 'Le Monde', 'Der Spiegel': 'Der Spiegel', '新华网': '新华网', + }; srcData.forEach(s => { - const paper = s.name.split(' ')[0]; + let paper = ''; + for (const [key] of Object.entries(PAPER_NAMES)) { + if (s.name.startsWith(key)) { paper = key; break; } + } + if (!paper) paper = s.name; const cat = s.category || ''; if (!tree[paper]) tree[paper] = []; if (cat && !tree[paper].includes(cat)) tree[paper].push(cat);