feat: 提交热榜评论分析工具 MVP 基线

This commit is contained in:
meijiali
2026-07-03 11:12:12 +08:00
parent 0231be6338
commit 9bad7b6e63
60 changed files with 4058 additions and 0 deletions
@@ -0,0 +1,39 @@
from sqlalchemy.orm import Session
from app.models import Comment, Task
from app.platforms.base import CommentData, ContentItemData, HotspotData
from app.schemas import CreateTaskRequest
from app.services.task_service import create_task, run_task
from tests.helpers import make_test_client
class FakeDouyinPlatform:
def fetch_hotspots(self, *, limit):
return [HotspotData(source_hot_id="d1", title="抖音热点", rank=1, heat_value="200", raw_data={})]
def search_items_by_hotspot(self, keyword, *, limit):
return [ContentItemData(source_item_id="v1", item_type="video", title="视频", raw_data={})]
def fetch_comments(self, source_item_id, *, limit):
return [CommentData(source_comment_id="dc1", content="抖音评论", raw_data={})]
def test_douyin_task_flow_persists_comments(monkeypatch):
with make_test_client() as (_client, engine):
monkeypatch.setattr("app.services.task_service.build_platform", lambda _platform: FakeDouyinPlatform())
with Session(engine) as session:
task = create_task(
session,
CreateTaskRequest(platform="douyin", hotspot_limit=1, item_limit_per_hotspot=1, comment_limit_per_item=10),
submit_background=False,
)
task_id = task.id
with Session(engine) as session:
run_task(task_id, session_factory=lambda: session)
task = session.get(Task, task_id)
comment = session.query(Comment).filter_by(task_id=task_id).one()
assert task.status == "success"
assert comment.content == "抖音评论"