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;

View File

@@ -29,6 +29,21 @@ import { setVersion, uevent } from './utils';
import { WidgetsModal } from './widgets-modal';
import { BatchPublishModal } from './batch-publish-modal';
/**
* NoteToMpPlugin
*
* 中文说明:
* 这是插件的入口类,负责:
* - 插件生命周期管理onload/onunload
* - 注册自定义视图 NotePreview 用于渲染与发布文章
* - 提供多种命令:单篇发布、批量发布、插入样式组件等
* - 提供文件右键菜单扩展,支持对单文件或文件夹进行发布操作
*
* 设计决策(简要):
* - 将批量发布的 UI 放在 `BatchPublishModal` 中,命令 `note-to-mp-batch-publish` 会打开该模态框
* - 单篇发布/文件夹批量发布仍复用 `NotePreview` 的发布逻辑,避免重复实现上传流程
*/
export default class NoteToMpPlugin extends Plugin {
settings: NMPSettings;