Commit Graph
35 Commits
Author SHA1 Message Date
编码工程师andmultica-agent 8046ec7483 feat(mobile-next): 导入官方 openim-flutter-demo 固定基线 3.8.3-patch.3 并完成双构建
- 上游: github.com/OpenIMSDK/openim-flutter-demo tag 3.8.3-patch.3
  commit b3dfdb1e8aaeaaf6f0793e10cadd20d5c184a31f
- 并行目录 mobile-next/ 原样导入(含 LICENSE),不覆盖现网 mobile/
- 锁定 Flutter 3.24.5 / Dart 3.5.4 / JDK 17 / Gradle 7.6.3 / AGP 7.3.1
- 实测 Android debug 与 release 构建均成功(见 docs/mobile-next-baseline-import.md)
- 本提交可单独回退:git revert 1db1229(重写前)

Co-authored-by: multica-agent <github@multica.ai>
2026-08-19 15:24:33 +08:00
编码工程师andmultica-agent fa8584a73f chore(scripts): 修正 fix-livekit-ports.sh 回退指令为从备份恢复
Co-authored-by: multica-agent <github@multica.ai>
2026-08-18 00:32:09 +08:00
编码工程师andmultica-agent 5cc2685f03 fix(livekit): 统一信令/媒体端口为 17880/17881/17882,修复接听后双方网络错误
根因:LiveKit 的 config/livekit.yaml 媒体端口(7881/7882)与宿主实际映射(17881/17882)不一致,
信令走 17880 能通,但媒体被宣告到 7881/7882 连不上。

- config/livekit.yaml: port/tcp_port/udp_port -> 17880/17881/17882
- docker-compose.yaml: 容器侧端口与宿主侧一致(1788x),不再重映射
- .env.example: 默认端口改为 1788x 并注明三处需一致
- scripts/selftest.sh: LK_PORT 默认值改为 17880
- scripts/fix-livekit-ports.sh: 一键备份+对齐 .env+仅重建 livekit 的修复脚本
- README: 更新端口表、客户端接入参数与排障说明

Co-authored-by: multica-agent <github@multica.ai>
2026-08-18 00:31:08 +08:00
编码工程师andmultica-agent 8391e6a7b4 docs: 阶段4跨端回归记录(2026-08-16,B-52修复后)
Co-authored-by: multica-agent <github@multica.ai>
v1.0.6-internal-test
2026-08-16 18:36:39 +08:00
编码工程师andmultica-agent a007e8f694 chore(mobile): 支持 --dart-define=AUTH_HOST 本地联调覆盖登录地址(默认不变)
Co-authored-by: multica-agent <github@multica.ai>
2026-08-16 16:54:38 +08:00
编码工程师andmultica-agent 7eab7d5e23 chore: bump mobile 1.0.6 / PC 1.0.2 for B-52 fix packages
Co-authored-by: multica-agent <github@multica.ai>
2026-08-16 16:43:33 +08:00
编码工程师andmultica-agent c73e19c792 style(mobile): new_friends_screen 去掉无效空合并(dart analyze 清洁)
Co-authored-by: multica-agent <github@multica.ai>
2026-08-16 03:06:19 +08:00
编码工程师andmultica-agent b50ee2464c fix(mobile): 新的同事页合并发出/收到申请并按方向渲染(视觉审查 🔴1/🔴2)
- 合并 getFriendApplicationListAsApplicant(我发出的)+ AsRecipient(我收到的),
  按 fromUserID 是否等于自己判断方向
- 我发出的待处理 → 灰字「等待对方通过」且无操作按钮;我收到的待处理才渲染
  「接受/拒绝」;已同意→已添加、已拒绝→已拒绝(视觉规范 5.1)
- 接受/拒绝按钮 shape 复用 theme.dart 新增的统一 8px Token(AppRadius.button),
  不再用 Material3 默认胶囊圆角,页面内零魔法数值
- 窄屏(<360)按钮组/状态字换第二行右对齐不挤压姓名;非窄屏状态区固定 132px

双机实测:A(t2001)发→A 侧 AsApplicant 显示 handleResult=0(等待对方通过、无按钮);
B(t2002)收→AsRecipient 显示接受/拒绝按钮,点接受后双方 handleResult=1(已添加)

