Files
hive-manage-v3/docs/superpowers/plans/phase-8-spec.md
T

2.0 KiB
Raw Blame History

实现事件档案管理(P0-7)。后端数据爬取 + API + 前端卡片页面。

后端: Event Crawler

创建 backend/app/services/event_crawler.py:

  • 爬取 hm.zhiweidata.ai/events 数据
  • 存入 events 表 (新建 ORM 模型)
  • 定时每天凌晨执行
  • 暂用占位数据(TODO: real crawler)

后端: Event Model

创建 backend/app/models/event.py:

class EventStatus(str, enum.Enum):
    ACTIVE = "active"
    FADING = "fading"
    DISSIPATING = "dissipating"
    CLOSED = "closed"

class Event(Base):
    __tablename__ = "events"
    id: str (UUID)
    title: str
    level: str (A/B/C)
    domain: str (12个领域之一)
    status: EventStatus
    occurred_date: date
    last_reviewed: datetime | None
    no_new_info_count: int (连续无新知次数)
    next_review: datetime | None
    created_at: datetime
    updated_at: datetime

创建 Alembic 迁移。

后端: Events API

创建 backend/app/api/events.py,全部 require_auth

GET /api/v1/events

事件卡片列表,三维筛选(前端即时过滤):

  • query: ?status=active|fading|dissipating|closed&domain=xxx&search=keyword
  • 每行含超期标记: overdue_days (下一次复查逾期天数)
  • 空结果返回 []

前端: Event Archive 页面

修改 frontend/src/pages/EventArchivePage.tsx:

筛选工具栏

  • 状态筛选: 全部/活跃期/消减期/消散期/已完结
  • 领域筛选: 12 个领域下拉
  • 搜索框: 按标题模糊搜索
  • 前端即时过滤,组合生效
  • [+ 新建事件] 按钮(P0 先做占位 Toast)

事件卡片网格

  • 自适应列数 grid (minmax 340px)
  • 每张卡片:
    • 标题(粗体)
    • 等级 Badge + 领域 Tag (蓝色)
    • 状态 Badge(绿/黄/灰)
    • Meta: 发生日期, 上次复查, 连续无新知(≥5标黄), 下次复查
    • 超期标记: 红色 "超期 N 天"
  • Hover: 边框变 honey-dim
  • 点击: Toast 显示事件标题(P1 升级详情面板)

四态覆盖

  • Empty: "无匹配事件"

注册路由 + 迁移 + 提交。