Coverage for src / local_deep_research / research_scheduler / routes.py: 100%
32 statements
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 00:51 +0000
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 00:51 +0000
1"""
2API routes for document scheduler management.
3"""
5from flask import Blueprint, jsonify, session
6from loguru import logger
8from .document_scheduler import get_document_scheduler
10# Create blueprint
11scheduler_bp = Blueprint("document_scheduler", __name__)
14def get_current_username():
15 """Get current username from session."""
16 return session.get("username")
19@scheduler_bp.route("/api/scheduler/status", methods=["GET"])
20def get_scheduler_status():
21 """Get the current status of the document scheduler for the current user."""
22 try:
23 username = get_current_username()
24 if not username:
25 return jsonify({"error": "User not authenticated"}), 401
27 scheduler = get_document_scheduler()
28 status = scheduler.get_status(username)
29 return jsonify(status)
30 except Exception:
31 logger.exception("Error getting scheduler status")
32 return jsonify({"error": "Failed to get scheduler status"}), 500
35@scheduler_bp.route("/api/scheduler/run-now", methods=["POST"])
36def trigger_manual_run():
37 """Trigger a manual processing run of the document scheduler for the current user."""
38 try:
39 username = get_current_username()
40 if not username:
41 return jsonify({"error": "User not authenticated"}), 401
43 scheduler = get_document_scheduler()
44 success, message = scheduler.trigger_manual_run(username)
46 if success:
47 return jsonify({"message": message})
48 else:
49 return jsonify({"error": message}), 400
50 except Exception:
51 logger.exception("Error triggering manual run")
52 return jsonify({"error": "Failed to trigger manual run"}), 500