Skip to content

nanana2002/freework

Repository files navigation

多功能网页工作空间

一个集成了多种实用功能的个人工作空间,包括工作计时器、书架、音乐播放器、游戏、备忘录、AI对话和书签管理。

功能特性

1. 工作计时器

  • 计时器正计时,点击开始工作计时器开始走秒,点击暂停停止读秒
  • 用户可以设定今日工作目标
  • 根据工作目标,计算预计下班时间=当前时间加工作目标减已工作时间
  • 允许用户手动添加工作记录,同时保存到后台
  • 允许用户手动删除工作记录,同时从后台删除
  • 页面被刷新或关闭前,保存当前工作时长,同时保存到后台,并且清除之前保存的今天的工作时长
  • 保证一天只有一条最新的工作时长记录

2. 书架

  • 用户可以自行上传PDF和TXT文档,自行填写书籍名(可选,默认为文件名)
  • 用户可以删除上传的书籍(同时从后台删除)
  • PDF阅读器:左下角为第 页/共 页,下方中间为跳转到 页(用户可以自行填写),右下角为上一页,下一页的按钮
  • TXT阅读器:用户可以设置背景颜色,右上角可以选择TXT编码方法,左下角为第 页/共 页,下方中间为跳转到 页(用户可以自行填写),右下角为上一页,下一页的按钮

3. 音乐播放器

  • 使用网易云外链播放器,Aplayer,播放用户自行输入的网易云链接
  • 会自动提取链接中的id=,中的数字,用户点击保存设置之后,更换歌单
  • 可以调节播放模式(顺序播放/随机播放),调整后自动保存设置,切换歌单顺序
  • 播放器可以调节音量,调节上一首下一首,开始暂停,查看歌单

4. 游戏

  • 用户可以选择1024游戏、扫雷游戏
  • 用户可以自行上传游戏(同时保存到后台)

5. 备忘录

  • 首先展示所有备忘录,点击某备忘录,或者点击新建备忘录之后进入备忘录内容编辑页面
  • 只要用户输入备忘录内容即满足保存要求,未填写备忘录标题的情况(自动以备忘录前五个字作为备忘录标题)
  • 用户可以删除保存的备忘录(同时从后台删除)
  • 支持字体加粗/斜体/下划线、段前加点/段前加数字进行排序/段前加勾选框(点击框即可打勾)
  • 支持插入图片(可调节图片大小)/插入链接

6. AI对话

  • 接入Qwen模型,用户输入API密钥,点击保存密钥(同时保存到后台),即可和对应的AI大模型对话
  • 可以选择Qwen的模型类型
  • 对话内容实时保存到cache,关闭或刷新页面时保存到后台
  • 用户可以新建对话,对话标题使用对话的第一个句子的前五个字
  • 左侧为对话列表
  • 用户可以删除保存的对话(同时从后台删除)

7. 书签

  • 用户输入标题和网址,点击添加标签即可保存网址(同时保存到后台)
  • 下方只显示用户为保存的网址起的标题
  • 用户可以删除保存的网址(同时从后台删除)

技术栈

  • 前端: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目录下

安装与使用

  1. 克隆项目:
git clone <repository-url>
cd freework
  1. 安装依赖:
pip install -r requirements.txt
  1. 启动应用:
cd backend
python app.py
  1. 访问 http://localhost:5000

配置

环境变量

创建 .env 文件(可选):

SECRET_KEY=your-secret-key-here

数据库

应用使用SQLite数据库,首次启动会自动创建instance/freework.db数据库文件。

API接口

工作记录

  • 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} - 删除备忘录

AI对话

  • POST /api/call-qwen - 调用Qwen API
  • GET /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} - 删除游戏

AI配置

  • 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,然后开始计时,如此循环。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published