feat: 按 Pencil 设计重做页面 UI
This commit is contained in:
@@ -25,22 +25,24 @@ def test_index_page_renders_task_form_empty_state_and_default_scale():
|
||||
assert "还没有任何任务" in response.text
|
||||
|
||||
|
||||
def test_index_page_uses_pencil_data_grid_layout_for_ui_polish():
|
||||
def test_index_page_uses_pencil_control_console_layout_for_ui_polish():
|
||||
with make_test_client() as (client, _engine):
|
||||
response = client.get("/")
|
||||
|
||||
assert response.status_code == 200
|
||||
soup = BeautifulSoup(response.text, "html.parser")
|
||||
visible_text = soup.get_text(" ")
|
||||
hero = soup.select_one(".hero-band.hero-band-inverse")
|
||||
hero = soup.select_one(".control-hero")
|
||||
assert hero is not None
|
||||
assert "抓取热点评论,快速看清讨论情绪" in visible_text
|
||||
assert soup.select_one(".hero-metrics.hero-data-grid") is not None
|
||||
assert soup.select_one(".task-workspace") is not None
|
||||
assert soup.select_one(".tool-card.hard-panel") is not None
|
||||
assert soup.select_one(".section-heading.panel-heading") is not None
|
||||
assert soup.select_one("table.app-table.data-grid-table") is not None
|
||||
assert soup.select_one(".scale-hint-panel") is not None
|
||||
assert "用默认配置快速启动一次评论分析" in visible_text
|
||||
assert "内容平台评论分析控制台" in visible_text
|
||||
assert soup.select_one(".quick-launch-panel") is not None
|
||||
assert soup.select_one(".default-scale-grid") is not None
|
||||
assert soup.select_one(".overview-grid") is not None
|
||||
assert soup.select_one(".task-card-list") is not None
|
||||
assert soup.select_one(".task-status-sidepanel") is not None
|
||||
assert soup.select_one("table.app-table.data-grid-table") is None
|
||||
assert "卡片化展示,减少表格压迫感" in visible_text
|
||||
assert "运行中任务自动刷新" in visible_text
|
||||
|
||||
|
||||
@@ -722,6 +724,46 @@ def test_task_detail_page_explains_target_and_actual_counts():
|
||||
assert "少于理论上限通常是内容本身评论不足或平台返回不足" in response.text
|
||||
|
||||
|
||||
def test_task_detail_page_uses_pencil_execution_view_layout():
|
||||
with make_test_client() as (client, engine):
|
||||
seed_result_data(engine)
|
||||
|
||||
response = client.get("/tasks/task-result")
|
||||
|
||||
assert response.status_code == 200
|
||||
soup = BeautifulSoup(response.text, "html.parser")
|
||||
visible_text = soup.get_text(" ")
|
||||
assert soup.select_one(".task-detail-hero") is not None
|
||||
assert soup.select_one(".execution-timeline") is not None
|
||||
assert soup.select_one(".hotspot-card-list") is not None
|
||||
assert soup.select_one(".detail-sidepanel") is not None
|
||||
assert "TASK DETAIL" in visible_text
|
||||
assert "执行阶段" in visible_text
|
||||
assert "热点结果" in visible_text
|
||||
assert "错误会被隔离" in visible_text
|
||||
assert "查看报告" in visible_text
|
||||
|
||||
|
||||
def test_hotspot_report_page_uses_pencil_analysis_reading_layout():
|
||||
with make_test_client() as (client, engine):
|
||||
seed_result_data(engine)
|
||||
|
||||
response = client.get("/hotspots/hot-result/report")
|
||||
|
||||
assert response.status_code == 200
|
||||
soup = BeautifulSoup(response.text, "html.parser")
|
||||
visible_text = soup.get_text(" ")
|
||||
assert soup.select_one(".report-reading-hero") is not None
|
||||
assert soup.select_one(".report-reading-layout") is not None
|
||||
assert soup.select_one(".insight-card") is not None
|
||||
assert soup.select_one(".sentiment-sidepanel") is not None
|
||||
assert "HOTSPOT REPORT" in visible_text
|
||||
assert "核心结论" in visible_text
|
||||
assert "代表评论" in visible_text
|
||||
assert "内容表现" in visible_text
|
||||
assert "同一份报告数据" in visible_text
|
||||
|
||||
|
||||
def test_task_api_includes_runtime_and_stale_progress_fields(monkeypatch):
|
||||
now = datetime(2026, 7, 3, 10, 30, tzinfo=UTC)
|
||||
monkeypatch.setattr("app.services.task_service.utc_now", lambda: now)
|
||||
|
||||
Reference in New Issue
Block a user