Co-authored-by: multica-agent <github@multica.ai>
2026-08-16 03:03:11 +08:00
编码工程师andmultica-agent c5516b8eb8 fix(mobile): 登录后等待会话同步完成再刷新(补 B-52 根因修复)
refreshConversations 在登录态守卫与 SDK 10009(登录未完成)间竞争:
- login 后立即刷新会拿到 10009;改为等待 onSyncServerFinish
  (conversationsLoaded)后再拉取,最多 10s 超时兜底
- refreshConversations 内部对 10009 做 5 次短重试

验证:干净登录后 onSyncServerFinish -> getAllConversationList
返回 si_t1001_t1002(Test Two),会话列表不再停空态

Co-authored-by: multica-agent <github@multica.ai>
2026-08-16 02:37:10 +08:00
编码工程师andmultica-agent 032882dbec feat(pc-client): 通讯录入口整改 + 添加同事弹窗 + 发送错误提示(视觉规范 v1,B-52 施工 3/3)
- ContactSider:三个功能入口改为 20px 线性图标 + 36x36 浅蓝图标块 + 文字
  (①新的同事②添加同事③我的群聊),行高 44,删掉 48px PNG 大图
- 新增 AddColleague 弹窗:工号 + 可编辑验证消息 + 五态(默认/校验失败/发送中/成功/失败)
- 会话栏搜索框右侧新增「+」入口,两处打开同一个弹窗
- useSendMessage:空接收方明确提示、SDK 错误码映射中文提示
- 申请状态文案对齐规范:等待对方通过/已添加/已拒绝
- global.scss 补 --search-bg / --chat-bg token

Co-authored-by: multica-agent <github@multica.ai>
2026-08-16 02:19:05 +08:00
编码工程师andmultica-agent 12b0a1c943 feat(mobile,account-service): 统一发送服务 + 员工目录接口 + 好友申请五态/验证消息(B-52 施工 2/3)
- message_send_service:所有消息走统一门禁(登录/连接/空接收方/好友校验),
  失败打印 SDK 原始 code 并映射中文提示,不再只吞异常
- chat_screen 接入统一发送服务,失败提示真实原因
- account-service 新增 GET /api/directory(登录用户可读启用员工,用于添加同事)
- add_friend_screen 增加可编辑验证消息(视觉规范 4.2)
- new_friends_screen 五态 + 窄屏(<360)按钮组换行不挤压姓名(视觉规范 5.3)

Co-authored-by: multica-agent <github@multica.ai>
2026-08-16 02:16:00 +08:00
编码工程师andmultica-agent d6ef6eb9a4 fix(mobile): 通讯录进会话空对方 + 登录后会话列表空态(B-52 无法发送消息根因)
- contacts_screen 用 f.friendUserID(SDK 恒为空)打开会话,导致建出
  si__<空对方> 会话,所有消息发给空 userID 全部失败;改用 f.userID
- login 后补一次 refreshConversations:SDK 登录期间同步回调先于
  loggedIn=true 触发,refreshConversations 因登录态守卫提前返回,
  会话列表永久停在空态

双机实测:修复前 sendMessage userID='' 失败;修复后 A→B 消息
正常送达(B 端 onRecvNewMessage 收到 fixverify999)

Co-authored-by: multica-agent <github@multica.ai>
2026-08-16 02:14:13 +08:00
编码工程师andmultica-agent 1a5045a4d5 docs: 员工使用说明(一页纸大白话)
Co-authored-by: multica-agent <github@multica.ai>
2026-08-16 01:08:12 +08:00
编码工程师andmultica-agent 4cf1d4120a fix(pc-client,account-service): B-61 试用前小修 - 头像取首字/群头像拼格/近似灰Token收敛/重置密码踢下线,构建 v1.0.1 安装包
Co-authored-by: multica-agent <github@multica.ai>
2026-08-16 01:07:53 +08:00
编码工程师andmultica-agent 2fe8417900 fix(pc-client): PC 端统一手机端设计 Token 并补提交 src/components(B-52 视觉阻塞修复)
Co-authored-by: multica-agent <github@multica.ai>
2026-08-16 00:27:52 +08:00
KIMI 9074b5d1d7 fix: 修复 release 包消息组件永久无响应(B-58 用户手机登录卡死的根因)
根因两条,叠加导致 release 包 initSDK 永不返回:
1. AGP 9 默认开启 R8 混淆,OpenIM 插件用反射按字段名分发方法
   (getDeclaredField("imManager")),混淆后抛 NoSuchFieldException 被静默吞掉,
   Dart 侧 Future 永远 pending —— 表现为「消息组件初始化超时」
