# 同步状态面板功能规格说明 ## Why 当前插件的功能分散在多个命令中,用户难以直观地了解: 1. 哪些文章已发布到 Halo 2. 文章的同步状态如何 3. 最近的操作历史和结果 需要一个集中的状态管理面板,让用户一眼就能看到所有同步状态。 ## What Changes - 新增**同步状态面板**:在 Obsidian 侧边栏显示已发布文章列表及状态 - 显示文章同步时间戳、发布状态、本地/Halo 版本差异 - 支持快速操作:更新、拉取、删除 - 新增使用指南文档 ## Impact - Affected specs: - 状态管理和日志 - 命令面板增强 - Affected code: - 新增 `src/commands/sync-status-panel.ts`:侧边栏面板 - 新增 `src/modals/sync-history-modal.ts`:同步历史弹窗 - 修改 `src/main.ts`:注册面板命令 - 新增 `docs/usage-guide.md`:使用指南 ## ADDED Requirements ### Requirement: 同步状态面板 系统 SHALL 提供一个侧边栏面板,显示已发布到 Halo 的文章列表及其状态。 #### Scenario: 打开面板 - **WHEN** 用户执行"打开同步状态面板"命令 - **THEN** 在侧边栏显示面板,包含已发布文章列表 #### Scenario: 显示文章状态 - **WHEN** 面板加载时 - **THEN** 显示所有已发布文章的:标题、slug、发布状态、同步时间 #### Scenario: 快速操作 - **WHEN** 用户点击文章的操作按钮 - **THEN** 可以快速执行:更新、拉取、删除操作 #### Scenario: 同步历史 - **WHEN** 用户点击"同步历史"按钮 - **THEN** 显示最近的操作记录 ### Requirement: 使用指南 系统 SHALL 提供一份详细的使用指南,说明所有功能的位置和使用方法。 ## MODIFIED Requirements 无 ## REMOVED Requirements 无 --- ## 技术实现细节 ### Obsidian 面板 API ```typescript // 创建侧边栏面板 this.addRibbonIcon("sync-icon", "同步状态", (evt) => { this.openSyncStatusPanel(); }); ``` ### 扫描已发布文章 通过扫描 Vault 中的所有文件,查找 frontmatter 中包含 `halo.name` 的文件。 ### 状态图标 - ✅ 已同步(本地和 Halo 版本一致) - ⏳ 待同步(本地有更新) - ⚠️ 有冲突(两边都有更新) --- ## 实现优先级 1. 同步状态面板(核心 UI) 2. 同步历史记录(辅助功能) 3. 使用指南文档(用户教育)