feat: 添加 API 路由(公告/爬取/微信回调/调度器)+ 健康检查测试
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
from fastapi import APIRouter
|
||||
from app.api.deps import get_crawl_service
|
||||
from app.models.schemas import CrawlTriggerRequest
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.post("/crawl/trigger")
|
||||
async def trigger_crawl(request: CrawlTriggerRequest):
|
||||
service = get_crawl_service()
|
||||
names = service.get_spider_names()
|
||||
|
||||
all_results = []
|
||||
for name in names:
|
||||
results = await service.run_spider(name)
|
||||
all_results.extend(results)
|
||||
|
||||
return {
|
||||
"spiders_run": names,
|
||||
"total_announcements": sum(r.total_count for r in all_results),
|
||||
"errors": [r.error_message for r in all_results if not r.success],
|
||||
}
|
||||
|
||||
|
||||
@router.get("/crawl/status")
|
||||
async def crawl_status():
|
||||
service = get_crawl_service()
|
||||
return {
|
||||
"spiders": service.get_spider_names(),
|
||||
"running": False,
|
||||
}
|
||||
|
||||
|
||||
@router.get("/crawl/sources")
|
||||
async def crawl_sources():
|
||||
import json
|
||||
from app.config import settings
|
||||
sources = json.loads(settings.announcement_sources)
|
||||
return {
|
||||
"sources": [
|
||||
{"code": code, "name": info["name"], "type": info["type"]}
|
||||
for code, info in sources.items()
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user