diff --git a/biji-qianduan/src/components/HomePage.vue b/biji-qianduan/src/components/HomePage.vue
index d45fa57..00902fe 100644
--- a/biji-qianduan/src/components/HomePage.vue
+++ b/biji-qianduan/src/components/HomePage.vue
@@ -268,17 +268,21 @@ const handleEditorBack = (data) => {
};
const handleSaveSuccess = (updatedFile) => {
- editData.value = updatedFile;
- if (selectedFile.value && selectedFile.value.id === updatedFile.id) {
- selectedFile.value = updatedFile;
- }
- // Refresh list if needed
- if (activeMenu.value.startsWith('group-')) {
- const groupId = activeMenu.value.replace('group-', '');
- handleSelectFile({ id: groupId });
+ editData.value = null; // Clear edit data
+ selectedFile.value = updatedFile; // Update the selected file to show the preview
+ showEditor.value = false; // Hide the editor
+
+ // Find the file in the current list and update it
+ const index = groupMarkdownFiles.value.findIndex(f => f.id === updatedFile.id);
+ if (index !== -1) {
+ groupMarkdownFiles.value[index] = updatedFile;
} else {
- resetToHomeView();
+ // If the file is new (or not in the current list), add it to the top
+ groupMarkdownFiles.value.unshift(updatedFile);
}
+
+ // Also refresh the category tree to reflect new file counts or changes
+ fetchGroupings();
};
const previewFile = async (file) => {
diff --git a/biji-qianduan/src/components/home/NoteEditor.vue b/biji-qianduan/src/components/home/NoteEditor.vue
index cc54b78..2507fe8 100644
--- a/biji-qianduan/src/components/home/NoteEditor.vue
+++ b/biji-qianduan/src/components/home/NoteEditor.vue
@@ -13,7 +13,7 @@
-
-
+const emit = defineEmits
\ No newline at end of file
diff --git a/memory-bank/activeContext.md b/memory-bank/activeContext.md
index aa56503..7a650b6 100644
--- a/memory-bank/activeContext.md
+++ b/memory-bank/activeContext.md
@@ -1,5 +1,56 @@
-# Active Context
+# Bug 分析与修复报告:优化笔记编辑器自动保存机制
-This file serves as the short-term working memory for the currently active subtask. It will be used to log detailed thoughts, processes, and intermediate findings.
+**日期:** 2025-08-13
----
\ No newline at end of file
+**作者:** 你的智能小助手
+
+---
+
+## 1. 问题描述
+
+在笔记应用中,自动保存功能存在一个体验问题:即使用户正在积极地编辑文本(持续输入),计时器也不会被正确地重置或停止。这导致了在用户输入间隙,即使是非常短暂的停顿,也会触发不必要的、频繁的保存操作。
+
+理想的行为是:**只有当用户停止输入一段时间后,自动保存才应该被触发。**
+
+**相关文件:** `biji-qianduan/src/components/home/NoteEditor.vue`
+
+## 2. 分析与诊断过程
+
+### 2.1. 初步代码审查
+
+我首先审查了 `NoteEditor.vue` 的源代码,重点关注以下几个方面:
+
+* **Vditor 编辑器集成**: 代码通过 `new Vditor()` 正确初始化了编辑器。
+* **事件监听**: 使用了 Vditor 的 `input` 事件回调来侦测内容变化。
+* **防抖(Debounce)逻辑**: 在 `input` 回调中,存在一个看似正确的防抖实现:
+ * 使用 `let debounceTimer = null;` 在组件作用域内声明了一个计时器变量。
+ * 每次 `input` 事件触发时,都会先执行 `clearTimeout(debounceTimer);`。
+ * 然后通过 `debounceTimer = setTimeout(...)` 设置一个新的 2 秒延迟的计时器来执行保存操作 `handleSave`。
+
+从表面上看,这段代码逻辑是健全的,它确实实现了防抖的核心思想。
+
+### 2.2. 深入诊断:发现真正原因
+
+既然代码逻辑本身没有问题,为什么还会出现用户描述的现象呢?我提出了一个新的假设:**问题并非出在用户输入时,而是出在切换笔记时。**
+
+1. **`watch` 监听器**: 组件中使用 `watch` 来监听 `props.editData` 的变化。当用户从笔记列表选择一篇新笔记时,这个 `prop` 会更新。
+2. **`setValue` 的副作用**: `watch` 回调函数会调用 `vditor.value.setValue(newData.content || '')` 来将新笔记的内容加载到编辑器中。
+3. **意外的 `input` 事件**: 关键在于,Vditor 的 `setValue` 方法在设置内容后,会**自动触发一次 `input` 事件**。
+4. **问题触发流程**:
+ * 用户点击一篇新笔记。
+ * `watch` 监听到 `props.editData` 变化。
+ * `vditor.value.setValue()` 被调用,加载新内容。
+ * `setValue()` 触发了 `input` 事件。
+ * `input` 事件的回调被执行,启动了一个为期 2 秒的自动保存计时器。
+ * 即使用户立刻开始在这篇新笔记上输入(这会正确地重置计时器),那个由 `setValue` 启动的初始计时器依然可能在 2 秒后触发一次保存。
+
+因此,**根本原因**是程序化地设置编辑器内容(`setValue`)意外地触发了为用户手动输入设计的自动保存逻辑。
+
+## 3. 修复方案
+
+为了解决这个问题,我们需要区分**用户手动输入**和**程序加载内容**这两种情况。只有前者才应该触发自动保存。
+
+我采用了一个**标志位(flag)**的方案来解决此问题:
+
+1. **引入标志位**: 在 `script setup` 中增加一个 `ref`:
+
\ No newline at end of file
diff --git a/memory-bank/bug_report.md b/memory-bank/bug_report.md
new file mode 100644
index 0000000..932d995
--- /dev/null
+++ b/memory-bank/bug_report.md
@@ -0,0 +1,10 @@
+# 项目生产环境问题报告
+
+1. 点击保存或者自动保存之后,会自动退回首页
+2. 在我编辑的时候,停下来一下,有继续编辑,但是自动保存不会停下计时,就是就算我在编辑过程中,它还是会保存。
+3. 在1和2的条件下,它还会自己创建一个一模一样的笔记,也就是有两个一模一样的笔记。
+4. 在1和2的条件下,他会重置笔记的分类。
+5. 笔记的分类重命名失败
+6. 上传文件失败,就是我在编辑文件的时候,粘贴图片,显示上传文件失败,接口500报错,在生成环境,我使用caddy部署前端,并且设置反向代理,以api开头的路径都请求到后端。
+7. 重命名笔记名字也报错。
+8. 删除的笔记在回收站中没有显示,接口已经返回数据了。
\ No newline at end of file