vs_plg.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # vs_plg.py
  2. from typing import Callable
  3. from abc import ABC, abstractmethod
  4. from vs_types import VSPlgConfig, 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. # set_log_callback 在Python中通常通过配置logging模块或注入logger实例实现
  20. # 这里为了简化,不显式提供,直接使用全局logging
  21. @abstractmethod
  22. def create_session(self) -> None:
  23. """
  24. @brief 创建一个新的会话, 抛异常则创建失败
  25. """
  26. pass
  27. @abstractmethod
  28. def query(self) -> VSQueryResult:
  29. """
  30. @brief 查询可用的签证预约信息, 抛异常则查询失败
  31. @return VSQueryResult 查询结果
  32. """
  33. pass
  34. @abstractmethod
  35. def book(self, slot_info: VSQueryResult, user_inputs) -> VSBookResult:
  36. """
  37. @brief 进行预约操作, 抛异常则预定失败
  38. @param slot_info 查询得到的可用时段信息
  39. @param user_inputs 用户输入的预约信息
  40. @return VSBookResult 预约结果
  41. """
  42. pass
  43. @abstractmethod
  44. def get_group_id(self) -> str:
  45. """
  46. @brief 获取当前 API 实例所属的分组 ID
  47. @return 分组 ID 字符串
  48. """
  49. pass
  50. @abstractmethod
  51. def health_check(self) -> bool:
  52. """
  53. @brief 健康检查,用于检测 API 服务是否正常
  54. @return true 表示健康状态良好,false 表示存在问题
  55. """
  56. pass
  57. @abstractmethod
  58. def set_log(self, logger: Callable[[str], None]) -> None:
  59. """
  60. @brief 设置日志输出工具
  61. """
  62. pass