hailin
15e6fca6c0
fix: translate all remaining English UI strings to Chinese and remove dead code
...
- Translate approval_action_card (Approve/Reject/Cancel/Expired)
- Translate tool_execution_card status labels (Executing/Completed/Error)
- Translate chat_providers error messages and stream content
- Translate message_bubble "Thinking..." indicator
- Translate terminal page tooltips (Reconnect/Disconnect)
- Translate fallback values (Untitled/Unknown/No message) across all pages
- Translate auth error "Login failed" and stream error messages
- Remove dead voice_providers.dart (used speech_to_text which is not installed)
- Remove dead voice_input_button.dart (not referenced anywhere)
- Fix widget_test.dart (was referencing non-existent MyApp class)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 02:07:57 -08:00
hailin
d1993a1175
feat: add auto-login with token restore on app startup
...
App 启动时从 SecureStorage 读取已存储的 JWT,解析用户信息自动恢复登录状态,
无需每次重新输入密码。Token 过期则自动尝试 refresh,refresh 失败才跳转登录页。
- 新增 tryRestoreSession() 从 JWT payload 解码用户信息
- 新增 _isTokenExpired() 检查 token 是否过期(预留 60s 缓冲)
- refreshToken() 成功后恢复 AuthState + tenant 上下文
- 新增 /splash 启动页,尝试恢复后决定跳转 dashboard 或 login
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 01:47:20 -08:00
hailin
092a561867
feat: 完成 iAgent App 三大功能 + 修复租户上下文
...
## 功能一:设置页(完整实现)
- 新增浅色主题(lightTheme),支持深色/浅色/跟随系统三种模式
- app.dart 接入 themeMode 动态切换
- 设置页完整重写:个人信息编辑、修改密码、主题切换、通知开关
- 新增 settings_remote_datasource 对接后端 admin/settings API
- settings_providers 新增 AccountProfileNotifier 管理远程个人资料
## 功能二:语音通话(音频集成)
- 添加 flutter_sound 依赖,创建 PcmPlayer 流式 PCM 播放器
- agent_call_page 替换空壳:真实麦克风采集(record + GTCRN 降噪)
- 真实 PCM 16kHz 流式播放,基于 RMS 能量驱动波形动画
- 修复 WebSocket URL 路径:/ws/voice/ → /api/v1/voice/ws/
- voice_repository_impl 支持后端返回相对路径自动拼接
## 功能三:推送通知(WebSocket MVP)
- 添加 flutter_local_notifications + socket_io_client 依赖
- 创建 AppNotification 实体、NotificationService(Socket.IO 连接 comm-service)
- 通知 providers:列表管理 + 未读计数
- 登录后自动连接通知服务,登出断开
- 底部导航 Alerts 标签添加未读角标(Badge)
- AndroidManifest 添加 POST_NOTIFICATIONS 权限
- main.dart 初始化本地通知插件
## 修复:租户上下文未初始化(500错误)
- 根因:登录后未设置 currentTenantIdProvider,导致 X-Tenant-Id 头缺失
- Flutter 端:login() 成功后从 JWT 设置 tenantId,logout 时清除
- 后端:tenant-context.middleware 增加 JWT tenantId 回退逻辑
- AuthUser 模型新增 tenantId 字段解析
新增 5 个文件,修改 16 个文件,添加 3 个依赖包
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 01:10:52 -08:00
hailin
68d0c9d6f7
fix: 移除logo白色背景 + 优化登录页面UI和中文化
...
Logo修复:
- 移除 logo.svg 中的白色背景矩形 (fill="#ffffff")
- Logo 现在为透明背景,在深色主题上正确显示
登录页面优化:
- 添加 "iAgent" 品牌标题 (28px, bold, 带字间距)
- 副标题改为中文 "服务器集群运维智能体"
- 表单中文化: 邮箱/密码/登录
- 错误提示改为带背景色的卡片样式 (红色图标+文字)
- 添加邮箱输入框 placeholder (user@example.com )
- 密码框支持回车提交
- 底部提示: "账号由管理员在后台创建或通过邀请链接注册"
- 限制表单最大宽度 360px,外层改用 SingleChildScrollView 防溢出
用户账号说明:
App 端不提供自助注册功能,用户账号通过以下方式创建:
1. 管理员在 Web 后台 (用户管理页) 直接创建
2. 管理员发送邀请链接,用户通过链接注册
3. 通过 Web 端自助注册 (可选填公司名创建新租户)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 16:42:42 -08:00
hailin
4e1b75483d
fix: 修复 .gitignore 误忽略 Flutter data/models/ 源码导致构建失败
...
问题描述:
在其他机器上构建报错:
"Error when reading 'lib/features/auth/data/models/auth_response.dart': 系统找不到指定的路径"
导致 AuthUser、AuthResponse 等类型找不到,编译失败。
根本原因:
根目录 .gitignore 第75行 "models/" 规则本意是忽略 ML 模型大文件,
但该规则匹配了所有目录名为 models/ 的路径,包括 Flutter 项目中
DDD 架构的 data/models/ 源码目录(共 11 个 models/ 目录、10 个 .dart 文件)。
这些文件在本地存在但从未被 Git 追踪,其他机器 pull 后缺失这些文件。
修复内容:
1. 修改 .gitignore: 将宽泛的 "models/" 替换为精确的规则
- packages/services/voice-service/models/ — voice-service 下载的 ML 模型
- *.pt, *.pth, *.safetensors — PyTorch/HuggingFace 模型二进制文件
- 不再影响 Flutter 的 data/models/ 源码目录
2. 提交之前被忽略的 10 个 Flutter model 文件:
- auth/data/models/auth_response.dart — 登录响应 (accessToken, refreshToken, user)
- chat/data/models/chat_message_model.dart — 聊天消息模型
- chat/data/models/session_model.dart — 会话模型
- chat/data/models/stream_event_model.dart — SSE 流事件模型
- servers/data/models/server_model.dart — 服务器状态模型
- approvals/data/models/approval_model.dart — 审批请求模型
- alerts/data/models/alert_event_model.dart — 告警事件模型
- agent_call/data/models/voice_session_model.dart — 语音会话模型
- standing_orders/data/models/standing_order_model.dart — 常设指令模型
- tasks/data/models/task_model.dart — 任务模型
3. 同时提交:
- it0_app/test/widget_test.dart — Flutter 默认测试
- packages/services/voice-service/src/models/__init__.py — Python 模块初始化
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 16:29:03 -08:00
hailin
2f228e4591
feat: integrate robot logo into web admin and Flutter app
...
- Add logo.svg (green robot character) to project root
- Web admin: replace text "IT" badge with SVG logo in sidebar
- Web admin: add logo image to login, register, invite pages
- Web admin: add SVG favicon and apple-touch-icon metadata
- Flutter: add flutter_svg dependency, replace text "IT0" with logo on login page
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 06:17:08 -08:00
hailin
00f8801d51
Initial commit: IT0 AI-powered server cluster operations platform
...
Full-stack monorepo with DDD + Clean Architecture:
- Backend: 7 NestJS microservices + 5 shared libraries (TypeScript)
- Mobile: Flutter app with Riverpod (Dart)
- Web Admin: Next.js dashboard with Zustand + React Query
- Voice: Python voice service (STT/TTS/VAD)
- Infra: Docker Compose, K8s manifests, Turborepo build
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 22:54:37 -08:00