dev_qing
main
删除 dbv2 从未挂载的 log_module.py(Flask /log/* 遗留)与纯 TCP 服务 用不到的 security_middleware.py 副本;db/README.md 按 pymsg 实现重写, requirements 去掉 flask/waitress;黑盒测试对 pymsg 服务改用 TCP 探测, 修复 check_service HTTP 探测导致的 db 测试整体假 skip。
JSON 无日期类型,而 SQLite DATETIME 只接受 Python datetime 对象, 导致各服务对日期列的写入与 where 比较全部失败。_coerce_value 按反射 列类型把 ISO 8601 字符串转为 datetime/date/time(带时区偏移统一转 UTC),并支持 "$now" 哨兵取服务端当前时间;响应中日期时间改为一律 序列化为 ISO 8601(T 分隔)。黑盒测试补 3 个日期列场景。
启用 handleLogin 中被注释的 last_login 更新:经 DbC::call_msg 以 "$now" 哨兵(db 日期适配层转为服务端 UTC 时间)写入,失败按惯例 THROW_EX_CUSTOM 抛 500 由 wrapper 统一处理。README 版本节同步 (原仍停留在 0.3.0-security)。
- 三处限流错误码统一为 429(login 400→429 并修 attampts 拼写;register/send_code 403→429) - 登录用户不存在不再兜底 500:空结果统一走 401,dummy PBKDF2 校验拉平时序防用户枚举 - db 查询失败消息误名修正:Login (Update Step) Failed → (Query Step) - 超时常量化:DbC::DEFAULT_TIMEOUT=5.0;_TIMEOUT_CAPTCHA/_SMTP_VERIFY=5.0、_SMTP_SEND=20.0 - 文档:gateway/README 数据库节 email→username 重写、建表归 db/create_sqlite3.sql;根 README 版本号与自动建表描述同步
- 新增 gateway/inc/LogC.hpp:异步批量日志客户端(内存队列+后台线程,50条/2秒 flush), 对齐 Python 版 log_client.py,fail-safe 设计(db 不可用静默丢弃) - main.cpp 全部日志输出迁移:wrapperHttp 双异常分支(>=500 ERROR / 其余 WARNING)、 启动/关闭、登录成功、注册成功、验证码邮件发送成功、代理白名单拒绝 - Makefile 增加 -pthread(LogC 使用 std::thread)
- HTTP 场景使用 waitress.serve(threads=8) 替代 Flask 开发服务器 - SSL 场景回退 Flask 内置服务器(Waitress 不支持 TLS) - requirements.txt 新增 waitress 依赖
- 服务端 chunk 为增量片段(chunk_buffer 发送后即清零),原 _delta 按累计全文假设计算,相邻 chunk 前缀撞字时静默丢字符;改为直接拼接 - complete 携带完整全文,finish_ai 改为全文对齐(不一致时整体替换, 可自愈丢帧/乱序),修复结尾全文重复 append - 新增 line/reasoning/task_added/dialogue_reset/pong 消息路由: line(🔧 工具调用提示、工具输出)不再落入兜底污染聊天区,改投任务侧栏 - 发送失败时移除预建的空 AI 消息框并提示,避免空等回复 - 断线提示补充重连窗口期服务端输出丢失说明 - 同步修正 ws_client/README 中的协议描述
- dnfs.js: owner 纯文本改为首字符圆形头像 + 昵称,空值兜底匿名 - theme.css: 新增 Owner Chip 样式段,复用主题变量自动适配深色模式
- dnfs.js: 新增眼睛/爱心/转发 SVG 图标常量与 makeStatItem 构造函数, 统计行挂载在 owner 胶囊下方,计数缺省显示 0(后端暂无该字段) - theme.css: 新增 card-stats/stat-item/stat-num 样式
- recommend-list 改为 flex 纵向布局,gap 统一间距,隐藏 JS 遗留 <br> 分隔符 - 卡片宽度 fit-content 包裹内容,min-width 240px 保底、max-width 100% 封顶 - 内容图片限宽防撑破自适应布局
- dnfs.js: 卡片底部新增编辑/删除按钮,复用下方表单支持编辑模式 (startEdit/cancelEdit/updateNode/deleteChild),stopPropagation 防误触 - theme.css: 新增 card-actions/act-btn 按钮样式,编辑橙色/删除红色软底 - dnfs.py: ADMIN_USERS 统一管理豁免名单(admin, admin@qsont.me), update_note 新增管理员豁免,delete_note 同步改用名单 - dnfs/README.md: 同步更新所有权豁免说明
- dnfs.js: 卡片新增移动按钮,startMove 暂存节点,底部悬浮移动条 提供移动到当前层/取消;confirmMove 经 update_note 改 pid 完成迁移; 拦截移动到自身与已在当前层的情况 - dnfs.html: 新增 #movebar 容器 - theme.css: act-move 描边按钮与 movebar 底部悬浮条样式
后端 update_note 走 AI 审核耗时较长,confirmMove 期间禁用移动条 与表单按钮,finally 统一恢复
No dependencies set.
The note is not visible to the blocked user.
- 服务端 chunk 为增量片段(chunk_buffer 发送后即清零),原 _delta 按累计全文假设计算,相邻 chunk 前缀撞字时静默丢字符;改为直接拼接 - complete 携带完整全文,finish_ai 改为全文对齐(不一致时整体替换, 可自愈丢帧/乱序),修复结尾全文重复 append - 新增 line/reasoning/task_added/dialogue_reset/pong 消息路由: line(🔧 工具调用提示、工具输出)不再落入兜底污染聊天区,改投任务侧栏 - 发送失败时移除预建的空 AI 消息框并提示,避免空等回复 - 断线提示补充重连窗口期服务端输出丢失说明 - 同步修正 ws_client/README 中的协议描述