2. 插件 manifest 漏声明 ACCESS_NETWORK_STATE,onAttachedToEngine 里
   registerDefaultNetworkCallback 抛 SecurityException,注册中断

修复:
- release 关闭 isMinifyEnabled / isShrinkResources(与官方样板工程配置一致)
- App manifest 补 ACCESS_NETWORK_STATE

已在模拟器上用同版本 SDK 最小复现 App 验证:修复前 release 必现卡死,
修复后 initSDK 返回 true、connect SUCCESS、login 成功。debug 包之前正常
(debug 不混淆),与此结论一致。版本号 1.0.5+6
2026-08-15 16:38:33 +08:00
KIMI 107325f6d1 mobile v1.0.4:初始化步骤打点,超时可区分卡在 存储目录/建目录/SDK内核;初始化超时放宽到 30s(B-58) 2026-08-15 16:07:03 +08:00
KIMI a5b3a0e35f mobile v1.0.3:登录卡死定位增强(B-58)
- SDK 初始化与登录拆成两步分别超时,提示语区分卡在哪一步
- 登录失败时读取并展示 OpenIM SDK 日志文件结尾(去 ANSI 颜色码),用户拍照即可回传诊断信息
- 模拟器实测(Android 15 x86_64):initSDK+login 对 192.168.200.11 全流程正常,排除服务端与代码逻辑问题
- libgojni arm64 已验证 16KB 页对齐,排除新机型兼容性问题
2026-08-15 15:42:31 +08:00
KIMI e2cc59d8c1 mobile: APK 压缩打包 native 库(useLegacyPackaging),arm64 包从 52MB 降到 23MB,绕开附件平台 50MB 上传上限 2026-08-15 15:21:33 +08:00
KIMI a8cb84f4c7 fix: 登录失败自动自检三个服务端口并展示 SDK 原始错误(B-58)
- IMService 记录 onConnectFailed 的 code/error(lastConnectError)
- SDK 未初始化成功时 login 直接抛错,不再无限等待
- 登录页失败提示下附自检结果:账号服务/消息接口/消息长连接 通不通
- 版本号 1.0.2+3
2026-08-15 15:12:20 +08:00
KIMI f94c747aa4 pc-client: NSIS 快捷方式名改为畅联(打 Windows 安装包) 2026-08-15 15:03:47 +08:00
KIMI 3b5c76cac4 fix: 修复手机连不上服务器时启动页无限转圈(B-58)
- 启动页先读本地凭证:无凭证(首次打开)直接进登录页,不再先等 SDK 初始化
- SDK init/login 加 20s 超时;init 用共享 Future 防止超时后重复触发 initSDK
- 登录页对 IM 登录超时给出明确提示(确认手机连着公司内网 WiFi)
- 修复 flutter create 模板遗留的 widget_test(引用不存在的 MyApp),改为登录页渲染冒烟测试
- 版本号 1.0.1+2
2026-08-15 14:54:52 +08:00
KIMI d481e1bc2f mobile: 提交 android/ios 平台脚手架与打包配置(B-58)
- flutter create 生成的 android/ ios/ 脚手架入库,服务器/使用者无需再装 Flutter
- AndroidManifest:补 INTERNET/录音/存储权限,应用名改「畅联」,开 usesCleartextTraffic(内网 http/ws)
- iOS Info.plist:麦克风/相册用途说明、ATS 放行内网明文、显示名「畅联」
- gradle:阿里云镜像优先(本网络 maven.google.com 不可达);统一 Java/Kotlin 编译目标 17;
  抬升 livekit_client compileSdk 到 36 以满足 flutter_webrtc 的 AAR 校验
