一个集成了多种实用功能的个人工作空间,包括工作计时器、书架、音乐播放器、游戏、备忘录、AI对话和书签管理。
- 计时器正计时,点击开始工作计时器开始走秒,点击暂停停止读秒
- 用户可以设定今日工作目标
- 根据工作目标,计算预计下班时间=当前时间加工作目标减已工作时间
- 允许用户手动添加工作记录,同时保存到后台
- 允许用户手动删除工作记录,同时从后台删除
- 页面被刷新或关闭前,保存当前工作时长,同时保存到后台,并且清除之前保存的今天的工作时长
- 保证一天只有一条最新的工作时长记录
- 用户可以自行上传PDF和TXT文档,自行填写书籍名(可选,默认为文件名)
- 用户可以删除上传的书籍(同时从后台删除)
- PDF阅读器:左下角为第 页/共 页,下方中间为跳转到 页(用户可以自行填写),右下角为上一页,下一页的按钮
- TXT阅读器:用户可以设置背景颜色,右上角可以选择TXT编码方法,左下角为第 页/共 页,下方中间为跳转到 页(用户可以自行填写),右下角为上一页,下一页的按钮
- 使用网易云外链播放器,Aplayer,播放用户自行输入的网易云链接
- 会自动提取链接中的id=,中的数字,用户点击保存设置之后,更换歌单
- 可以调节播放模式(顺序播放/随机播放),调整后自动保存设置,切换歌单顺序
- 播放器可以调节音量,调节上一首下一首,开始暂停,查看歌单
- 用户可以选择1024游戏、扫雷游戏
- 用户可以自行上传游戏(同时保存到后台)
- 首先展示所有备忘录,点击某备忘录,或者点击新建备忘录之后进入备忘录内容编辑页面
- 只要用户输入备忘录内容即满足保存要求,未填写备忘录标题的情况(自动以备忘录前五个字作为备忘录标题)
- 用户可以删除保存的备忘录(同时从后台删除)
- 支持字体加粗/斜体/下划线、段前加点/段前加数字进行排序/段前加勾选框(点击框即可打勾)
- 支持插入图片(可调节图片大小)/插入链接
- 接入Qwen模型,用户输入API密钥,点击保存密钥(同时保存到后台),即可和对应的AI大模型对话
- 可以选择Qwen的模型类型
- 对话内容实时保存到cache,关闭或刷新页面时保存到后台
- 用户可以新建对话,对话标题使用对话的第一个句子的前五个字
- 左侧为对话列表
- 用户可以删除保存的对话(同时从后台删除)
- 用户输入标题和网址,点击添加标签即可保存网址(同时保存到后台)
- 下方只显示用户为保存的网址起的标题
- 用户可以删除保存的网址(同时从后台删除)
- 前端:HTML, CSS (Tailwind), JavaScript
- 后端:Python Flask
- 数据库:SQLite
- 文件处理:Flask-Uploads, pdf.js
- UI框架:Tailwind CSS
- 播放器:APlayer, MetingJS
- 其他库:FontAwesome
- 所有数据通过Flask后端保存到SQLite数据库
- 用户上传的文件保存到instance/freework.db数据库中
- PDF、TXT文档及图片保存在uploads目录下
- 游戏文件保存在uploads/games目录下
- 克隆项目:
git clone <repository-url>
cd freework- 安装依赖:
pip install -r requirements.txt- 启动应用:
cd backend
python app.py- 访问
http://localhost:5000
创建 .env 文件(可选):
SECRET_KEY=your-secret-key-here
应用使用SQLite数据库,首次启动会自动创建instance/freework.db数据库文件。
GET /api/work-records- 获取所有工作记录POST /api/work-records- 添加工作记录DELETE /api/work-records/{id}- 删除工作记录
POST /api/upload-pdf- 上传PDF/TXT文件GET /api/get-pdfs- 获取所有文档DELETE /api/delete-pdf/{id}- 删除文档
GET /api/bookmarks- 获取所有书签POST /api/bookmarks- 添加书签DELETE /api/bookmarks/{id}- 删除书签
GET /api/notes- 获取所有备忘录POST /api/notes- 创建备忘录PUT /api/notes/{id}- 更新备忘录DELETE /api/notes/{id}- 删除备忘录
POST /api/call-qwen- 调用Qwen APIGET /api/conversations- 获取对话列表POST /api/conversations- 创建新对话GET /api/conversations/{id}/messages- 获取对话消息POST /api/conversations/{id}/messages- 添加消息到对话DELETE /api/conversations/{id}- 删除对话
POST /api/upload-game- 上传游戏GET /api/get-games- 获取游戏列表DELETE /api/delete-game/{id}- 删除游戏
GET /api/ai-config- 获取AI配置POST /api/ai-config- 保存AI配置
允许用户上传自定义HTML/JS/CSS格式的游戏文件,系统会自动管理并提供访问入口。
应用会在浏览器本地存储中备份数据,以提供更好的离线体验和数据恢复功能。
- PDF、TXT文档
- 图片文件(用于封面等)
- HTML/JS/CSS格式的自定义游戏
- 音频文件(通过网易云外链支持)
- 所有文件上传路径需遵循安全规范,防止路径遍历攻击
- 上传的文件类型被严格限制,仅允许安全格式
- 用户应妥善保管API密钥等敏感信息
- 定期备份数据库以防止数据丢失
还有几个问题 1.计时器进去默认显示的是NaN:NaN:NaN,应该是00:00:00,如果查询到今日有工作记录应该是工作记录记录的时间。 2.pdf阅读器的 跳转到 页,不在下方的中间。而且现在是无效的。txt阅读器的跳转是有效的,但跳转的按钮应该放在跳转 两个字上,点击跳转按钮就可以跳转。 3。播放顺序调整之后没有自动更改播放顺序,需要点击保存设置才可用。我希望, 更改播放模式后,页面自动保存播放模式的设置。 4.音乐播放器,用户输入的是网址,系统自行提取id,不要让用户输入id 5 扫雷游戏看不到,应该是有问题。改到扫雷游 戏后,想回到1024也打不开了。6.备忘录的在段前自动标号,和标点功能没有实现
现在的计时器逻辑还是有问题,这里应该只存在五个变量,我以a,b,c,d,e代表,a是用户设定的 │ │ 工作目标,b是计时器现在显示的时间,c是手动添加的工作时间,d是预计下班时间,e是当前时间. │ │ 在新的一天,用户打开网页,b应该是00:00:00,然后开始计时,c是用来防范用户开始工作了但忘 │ │ 记开网页的情况,用户可以手动把没有打开网页的工作时间记录进来,点击添加之后,b=b+c。当用 │ │ 户关闭网页或者刷新的时候,b被保存到后台,同一天,用户再次打开网页的时候,计时器显示上次 │ │ 用户关闭网页时的b。当一天结束之后,b被保存到后台。并且以工作记录显示,例如:2025-11-04完 │ │ 成了9小时工作。同时,预计下班时间d=e+a-b。 第二天,用户打开网页,b应该是00 │ │ :00:00,然后开始计时,如此循环。