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

1""" 

2API routes for document scheduler management. 

3""" 

4 

5from flask import Blueprint, jsonify, session 

6from loguru import logger 

7 

8from .document_scheduler import get_document_scheduler 

9 

10# Create blueprint 

11scheduler_bp = Blueprint("document_scheduler", __name__) 

12 

13 

14def get_current_username(): 

15 """Get current username from session.""" 

16 return session.get("username") 

17 

18 

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 

26 

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 

33 

34 

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 

42 

43 scheduler = get_document_scheduler() 

44 success, message = scheduler.trigger_manual_run(username) 

45 

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