vs_plg.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # vs_plg.py
  2. from abc import ABC, abstractmethod
  3. from vs_types import VSPlgConfig, VSQueryResult, VSBookResult
  4. # ================== 接口类 ==================
  5. class IVSPlg(ABC):
  6. """
  7. @brief 签证 API 接口类
  8. 该接口定义了签证系统的基本操作,包括配置、会话管理、查询、预订、
  9. 健康检查以及错误处理等。所有具体的签证 API 实现都需要继承该接口。
  10. """
  11. @abstractmethod
  12. def set_config(self, config: VSPlgConfig):
  13. """
  14. @brief 设置 API 的配置信息
  15. @param config 签证 API 配置对象
  16. """
  17. pass
  18. # set_log_callback 在Python中通常通过配置logging模块或注入logger实例实现
  19. # 这里为了简化,不显式提供,直接使用全局logging
  20. @abstractmethod
  21. def create_session(self) -> None:
  22. """
  23. @brief 创建一个新的会话, 抛异常则创建失败
  24. """
  25. pass
  26. @abstractmethod
  27. def query(self) -> VSQueryResult:
  28. """
  29. @brief 查询可用的签证预约信息, 抛异常则查询失败
  30. @return VSQueryResult 查询结果
  31. """
  32. pass
  33. @abstractmethod
  34. def book(self, slot_info: VSQueryResult, user_inputs) -> VSBookResult:
  35. """
  36. @brief 进行预约操作, 抛异常则预定失败
  37. @param slot_info 查询得到的可用时段信息
  38. @param user_inputs 用户输入的预约信息
  39. @return VSBookResult 预约结果
  40. """
  41. pass
  42. @abstractmethod
  43. def get_group_id(self) -> str:
  44. """
  45. @brief 获取当前 API 实例所属的分组 ID
  46. @return 分组 ID 字符串
  47. """
  48. pass
  49. @abstractmethod
  50. def health_check(self) -> bool:
  51. """
  52. @brief 健康检查,用于检测 API 服务是否正常
  53. @return true 表示健康状态良好,false 表示存在问题
  54. """
  55. pass