vs_plg.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. @return true 表示会话创建成功,false 表示失败
  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. # Python中不需要显式地C接口导出,动态加载模块通常通过importlib或直接import完成
  58. # CreatePlg 函数逻辑将在 VSPlgFactory 中实现