Version:0.0.1.dev.260202

feat: build core architecture & implement user auth modules 🚀
feat: 搭建核心架构并实现用户认证模块 🚀

Framework Migration: Switched from Hertz to Gin, providing a more idiomatic and lightweight web foundation. 
框架迁移:从 Hertz 切换至 Gin,构建了更符合 Go 惯例且轻量级的 Web 基础。

Architectural Overhaul: Refactored the 3-layer architecture from global-variable-based calls to Explicit Dependency Injection (DI) via New... factory functions. This significantly improves testability and decoupling. 🏗️
架构重构:将三层架构从基于“全局变量”的调用重构为通过 New... 工厂函数实现的显式依赖注入 (DI)。这大幅提升了代码的可测试性与解耦程度。🏗️

User Auth: Completed and tested Register, Login, and Token Refresh APIs with robust error handling and Bcrypt password hashing. 🔐
用户认证:完成了注册、登录与 Token 刷新接口并通过测试,包含健壮的错误处理与 Bcrypt 密码哈希加密。🔐

Config Management: Integrated Viper for centralized, environment-aware configuration management. ⚙️
配置管理:集成了 Viper,实现了中心化且具备环境感知能力的配置管理。⚙️

DevOps & Docs:
Added docker-compose.yml for seamless MySQL 8.0 & environment setup. 🐳
Updated README.md with corrections for mistakes in image quoting and formats. 📝
运维与文档:
新增 docker-compose.yml,实现 MySQL 8.0 环境的一键启动。🐳
更新 README.md,修改了一些图片引用和格式上小错误。📝
This commit is contained in:
LoveLosita
2026-02-02 21:32:21 +08:00
parent 8b45e0e332
commit 78aa38a6f3
19 changed files with 988 additions and 24 deletions

View File

