vs_plg.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. # vs_plg.py
  2. from typing import Callable, List, Dict
  3. from abc import ABC, abstractmethod
  4. from vs_types import VSPlgConfig, AppointmentType, VSQueryResult, VSBookResult
  5. # ================== 接口类 ==================
  6. class IVSPlg(ABC):
  7. """
  8. @brief 签证 API 接口类
  9. 该接口定义了签证系统的基本操作,包括配置、会话管理、查询、预订、
  10. 健康检查以及错误处理等。所有具体的签证 API 实现都需要继承该接口。
  11. """
  12. @abstractmethod
  13. def set_config(self, config: VSPlgConfig):
  14. """
  15. @brief 设置 API 的配置信息
  16. @param config 签证 API 配置对象
  17. """
  18. pass
  19. @abstractmethod
  20. def set_log(self, logger: Callable[[str], None]) -> None:
  21. """
  22. @brief 设置日志输出工具, 该函数不允许抛异常
  23. """
  24. pass
  25. @abstractmethod
  26. def create_session(self) -> None:
  27. """
  28. @brief 创建一个新的会话, 抛异常则创建失败
  29. """
  30. pass
  31. @abstractmethod
  32. def query(self, apt_type: AppointmentType) -> VSQueryResult:
  33. """
  34. @brief 查询可用的签证预约信息, 抛异常则查询失败
  35. @return VSQueryResult 查询结果
  36. """
  37. pass
  38. @abstractmethod
  39. def book(self, slot_info: VSQueryResult, user_inputs) -> VSBookResult:
  40. """
  41. @brief 进行预约操作, 抛异常则预定失败
  42. @param slot_info 查询得到的可用时段信息
  43. @param user_inputs 用户输入的预约信息
  44. @return VSBookResult 预约结果
  45. """
  46. pass
  47. @abstractmethod
  48. def keep_alive(self):
  49. """
  50. @brief 会话保活, 该函数不允许抛异常
  51. """
  52. pass
  53. @abstractmethod
  54. def health_check(self) -> bool:
  55. """
  56. @brief 健康检查,用于检测 API 服务是否正常, 该函数不允许抛异常
  57. @return true 表示健康状态良好,false 表示存在问题
  58. """
  59. pass
  60. @abstractmethod
  61. def cleanup(self) -> None:
  62. """
  63. @brief 清理实例使用的资源
  64. """
  65. pass