乐于分享
好东西不私藏

一个桌面端管理文档的小工具 即开即用

一个桌面端管理文档的小工具 即开即用

作者的初衷

正常的小企业,注意是小企业,在日常运营中总会产生各种数据文件,比如合同、单据、资料等。

有比较良好使用习惯的用户,通常会新建很多文件夹,用来单独存放相关内容。但时间一长,有些东西总是会找不到,或者不好找。

网上其实有很多工具可以满足这类需求,比如飞书等。但这些工具往往存在一些问题:

  • 要么功能太大、太重;

  • 要么需要上传文件;

  • 要么使用起来比较复杂;

  • 有些文件又不想上传,担心泄露。

其实,我只是想找一个免费的工具,帮我处理一下本地的归档文件而已。

需求也很简单,只要满足三个功能就行:

存、找、分类。

于是,就有了这个小工具:本地 Web 版归档文件管理工具

目前它还没有完全开发完,甚至登录页都还没做完。但已经能基本满足归档文件的使用需求了。

对,主要是额度不够了。

欢迎请杯咖啡。


重点说明

本工具的全部数据内容都存放在本地:

不上传服务器。不上传服务器。不上传服务器。

所有数据都在本地的 data 文件夹下,可热替换。

即开即用,不用安装。

============================================以上为人工撰写======提取直接在尾端===============

BookSmart 使用场景说明

BookSmart 是一款面向企业内部资料归档的本地文档管理工具,主要用于管理扫描件、合同、单据、报价单、发票以及其他办公资料。工具采用浏览器访问方式运行在本机或局域网电脑上,数据保存在本地 SQLite 数据库和本地上传目录中,不依赖云服务。

1. 工具定位

在日常办公中,纸质资料经过扫描后往往散落在不同文件夹里,后续查找依赖文件名、人工记忆或聊天记录。BookSmart 的目标是把这些扫描件集中管理起来,让资料具备分类、标签、备注、检索、预览和下载能力。

它适合以下类型的资料:

  • 合同、协议、盖章文件
  • 采购单、送货单、收据、报销单
  • 报价单、发票、付款凭证
  • 客户资料、供应商资料、项目附件
  • 需要长期保存、反复查询的本地办公文档

2. 界面截图

2.1 登录页

登录页用于限制本地资料入口,默认账号为 admin / admin123,后续可扩展为多用户和权限管理。

2.2 首页工作台

首页是主要操作区域,左侧管理资料分类和系统入口,右侧完成搜索、筛选、上传、预览和资料列表查看。

3. 开发背景

这个工具的开发从一个很明确的业务问题开始:公司内部资料应该保存在公司电脑上,员工在上班时可以方便查找和整理,下班后不需要依赖手机端或外部云端。

因此第一版没有追求复杂协同,而是优先保证:

  • 本地运行,数据可控。
  • 上传和下载路径清晰。
  • 文档分类简单直观。
  • 查询方式覆盖日常需要。
  • 开发数据和正式数据分离,避免测试影响真实资料。

4. 开发过程

4.1 需求梳理

第一阶段先确定最小可用范围:

  • 可以登录进入系统。
  • 可以创建和维护资料分类。
  • 可以上传 PDF、图片、Word、Excel 等文件。
  • 可以为资料填写标题、备注和标签。
  • 可以按照分类、标签、关键词、日期筛选资料。
  • 可以预览 PDF 或图片。
  • 可以下载原始文件。
  • 可以进行本地数据备份。

这个范围覆盖了“把资料收进来”和“以后找得到”两个核心动作。

4.2 架构选择

项目采用前后端分离结构:

  • 前端:Vue 3、Vite、Element Plus,用于页面展示和交互。
  • 后端:Python FastAPI,用于接口、登录校验、文件保存和业务处理。
  • 数据库:SQLite,用于保存资料元数据、分类、标签和关联关系。
  • 文件存储:本地目录,用于保存上传的扫描件原文件。

这样的架构便于开发调试,也适合后续打包成本地桌面工具或继续保持浏览器访问。

4.3 数据模型设计

系统把“文件本身”和“文件信息”分开保存:

  • SQLite 只保存标题、分类、标签、备注、文件路径、文件大小、上传时间等信息。
  • 原始文件保存在本地上传目录中。