@@ -10,9 +10,9 @@
## 1.2 项目解决的痛点
> **问题1**传统的日程平台(类似于滴答清单等)要么设置重复任务(例如每日背单词、每日刷题等),要么就需要手动设置任务,非常不方便。一旦遇到需要大规模安排任务的场景,例如期末考前半个月突击(涉及的科目多,手头的空余时间也多,每门课的任务又都不一样),就需要先手动规划好任务,再手指点个不停给它排进日程软件里面,还得思考怎样排比较合理,一旦执行出问题需要调整,又像多米纳骨牌倒了一样,连着调整一大块。
> **问题1** 传统的日程平台(类似于滴答清单等)要么设置重复任务(例如每日背单词、每日刷题等),要么就需要手动设置任务,非常不方便。一旦遇到需要大规模安排任务的场景,例如期末考前半个月突击(涉及的科目多,手头的空余时间也多,每门课的任务又都不一样),就需要先手动规划好任务,再手指点个不停给它排进日程软件里面,还得思考怎样排比较合理,一旦执行出问题需要调整,又像多米纳骨牌倒了一样,连着调整一大块。
**本项目带来的解决方案1**采用类似于老师备课-教务处排课的"备课-排课"模式。即假如你是学校上课的老师,你先在"备课区"把这门课程的"教学"大纲排好,然后再考虑后面安排上课的事情。
**本项目带来的解决方案1** 采用类似于老师备课-教务处排课的"备课-排课"模式。即假如你是学校上课的老师,你先在"备课区"把这门课程的"教学"大纲排好,然后再考虑后面安排上课的事情。
拿概率论举例子你准备给它16节课时间复习那你就在新增任务类的区域**创建新任务类**并设置好在第x**任务块**看xx章节的速成课然后第x任务块是真题练习。
@@ -20,19 +20,19 @@
至于调整,本项目支持在课表区域直接拖拽调整时间。
> **问题2**期末周没课,确实可以按照上面一样操作。那我如果不是期末复习呢,我如果想安排一些别的事情呢,比如推进项目?我平时可是有课的,而且有不少水课。传统的日程软件可没法在水课处排课,要么忘记去上水课,要么忘记任务,十分恼火。
> **问题2** 期末周没课,确实可以按照上面一样操作。那我如果不是期末复习呢,我如果想安排一些别的事情呢,比如推进项目?我平时可是有课的,而且有不少水课。传统的日程软件可没法在水课处排课,要么忘记去上水课,要么忘记任务,十分恼火。
**本项目带来的解决方案2**本项目支持学校课表导入,甚至还支持水课嵌入任务。在导入课表之后,本项目支持勾选某些课程为"**可嵌入任务**"状态,此时就可以配合上面的排课系统,将水课作为可用的区域,排任务进去。
**本项目带来的解决方案2** 本项目支持学校课表导入,甚至还支持水课嵌入任务。在导入课表之后,本项目支持勾选某些课程为"**可嵌入任务**"状态,此时就可以配合上面的排课系统,将水课作为可用的区域,排任务进去。
> **问题3**那么我作为一个规划能力比较差的懒人,也能用这个项目来让自己变的充实吗?
> **问题3** 那么我作为一个规划能力比较差的懒人,也能用这个项目来让自己变的充实吗?
**本项目带来的解决方案3**当然可以这就是本项目接入AI的意义。聊天区域的AI将会被调教成一个日程安排的小助手既能满足你简单的对日程的增删改查又能协助你从0开始一点点制定属于你的计划。(**第一批次开发计划**只支持AI随口记这一"增"的功能,以及大多数能想到的"查"功能暂时无让AI改和删的想法)
**本项目带来的解决方案3** 当然可以这就是本项目接入AI的意义。聊天区域的AI将会被调教成一个日程安排的小助手既能满足你简单的对日程的增删改查又能协助你从0开始一点点制定属于你的计划。(**第一批次开发计划**只支持AI随口记这一"增"的功能,以及大多数能想到的"查"功能暂时无让AI改和删的想法)
> **问题4**我平时会突然冒出来一个能让自己活的更舒服亦或是变得更好的小想法(例如把桌面理一下、给自己挑一件新衣服等),但是现在很忙,根本没时间做,然后等忙完了有时间了又忘记了。传统的日程软件确实能让我记录下来(比如将这个小想法记录在日程软件的四象限里面的"不重要不紧急"象限),就是太麻烦了。
> **问题4** 我平时会突然冒出来一个能让自己活的更舒服亦或是变得更好的小想法(例如把桌面理一下、给自己挑一件新衣服等),但是现在很忙,根本没时间做,然后等忙完了有时间了又忘记了。传统的日程软件确实能让我记录下来(比如将这个小想法记录在日程软件的四象限里面的"不重要不紧急"象限),就是太麻烦了。
>
> 还有,平时上课时,接踵而至的实验报告、小组作业等,也面临着类似的情况,既容易忘记,又懒得记录。
**本项目带来的解决方案4**本项目支持AI驱动的"随口记"功能。
**本项目带来的解决方案4** 本项目支持AI驱动的"随口记"功能。
你可以和本项目的AI助手说"提醒我**有空的时候**给自己挑一件新衣服"(**请注意标粗的关键词**)AI助手就会自动评估这件小事的难度以及执行所需花费的时间如果这件事很简单或者不费时会被加入"简单不重要"的队列中;如果比较费时或者困难,就会被加入"不简单不重要"队列中。
@@ -48,23 +48,23 @@
如果用户既想要自定义时间又想要一键编排任务本项目还支持用户自定义时间尺度例如设置9:00-11:00为第一节课等。
2. **导入学校课表。**如果用户选择以学校排课为主的时间尺度,本项目支持快速导入学校课表(只会尝试兼容CQUPT的课表格式),以便后续以课表为基底的日程安排。
2. **导入学校课表。** 如果用户选择以学校排课为主的时间尺度,本项目支持快速导入学校课表(只会尝试兼容CQUPT的课表格式),以便后续以课表为基底的日程安排。
3. **"水课"任务嵌入。**正如上方**问题2**所言,在导入课表后,支持设置某一门你想拿来干其它事情的课为"可嵌入任务"状态,此时这门课所占据的时间区域就是可以嵌入任务的了,但是仍然有区别于其它完全空白的时间区域,便于真正安排适合在嘈杂环境下做的事情。
3. **"水课"任务嵌入。** 正如上方**问题2**所言,在导入课表后,支持设置某一门你想拿来干其它事情的课为"可嵌入任务"状态,此时这门课所占据的时间区域就是可以嵌入任务的了,但是仍然有区别于其它完全空白的时间区域,便于真正安排适合在嘈杂环境下做的事情。
4. **设置某一任务类,并提前安排其执行路线。**正如上方**问题1**所言,用户可以先设置一个大的任务类(例如概率论复习、算法进阶计划等等),再在这个任务类下方安排其在对应时间尺度下的执行计划(例如第1-2节干啥第3-4节干啥),方便后续的日程编排。
4. **设置某一任务类,并提前安排其执行路线。** 正如上方**问题1**所言,用户可以先设置一个大的任务类(例如概率论复习、算法进阶计划等等),再在这个任务类下方安排其在对应时间尺度下的执行计划(例如第1-2节干啥第3-4节干啥),方便后续的日程编排。
5. **一键编排任务。**结合算法、用户偏好以及AI的建议将任务基于上方的时间尺度、导入的课表排进日程中并给出这样排的理由(如果动用了AI)。
5. **一键编排任务。** 结合算法、用户偏好以及AI的建议将任务基于上方的时间尺度、导入的课表排进日程中并给出这样排的理由(如果动用了AI)。
6. **AI随口记。**正如问题4所言就是支持通过AI随手记录一些大小事。
6. **AI随口记。** 正如问题4所言就是支持通过AI随手记录一些大小事。
7. **多用户。**本系统可支持多个用户同时使用并且记录AI对话、编排任务的Token使用情况等并进行限额。
7. **多用户。** 本系统可支持多个用户同时使用并且记录AI对话、编排任务的Token使用情况等并进行限额。
8. **动态任务和静态任务。** **动态任务**包括学校的课和排入日程中的任务类,这些任务随着时间往后会默认已经完成,无需手动勾选;
8. **动态任务和静态任务。** **动态任务**包括学校的课和排入日程中的任务类,这些任务随着时间往后会默认已经完成,无需手动勾选;
而**静态任务**为四个任务队列中的任务,这些任务需要手动勾选为完成状态。
9. **完成任务状态的撤回。**无论是因为哪种情况,是误触给队列里面的任务打钩,还是水课翘课了被叫回去点名导致任务中断,都支持**撤回**这个"任务已完成"的状态。
9. **完成任务状态的撤回。** 无论是因为哪种情况,是误触给队列里面的任务打钩,还是水课翘课了被叫回去点名导致任务中断,都支持**撤回**这个"任务已完成"的状态。
前者,用户只需要在队列的下沉列表中找到该任务然后点击一下灰色的勾即可(模仿了滴答清单的设计)。
@@ -78,25 +78,25 @@
## 2.2 原型展示
![登录页](docs\design\Pics\登录页.png)
![登录页](./docs/design/Pics/登录页.png)
![平台首页_已登录](docs\design\Pics\平台首页_已登录.png)
![平台首页_已登录](./docs/design/Pics/平台首页_已登录.png)
![日程查看&安排中心 多选后](docs\design\Pics\日程查看&安排中心 多选后.png)
![日程查看&安排中心 多选后](./docs/design/Pics/日程查看&安排中心 多选后.png)
![日程查看&安排中心 展开数据结构并排进去一个任务后](docs\design\Pics\日程查看&安排中心 展开数据结构并排进去一个任务后.png)
![日程查看&安排中心 展开数据结构并排进去一个任务后](./docs/design/Pics/日程查看&安排中心 展开数据结构并排进去一个任务后.png)
![日程查看&安排中心](docs\design\Pics\日程查看&安排中心.png)
![日程查看&安排中心](./docs/design/Pics/日程查看&安排中心.png)
![用户设置&杂项](docs\design\Pics\用户设置&杂项.png)
![用户设置&杂项](./docs/design/Pics/用户设置&杂项.png)
![注册页](docs\design\Pics\注册页.png)
![注册页](./docs/design/Pics/注册页.png)
# 3 后端数据架构
## 3.1 ER图
![DB-ER-Design](docs\pics\DB-ER-Design.png)
![DB-ER-Design](./docs/Pics/DB-ER-Design.png)
## 3.2 核心表结构