Bug 修复记录

Bug 修复记录

2026-04-21

1. 导入文档中文乱码

  • multer 上传时文件名编码错误(latin1 → utf8)
  • .docx 文件内容编码处理缺失
  • ZIP 解压时中文文件名乱码

2. 中文标题文档前台 404

  • generateSlug 保留了中文字符,导致 URL 无法路由
  • 安装 transliteration 库,中文标题自动转拼音 slug
  • 修复存量数据:总结 → zong-jie华为开发板申请 → hua-wei-kai-fa-ban-shen-qing

3. VUEPRESS_ROOT 配置错误

  • .env 中路径为 Windows 格式 C:/Users/Imx/my-docs
  • 修复为 /www/wwwroot/docx.byesmart.store
  • 同步清理了 import-policies.jsDEV-REPORT.mdOAUTH-CONFIG.md 中的 Windows 路径
  • 删除了错误创建的 admin/C: 目录

4. 侧边栏空白(Ant Design 主题)

  • /api/sidebar 直接解析 sidebar.ts,children 只有 slug 字符串,前端无法渲染
  • 改为从数据库动态构建,返回完整 { text, link } 结构,缓存 5 秒

5. 子分类文章 404

  • fix_chinese_slugs.mjs 更新了数据库 file_path,但未同步移动实际文件
  • 手动将文件移至正确子目录 ct107d-hardware/tc15s/

6. 子分类在侧边栏中与分组混淆

  • 子分类被嵌套在根分类 children 里,视觉上和 group_name 分组无区别
  • 修改 sidebar.js,子分类作为独立 section 平级展示,加 isCategory: true 标识
  • 重写 SidebarTree.vueisCategory 节点用带背景色的标题块渲染

7. 折叠分组点击互相干扰

  • expandedKeys 全局共享,不同分类下同名分组 key 冲突
  • 将 expanded 状态移入 SidebarTree 组件内部,每个实例独立管理

8. 编辑分组后前台 403

  • 修改 group_name 不触发 publishArticle,文件未更新
  • 修复:group_name 变更也触发重新发布

9. 搜索功能搜不到文档

  • SimpleSearch 依赖 router.getRoutes()meta.title,VuePress 路由无此字段
  • 改为调用 /api/articles/search 接口,支持标题 + 内容全文搜索
  • 添加 MySQL FULLTEXT 索引(ngram parser,支持中文),替换 LIKE 全表扫描
  • 搜索结果展示关键词高亮摘要,支持亮/暗主题

10. AI 搜索无响应

  • assistantMsg.content += 直接修改对象属性,Vue 3 响应式无法检测
  • 改为 messages.value[msgIndex] = { ...msg, content: newContent } 触发更新
  • API URL 配置错误:cloud.siliconflow.cn(控制台页面)→ api.siliconflow.cn(API 端点)
  • getDocContext SQL 使用 ROW_NUMBER() 窗口函数,MySQL 5.7 不支持,改为关联子查询

11. 高并发优化

  • PM2 集群模式启动 4 个进程,充分利用 4 核 CPU
  • 数据库连接池 20 → 80
  • getDocContext 添加 60 秒内存缓存,相同关键词不重复查库

2026-04-22

12. 后台插入图片前台不显示

  • 图片路径 /api/uploads/images/xxx.png 是后台 API 路径,前台静态站点访问不到
  • VuePress/Vite 构建时会把本地路径当模块解析,导致构建失败
  • 修复:发布时将图片路径转换为完整域名 URL https://docx.byesmart.store/uploads/xxx.png
  • 同时处理 Markdown ![]() 和 HTML <img src=""> 两种格式
  • 更新 .envSITE_URL 为正式域名