# obsidian-halo 插件功能增强计划

## 当前功能分析

当前插件已实现：
- ✅ 发布文档到 Halo
- ✅ 从 Halo 拉取文档
- ✅ 更新已发布文章内容
- ✅ 多站点管理
- ✅ Frontmatter 元数据同步（标题、摘要、分类、标签、封面）
- ✅ 图片上传功能
- ✅ 文章列表增强（分页、筛选）
- ✅ Markdown 文件导入
- ✅ 删除文章功能（支持选择性删除）
- ✅ 标签管理功能
- ✅ 分类管理功能
- ✅ 导出文章为 Markdown
- ✅ 导出文章为 JSON
- ✅ 搜索 Halo 文章
- ✅ 同步状态面板
- ✅ 同步历史记录
- ✅ 使用指南文档

---

## 已完成功能（2024年4月实现）

### 1. 图片/附件上传 ✅
**优先级：高 | 难度：中**

- [x] 自动检测并上传笔记中的图片到 Halo 媒体库
- [x] 转换本地图片路径为 Halo URL

### 2. 批量操作功能 ✅
**优先级：高 | 难度：中**

- [x] 文章列表查看（支持分页、筛选）
- [x] 从 Markdown 文件导入文章

### 3. 标签/分类管理 ✅
**优先级：高 | 难度：中**

- [x] 标签管理（创建、编辑、删除）
- [x] 分类管理（创建、编辑、删除）

### 4. 导出功能 ✅
**优先级：中 | 难度：中**

- [x] 导出文章为 Markdown
- [x] 导出文章为 JSON（备份用）

### 5. 搜索功能 ✅
**优先级：中 | 难度：中**

- [x] 搜索 Halo 文章（按标题、slug 搜索）
- [x] 按发布状态筛选

### 6. 删除功能 ✅
**优先级：高 | 难度：中**

- [x] 选择性删除（仅 Halo / 仅本地 / 全部）
- [x] 二次确认机制

### 7. 同步状态面板 ✅ (新增)
**优先级：高 | 难度：中**

- [x] 侧边栏面板显示已发布文章列表
- [x] 快速操作按钮（更新、拉取）
- [x] 同步历史记录
- [x] 同步图标侧边栏入口

### 8. 使用指南 ✅ (新增)
**优先级：高 | 难度：中**

- [x] 完整的命令列表说明
- [x] 快速开始教程
- [x] 常见问题解答

---

## 待实现功能

### 1. 双向同步增强
**优先级：高 | 难度：高**

- [ ] 差异检测：比较本地和 Halo 版本的修改时间
- [ ] 选择性同步：仅同步本地/仅同步 Halo/完全合并
- [ ] 冲突解决：处理两边同时修改的情况
- [ ] 同步历史：记录每次同步的详情 ✅（已完成基础功能）

### 2. 高级发布选项
**优先级：中 | 难度：中**

- [ ] 自定义 Slug 格式（支持模板变量：`{{title}}`, `{{date}}`）
- [ ] 发布时间调度（定时发布）
- [ ] SEO 元数据设置（meta description、keywords）
- [ ] 文章属性控制（评论开关、置顶、优先级、可见性）

### 3. 内容预览
**优先级：中 | 难度：中**

- [ ] 发布前预览 Halo 渲染效果
- [ ] 预览不同主题下的样式
- [ ] 实时预览面板

### 4. 模板支持
**优先级：低 | 难度：中**

- [ ] 发布模板：预定义 frontmatter 结构
- [ ] 快捷键自定义默认值
- [ ] 模板变量支持

### 5. 命令面板增强
**优先级：低 | 难度：低**

- [ ] 键盘快捷键支持
- [ ] 快速切换站点
- [ ] 快捷操作菜单

### 6. 用户界面优化
**优先级：低 | 难度：中**

- [ ] 进度条显示
- [ ] 更详细的错误提示
- [ ] 通知中心整合
- [ ] 右键菜单支持

---

## 推荐优先级（建议优先实现）

1. **高级发布选项** - 增加灵活性
2. **内容预览** - 提升用户体验
3. **模板支持** - 提升工作效率

---

## 技术实现要点

### 图片上传实现思路
```typescript
// 1. 解析 Markdown 中的图片引用
// 2. 上传到 Halo 媒体库获取 URL
// 3. 替换本地路径为远程 URL

// Halo 媒体上传 API 端点
POST /apis/api.console.halo.run/v1alpha1/attachments/upload
```

### 批量操作实现思路
```typescript
// 1. 创建批量选择界面
// 2. 批量处理队列
// 3. 进度显示和错误处理
```

### 同步检测实现思路
```typescript
// 1. 保存本地最后同步时间戳
// 2. 对比 Halo 文章的更新时间
// 3. 标记需要更新的文章
```

---

## 开发建议

1. **模块化开发**：新增功能独立成模块
2. **配置化**：新功能支持在设置中开关
3. **国际化**：所有文案支持 i18n
4. **错误处理**：完善异常捕获和用户提示
5. **测试**：添加单元测试和集成测试

---

## 文件结构

```
src/
├── commands/              # 命令相关
│   ├── import-markdown.ts  # ✅ 导入 Markdown 文件
│   ├── delete-post.ts      # ✅ 删除文章
│   ├── manage-taxonomy.ts  # ✅ 管理标签/分类
│   ├── export-post.ts      # ✅ 导出文章
│   └── search-posts.ts     # ✅ 搜索文章
├── modals/                 # 弹窗相关
│   ├── file-preview-modal.ts     # ✅ 文件预览
│   ├── delete-confirm-modal.ts   # ✅ 删除确认
│   ├── tag-manager-modal.ts      # ✅ 标签管理
│   ├── category-manager-modal.ts  # ✅ 分类管理
│   ├── search-modal.ts           # ✅ 搜索弹窗
│   └── sync-history-modal.ts     # ✅ 同步历史
├── views/                  # 视图相关
│   └── sync-status-view.ts       # ✅ 同步状态面板
├── service/               # 服务层
│   ├── index.ts           # Halo API 服务
│   └── image-uploader.ts  # ✅ 图片上传
├── utils/                 # 工具层
│   ├── image.ts          # ✅ 图片处理
│   └── ...
├── i18n/                  # 国际化
│   └── locales/
│       ├── zh-cn.json    # 中文
│       ├── en.json       # 英文
│       └── zh-tw.json    # 繁体中文
└── main.ts               # 主入口

docs/
└── usage-guide.md        # ✅ 使用指南
```

---

最后更新：2024年4月26日