feat: 验收任务周期采集与设备资源接口

- 新增 acceptance-tasks 周期采集、立即采集、断点续采与批次管理
- acceptance-resources 返回 xhs_device_accounts 真实设备清单
- 数据看板服务调整及测试更新
This commit is contained in:
2026-08-28 13:43:53 +08:00
parent a021f2fe60
commit e188c50fab
8 changed files with 819 additions and 47 deletions

29
app.py
View File

@@ -17,6 +17,7 @@ from auth_service import (
from config import Config
from database import init_database
from ocr_dashboard_service import (
get_comparison as get_ocr_dashboard_comparison,
get_result_matches as get_ocr_result_matches,
get_summary as get_ocr_dashboard_summary,
list_batches as list_ocr_batches,
@@ -27,6 +28,7 @@ from ocr_dashboard_service import (
)
from acceptance_service import (
create_acceptance_task,
collect_acceptance_now,
get_acceptance_resources,
get_acceptance_link_ai_data,
get_acceptance_task,
@@ -34,6 +36,9 @@ from acceptance_service import (
list_acceptance_tasks,
resume_acceptance_task,
resume_unfinished_acceptance_tasks,
start_acceptance_schedule_worker,
stop_acceptance_schedule,
update_acceptance_schedule,
)
from rule_service import (
delete_rule_document,
@@ -308,6 +313,22 @@ def create_app() -> Flask:
def resume_project_acceptance_task(task_id: str):
return jsonify({"data": resume_acceptance_task(task_id), "request_id": g.request_id})
@app.route("/api/v1/acceptance-tasks/<task_id>/collect-now", methods=["POST"])
def collect_project_acceptance_now(task_id: str):
return jsonify({"data": collect_acceptance_now(task_id), "request_id": g.request_id}), 201
@app.route("/api/v1/acceptance-tasks/<task_id>/schedule", methods=["PUT"])
def configure_project_acceptance_schedule(task_id: str):
payload = request.get_json(silent=True) or {}
return jsonify({
"data": update_acceptance_schedule(task_id, payload.get("weekday")),
"request_id": g.request_id,
})
@app.route("/api/v1/acceptance-tasks/<task_id>/schedule/stop", methods=["POST"])
def stop_project_acceptance_schedule(task_id: str):
return jsonify({"data": stop_acceptance_schedule(task_id), "request_id": g.request_id})
@app.route("/api/v1/data-dashboard/ocr/batches", methods=["GET"])
def query_ocr_dashboard_batches():
return jsonify({"data": list_ocr_batches(), "request_id": g.request_id})
@@ -323,6 +344,13 @@ def create_app() -> Flask:
request.args.get("collection_key", "").strip(),
), "request_id": g.request_id})
@app.route("/api/v1/data-dashboard/ocr/comparison", methods=["GET"])
def query_ocr_dashboard_comparison():
return jsonify({"data": get_ocr_dashboard_comparison(
request.args.get("batch_key", "").strip(),
request.args.get("collection_key", "").strip(),
), "request_id": g.request_id})
@app.route("/api/v1/data-dashboard/ocr/results", methods=["GET"])
def query_ocr_dashboard_results():
return jsonify({"data": list_ocr_results(request.args.to_dict()), "request_id": g.request_id})
@@ -437,6 +465,7 @@ def create_app() -> Flask:
resume_unfinished_tasks()
resume_unfinished_acceptance_tasks()
start_acceptance_schedule_worker()
return app