AskaEth
|
773f19f009
|
fix: DevTools 读取 .env 管理员凭据 + 统一 main.go 密码 fallback
两个问题导致用户无法用 .env 中的管理员账户登录:
1. DevTools 未读取 backend/.env,始终传 admin/cyrene-dev-admin 给 gateway
2. gateway main.go 中创建管理员时独立读取 os.Getenv 并以 "admin123"
为 fallback,与 config.go 的 cfg.AdminPassword 不一致
修复:
- config.js: 启动时加载 backend/.env 到 process.env (不覆盖已有环境变量)
- main.go: 移除独立的 os.Getenv 读取,统一使用 cfg.AdminPassword
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-22 22:01:30 +08:00 |
|
AskaEth
|
380cc24913
|
fix(security): 修复 P0 安全漏洞 (Session越权+CORS白名单+用户名枚举)
|
2026-05-21 16:12:54 +08:00 |
|
AskaEth
|
1fc2b41d36
|
fix: 将管理员 user_id 从动态 admin_{username} 改为固定 admin
根因:admin user_id 由 admin_ + req.Username 动态拼接,
当 .env 中 ADMIN_USERNAME 更改时,新登录会生成不同的 user_id,
导致旧会话成为孤儿且消息历史不可见。
修复方案 (Plan A):
- auth_handler.go: Login 时 userID 固定为 admin
- auth.go: IsAdminKey 从 HasPrefix(admin_) 改为 == admin
- chat_handler.go: 主对话管理员检查改为 userID == admin
- memory_handler.go: 3处 admin_ 前缀检查改为 == admin
- briefing_handler.go: 3处 admin_ 前缀检查改为 != admin
- sessionStore.ts: isAdminUser 从 startsWith 改为 ===
- MessageBubble.tsx: UserAvatar 管理员判断改为 ===
- main.go: 添加旧管理员用户清理逻辑 (ListUsers+DeleteUser)
- user_store.go: 新增 ListUsers 和 DeleteUser 函数
- ai-core/main.go: adminUserID 从 admin_admin 改为 admin
- memory-service/store.go: 默认 user_id 改为 admin
- memory-service/memory_service.go: 默认 UserID 改为 admin
- devtools/src/index.js: URL 参数 user_id=admin
验证: Go build 通过 (gateway/ai-core/memory-service),
tsc --noEmit 通过, vite build 通过
|
2026-05-20 22:13:21 +08:00 |
|
AskaEth
|
25d6eff7c3
|
fix: 种子用户日志和密码配置化 + 第2轮调试文档
|
2026-05-20 14:02:09 +08:00 |
|
AskaEth
|
9dd1582987
|
fix: 创建users表 + 用户认证系统 (REG1) — 第1轮调试修复
新增 user_store.go 实现 users 表自动建表和 CRUD
注册使用 bcrypt 哈希密码存入 users 表
登录从 users 表查询用户并验证密码
启动时自动种子 admin/admin123 用户
调试文档: docs/debug/2026-05-20-round1-regression-verification.md
|
2026-05-20 13:52:12 +08:00 |
|
AskaEth
|
4b35736f73
|
fix: 修复19个Bug (P0-P3) — 持续性调试第7轮发现的问题
P0 (5): crypto/rand session ID, TTS fallback可达性, goroutine defer recover, adminAuth前缀修正
P1 (5): 普通用户密码验证, context传递, priority clamp, 超时重试, 自主思考速率限制
P2 (4): Briefing AI降级, 前端消息类型渲染, Docker Compose补全, PWA 192图标
P3 (5): goroutine错误处理, .gitignore完善, reminder created_at, voice Dockerfile, Go版本更新
|
2026-05-20 13:30:32 +08:00 |
|
AskaEth
|
baaf90fc47
|
fix: 添加.gitignore规则排除编译产物 + 添加10轮持续调试报告
- 排除 voice-service/main, main2, voice-svc-new (各8.5MB)
- 排除 gateway/cmd/gateway (15MB)
- 添加 docs/fixes/2026-05-19-round7-continuous-debugging-report.md
10轮持续调试汇总: 19个Bug (5 P0, 5 P1, 4 P2, 5 P3)
|
2026-05-20 12:02:02 +08:00 |
|
AskaEth
|
26a61cb57c
|
feat: 第四轮大版本更新 — 修复4个严重Bug、2个UI Bug,实现自主思考重构与主-子会话架构
## 🐛 Bug 修复
- 修复前端对话无响应:消除 ChatContainer 中的双重 WebSocket 连接,优化 sendMessage 失败提示
- 修复 Memory-Service 数据库迁移失败:ai-core 和 memory-service 均添加 ALTER TABLE ADD COLUMN IF NOT EXISTS 模式演化
- 修复语音/STT 不可用:添加 MediaRecorder API 降级方案,修复 whisper-cli 输出文件名错误
- 修复仪表盘数据库按钮失效:补充按钮 ID 属性,重写 controlDB() 控制逻辑
## 🎨 UI 修复
- 修正用户消息头像位置:从 flex-row-reverse 改为 justify-end
- 移除空聊天列表的 emoji 占位图标
## ✨ 新功能
- devtools 新增 STT 处理日志面板(环形缓冲区 + WebSocket 广播 + 可视化表格)
- 新增 ADMIN_NICKNAME 环境变量,支持自定义管理员昵称
## 🔧 改进
- 注册流程增加昵称必填字段(前后端同步)
## 🏗️ 架构重构
- 重构自主思考逻辑:从定时器轮询改为事件驱动(对话后触发 + 静默检测),优化提示词使其更自然人性化
- 实现主-子会话架构:新增 4 种子会话类型(general/memory/iot/knowledge),意图分析 → 并行分发 → 结果合成流程
## 📄 新增文档
- docs/architecture/main-session-sub-session-design.md — 子会话架构设计文档
|
2026-05-19 21:09:48 +08:00 |
|
AskaEth
|
bcf4d4e621
|
feat: 第五轮开发 - 14项未来路线图功能完整实现
W1-W14 全部完成:
- W1: 消息搜索 (ILIKE全文检索 + SearchModal)
- W2: 对话导出 (JSON/Markdown/TXT三格式)
- W3: 记忆时间线 DevTools 可视化
- W4: 通知推送系统 (WebSocket + Browser Notification API)
- W5: 定时提醒 (30s轮询 + 重复提醒 + WebSocket推送)
- W6: 每日简报 (08:00自动生成: 天气+新闻+提醒+AI摘要)
- W7: IoT场景自动化 (规则引擎 10s轮询 + 条件评估 + 场景执行)
- W8: 语音输入 (浏览器 Speech Recognition API)
- W9: STT服务 (voice-service + whisper.cpp)
- W10: TTS服务 (浏览器 Speech Synthesis + edge-tts三档回退)
- W11: 文件管理 (上传/下载/缩略图/纯Go bilinear缩放)
- W12: 知识库RAG (PostgreSQL tsvector + 文档分块 + 检索)
- W13: 多模态 (图片上传+分析: Vision API + 本地Go分析回退)
- W14: PWA (Service Worker + 离线页 + install prompt)
总计: 6个Go微服务 + 10+前端组件 + 10+ PostgreSQL表 + 4个后台调度器
|
2026-05-19 12:01:09 +08:00 |
|
AskaEth
|
e7b7eff0d8
|
fix: 第二轮修复 — 数据库启动检查、会话持久化、URL路由、设备排序等
1. DevTools 启动前检查数据库状态,失败时自动尝试启动
2. ai-core 添加数据库断线重连机制 (30秒间隔)
3. Dashboard 添加数据库状态卡片 (启动/停止/重启)
4. Gateway 会话空闲超时管理 (30分钟标记空闲)
5. 会话/消息 PostgreSQL 持久化 (SessionStore + REST API)
6. 前端服务端会话持久化 + URL hash 路由 + 侧边栏管理
7. 管理员回到主对话按钮
8. IoT 设备卡片固定排序
9. 更新相关文档
|
2026-05-17 17:18:02 +08:00 |
|
AskaEth
|
a80bfd12eb
|
fix: 修复6个bug + IoT设备控制增强 + DevTools IoT面板
问题1: 刷新后主对话历史不显示,侧边栏子对话列表为空
- sessionStore: 修复 setCurrentSessionId 用 Map 去重消息
- AppLayout: 修复 autoLoadNewSession 逻辑
- useWebSocket: 修复 setMessages 调用时机
问题2: 切换到次级对话后无法切换回主对话
- Sidebar: 为删除按钮添加 e.stopPropagation()
问题3&4: IoT设备列表展开导致输入栏消失 + 聊天消息无法滚动
- IoTStatusBar: 从fixed定位改为inline布局
- ChatContainer: 重构flex布局,MessageList自动撑满
问题5: AI核心无法操作IoT设备 + 无法设置温度等属性
- 新增 IoTControlTool (iot_control_tool.go)
- IoTClient: 新增 ToggleDevice/SetProperty/GetHistory
- 支持 set_temperature/set_brightness/set_position/set_mode/set_color
问题6: DevTools启动时Gateway代理登录异常
- devtools: 登录失败时静默降级,不阻塞启动
额外修复:
- iot_tools.go: 修复fmt.Sprintf参数缺失
- iot-debug-service: 修复并发死锁问题
- DevTools: 新增IoT设备控制面板(API代理+前端UI)
|
2026-05-17 14:37:44 +08:00 |
|
AskaEth
|
d15acf587c
|
feat: DevTools综合升级 — 记忆查询 + 会话监看 + WebUI侧边栏重构
- docs: 17个文件重命名为 YYYY-MM-DD.HH-mm-SS-内容.md 格式
- config: 管理员凭据移至 backend/.env (ADMIN_USERNAME/PASSWORD)
- gateway: 新增 SessionState 会话追踪 + GET /api/v1/admin/sessions
- devtools: 新增7个代理端点 (dashboard/sessions/memory)
- devtools: WebUI重构为侧边栏 + 5面板 (仪表盘/记忆/会话/服务/性能)
|
2026-05-16 15:02:44 +08:00 |
|
AskaEth
|
6bde87f807
|
init: 昔涟项目骨架
|
2026-05-15 20:10:35 +08:00 |
|