LoveLosita
8bde981592
Version: 0.9.20.dev.260415
...
后端:
1. 修复 query_available_slots section_from/section_to 错误覆盖 duration 并使用精确匹配而非范围包含
- 更新backend/newAgent/tools/schedule/read_filter_tools.go:移除 span = exactTo - exactFrom + 1 对 duration 的覆盖;matchSectionRange
从精确匹配改为范围包含语义(slotStart < exactFrom || slotEnd > exactTo)
2. Execute 上下文窗口从硬编码裁剪改造为 80k token 动态预算 + LLM滚动压缩
- 基础设施层:AgentChat 新增 compaction 三个持久化字段,dao 新增 CRUD,Redis 新增缓存;pkg 新增 ExecuteTokenBudget常量、ExecuteTokenBreakdown 结构体、CheckExecuteTokenBudget 预算检查函数
- prompt 层:新建 compact_msg1.go / compact_msg2.go 分别实现msg1(历史对话)和 msg2(ReAct Loop)的 LLM 压缩;execute_context.go 移除 msg1 的 1400 字符/30 轮/120 字符三重裁剪和 msg2 的 8 条窗口限制,改为全量加载
- node 层:新建 execute_compact.go(compactExecuteMessagesIfNeeded:预算检查 → msg1 优先压缩 → msg2 兜底 → SSE 通知 → token 分布持久化);execute.go ReAct 循环插入 compact 调用 - 服务/API 层:AgentGraphDeps / AgentService 新增 CompactionStore 注入链路;新增 GET /api/v1/agent/context-stats 查询接口
- 启动层:cmd/start.go 注入 agentRepo 为 CompactionStore
3. 新增 Execute Context Compaction 决策报告
- 新建docs/功能决策记录/Execute_Context_Compaction_决策记录.md
前端:无 仓库:无
2026-04-15 22:01:37 +08:00
Losita
e06284d0b0
Version: 0.7.6.dev.260325
...
后端:
- ♻️ 将 `taskquery` 模块迁移至 `agent2`,并完成与 `agent2` 业务链路及整体结构的正式接入
前端:
- 🧱 已完成基础框架搭建,并完成了登录、注册、主页等页面并对接了对应接口;但整体功能实现仍在完善中
2026-03-25 00:49:16 +08:00
Losita
f3f9902e93
Version: 0.7.1.dev.260321
...
feat(agent): ✨ 重构智能排程分流与双通道交付,补齐周级预算并接入连续微调复用
- 🔀 通用路由升级为 action 分流(chat/quick_note_create/task_query/schedule_plan),路由失败直接返回内部错误,不再回落聊天
- 🧭 智能排程链路重构:统一图编排与节点职责,完善日级/周级调优协作与提示词约束
- 📊 周级预算改为“有效周保底 + 负载加权分配”,避免有效周零预算并提升资源利用率
- ⚙️ 日级并发优化细化:按天拆分 DayGroup 并发执行,低收益天(suggested<=2)跳过,单天失败仅回退该天结果并继续全局
- 🧵 周级并发优化细化:按周并发 worker 执行,单周“单步动作”循环(每轮仅 1 个 Move/Swap 或 done),失败周保留原方案不影响其它周
- 🛰️ 新增排程预览双通道:聊天主链路输出终审文本,结构化 candidate_plans 通过 /api/v1/agent/schedule-preview 拉取
- 🗃️ 增补 Redis 预览缓存读写与清理逻辑,新增对应 API、路由、模型与错误码支持
- ♻️ 接入连续对话微调复用:命中同会话历史预览时复用上轮 HybridEntries,避免每轮重跑粗排
- 🛡️ 增加复用保护:仅当本轮与上轮 task_class_ids 集合一致才复用;不一致回退全量粗排
- 🧰 扩展预览缓存字段(task_class_ids/hybrid_entries/allocated_items),支撑微调承接链路
- 🗺️ 更新 README 5.4 Mermaid(总分流图 + 智能排程流转图)并补充决策文档
- ⚠️ 新增“连续微调复用”链路我尚未完成测试,且文档状态目前较为混乱,待连续对话微调功能真正测试完成后再统一更新
2026-03-21 22:08:35 +08:00
Losita
cd95aeeaaa
Version: 0.6.8.dev.260317
...
- 🧹 删除 `docs/apifox` 目录,接口契约统一迁移并维护于 Apifox 云端
- ✨ 新增“取消任务完成状态”接口
2026-03-17 22:54:07 +08:00
LoveLosita
bc56d471a8
Version: 0.6.7.dev.260317
...
✨ feat(agent): 新增 Token 配额门禁中间件(Redis 快照 + 封禁键 + 7 天懒重置)
- 🚪 在 `POST /api/v1/agent/chat` 挂载 `TokenQuotaGuard`,在请求进入业务逻辑前完成额度校验
- ⚡ 新增 Redis 配额快照与封禁键机制:超额用户命中封禁键后可快速拦截,降低重复查库带来的开销
- 🗃️ 新增用户配额 DAO 能力:按需读取 `token_limit`、`token_usage`、`last_reset_at`,并支持基于“到期条件更新”的懒重置
- 🔄 实现 7 天懒重置策略:用户访问时若检测到配额周期已到期,则重置 `token_usage` 并清理封禁状态
- 🚫 新增超额响应码 `40051`,用于标识 `token usage exceeds limit`
2026-03-17 19:46:08 +08:00
LoveLosita
96be3e2a02
Version: 0.6.6.dev.260317
...
✨ feat(task,agent): 新增任务完成接口,并打通聊天全链路 Token 记账
- ✅ 新增“标记任务为完成”接口,并补充幂等保护,避免重复完成导致状态污染
- 📊 为聊天链路补充 Token 统计能力:
- 流式主对话链路直接读取模型 `usage`
- Agent 链路通过 `Eino callback + ctx` 聚合 `Generate usage`
- 在流式场景下补齐缺失的 `usage` 数据
- 🧾 按口径 B 完成 Token 落库:
- 用户消息 `token` 记为 `0`
- 助手消息记录本轮总 `token`
- 持久化时同步更新 `chat_histories.tokens_consumed`、`agent_chats.tokens_total`、`users.token_usage`
- 🔄 异步标题生成产生的 Token 通过 Outbox 事件完成账本增量调整,保证统计口径一致
- 📝 同步更新 `AGENTS.md` 与 `.gitignore`
- 📚 小幅更新 README 说明文档
2026-03-17 18:23:07 +08:00
Losita
daeff0afab
Version: 0.6.2.dev.260316
...
✨ 新增获取用户对话列表接口,采用分页读库方式实现,暂未引入缓存,以保证数据一致性
2026-03-16 16:53:14 +08:00
Losita
d91784d65f
Version: 0.5.9.dev.260315
...
✨ 为原有流式聊天链路补充“聊天结束后异步调用 LLM 生成对话标题并落库”的机制,相关测试已通过
📄 新增“获取对话元信息”接口,便于前端统一获取对话的各类信息,包括上述异步生成的标题
2026-03-15 19:54:49 +08:00
LoveLosita
5f86dcda2b
Version: 0.4.0.dev.260302
...
修改了gitignore文件,使得yaml不会被上传,保护隐私
接入eino,实现了agent的消息sse流式传输
2026-03-02 14:30:07 +08:00
LoveLosita
fca4004024
Version: 0.3.9.dev.260226
...
fix: 🐛 修复智能排程接口任务块信息缺失与数据插入错误
* 修复智能排程接口返回的任务块信息缺失问题,确保任务数据完整返回
* 修复 `UserInsertTaskItemRequestToModel` DTO 函数未填入起始时间字段的问题,解决多个接口插入数据时出现 500 错误
* 错误源自上次更新“获取最近完成动态任务接口”时,未同步更改数据库字段对应逻辑
* 将智能排程接口的 `ctx` 超时恢复为 1 秒,优化接口响应性能
feat: 🎯 新增正式应用日程接口
* 新增正式应用日程接口,并完成功能测试,确保业务流程无异常
2026-02-26 20:07:55 +08:00
LoveLosita
f934668838
Version: 0.3.6.dev.260223
...
feat: 🚀 新增智能编排日程接口与算法模块
* 新增智能编排日程接口,实现自动生成周维度课程安排
* 抽离核心算法至 `Logic` 包,统一存放调度与排课相关算法逻辑,优化项目结构分层
* 大多数用例测试通过,当前存在少量边界用例下“排课时间是否充足”的误判问题
* 返回的周视图数据在极端场景下存在数量偏差,待进一步完善边界控制
fix: 🐛 修复批量导入课程接口 500 错误
* 修复批量导入课程接口中未在 `event` 结构体填写时间字段的问题
* 解决因时间字段为空导致的服务端 500 错误,保证数据完整性
refactor: ♻️ 新增入参校验逻辑保障调度稳定性
* 在添加任务类时新增入参校验逻辑
* 避免非法数据进入调度流程,确保自动编排日程接口执行稳定
docs: 📚 更新 README 智能编排算法说明
* 补充智能编排日程算法的设计思路与实现说明
undo: ⚠️ 追加导入课程后缓存未自动失效
* 追加导入课程后未自动删除对应周安排缓存,存在数据不一致风险
* 当前未能稳定复现,计划后续定位缓存失效时序与触发条件问题
2026-02-23 21:49:46 +08:00
LoveLosita
dad1eade93
Version: 0.3.2.dev.260214
...
feat: ⏳ 新增获取当前正在进行的任务接口并完成测试
- 若当前为上课时间,返回当前任务 📚
- 若当前为下课/空闲时间,返回下一个任务 ➡️
- 若存在嵌入任务,支持嵌套返回结构 🧩
- 接口已测试通过 🧪
docs: 📝 小幅更新 README
fix: 🐛 修复获取最近已完成任务列表接口的遗漏问题
- 修复无法获取嵌入在课程中的任务问题 🔧
fix: 🐛 修复删除日程接口的字段遗漏问题
- 若删除的是单独任务块,补充删除 task_item 表的 embedded_time 字段
- 避免数据残留与状态异常 ✅
2026-02-14 21:46:02 +08:00
LoveLosita
63500b3b2a
Version: 0.3.0.dev.260212
...
refactor: ♻️ 基于 gorm 钩子实现自动缓存失效机制,再也不用牵一发而动全身写删缓存逻辑了~
- 通过 gorm hook 监听 MySQL 数据变更 🧩
- 自动删除对应表相关缓存,实现缓存失效自动化 🔄
- 移除原本写在 sv 层的手动删缓存逻辑 🧹
- 解耦业务逻辑与缓存控制,结构更加清晰 ✅
fix: 🐛 修复将任务类加入日程接口的时间字段遗漏问题
- 由于前版本 MySQL 表结构更新
- 漏写插入起始时间字段逻辑,导致500报错,现已补充 ⏱️
fix: 🐛 修复获取最近已完成任务列表接口的多个问题
- 移除不应存在的幂等键 🔁
- 修复“一个event输出多次”的问题(原因出自 dto 转换函数) 🔧
undo: ⚠️ 删除任务类接口未处理已安排任务块的解除逻辑
- 当前删除任务类时,未解除已被安排的任务块
- 该逻辑存在缺陷,计划在后续版本内修复 🛠️
2026-02-12 21:34:01 +08:00
LoveLosita
6dd1f656dc
Version: 0.2.6.dev.260211
...
feat: 🕒 为 schedule_events 表新增 start_time 与 end_time 字段
- 新增 start_time 与 end_time 两列
- 支持最近已完成任务列表接口
- 为后续获取当前正在进行的任务接口做准备 🚧
feat: ✅ 新增最近已完成任务列表接口并通过测试
- 完成接口实现与测试 🧪
- 当前 sv 层使用测试时间进行逻辑验证
- ⚠️ 生产环境需改回使用当前时间
2026-02-11 21:08:50 +08:00
LoveLosita
e5a4114202
Version: 0.2.5.dev.260211
...
feat: 🗑️ 新增删除任务类接口并实现级联删除
- 通过 task_class 与 task_item 两张表建立级联关系 🔗
- 删除 task_class 时自动删除关联的 task_item
- 保证数据一致性,避免产生孤立数据 ✅
2026-02-11 18:44:13 +08:00
LoveLosita
cf9a3c79e4
Version: 0.2.3.dev.260211
...
fix: 🐛 修复刷新 Token 接口错误返回问题
- 当 token 本身存在问题时,改为返回 400 业务错误
- 不再错误地返回 500 服务端异常状态码 ✅
feat: 🔁 新增基于 X-Idempotency-Key 与 Redis 的通用幂等中间件
- 基于 X-Idempotency-Key 实现请求幂等控制 🧩
- 记录 UUID 及对应返回结果至 Redis
- 当相同 UUID 重复请求时,直接返回缓存结果 ⚡
- 应用于所有涉及增删改操作的接口
- 解决部分接口未实现幂等性的问题 🔒
2026-02-11 16:16:07 +08:00
LoveLosita
0bc06963ee
Version: 0.2.2.dev.260210
...
feat: 🗑️ 新增删除任务块接口
- 实现 schedules、schedule_events 与 task_items 三表的联动删除
- 保证数据一致性,避免遗留脏数据 ✅
2026-02-10 22:05:59 +08:00
LoveLosita
d5f0b8da63
Version: 0.2.1.dev.260210
...
feat: 🚦 新增基于 Redis 令牌桶的限流中间件
- 使用 Redis 实现令牌桶算法进行限流 🪣
- 覆盖除登录、注册、刷新 token 以外的所有接口 🔒
fix: 🐛 修复任务块添加到日程接口可修改已安排任务时间的问题
- 禁止通过该接口直接修改已安排任务块的时间
- 修正不合理的业务逻辑,保证数据一致性 ✅
2026-02-10 20:52:06 +08:00
LoveLosita
d07234e183
Version: 0.2.0.dev.260210
...
feat: 🗑️ 新增删除单个课程与解除安排日程接口
- 逻辑复杂,初版接口写完后才发现需求需要传切片
- 针对需求修改,通过大 for 循环和事务处理来解决问题 🔄
refactor: 🔧 移除部分冗余的用户 ID 验证逻辑
- sv/schedule.go 中,进来的 ID 已通过 redis 黑名单与 JWT 保护验证
- 去除重复的数据库查验,优化了代码流程 🛠️
refactor: 🔄 重构 API 层业务错误判断逻辑
- 抛弃了原有的手动比对方式,封装进 `respond` 包,简化判断流程
- 未来不再手动遍历数据链路,提升了开发效率 🧹
undo: ⚠️ 修复任务块添加到日程的接口问题(待修复)
- 接口允许直接修改已经安排的任务时间,且重复执行时未被禁止
- 此逻辑存在问题,计划在下个版本修复 🔧
undo: ⚠️ 重测接口的幂等性与其他特性
- 当前接口幂等性等特性尚未专门测试,后续计划重测所有接口
- 测试不充分,待进一步完善 🔄
undo: ⚠️ 修复刷新 token 接口错误处理问题
- 当前接口将 token 本身的错误以 500 错误返回,需修复此问题 🛠️
2026-02-10 19:51:05 +08:00
LoveLosita
6d857d16c2
Version: 0.1.4.dev.260208
...
feat: 📆 新增查看用户整周日程接口
2026-02-08 20:22:49 +08:00
LoveLosita
79b6be5f40
Version: 0.1.3.dev.260208
...
refactor: ♻️ 重命名部分接口接收器以避免与 dao 层包名冲突
- 调整部分接口接收器命名,避免与 dao 层包名重名 🧩
feat: 📅 新增获取用户今日日程接口并完成实现
fix: 🐛 修复现实日期与相对日期转换逻辑中的初始化时序问题
- 修复 conv/time.go 中日期转换函数的一个 bug ⏱️
- 解决 viper 在包级变量初始化时机过早的问题
- 避免因过早初始化导致无法读取配置中的学期开学/结束时间 📆
2026-02-08 19:09:40 +08:00
LoveLosita
f4bea0576c
feat: 🗓️ 新增任务块排期能力并完善课程与日程模型
...
Version: 0.1.1.dev.260207
- 新增并测试通过将任务块排进日程接口 ✅
- 批量导入课程接口增加单双周功能,支持只在单双周上课的课程 📚
- 任务块时间定位逻辑调整为「第几周-周几」模式 🧭
refactor: 🔨 重构时间与日程数据结构
- 完成绝对日期与相对时间的转换逻辑 🔄
- 后续可根据需求灵活决定时间的传入与输出类型
- 再次重构 schedule 表单结构
- 拆分为 schedule_event(单)与 schedule(多)
- 建立前者对后者的一对多关系 🧩
fix: 🐛 大幅调整表结构与业务逻辑,修复大量历史遗留 bug 🔥
2026-02-07 16:33:30 +08:00
LoveLosita
132b7095ac
Version:0.1.0.dev.260205
...
feat: 🆕 完善course模块功能并优化批量导入接口
- 调整 task-class 模型代码并增加注释,使其更简洁易读 ✍️
- 结构调整:将课程相关接口从 schedule 分类移至独立的 course 分类 🚀
- 修改接口 URL 从 /schedule 更改为 /course 🔄
fix: 🐛 修复批量导入课程接口重复导入相同课程的 bug
- 通过在数据库添加唯一约束解决此问题 🔐
- 这只是初步修复,后续会在 sv 层增加重复/时间冲突检测逻辑 ⚠️
- 引导用户修改课表与任务块时间冲突的机制待实现 ⏳
refactor: 🔨 重构 schedule 表单结构
- 将节次管理策略从字符串存储改为原子化存储(如 1-2 节更改为单独两条记录)
- 为后续冲突检查与智能排课做准备 🧠
perf: 🚀 优化批量导入课程接口性能
- 通过数据暂存内存中减少数据插入 MySQL 的次数 ⚡
2026-02-05 16:51:15 +08:00
LoveLosita
1bcbd41bec
Version:0.0.7.dev.260204
...
feat: ✅ 新增获取完整任务类与修改任务类接口并完成测试
- 新增获取完整任务类接口 📋
- 实现创建任务类的逆向数据转换函数 🔄
- 工程量较大,涉及完整数据结构还原 🏗️
- 新增修改任务类接口 ✏️
- 调整 service 层 AddOrUpdateTaskClass 函数逻辑
- 复用创建任务类的大部分实现,并通过 method 区分创建/更新操作 ♻️
- 更新 dao 层操作逻辑 🗄️
- 增加防止越权修改其它用户任务类的机制 🔒
- 两个接口代码量巨大,但均已测试通过 🧪 💪
2026-02-04 22:08:58 +08:00
LoveLosita
af8e8bd804
Version:0.0.5.dev.260204
...
feat: 🏗️ 完成任务分类创建与列表查询接口并通过测试
- 历经复杂嵌套逻辑处理 🌀
- 实现创建任务分类接口 ✅
- 实现获取任务分类列表接口 📋
- 接口测试全部通过 🧪
perf: 🚀 下个版本将为任务分类列表接口加入 Redis 缓存以提升查询速度 ⚡
2026-02-04 19:26:22 +08:00
LoveLosita
f554d9bd06
Version:0.0.4.dev.260203
...
feat: 📚 完成课程导入与校验接口(赶在 token 过期前…)
- 实现课程导入接口 ✅
- 实现课程信息校验接口 🔍
- 测试通过 🧪
fix: 🐛 修了一堆 bug,15 分钟 accessToken 默默见证了时间的流逝 ⏳ 😭
2026-02-03 22:05:11 +08:00
LoveLosita
a59bcfbc5e
Version:0.0.3.dev.260203
...
feat: ✨ 新增任务队列任务获取与创建接口
- 编写获取任务队列中任务的接口
- 编写新增任务接口
- 完成相关测试并验证通过 ✅
2026-02-03 20:27:36 +08:00
LoveLosita
5038ec2fc5
Version:0.0.2.dev.260203
...
feat: implement redis-based logout and jwt middleware 🚀 feat: 实现基于 Redis 的登出机制与 JWT 中间件 🚀
Middleware Construction: Implemented JWTTokenAuth middleware for Gin, featuring structured claims parsing and active session validation. 🛡️
中间件构建:为 Gin 框架实现了 JWTTokenAuth 中间件,支持结构化 Claims 解析与活跃会话验证。🛡️
Redis Integration: Introduced Redis for high-performance state management. Integrated CacheDAO into the Dependency Injection (DI) chain. ⚡
Redis 引入:引入 Redis 进行高性能状态管理。将 CacheDAO 成功集成至依赖注入 (DI) 调用链中。⚡
Secure Logout Module: Developed the logout functional module using a Redis Blacklist mechanism. 🔐
安全登出模块:开发了基于 Redis 黑名单 机制的登出功能模块。🔐
Marked invalidated tokens by storing jti (JWT ID) in Redis with automatic TTL expiration.
通过在 Redis 中存储 jti(JWT 唯一标识)并设置自动 TTL 过期,实现 Token 的主动失效。
Added blacklist checkpoints in both AuthMiddleware and RefreshToken logic to prevent session resurrection.
在认证中间件与 Token 刷新逻辑中同步增设黑名单检查点,杜绝登出后的“死灰复燃”。
Architecture Refinement: Upgraded ValidateRefreshToken and Service-layer handlers to use type-safe struct assertions instead of raw MapClaims. 🏗️
架构精进:升级了 ValidateRefreshToken 与 Service 层处理器,改用类型安全的结构体断言取代原始的 MapClaims,提升了代码健壮性。🏗️
2026-02-03 16:53:16 +08:00
LoveLosita
78aa38a6f3
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,修改了一些图片引用和格式上小错误。📝
2026-02-02 21:32:21 +08:00