## ADDED Requirements ### Requirement: Project Initialization 系统 SHALL 初始化一个 ABAP 项目目录结构。 #### Scenario: Init new project - **WHEN** 用户执行 init 命令并指定项目路径 - **THEN** 系统创建标准目录结构(reports/、classes/、functions/ 等)和空的 manifest.json ### Requirement: Manifest Management 系统 SHALL 管理项目清单文件,记录所有开发对象的状态。 #### Scenario: Manifest tracks objects - **WHEN** 对象被创建、同步或删除后 - **THEN** 清单文件自动更新对象的状态、最后同步时间和同步结果 #### Scenario: Query pending objects - **WHEN** 清单中存在未成功同步的对象 - **THEN** 系统能够识别并列出这些待处理对象 #### Scenario: Query up-to-date objects - **WHEN** 清单中存在已激活且同步成功的对象 - **THEN** 系统能够过滤出这些就绪对象 ### Requirement: Directory Scanning 系统 SHALL 扫描本地项目目录,自动识别 ABAP 开发对象文件。 #### Scenario: Scan standard directories - **WHEN** 项目目录包含约定命名的子目录及其中的 .abap 文件 - **THEN** 系统识别每个文件对应的对象名称、类型和路径 #### Scenario: Function directory structure - **WHEN** 扫描 functions/ 目录 - **THEN** 子目录名解析为函数组名,文件名解析为函数模块名 #### Scenario: Skip hidden files - **WHEN** 目录中存在以 . 开头的文件 - **THEN** 系统跳过这些隐藏文件 ### Requirement: Dependency Sorting 系统 SHALL 根据对象间依赖关系确定正确的执行顺序。 #### Scenario: Sort by dependency - **WHEN** 对象之间存在依赖关系 - **THEN** 被依赖的对象排在前面(如接口在类之前) #### Scenario: Same priority tie-breaker - **WHEN** 多个对象无依赖关系 - **THEN** 按照类型优先级排序(interface 最高,report 最低) #### Scenario: Detect cyclic dependency - **WHEN** 对象间存在循环依赖 - **THEN** 系统报告循环依赖错误并显示循环链 #### Scenario: Ignore external dependencies - **WHEN** 对象依赖了不在当前项目中的外部对象 - **THEN** 系统忽略该外部依赖,不报错 ### Requirement: Batch Sync 系统 SHALL 支持项目级批量同步操作。 #### Scenario: Sync all objects - **WHEN** 用户执行 sync --all 命令 - **THEN** 系统扫描项目、按依赖排序、逐个同步所有对象 #### Scenario: Dry run mode - **WHEN** 用户执行 sync --all --dry-run - **THEN** 系统仅显示将要同步的对象列表,不实际执行 #### Scenario: Fail fast mode - **WHEN** 用户执行 sync --all --fail-fast - **THEN** 任一对象同步失败时立即停止 #### Scenario: Sequential progress - **WHEN** 批量同步进行中 - **THEN** 系统逐一显示每个对象的同步进度和结果 ### Requirement: Status Refresh 系统 SHALL 刷新项目清单中所有对象在 SAP 系统中的状态。 #### Scenario: Refresh object status - **WHEN** 用户执行 refresh 命令 - **THEN** 系统查询每个对象在 SAP 中的最新状态并更新清单