hailin
8015154a3e
feat: replace default Flutter icon with iAgent robot logo
...
使用项目自有的绿色机器人 SVG logo 生成各分辨率 Android 启动图标,
替换默认的 Flutter 蓝色纸飞机。支持 Android Adaptive Icon(白底 + 机器人前景)。
同时生成 iOS 图标。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 01:41:36 -08:00
hailin
3d9b25391e
fix: enable core library desugaring for flutter_local_notifications
...
flutter_local_notifications 插件依赖 java.time API,需要启用 Android core
library desugaring 才能在低版本设备上运行。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 01:24:38 -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
913267fb9d
fix: 提交完整的Android项目配置文件,修复跨机器构建失败
...
问题描述:
在其他机器 (C:\Users\ph) 上执行 flutter build apk 时报错:
"Build failed due to use of deleted Android v1 embedding."
原因是 Android 项目配置文件未被提交到 Git 仓库。
根本原因:
之前重新生成 Android 项目(从 speech_to_text 迁移到 record 包)时,
新生成的 Android 构建文件只在本地存在,未提交到远程仓库。
其他机器 clone/pull 后缺少这些文件,导致构建失败。
本次提交包含的文件:
Android 构建配置:
- android/settings.gradle.kts — Gradle 插件配置 (AGP 8.11.1, Kotlin 2.2.20)
- android/build.gradle.kts — 根项目 Gradle 配置
- android/app/build.gradle.kts — 应用模块配置 (namespace: com.iagent.it0_app, Java 17)
- android/gradle.properties — JVM 参数 (8G heap), AndroidX 启用
- android/gradle/wrapper/gradle-wrapper.properties — Gradle 8.14
Android 清单与入口:
- android/app/src/main/AndroidManifest.xml — 主清单 (v2 embedding, INTERNET+RECORD_AUDIO权限, cleartext允许)
- android/app/src/debug/AndroidManifest.xml — Debug 清单
- android/app/src/profile/AndroidManifest.xml — Profile 清单
- android/app/src/main/kotlin/.../MainActivity.kt — FlutterActivity (v2 embedding)
Android 资源:
- res/drawable/ — 启动画面背景
- res/mipmap-*/ — 应用图标 (hdpi~xxxhdpi)
- res/values/ — 主题样式 (LaunchTheme + NormalTheme, 含夜间模式)
Flutter 项目元数据:
- .gitignore — Flutter 项目忽略规则
- .metadata — Flutter SDK 版本追踪
- android/.gitignore — Android 构建产物忽略规则
构建要求:
- Flutter SDK >= 3.38.0 (pubspec.lock 约束)
- 其他机器需执行: flutter clean && flutter pub get 后重新构建
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 16:17:18 -08:00
hailin
a568558585
feat: replace speech_to_text with GTCRN ML noise reduction + backend STT
...
Replace traditional on-device speech_to_text with a modern pipeline:
- Record audio via `record` package with hardware noise suppression
- Apply GTCRN neural denoising (sherpa-onnx, ICASSP 2024, 48K params)
- Trim silence, POST to backend /voice/transcribe (faster-whisper)
Changes:
- Add /transcribe endpoint to voice-service for audio file upload
- Add SpeechEnhancer wrapper for sherpa-onnx GTCRN model (523KB)
- Rewrite chat_page.dart voice input: record → denoise → transcribe
- Keep NoiseReducer.trimSilence for silence removal only
- Upgrade record to v6.2.0, add sherpa_onnx, path_provider
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 07:59:15 -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