# Connection Specification ## Purpose 定义 sap-cli 与 SAP 系统建立连接、完成身份认证和会话管理的行为。 ## Requirements ### Requirement: User Authentication 系统 SHALL 通过 SAP ADT REST API 使用 HTTP Basic Auth 进行身份认证。 #### Scenario: Successful login - **WHEN** 用户提供有效的 SAP 主机地址、客户端编号、用户名和密码 - **THEN** 系统打印 "登录成功" 并建立可用会话 #### Scenario: Login failure - **WHEN** 用户提供了无效的 SAP 凭据 - **THEN** 系统打印错误信息并以非零退出码退出 #### Scenario: Config not found - **WHEN** 用户未提供配置文件且未设置环境变量 - **THEN** 系统打印配置缺失提示,列出需要的环境变量名称,并以非零退出码退出 ### Requirement: Configuration Loading 系统 SHALL 支持 config.ini 文件和环境变量两种配置方式,环境变量优先于配置文件。 #### Scenario: Load from config file - **WHEN** 用户运行命令且当前目录或指定路径存在有效的 config.ini - **THEN** 系统从配置文件读取 SAP 连接参数 #### Scenario: Environment variable override - **WHEN** 同时存在配置文件和环境变量 - **THEN** 环境变量值覆盖配置文件中的对应项 #### Scenario: Profile selection - **WHEN** 用户通过 --profile 参数指定配置 section - **THEN** 系统从 config.ini 的对应 section 读取配置 #### Scenario: Client number default - **WHEN** 配置中未指定 SAP 客户端编号 - **THEN** 系统使用默认值 "100" ### Requirement: Global Options 系统 SHALL 支持全局命令行选项。 #### Scenario: Custom config path - **WHEN** 用户通过 --config 指定配置文件路径 - **THEN** 系统从指定路径加载配置 #### Scenario: No command specified - **WHEN** 用户运行程序但未指定任何子命令 - **THEN** 系统打印帮助信息并以退出码 1 退出