核心表包括:

  • categories
    :资料分类。
  • documents
    :文档主表。
  • tags
    :标签。
  • document_tags
    :文档和标签的多对多关系。
  • app_meta
    :系统版本和数据库版本信息。

这种方式比直接把文件塞进数据库更轻,也更方便备份和迁移。

4.4 前端页面实现

前端按业务区域拆分:

  • Login.vue
    :登录入口。
  • Home.vue
    :主工作台。
  • CategorySidebar.vue
    :分类、标签管理、备份、系统设置入口。
  • DocumentToolbar.vue
    :关键词、标签、日期筛选。
  • DocumentTable.vue
    :资料列表和操作按钮。
  • DocumentForm.vue
    :上传和编辑资料。
  • DocumentPreview.vue
    :文档详情、预览和下载。

页面重点是减少操作层级:用户登录后直接进入资料台账,不经过营销页或说明页。

4.5 后端接口实现

后端接口围绕四类资源展开:

  • 登录:POST /api/auth/login
  • 分类:GET /api/categoriesPOST /api/categories
  • 标签:GET /api/tagsPOST /api/tags
  • 文档:GET /api/documentsPOST /api/documents、预览、下载、编辑、删除

文档上传时,后端会保存文件、记录元数据、绑定标签;查询时,后端根据分类、标签、关键词和日期组合生成筛选结果。

4.6 数据安全与运行模式

项目区分两种模式:

  • 开发模式:使用 backend/data_dev/,用于测试上传、删除、筛选等功能。
  • 使用模式:使用 backend/data/,用于保存正式资料。

这样做的目的很朴素:开发调试可以大胆试,正式资料不能被测试数据污染。升级和发布前也可以先备份正式数据,再替换程序文件。

5. 典型使用场景

5.1 扫描件集中归档

行政或财务人员把扫描后的合同、单据、发票上传到系统,选择对应分类,补充标题和备注。以后不需要翻文件夹,只要在系统里检索即可。

5.2 合同资料查询

当需要查找某个客户、供应商或项目的合同,可以通过关键词、分类和标签组合筛选。例如输入客户名称,再选择“合同”分类,就能快速缩小范围。

5.3 财务凭证整理

发票、付款凭证、报销单可以按月份、公司、业务类型打标签。后续对账或审计时,通过标签和日期范围查找资料。

5.4 项目资料沉淀

报价单、方案、验收资料可以放入项目相关分类,并用项目名作为标签。项目周期结束后,资料仍然能按项目维度完整找回。

5.5 本地资料备份

使用模式下,系统数据保存在本地目录。管理员可以通过系统入口执行备份,在升级或迁移前保留数据库和上传文件副本。

6. 基本使用流程

  1. 启动后端和前端服务,浏览器访问 http://localhost:5173
  2. 使用默认账号登录。
  3. 在左侧创建资料分类,例如合同、单据、报价单、发票。
  4. 点击上传资料,选择本地文件。
  5. 填写资料名称、分类、标签和备注。
  6. 在首页通过关键词、标签、日期或分类筛选资料。
  7. 点击资料记录进行预览,必要时下载原始文件。
  8. 定期进入系统功能区执行数据备份。

7. 适用边界

BookSmart 当前更适合单机或小范围内部使用,重点是“本地资料管理”,不是多人在线协同平台。第一版不包含手机端、云同步、复杂权限审批和全文 OCR。

后续可以扩展:

  • OCR 文字识别和全文检索。
  • 缩略图生成。
  • 回收站和软删除恢复。
  • 多用户权限。
  • 局域网访问。
  • 批量导入。
  • 自动备份和恢复。

8. 总结

BookSmart 的核心价值是把本地扫描件从“文件夹堆放”变成“可分类、可检索、可预览、可备份”的资料库。它的开发思路偏实用:先保护数据、跑通归档流程,再逐步补充高级能力。

对公司内部资料管理来说,这种工具不需要一开始就很复杂;只要能稳定地保存、快速地找到、清楚地备份,就已经能明显减少日常查资料的时间成本。

项目地址:

git@github.com:GGGL/booksmartuser.git

https://pan.baidu.com/s/1EztUrwWOgo6kXGaekzzkKw 提取码: begx