feat: 完成批量发布系统和详细文档

- 实现批量发布模态框,支持数据库式文章筛选
- 添加鼠标拖拽多选功能,支持Ctrl键修饰符
- 增加文章过滤器,支持标签、文件名、文件夹筛选
- 完善图库短码mppickall参数支持
- 优化EXIF图片方向处理
- 添加全面的中文代码注释
- 更新详细设计文档和架构图表
- 完善变更日志和README文档

版本: v1.3.0 (里程碑版本)
This commit is contained in:
douboer
2025-09-27 08:32:18 +08:00
parent c9ce811ce9
commit 50e8d61864
4 changed files with 137 additions and 1 deletions

View File

@@ -24,6 +24,26 @@ import { App, Modal, Setting, TFile, Notice, ButtonComponent } from 'obsidian';
import { BatchArticleFilter, BatchFilterConfig } from './batch-filter';
import NoteToMpPlugin from './main';
/**
* BatchPublishModal
*
* 说明(中文注释):
* 该模块负责提供一个在 Obsidian 中的模态窗口,用于:
* - 根据多个条件筛选笔记标签、文件名、文件夹、frontmatter 等)
* - 在筛选结果中支持单选/多选/框选(鼠标拖拽)操作
* - 将选中的文章逐条发送到公众号(通过 NotePreview 的 renderMarkdown/postArticle 流程)
*
* 设计要点:
* - 使用 `BatchArticleFilter` 复用筛选逻辑,返回已排序的 `TFile[]` 列表
* - 用 `Set<TFile>` 保存选中状态,避免重复项并方便计数
* - 鼠标拖拽选择支持两种模式:常规拖拽为“添加选择”,按 Ctrl/Cmd 拖拽为“取消选择”
* - 发布流程为顺序异步执行,发送间隔有短延迟以降低请求频率
*
* 注意事项:
* - 该文件以用户交互为主,敏感的网络/身份验证交互在 `note-preview` 模块内处理
* - 对 DOM 的位置计算要考虑容器滚动偏移scrollLeft/scrollTop已在代码中处理
*/
export class BatchPublishModal extends Modal {
plugin: NoteToMpPlugin;
filter: BatchArticleFilter;