一个桌面端管理文档的小工具 即开即用
作者的初衷
正常的小企业,注意是小企业,在日常运营中总会产生各种数据文件,比如合同、单据、资料等。
有比较良好使用习惯的用户,通常会新建很多文件夹,用来单独存放相关内容。但时间一长,有些东西总是会找不到,或者不好找。
网上其实有很多工具可以满足这类需求,比如飞书等。但这些工具往往存在一些问题:
-
要么功能太大、太重;
-
要么需要上传文件;
-
要么使用起来比较复杂;
-
有些文件又不想上传,担心泄露。
其实,我只是想找一个免费的工具,帮我处理一下本地的归档文件而已。
需求也很简单,只要满足三个功能就行:
存、找、分类。
于是,就有了这个小工具:本地 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/categories、POST /api/categories -
标签: GET /api/tags、POST /api/tags -
文档: GET /api/documents、POST /api/documents、预览、下载、编辑、删除
文档上传时,后端会保存文件、记录元数据、绑定标签;查询时,后端根据分类、标签、关键词和日期组合生成筛选结果。
4.6 数据安全与运行模式
项目区分两种模式:
-
开发模式:使用 backend/data_dev/,用于测试上传、删除、筛选等功能。 -
使用模式:使用 backend/data/,用于保存正式资料。
这样做的目的很朴素:开发调试可以大胆试,正式资料不能被测试数据污染。升级和发布前也可以先备份正式数据,再替换程序文件。
5. 典型使用场景
5.1 扫描件集中归档
行政或财务人员把扫描后的合同、单据、发票上传到系统,选择对应分类,补充标题和备注。以后不需要翻文件夹,只要在系统里检索即可。
5.2 合同资料查询
当需要查找某个客户、供应商或项目的合同,可以通过关键词、分类和标签组合筛选。例如输入客户名称,再选择“合同”分类,就能快速缩小范围。
5.3 财务凭证整理
发票、付款凭证、报销单可以按月份、公司、业务类型打标签。后续对账或审计时,通过标签和日期范围查找资料。
5.4 项目资料沉淀
报价单、方案、验收资料可以放入项目相关分类,并用项目名作为标签。项目周期结束后,资料仍然能按项目维度完整找回。
5.5 本地资料备份
使用模式下,系统数据保存在本地目录。管理员可以通过系统入口执行备份,在升级或迁移前保留数据库和上传文件副本。
6. 基本使用流程
-
启动后端和前端服务,浏览器访问 http://localhost:5173。 -
使用默认账号登录。 -
在左侧创建资料分类,例如合同、单据、报价单、发票。 -
点击上传资料,选择本地文件。 -
填写资料名称、分类、标签和备注。 -
在首页通过关键词、标签、日期或分类筛选资料。 -
点击资料记录进行预览,必要时下载原始文件。 -
定期进入系统功能区执行数据备份。
7. 适用边界
BookSmart 当前更适合单机或小范围内部使用,重点是“本地资料管理”,不是多人在线协同平台。第一版不包含手机端、云同步、复杂权限审批和全文 OCR。
后续可以扩展:
-
OCR 文字识别和全文检索。 -
缩略图生成。 -
回收站和软删除恢复。 -
多用户权限。 -
局域网访问。 -
批量导入。 -
自动备份和恢复。
8. 总结
BookSmart 的核心价值是把本地扫描件从“文件夹堆放”变成“可分类、可检索、可预览、可备份”的资料库。它的开发思路偏实用:先保护数据、跑通归档流程,再逐步补充高级能力。
对公司内部资料管理来说,这种工具不需要一开始就很复杂;只要能稳定地保存、快速地找到、清楚地备份,就已经能明显减少日常查资料的时间成本。
项目地址:
git@github.com:GGGL/booksmartuser.git
https://pan.baidu.com/s/1EztUrwWOgo6kXGaekzzkKw 提取码: begx
夜雨聆风