- README 更新为「直接打包」流程
2026-08-15 13:22:25 +08:00
KIMI 7ce40e356f 新增 pc-client:畅联 PC 端工程(Electron+React,按确认效果图改造,B-59)
- 基于 openim-electron-demo 改造:工号+密码登录(自研账号服务)、会话列表/聊天窗/通讯录界面重做
- 文字/语音/文件/图片消息、文件拖拽发送、表情面板、一对一语音通话(LiveKit)
- RTC 令牌对接账号服务带鉴权版 /api/rtc_token(Bearer imToken + {room,identity})
- account-service: CORS Allow-Headers 补 authorization(浏览器/渲染进程跨域调 rtc_token 需要)
- 附本地 mock 账号服务(scripts/mock-account-server.js)与截图联调脚本
2026-08-09 09:11:06 +08:00
KIMI b95159f7eb 新增 mobile/:畅联手机端 Flutter 工程(B-58)
- 登录:工号+密码走 account-service /api/login,自动登录、被踢下线回登录页
- 消息:会话列表(未读角标/免打扰/时间)、单聊群聊、文字/语音/图片/文件消息、失败重发、历史分页
- 通讯录:新的同事/我的群聊入口、按部门分组(好友 ex 字段)、搜索
- 通话:一对一语音通话(信令走 OpenIM 自定义消息 + LiveKit,token 走 /api/rtc_token)
- 界面按确认效果图 m1/m2/m3 实现,主色 #3B87F5,四态视图齐全,无英文残留
2026-08-09 01:28:12 +08:00
KIMI bef4ffcf6f account-server 新增 /api/rtc_token:用 IM token 换 LiveKit 进房 token(手机端语音通话用,B-58) 2026-08-09 01:28:01 +08:00
KIMI de67af0f6b 清理误提交的本地测试残留文件 2026-08-09 00:54:59 +08:00
KIMI 07f018c280 管理页新增:员工删除功能 + 直接选择 CSV 文件导入(不用复制粘贴)
- server.js 新增 POST /api/admin/delete:移除本地账号并逐平台 force_logout
- admin.html 员工行新增删除按钮(带确认);导入区新增选择文件导入,自动去 BOM
2026-08-09 00:54:52 +08:00
KIMI dfcecaaff6 管理页批量导入处新增模板下载按钮(CSV 带 BOM,Excel 直接打开不乱码) 2026-08-09 00:47:18 +08:00
KIMI 0f72fce82b 新增 account-server:自研工号+密码登录体系(B-60)
- account-service/:零依赖 Node 单文件服务 + 极简管理页 + Dockerfile
- 员工账号管理员导入/新增/停用/启用/重置密码,JSON 文件存储,密码 scrypt 加盐哈希
- 登录校验后调 OpenIM REST 自动开户并换取 IM token;停用即拒登并逐平台 force_logout
- 并入 docker-compose(端口 10010,管理口令 ACCOUNT_ADMIN_TOKEN)
- 已对 192.168.200.11 真实环境端到端自测:导入 50 人、双端登录、停用拒登、重置密码全部通过
2026-08-09 00:39:02 +08:00
KIMI d7b34689b6 fix: LiveKit 自测改发真实音频轨(--publish ogg) + 被叫显式 --auto-subscribe(cli v2 默认 false); 内置 30s opus 测试音频 2026-08-09 00:01:03 +08:00
KIMI efd8becd3b livekit 三个宿主端口全部可配置(带默认值); LIVEKIT_API_SECRET 默认加长到 42 字符; README 同步 2026-08-08 23:30:03 +08:00
KIMI 6dd1d4a245 fix: selftest 所有 API 请求补 operationID 头(OpenIM 强制校验) 2026-08-08 22:49:51 +08:00
KIMI 39b21de4c6 selftest 支持自定义 LIVEKIT_PORT; README 补充 7880 端口冲突处理 2026-08-08 22:36:06 +08:00
KIMI 33fa2339e2 OpenIM + LiveKit 内网测试环境一键部署包
- docker-compose: openim-server v3.8.3-patch.12 + mongo/redis/etcd/kafka/minio + livekit v1.13.5
- 按约束移除 openim-chat(GPLv3) 及依赖它的 web/admin 前端; 监控组件收进 profile m
- scripts/deploy.sh 一键部署, scripts/selftest.sh 自测(注册/登录/文字/语音/文件/一对一通话), scripts/restart.sh 重启
- README: 部署记录(服务器要求/端口表/运维/接入参数)
2026-08-08 22:07:55 +08:00