002 · Article Processing描述 002-article-processing capability 的現有行為,包含 DedupService 和 ProcessScrapedArticleUseCase 的去重邏輯、文章儲存、事件發布等行為
003 · LLM AnalysisLLM analysis capability — AnalyzeArticleUseCase + ResilientLLMService + SlidingWindowStrategy
004 · TranslationPartially brownfield — existing analysis/tag/group translation described as-is; article title and content translation are new greenfield requirements.
005 · Tag ManagementBrownfield spec — describes existing behavior of the tag management capability as it currently stands.
006 · ObservabilityBrownfield spec — describe existing observability behavior in present tense, covering OTel metrics/traces, structlog+Loki logging, Sentry error tracking, GeoIP resolution, request logging, Telegram notifications, and their graceful no-op fallback patterns.
007 · SchedulerThe scheduling entry point and pipeline assembly capability. Covers the run-once CLI entry point with startup jitter, signal handling, hard timeout scaffolding, and observability teardown, as well as the dependency injection/composition root that wires the full scrape-to-notify pipeline.
008 · Article Sharing把 article-id 放入 query parameter,讓 URL 可以直接導向特定文章;在 ArticleCard 上新增 share icon;share 出來的 link 導向一個獨立的 layout,只顯示被選定的 ArticleCard。
009 · Guest Mode在登入頁面新增訪客模式選項,讓使用者可以用 guest 假帳號/狀態做有限度的 demo;訪客能看到真實第一頁文章,但功能受限(無 settings、無翻頁、graph 僅第一頁資料)。
010 · Grafana Tracing ChartsFix OTel tracing pipeline to actually export spans to Grafana Cloud Tempo; replace broken Grafana image/iframe embedding in the monitoring dashboard with a native chart visualization approach that queries Grafana Cloud datasource APIs directly and renders charts client-side.
011 · Semantic Scholar Scraper新增 Semantic Scholar scraper 至 scraping pipeline,以解決 arXiv rate limit 問題,同時擴大論文來源涵蓋範圍。實作後發現 Semantic Scholar 免費 API 無法個人申請 key,且首次執行即 429;改以 OpenAlex 作為主要免費學術論文 API 並同步實作。
012 · Rag Chatbot Integration在現有 scrape-analyzer 系統中整合 RAG(檢索增強生成)功能,讓使用者能透過對話介面詢問與已爬取文章相關的問題,系統以語意搜尋配合智慧回答回應使用者。
013 · Dark Mode Toggle在 NavBar 加一個切換 light / dark / auto mode 的 icon,點擊依序切換,icon 隨之改變。RAG 元件隨 theme 更新。
014 · Article Recommendation Weekly ReportFeature specification for Article Recommendation Weekly Report
015 · Guest Tutorial Mode在 guest mode 時新增一個 tutorial mode,加上一個類似於 stepper 的東西,一步一步地告訴使用者如何操作。後續追加需求:教學呈現方式改為「灰色 overlay + 對目標元素挖空 highlight + 頁面導覽 + 貼齊元素的說明對話框」,並擴充為所有使用者在新功能上線時都能看到對應的功能導覽(feature spotlight),且已讀狀態需要持久化。
016 · DB Schema BrushupDatabase schema brush-up (GitHub issue #91): all public-schema tables (other than `auth` and `vectors`, which already have their own PostgreSQL schema) are currently unorganized under `public`. Reorganize them into use-case-based PostgreSQL schemas via Alembic migrations, following the pattern already used for `auth`/`vectors`. Also add an AST-based step to the existing docs pipeline (`.github/workflows/speckit-github-pages.yml`) that reads the SQLAlchemy models and renders a database schema diagram (tables, columns, FK relationships, schema grouping) as a new page in the VitePress site.
017 · Exception Handling GuidelineException handling guideline for src/ and API status code management for backend/ (GitHub issue #41). src/ 目前的 exception handling 很混亂:任何 function 都可以自行決定要不要 raise exception,exception 型別也不一致,exception propagation 也沒有良好結構。backend/ API 目前幾乎沒有妥善管理 status code。src/shared/domain/exceptions.py 已有 domain-specific exception hierarchy(016-db-schema-brushup 完成),此 feature 應以此為基礎,補齊(1) exception 使用規範/準則,(2) backend API 的 status code 對應規範與盤點。
018 · Public API Auth為目前完全公開(無任何 auth 檢查)的 backend API endpoint 加上「任何有效 token 即可」的存取控制,防止外部 consumer 繞過前端直接打 API 拿到未受保護的資料。不做 RBAC,只做「有沒有合法 token」的檢查。讓 backend 也對訪客發一組輕量的 guest JWT,前端的 Guest Mode 與訪客瀏覽都改成先跟 backend 換一組 guest token,之後打其他公開端點時帶上這組 token。真實登入使用者(含 admin)用原本的 JWT,角色仍從 User.role 判斷,不受影響。
019 · Cicd Data MigrationsBring the existing scripts/data/versions data-migration framework (analogous to alembic for one-off/backfill data jobs, tracked in the data_migrations table added by alembic migration 18) up to CI/CD parity with alembic itself, since it is currently a manual-only tool (make data-migrate) never invoked by .github/workflows/ci.yml or release.yml. Decided during design discussion: (1) trigger points are exactly ci.yml's migrate job (staging) and release.yml's release job (production), immediately after the existing alembic upgrade step, deliberately excluding the three ephemeral-per-job test databases; (2) each migration script declares an explicit predecessor reference (like alembic's down_revision) instead of relying on numeric filename ordering; (3) each migration script may declare a minimum required schema state, checked as a reachability precondition (not an exact-transition match) before execution, refused loudly if unmet, and not persisted anywhere; (4) a failing migration's writes are fully rolled back, it is not recorded as executed, no later chained migration runs in that pass, and the pipeline step fails — without reversing an already-successful schema migration in the same run; (5) migrations requiring external API access are always skipped by automatic runs, identical to today's default manual behavior; (6) no new environment toggle, no new CI job, no change to existing manual invocation. The historical arXiv-ID data-cleanup migration that motivated this work is explicitly out of scope — separate follow-on work built on top of this framework.