CURRENT BASELINE
开发总览
13 个关键工作项中,10 项开发自动验收已完成;直连厂商推送正在推进,公共服务器统一注册、加入企业后自动分配企业服务器与账号同步已登记为下一项产品需求。该需求先完成身份、路由、同步和回滚边界设计,再进入实现与迁移验证;支付、钱包和红包不在本轮范围。
CORE BOUNDARY
核心不乱改,产品层必须开发
以顺钉通现有功能作为产品需求参考,先通过官方 API、SDK、回调和扩展服务实现;不迁移旧账号、数据或服务。
官方 OpenIM 核心保持稳定
- 连接、会话与消息同步
- 单聊、群聊与关系管理
- 已读、撤回与离线消息
- 官方 SDK 心跳与重连
- MongoDB、Redis、Kafka、Etcd、MinIO 基础依赖
产品接入层需要开发
- 企业编码、账号体系与 OpenIM Token 映射
- Android、iOS、Windows、HarmonyOS 客户端接入
- 审批、考勤、公告、任务等企业业务
- 推送、媒体策略、风控、审计与运营后台
- 公网边缘、监控、备份、扩容、灰度发布与回滚
DEVELOPMENT CHECKLIST
开发清单
| 模块 | 状态 | 当前结论 | 下一步 | 验收证据 |
|---|---|---|---|---|
| OpenIM 单节点底座 | 已完成 | 官方 Server、Chat 与依赖组件运行 | 保持版本化基线 | Compose / healthcheck |
| 原生管理入口 | 已完成 | 管理 UI 与所需 API 已通过 HTTPS | 维持最小暴露面 | 真实管理请求 |
| 节点监控心跳 | 已完成 | 30 秒上报已接受,节点健康与资源聚合持续写入 | 保持令牌受限管理并定期复测过期/恢复 | last_seen / node_stale 重开与恢复事件(2026-08-30) |
| 客户端边缘设计 | 已完成 | 独立客户端域名的 TLS、路由、限流、无查询日志与回滚已发布 | 按受限配置定期复核与续签 | Nginx 校验、HTTPS/WSS 协议探测(2026-08-30) |
| 公网 WSS 网关 | 已完成 | 官方 Android SDK 已完成登录、WSS 连接、全断网重试及网络恢复后的自动重连 | 转入发布人工审核的真机长连接、前后台与换网矩阵 | SDK onConnectFailed / onConnectSuccess 与恢复后发送(2026-08-30) |
| 公网客户端 HTTPS API | 已完成 | 官方 SDK 已通过独立登录 API 获取 Token,并完成用户、关系、群组与会话 HTTPS 同步;管理路由保持不可访问 | 定期复测认证边界和限流 | SDK 登录、HTTPS 同步与脱敏边缘日志(2026-08-30) |
| 账号与 Token 映射 | 已完成 | 独立产品账号使用 bcrypt;原生后台账号经本机 Chat 校验后签发统一 SDK Token | 扩展禁用、注销和正式身份策略 | 产品账号与原生后台新建手机号账号均登录成功(2026-08-30) |
| 官方 SDK 客户端 | 已完成 | Android、iOS 模拟器、Safari Web/WASM 与 Electron 兼容性环境均已完成 SDK 登录和 WSS 连接 | 转入发布人工审核;iOS APNs、真机网络矩阵和真实 Windows 桌面在接入矩阵中独立跟踪 | Android/iPhone 17 Pro 模拟器、Safari 与 Electron SDK 受控登录证据(2026-08-30) |
| 断线重连与离线消息 | 已完成 | 模拟器全断网后 SDK 产生重试失败;恢复网络自动重连,前后台返回后仍可发送 | 转入发布人工审核的真机换网与离线消息恢复矩阵 | 网络路由检查、SDK 连接回调和前后台恢复后发送(2026-08-30) |
| 媒体上传与消息 | 已完成 | 图片和文件经官方 SDK 本地路径消息发送;类型和大小受限,签名对象路径仅在独立客户端域名开放 | 转入真机媒体选择、上传进度和回读人工审核 | iPhone 模拟器受控图片发送与 MinIO 对象计数(2026-08-31) |
| 直连厂商离线推送 | 进行中 | 用户同意后的加密设备登记、direct_push_registration 前后端强制开关、迁移、公网边缘和脱敏后台台账均已部署;华为、荣耀、小米、vivo 与鸿蒙接入骨架不依赖聚合推送,当前设备数为 0 | 外部依赖:登记本产品各应用独立凭据并部署真实厂商 worker;OPPO 先确认不含 APK 密钥的官方注册方案 | Go/Flutter 回归与关闭态绕过验证已通过;待各厂商真机锁屏送达、点击、令牌刷新与失败回执 |
| 统一注册、企业路由与账号治理 | 需求已登记 | 用户注册时不强制填写企业编码,先在公共 A 服务器创建全局唯一账号;加入企业并审核通过后,再由平台确定企业归属、业务服务器,以及登录、HTTPS API、WSS 各自经过的入口机、中转机和线路 | 设计全局身份 ID、可搜索靓号、账号/邮箱/手机、邀请码与上级、第三方绑定、企业状态、用户级路由、最小资料同步、幂等冲突、切换回滚及既有账号兼容;明确消息与关系数据是否迁移 | 待完成架构评审,并以原ID/靓号双搜索、重复注册、跨服登录、线路展示、加入/退出/切换企业、同步失败恢复和旧账号升级用例验收 |
| 生产多节点 | 未开始 | 当前仅为单节点测试基线 | 拆分有状态依赖并执行压测 | 容量、故障切换、备份恢复 |
状态依据:运行事实、真实请求和客户端行为;不根据计划日期自动变更。
BACKEND FUNCTION REGISTER
后台功能开发台账
顺钉通后台仅用于功能类别参考;所有实现使用独立 OpenIM 数据模型、权限和审计,不迁移旧代码、数据、账号或凭据。
| 功能模块 | 状态 | 当前实现 | 下一步 | 验收边界 |
|---|---|---|---|---|
| 后台账号、角色、菜单与审计 | 已完成 | 独立操作员、角色权限、菜单可见性、登录记录、IP 黑名单和不可变审计 | 随新增业务模块补充最小权限 | 控制 API 权限测试与审计记录 |
| OpenIM 用户、关系、群组与消息运营 | 已完成 | 用户目录、关系、群组治理、受限消息检索和回执均经官方 API | 按上线授权复核数据面回调 | 官方 API 受控请求与权限审计 |
| 内容、客户端配置与投诉审核 | 已完成 | 公告、发现页、宵禁、版本策略和人工投诉审核独立存储 | 为每项配置接入正式客户端消费者 | 控制台回归;客户端生效另行验收 |
| 企业组织、部门与成员目录 | 已完成 | 组织、无环部门树、既有 OpenIM 用户成员映射、RBAC、审计和管理界面已迁移部署;公网控制 API 已完成明确标识的测试企业、部门及两名测试成员创建 | 转入人工审核;权威 HR 目录或外部身份同步需另行评审 | 真实公网管理请求通过,未创建或改写 OpenIM 账号 |
| 组织定向公告与员工策略 | 已完成 | 企业、部门或成员范围快照、发布/撤回、权限审计、成员拉取与幂等已读已迁移部署 | 转入人工审核;锁屏推送提醒按独立厂商凭据另项跟踪 | 公网公告发布、目标成员读取及 readAt 写入通过 |
| 审批、考勤、任务与会议计划 | 已完成 | 审批、任务、人工考勤确认和会议计划状态机、RBAC、审计、管理界面及成员边缘路由已迁移部署 | 转入人工审核;排班打卡、音视频会议和厂商推送不在这些有界状态机内 | 公网实测审批通过、任务完成、考勤确认及会议接受均成功 |
| 厂商离线推送发送与反馈 | 进行中 | 无正文的固定事件投递任务、设备级去重、租约领取、五次指数退避、成功/临时失败/永久失败/无效令牌回执和迁移台账已部署,当前任务数为 0;不含厂商发送凭据或运行 worker | 外部依赖:配置本产品各应用独立凭据并实现逐厂商发送适配器与反馈 API | 待各厂商真机锁屏送达、点击路由和令牌刷新;无凭据前保持 worker 不部署 |
| 城市、圈子与文章审核 | 已完成 | 城市、圈子、后台文章草稿/提交/发布、成员有限文本投稿与独立审核、RBAC、审计、Flutter 消费者和公网路由已迁移部署 | 转入人工审核;相册图片、地域权威核验、匿名公开流和推送送达继续独立跟踪 | 公网真实测试城市/圈子可见,后台文章与成员投稿均审核发布后进入受限内容投影,关闭后旧令牌 403 |
| 相册与图片审核 | 已完成 | 圈子相册、受限对象键图片元数据、草稿/待审/通过/驳回/撤回、独立权限、审计和管理队列已迁移部署;不上传、预览或公开图片 | 后台审核控制面转入人工复核;对象存储核验、客户端投稿/浏览、访问签名和图片识别需另项实现 | 公网后台元数据完成草稿→待审→批准→撤回;测试键明确标注底层对象未上传,不冒充真实图片验收 |
| 会话风险提示 | 已完成 | 后台可人工按用户下发、查看和撤回账号安全、会话安全或其他提示;成员端只读取本人非撤回提示并确认,迁移和公网边缘路由已部署 | 功能闭环转入人工审核;正式客户端、真机采用和厂商推送送达继续独立跟踪,自动检测另行设计 | 真实测试提醒完成 active→acknowledged→withdrawn,关闭后旧令牌 403;不采集聊天正文、行为画像、位置或设备标识 |
| 订单与剩余内容业务 | 未开始 | 未迁移旧系统功能;支付、钱包和红包已明确排除本轮范围,不使用占位表单伪装为已实现 | 按非支付领域分别确定数据模型、合规、风控和审核边界 | 独立数据模型、权限、审计和真实业务验收 |
本表以代码、迁移、部署和真实请求证据更新。仅本地实现不标记为“已完成部署”。
逐项功能对照清单
| 参考类别 | 独立 OpenIM 功能 | 状态 | 当前范围 | 下一步与验收 |
|---|---|---|---|---|
| 系统与权限 | 后台操作员 | 已完成 | 独立操作员创建、更新、重置和受限登录 | 随业务域新增最小权限 |
| 系统与权限 | 角色与操作权限 | 已完成 | 服务端权限目录和受保护内置管理员角色 | 新增业务接口必须补权限测试 |
| 系统与权限 | 菜单与导航 | 已完成 | 数据库菜单排序和角色可见性,不绕过服务端权限 | 新模块登记菜单和权限 |
| 系统与权限 | 参数、字典与入口台账 | 已完成 | 受限系统参数、任务字典和非敏感入口记录 | 配置变更按审计和消费者验证 |
| 系统与权限 | 登录记录、IP 黑名单与操作审计 | 已完成 | 后台登录事件、IP 拦截和不可变审计导出 | 按保留策略复核 |
| IM 运营 | 用户目录与资料管理 | 已完成 | 官方 OpenIM 用户查询、新建与受限公开资料更新 | 上线前复核数据面授权 |
| IM 运营 | 登录、会话与活跃统计 | 已完成 | 注册、活跃、终端会话和强制下线的受限运营视图 | 部署回调后取得真实事件证据 |
| IM 运营 | 好友、黑名单、申请与默认好友 | 已完成 | 官方关系接口、申请审核和受限默认好友规则 | 补外部注册路径的触发契约 |
| IM 运营 | 私聊与群聊消息治理 | 已完成 | 有范围约束的消息检索和逻辑撤回,不提供物理删除 | 按权限审计复核 |
| IM 运营 | 群组、成员与入群申请 | 已完成 | 建群、成员、群策略、转让、解散和申请审核均走官方 API | 补线上回调与真实运营验收 |
| IM 运营 | 系统通知账号与平台公告 | 已完成 | 官方系统通知账号和独立平台级公告 | 正式客户端接入公告消费者 |
| IM 运营 | IM 举报案件审核与处置 | 已完成 | 运营端可维护人工案件、状态、处理说明、权限和审计;客户端提交案件与申诉均在本地独立列表审核 | 处置通知、消息证据核验和正式客户端消费者另列开发 |
| IM 举报 | 用户举报提交 | 已完成 | 用途令牌和 Flutter 测试表单可提交其他用户标识、原因和有限说明;真实测试成员 A 举报成员 B 后仅本人列表可见,后台审核完成,迁移与公网路由已发布 | 转入人工审核;正式客户端入口和真机采用继续跟踪 |
| IM 举报 | 群组与成员举报提交 | 已完成 | 真实群 790628415 及其中测试成员 B 分别完成标识符举报、本人隔离列表、后台 reviewing→resolved;快照仅含目标和群上下文 | 转入人工审核;历史成员资格证明和正式客户端采用继续独立跟踪 |
| IM 举报 | 私聊与群聊消息举报提交 | 已完成 | 私聊和群聊消息引用均完成提交、本人隔离列表和后台 reviewing→resolved;请求与快照不接收正文、附件或设备标识 | 本项只证明受限引用闭环;验收引用明确不冒充真实消息证据,存在性与阅读权限核验仍在证据项跟踪 |
| IM 举报 | 举报证据、处置通知与复审 | 已完成 | 消息举报在写库前经 OpenIM 按参与者有界检索并精确匹配 client/server message ID、发送者、接收者或群;群消息还要求举报人当前属于该群。快照仅登记提交时已核验和标识符留存,不复制正文。本人列表返回处理结论和一次申诉资格,独立复审不自动改写原案件 | 真实单聊:不存在 ID 返回 400 且总数不变,真实 A→B 消息由 B 举报返回 201;后台 reviewing→resolved 后 B 本人列表可见结论、时间与申诉资格。群成员/非成员及精确群消息匹配由自动测试覆盖。不含附件证据、厂商推送或消息正文长期归档 |
| 用户账户与安全 | 产品账号登录密码修改与重置 | 已完成 | 用户“管理→登录与安全”固定提供“修改登录密码”,管理员可为已建立产品账号的用户直接设置新密码;两次输入校验、bcrypt 摘要存储、审计不记录密码,且不改原生 OpenIM 管理员密码。后台仍保留一次性重置码签发和撤销流程 | 无产品账号时明确提示原因,不再静默隐藏按钮;直接改密接口要求独立权限且仅接受 12–128 位密码。短信邮件通知和正式客户端自助入口继续独立跟踪 |
| 用户账户与安全 | 统一用户账号档案 | 基础已完成 | 控制后台新增用户时同步创建六位 OpenIM 用户ID和独立产品登录账号,强制填写账号、密码及二次确认;任一步失败执行精确补偿,避免只创建一半。用户详情集中展示并维护产品账号、未验证邮箱/手机号、注册时间、最后观测登录和注册邀请记录 | 密码仅保存bcrypt摘要且不进入日志审计;继续实现联系方式核验状态、每用户个人邀请码和第三方绑定台账;公共A服务器注册、企业归属及跨服账号同步按用户要求暂不开发 |
| 用户账户与安全 | 公共注册、企业归属与跨服账号同步 | 暂缓开发 | 目标流程:无需企业编码先在公共 A 服务器注册统一账号,之后申请或选择加入企业;企业关系确认后由平台路由到对应企业服务器,并保持账号身份可识别、可同步、可审计 | 用户明确要求当前先完善控制后台,本项暂不写业务代码、不迁移数据 |
| 用户账户与安全 | 用户级业务中转与线路归属 | 需求已确认 | 按用户展示归属企业与业务服务器,并分别展示登录、HTTPS API、WSS 实际经过的入口机、中转机、线路、当前状态、分配时间和分配方式 | 建立用户级路由分配和不可变变更历史,支持自动分配、人工指定、故障切换、原因记录与回滚;现有全局线路目录不能替代用户实际归属 |
| 用户账户与安全 | 可搜索 ID 靓号 | 已完成 | 靓号是用户唯一搜索别名,不替换原始用户 ID、不改变内部关联,也不作为登录账号;控制台可设置、修改、取消,并支持原始 ID 和靓号精确搜索同一用户 | 真实验收:用户 123123 临时设置靓号 778899 后,两种搜索均返回原用户,随后清除测试靓号;数据库约束、原ID冲突校验、独立权限和审计已部署 |
| 用户账户与安全 | 支付密码重置 | 本轮排除 | 没有钱包或支付密码体系;支付相关能力不在本轮开发范围 | 仅在另行授权账本、强验证、合规和双人审核后重新评估 |
| 用户账户与安全 | 邀请码启用与修改 | 已完成 | 已迁移部署为既有 OpenIM 用户预绑定产品账号、昵称和 192 位随机激活码;服务端原子写 bcrypt 产品密码并消费激活码,不创建或迁移 IM 身份。OpenIM v3.8.3 精确用户查询已改用官方 /user/get_users_info 与 usersInfo 响应 | 测试邀请码禁用时消费 400,启用后首次消费 204、重复消费 400;新产品账号登录 200 且精确映射预绑定用户,后台仅显示 consumed 生命周期。激活总开关已恢复默认关闭;正式交付仍须走受限渠道 |
| 用户账户与安全 | 特殊账号与官方账号标识 | 已完成 | 可按 OpenIM 用户设置 official/special 产品展示标识,登录仅返回本人标识;不改 OpenIM 资料且不宣称身份已核验。权限、审计、迁移和控制台均已部署 | 测试账号 A 临时设为 special 后本人登录准确返回,删除后后台及登录均恢复空标识;转入人工审核,正式客户端展示规范另行跟踪 |
| 用户账户与安全 | 会议计划与参会权限 | 已完成 | 企业会议仅可分配给当前在职成员并标记必须或可选;成员只看本人计划并答复参加/拒绝,取消后不再显示;功能已迁移部署 | 公网真实成员已完成接受答复;本项不伪装为音视频会议产品,提醒与外部会议服务另项接入 |
| 用户账户与安全 | 用户级建群开关 | 已完成 | 全局 client_group_creation、个人规则、Flutter 用途令牌、服务端二次校验和公网路由已迁移部署;OpenIM v3.8.3 普通工作群类型已由错误的 0 修正为 2 | 公网产品路由创建测试群 790628415,关闭后旧令牌 403;本项只治理产品受控接口,不宣称限制原生 SDK 直连建群 |
| 用户账户与安全 | 用户级建群额度 | 已完成 | 单用户可配置 1..200 个当前群主额度,服务端经官方已加入群组查询后校验,并在当前单进程内串行计数与创建 | 公网按“当前群主数 + 1”创建成功,紧接的第二次创建准确返回额度已满;多节点并发仍需独立分布式锁或原子配额设计 |
| 用户账户与安全 | 我创建的群组列表 | 已完成 | 控制台和 Flutter 均通过官方已加入群组接口按当前群主精确筛选,只返回 ID、名称、人数、状态、类型和创建时间;超过 5,000 个已加入群组明确拒绝 | 公网列表已读取测试群 790628415,关闭后旧读取令牌 403;不暴露成员、邀请、消息、设置、操作或历史所有权 |
| 用户账户与安全 | PC 端用户级功能开关 | 已完成 | 可按 OpenIM 用户启停 Windows 平台 3 的新 SDK 登录;管理端权限、审计、迁移和认证服务强制校验均已部署,Electron 显示明确拒绝原因 | 测试账号 A 禁用后 Windows 登录 403,而 Android 同时保持 200;删除显式规则恢复默认允许后 Windows 再次 200。已有 SDK 会话仍须通过独立强制下线处理 |
| 用户账户与安全 | 昵称设置 | 已完成 | 官方 OpenIM 用户公开资料更新可受限修改昵称 | 保持权限和审计复核 |
| 用户账户与安全 | 新设备登录保护与设备管理 | 已完成 | 可按用户启用新设备审批;未知安装实例仅登记为待审核,批准前认证服务不签发 SDK 或用途令牌。后台仅保存客户端本地安装标识摘要,不把它视为硬件指纹;权限、审计、迁移和控制台均已部署 | 真实公网边缘验收:未知安装实例登录返回 403 device_pending_approval,后台批准后登录成功,撤销后返回 403 device_access_revoked;验收设备和显式策略已删除,恢复默认关闭且设备列表为 0。既有 SDK 会话的强制下线仍由独立功能处理 |
| 用户账户与安全 | 指定用户登录 IP | 已完成 | 可按 OpenIM 用户配置 IPv4/IPv6 主机或 CIDR;认证服务在签发任何客户端令牌前强制核对可信边缘源 IP,权限、迁移、控制台和不可变审计均已部署 | 真实公网边缘验收:临时允许全网规则登录 200,保留测试网段规则准确返回 403 login_ip_not_allowed;规则更新和删除审计完整,删除后恢复无显式规则的默认允许。后台登录事件的 PostgreSQL INET 转换缺陷已修复,并确认新成功事件保存可信边缘源 IP |
| 用户账户与安全 | 好友列表 | 已完成 | 可经官方 OpenIM API 查询好友和黑名单 | 保持受限查询和审计 |
| 用户账户与安全 | 会话风险提示 | 已完成 | 后台人工提醒、本人非撤回列表、幂等确认、后台撤回、权限与审计均已迁移部署;成员响应不暴露操作员身份 | 真实公网成员读取/确认及后台撤回通过;转入人工审核,不宣称自动检测、聊天画像、位置、设备标识或推送已实现 |
| 用户账户与安全 | 聊天、在线时长与活跃统计 | 已完成 | 有界注册、消息活跃和终端会话统计,不伪装为完整登录历史 | 部署回调后取得真实数据证据 |
| 用户账户与安全 | 用户余额调整 | 本轮排除 | 没有资金账户、余额字段或管理员调账入口;支付相关能力不在本轮开发范围 | 仅在另行授权账本、对账、审批和不可变流水后重新评估 |
| 前端功能与登录策略 | 直连厂商推送登记开关 | 已完成 | direct_push_registration 已迁移并接入后台审计、Flutter 每 60 秒/前台恢复同步、HarmonyOS 页面加载同步及认证服务强制校验;登记和撤销精确边缘路由已发布。真实登录取得用途令牌后,未知供应商请求实测被拒绝且设备表仍为 0;Flutter analyze 与 65 项测试通过 | 该项只证明安全登记开关与边缘契约;本产品尚无独立厂商 token,未验证任何锁屏送达、点击、刷新、发送、失败反馈或重试,不得视为推送已可用 |
| 前端功能与登录策略 | 客户端举报提交开关 | 已完成 | client_report_submission 已接入后台审计、Flutter 策略刷新、登录用途令牌以及 IM/社区本人列表、举报、申诉服务端强制校验,迁移和边缘路由已发布 | 临时关闭后已签发令牌的列表和申诉均返回 403 feature_disabled;恢复原启用配置,正式客户端和真机采用另行跟踪 |
| 前端功能与登录策略 | 组织公告、任务、审批、考勤与会议开关 | 已完成 | 五项策略已迁移,Flutter 刷新同步、用途令牌和服务端强制校验已部署;公网 /organization-* 成员路由已补齐。无令牌请求实测统一进入服务端并返回 401;非企业成员登录时五项能力均为 false 且不签发任何组织令牌,避免短暂展示无权入口 | 开关闭环已完成,不代表企业业务完成;当前企业、部门、成员均为 0,后续仍需配置最小测试组织后做各状态机正向验收、通知与真机展示 |
| 前端功能与登录策略 | 受控客户端建群开关 | 已完成 | client_group_creation 默认关闭;Flutter 公共与个人策略刷新、用途令牌、当前规则与额度复核及公网服务端强制校验已部署 | 真实建群、额度拒绝和关闭后旧令牌 403 均通过;验收后开关关闭且临时个人规则已删除 |
| 前端功能与登录策略 | 我创建的群组读取开关 | 已完成 | client_created_groups 默认关闭;Flutter 清空隐藏、用途令牌、当前群主安全投影和公网读取路由已部署 | 真实群主列表和关闭后旧令牌 403 均通过;开关保持关闭 |
| 前端功能与登录策略 | 会话风险提示开关 | 已完成 | client_session_risk_notice 已接入后台审计、Flutter 策略刷新、登录用途令牌和本人读取/确认服务端强制校验,迁移及边缘路由已发布 | 临时关闭后已签发读取令牌准确返回 403 feature_disabled,随后恢复原启用配置;正式客户端和真机采用另行跟踪 |
| 前端功能与登录策略 | 产品密码登录与邀请码激活开关 | 已完成 | client_password_login 默认开启;Flutter 启动、前台恢复和每 60 秒读取公共策略,关闭后清空并隐藏账号密码和邀请码激活入口;认证服务在读取请求体、校验凭据、查询激活码或消耗登录限额前强制拒绝,迁移、边缘和测试客户端均已发布 | 真实公网关闭态下公共策略为 false,有效登录、畸形登录和畸形激活均在解析前返回 403 feature_disabled;恢复后登录 200。Flutter analyze 与 65 项测试通过。该开关不撤销已签发的 OpenIM SDK 会话,需使用独立强制下线功能 |
| 前端功能与登录策略 | 每日签到与非现金积分开关 | 已完成 | client_daily_checkin、UTC 单日唯一流水、固定积分、Flutter 入口、用途令牌和公网路由已迁移部署;客户端不提交用户或积分值 | 公网首次签到写入 1 个测试产品积分,同日重复返回 409;关闭后旧令牌返回 403。开关验收后保持关闭,积分不可转账、提现、兑换、抵扣或支付 |
| 前端功能与登录策略 | 非现金奖励任务开关 | 已完成 | client_growth_reward_tasks、分配/本人认领/后台审核状态机、唯一奖励流水、Flutter 入口和公网路由已迁移部署;客户端不提交用户、积分或审核决定 | 公网自动验收任务 growth_task-f149a956157f13f42193d20c 已由本人认领并审核奖励 2 个测试产品积分;关闭后旧令牌返回 403。开关保持关闭且不连接钱包、红包、订单或支付 |
| 前端功能与登录策略 | 社区已发布内容读取开关 | 已完成 | client_community_content 默认关闭;Flutter 清空隐藏、用途令牌、城市/圈子/已发布文章安全投影和三条公网读取路由已部署 | 真实已发布后台文章和成员文章读取通过,关闭后旧令牌 403;验收后保持关闭 |
| 前端功能与登录策略 | 社区成员文本投稿开关 | 已完成 | client_community_article_submission 默认关闭;Flutter 本人投稿、用途令牌、有限文本提交/本人状态和后台审核发布已迁移部署 | 真实成员投稿、本人待审列表、后台发布及关闭后旧令牌 403 均通过;不接收图片、附件、外链、位置、联系方式、身份或支付字段 |
| 前端功能与登录策略 | 招聘成员投递开关 | 已完成 | 测试环境已迁移并部署 client_recruitment_application;Flutter 策略刷新后清空并隐藏职位和本人申请,认证服务仅在启用时签发用途令牌。真实成员投递和后台顺序审核通过,恢复默认关闭后已签发令牌返回 403 feature_disabled | 功能闭环转入人工审核;正式客户端与真机采用继续独立跟踪 |
| 前端功能与登录策略 | 全局宵禁与客户端提示 | 已完成 | 时区固定为 Asia/Shanghai 的跨日/同日宵禁策略、权限审计、公共 curfewActive、认证服务强制拦截和 Flutter 入口隐藏提示均已部署;登录与邀请码激活在读取请求体前统一拒绝 | 临时启用覆盖当前时间窗口后,公共策略为 true,畸形登录和激活均返回 403 curfew_active;恢复原关闭策略后公共值 false、账号 A 登录 200。Android v1.0.8+9 已发布,Flutter 65 项测试通过 |
| 前端功能与登录策略 | Android 手机实名认证策略 | 进行中 | 测试控制面已部署默认关闭的 Android 身份策略基础、独立读写权限、操作审计和管理台页面;只允许关闭、审计、强制三态和 1..365 天证据留存,供应商未配置时代码与数据库均禁止强制。当前值为 disabled / unconfigured / 30,不采集姓名、手机号、证件号、图片、住址或验证码 | 选择并安全评审独立身份服务后,实现加密最小资料、供应商回执校验、本人状态、审核权限、Android 登录拦截与异常/注销流程;未完成前不得开启强制模式 |
| 前端功能与登录策略 | 实名资料审核与实名状态 | 进行中 | 测试环境已部署独立审核队列、最小读写权限、不可变审计及待审→核验/驳回、核验→撤销的前向状态机;只保存掩码姓名、掩码手机号、证件类型、末四位和受限供应商引用。Android 平台仅在策略非关闭时取得本人状态专用令牌,读取只返回本人掩码状态,关闭时先于令牌解析返回 403;测试 APK 已发布,当前策略关闭且审核记录为 0 | 外部依赖:选择并安全评审实名供应商,完成加密原始材料、自动回执及真机审核验收;未配置前不得把人工队列视为权威实名,也不得开启 Android 强制策略 |
| 前端功能与登录策略 | Apple ID 登录与绑定开关 | 进行中 | 默认关闭的独立开关、Apple RS256/JWKS 服务端校验、iOS 专用登录/绑定/解绑接口、一对一摘要绑定、迁移和公网边缘路由均已部署;只保存带独立密钥的 Apple subject 摘要,当前登录与绑定路由在读取身份令牌前返回 403 | 外部依赖:为本产品独立登记 Apple audience、外部 HMAC 密钥和客户端 entitlement,补 Flutter 消费、撤销通知与 iOS 真机证据;材料未具备前保持关闭,不复用其他产品 Apple 配置 |
| 前端功能与登录策略 | 第三方/品牌账号授权与手机号绑定策略 | 进行中 | 独立默认关闭策略、读写权限、审计、迁移、控制台及数据库强约束均已部署:仅允许服务端授权码回调、强制手机号绑定、冲突拒绝;当前为 false / unconfigured 且凭据引用为空,不保存 OAuth 密钥、令牌、手机号或第三方资料 | 外部依赖:逐一选择并登记独立供应商、回调地址与凭据,接入手机号核验和客户端;完成真实授权前保持关闭,禁止复用旧品牌账号 |
| 前端功能与登录策略 | 受限邀请码激活开关 | 已完成 | client_registration_activation 已迁移并保持默认关闭,且必须同时满足 client_password_login;Flutter 同步公共策略并隐藏关闭入口,认证服务在读取或消费激活码前拒绝。公网精确路由、OpenIM 精确用户校验和一次性消费均已验证 | 测试邀请码禁用时消费 400,启用后首次消费 204、重复消费 400,新产品账号登录 200 并映射预绑定用户;最终记录为 consumed,总开关恢复关闭。正式邀请码只可通过受限渠道交付 |
| 配置与运维 | 发现页与版本策略 | 已完成 | 独立配置、审核和有界公开读取接口 | 逐项接入正式客户端消费者 |
| 配置与运维 | 节点、线路、告警、任务与路由发布 | 已完成 | 节点心跳、健康历史、受限诊断、路由快照和回滚 | 生产拓扑和容量验收 |
| 推送 | 厂商设备登记 | 进行中 | 同意门槛、短时用途令牌、AES-256-GCM 加密设备令牌、HMAC 去重指纹、撤销接口、迁移、控制台和公网边缘均已部署;当前设备总数、活动数和撤销数均为 0 | 外部依赖:本产品各自独立的华为、荣耀、小米、OPPO、vivo、HarmonyOS/APNs 凭据和真机 token。未取得前不伪造设备登记、锁屏送达或反馈回执 |
| 推送 | 厂商发送、失败反馈与重试 | 进行中 | 固定事件类型的设备级去重任务、租约领取、最多 5 次的 1/2/4/8/16 分钟退避、成功/临时失败/永久失败/无效 token 回执状态机、迁移和只读脱敏台账已部署;当前投递记录为 0,无效 token 与任务失败会在同一事务撤销设备 | 外部依赖:本产品没有独立厂商发送凭据,因此 worker 保持不部署。逐厂商完成适配器、反馈 API、锁屏真机送达、点击和 token 刷新后才能标为完成 |
| 企业管理 | 企业、部门与成员目录 | 已完成 | 组织、无环部门树、成员映射、RBAC、审计和管理界面已迁移部署;安全轮换测试控制台密码后,经公网控制 API 创建明确标识的自动验收企业、部门和两名既有 OpenIM 测试成员,未创建或改写 OpenIM 账号 | 已完成自动回归与真实创建链路;当前数据仅为测试组织,不是权威企业目录或生产员工身份,外部 HR/目录同步另行评审 |
| 企业管理 | 组织定向公告与员工策略 | 已完成 | 范围快照、发布/撤回、成员用途令牌、本人读取和幂等已读均已迁移部署;公网自动验收公告发布后,目标成员成功读取并写入 readAt,非成员仍无入口和令牌 | 业务状态机已完成;锁屏推送提醒仍依赖本产品独立厂商凭据,不作为公告本身完成条件 |
| 企业管理 | 审批工作流 | 已完成 | 模板草稿/启停、顺序审批链、申请与步骤快照、本人撤回和当前审批人处理均已迁移部署;成员 A 通过公网提交自动验收申请,成员 B 被识别为 canDecide 并完成 approved 状态 | 核心流程与 Flutter 自动测试完成;提醒推送依赖外部厂商凭据,多级真实业务审批可在后续业务验收扩展 |
| 企业管理 | 考勤 | 已完成 | 后台人工考勤登记、状态约束、编辑后清除旧确认、本人读取和确认已迁移部署;自动验收成员通过公网读取本人的人工登记并写入 confirmedAt | 本项明确是人工登记与确认闭环,不宣称端侧打卡、位置、人脸、排班或补卡;这些属于另行隐私与业务设计 |
| 企业管理 | 任务与待办 | 已完成 | 在职成员分配、本人读取、待处理→进行中→完成前向状态机、后台取消和事件审计均已迁移部署;自动验收成员通过公网完成任务至 completed | 核心任务闭环与 Flutter 测试完成;外部提醒推送不作为任务状态机完成条件 |
| 企业管理 | 会议计划与参会确认 | 已完成 | 未来 24 小时有界计划、1..200 名在职参会人、必须/可选类型、后台取消和本人参加/拒绝答复已迁移部署;自动验收成员通过公网读取会议并答复 accepted | 本项仅是计划与 RSVP,不生成音视频房间、外链、录制、位置签到或推送提醒;外部会议服务需另行接入 |
| 身份与授权 | 企业身份与员工资格核验 | 已完成 | 可按企业启用成员资格策略,记录待核验/已核验/暂停/过期及人工证明或内部目录引用、有效期、RBAC 和审计;已迁移部署且不保存证件、联系方式、附件或原始目录数据 | 公网实测已核验成员保留五项组织能力,待核验成员入口和令牌均消失,旧令牌被 403 拒绝;验收后策略恢复可选。本项是操作员资格证明,不冒充实名、证件审核或外部权威目录 |
| 增长与积分 | 签到、积分与非现金奖励任务 | 已完成 | 可按用户每日 UTC 日期签到;后台可分配 1..100 分任务,成员只可认领本人任务,只有后台审核通过才写一次不可变积分流水。迁移、公网边缘、控制台和测试客户端均已部署;积分不可转账、提现、兑换、支付或接入钱包/红包 | 测试成员首次签到成功、同日重复返回 409;奖励任务本人认领、后台审核 rewarded 且只产生一条流水。关闭两项策略后旧令牌均 403,随后保持默认关闭。Flutter analyze 与 65 项测试通过;正式反作弊属于后续增强,支付继续排除 |
| 钱包与红包 | 钱包、充值、提现与红包 | 本轮排除 | 用户已明确不开发支付相关功能;没有资金账本、支付渠道或管理员调账入口 | 仅在另行授权独立账本、对账、合规、风控和双人审核后重新评估 |
| 招聘 | 企业、职位、最小简历与成员申请 | 已完成 | 测试环境已部署招聘表、控制台、成员用途令牌与最小边缘路由;真实验收企业和已发布职位对成员 A 可见,成员仅提交职位 ID,服务端从本人有效最小资料生成快照,本人列表和后台列表均可见,后台按 submitted→reviewing→shortlisted 审核。不保存联系方式、附件、简历正文或身份材料 | 开关已恢复默认关闭并验证旧令牌 403;转入人工审核,正式客户端和真机采用继续独立跟踪,不扩展为招聘订单、录用合同、薪资、佣金或资金流 |
| 招聘与订单 | 招聘订单 | 未开始 | 没有招聘订单、签约、保证金、佣金或结算模型 | 当前不在本轮范围;如另行立项,须独立设计领域数据、合规、权限和审计,不复用旧数据 |
| 发票与报销 | 发票、报销与案例管理 | 本轮排除 | 没有票据、报销、案例或附件审批流程;发票和报销属于用户明确排除的支付相关范围 | 仅在后续明确授权非资金案例管理,或另行完成资金账本、合规、审批和留存设计后评估 |
| 内容社区 | 圈子、城市、文章与内容审核 | 已完成 | 后台维护城市/圈子和操作员文章;成员只向启用圈子提交有限标题、摘要和正文。两类内容均仅在审核发布后进入带身份认证的内容投影 | 公网状态机与权限开关闭环已验收;媒体/图片、地域权威核验、匿名内容流与推送另项处理 |
| 内容社区 | 相册与图片审核 | 已完成 | 后台可维护圈子相册和图片对象键、类型、大小、SHA-256、替代说明;状态仅为草稿/待审/通过/驳回/撤回,审批不生成公开链接 | 真实后台状态机已通过;对象存在性、二进制、签名访问、客户端浏览与图片识别明确不在本控制面完成范围 |
| 内容社区 | 圈子、文章与相册内容举报 | 已完成 | 短时举报用途令牌可提交圈子、文章、相册或相册图片标识;服务端解析最小目标快照,本人列表、后台审核和一次申诉复用既有闭环。真实文章举报完成 pending→reviewing→resolved、一次申诉及申诉审核;快照不含文章正文、图片对象键、SHA、附件或设备标识 | 功能闭环转入人工审核;目标阅读资格、证据留存、自动处置通知/下架、正式客户端和真机采用继续独立跟踪 |
| 通知服务 | 邮件通道、模板与投递记录 | 未开始 | 没有独立邮件发送、模板或投递反馈服务 | 单独登记发送凭据、退信与审计策略 |
| 生产能力 | 多节点、容量、备份与故障切换 | 未开始 | 当前仍是单节点测试基线 | 有状态拆分、压测、恢复和回滚演练 |
“已完成”仅表示独立控制面已有实现和相应自动验证;业务域仍需各自的数据模型、消费者、部署和真实验收,不能从顺钉通复制或迁移。
URL RELEASE REVIEW
网址发布与人工审核
网址生成后先做技术验证,再由人工打开核对页面、功能、权限和移动端显示;技术验证通过不等于审核完成。
| 网址/入口 | 用途 | 登录账号 | 密码/凭据 | 发布状态 | 技术验证 | 人工审核 | 审核操作 |
|---|---|---|---|---|---|---|---|
| https://kf.tawfhhkkp.vip/ | OpenIM 开发进度与接入状态 | 无需登录 | 无需密码 | 已发布 | HTTPS 200 | 待人工审核 | 打开审核 |
| https://openimht.tawfhhkkp.vip/ | OpenIM 原生管理入口 | chatAdmin |
已登记登录控制台复制👁 |
已发布 | HTTPS 可达 | 待人工复核 | 打开审核 |
| https://openim-control.tawfhhkkp.vip/admin/ | 独立 OpenIM 控制后台(企业、招聘、审核与策略);正确页面标识:OI / CONTROL PLANE、标题“OpenIM 控制中心” |
chatAdmin |
受限凭据库登录控制台复制👁 |
已发布 | HTTPS 200 / 登录 200 / 未登录 401 | 待人工复核 | 打开审核 |
| https://openim-client.tawfhhkkp.vip/ | OpenIM 客户端 HTTPS API 与 WSS /msg_gateway | 受限测试账号 | 受限凭据库 | 入口已发布 | SDK 登录、HTTPS API 与 WSS 已验证 | 待 SDK 与人工复核 | 打开审核 |
| OpenIM Web/WASM SDK 测试 | 官方 WASM SDK 浏览器测试客户端 | 受限测试账号 | 受限凭据库 | 已发布 | Safari SDK 登录、HTTPS 同步与 WSS 已验证 | 待浏览器人工复核 | 打开审核 |
| Android arm64-v8a APK v1.0.10+11(登录、注册与轻盈 UI) | OpenIM Android SDK 测试安装包(64 位设备) | 无需登录下载 | 无需密码 | 已发布 | 企业信息首页、空灵浅色3D工具宫格和后端开关/用途令牌/成员资格三重显隐已完成;65项测试通过。企业号申请接口仍待继续,SHA256 fbae3257…e696fe |
待两台真机复核 | 下载测试 |
| App Store Connect | iOS 商店新版本 | 受限开发者账号 | 已登记•••••••• |
处理中 | 上传成功 | 等待 Apple 处理 | 非公开审核入口 |
chatAdmin,密码与 OpenIM 原生管理端 chatAdmin 使用同一受限凭据。打开后应看到 OI / CONTROL PLANE 和“OpenIM 控制中心”;若出现“后台登录系统”或请求 /tioadmin/mglogin,说明命中旧缓存,应使用上表带版本参数的审核入口。登录后请核对企业、招聘、审核、策略菜单及权限边界,并登记审核人、时间、结论和问题。
人工审核结果需记录审核人、时间、结论和问题。账号可显示;明文密码和验证码只从统一受限凭据库授权取用,不进入公开网页、源码或浏览器存储。
CLIENT MATRIX
客户端接入矩阵
这里记录的是新 OpenIM 的客户端开发接入状态;顺钉通功能仅作为需求参考,不迁移现有客户端或用户。
Flutter + OpenIM 官方 SDK
arm64-v8a APK v1.0.10+11 已发布;登录服务、SDK初始化和消息连接均有分阶段超时与明确错误,后台数据刷新不再占住登录按钮;注册按钮固定显示并接入受后台开关控制的邀请码注册;登录页升级为轻盈雾蓝3D视觉。企业号申请服务端流程仍在开发Flutter + OpenIM 官方 SDK
iPhone 17 Pro 模拟器已完成构建、SDK 登录和受控媒体发送基线;待真机 APNs、生命周期、网络切换和媒体选择复核Electron + OpenIM 官方 SDK
Windows x64 NSIS 包已构建;实际安装包在隔离 Wine 中完成 SDK 登录和 WSS,待真实 Windows 桌面复核独立 Stage + Push Kit
本地登记样例已建立;待独立包名、签名、Push Kit 凭据与真机构建验证OpenIM Web/WASM 官方 SDK
Safari 已完成受控登录、WASM 初始化、HTTPS 同步与 WSS;待浏览器人工复核ACCEPTANCE EVIDENCE
完成必须留下证据
每一项“已完成”都要能被另一名开发或测试人员独立复核。
- 01配置证据
变更文件、前后 SHA256、语法校验和回滚位置。
- 02连接证据
真实 HTTPS/WSS 请求、SDK 登录和消息会话。
- 03韧性证据
前后台、断网、换网、重连、离线消息恢复。
- 04生产证据
容量、监控、告警、备份恢复、故障切换与回滚演练。
SOURCE OF TRUTH
唯一可信依据
页面是摘要,版本库文档和运行证据才是完整记录。
README.md测试底座范围与公开入口
docs/architecture.md数据面、控制面、边缘与开发边界
docs/development-guide.md当前状态、交付顺序和验收规则
docs/client-auth.md产品账号映射、原生后台账号回退与私有 Token 签发契约
docs/push-media.md媒体对象路径、文件策略与独立离线推送边界
docs/reference-parity.md顺钉通后台功能参考与独立实现差距
control-api/internal/store/organizations.go企业组织、部门与成员目录的数据契约
control-api/internal/store/organization_member_eligibilities.go组织成员资格策略、低敏核验状态、有效期与令牌前强制契约
client-test/lib/organization_member_access_api.dart组织令牌持有者的资格复核、后台撤销后入口隐藏客户端契约
control-api/internal/store/organization_announcements.go组织定向公告、发布接收人快照与撤回契约
control-api/internal/store/client_organization_announcements.go接收人快照拉取、撤回隐藏与幂等已读回执契约
control-api/internal/store/organization_approvals.go审批模板、顺序步骤快照、操作员/客户端处理主体与撤回契约
client-test/lib/organization_approval_api.dart成员模板、审批收件箱、本人提交和当前步骤处理客户端契约
control-api/internal/store/organization_tasks.go企业任务、操作员/客户端状态事件、成员分配与终态约束
client-test/lib/organization_task_api.dart本人任务拉取和受限自助状态推进客户端契约
control-api/internal/store/organization_attendance.go人工考勤登记、时间约束、成员引用与审计契约
client-test/lib/organization_attendance_api.dart本人考勤拉取和确认已查看人工登记客户端契约
control-api/internal/store/organization_meetings.go企业会议计划、成员范围、参会答复、取消与审计契约
client-test/lib/organization_meeting_api.dart本人会议拉取和受限参加/拒绝答复客户端契约
control-api/internal/store/client_moderation_reports.goIM 与社区对象最小举报快照、案件状态、审核与审计契约
control-api/internal/store/client_moderation_report_appeals.go原举报人申诉、独立复审状态与原案件隔离契约
client-test/lib/client_moderation_report_api.dart用途令牌、本人案件列表、标识型举报与受限申诉客户端契约
control-api/internal/store/client_login_ip_policies.go用户登录 IP 策略、CIDR 校验与令牌签发前强制契约
control-api/internal/store/client_desktop_access_policies.go用户 Windows PC 登录策略、审计与令牌签发前强制契约
control-api/internal/store/client_login_devices.go新设备审批、安装标识摘要与令牌签发前服务端强制契约
control-api/internal/store/client_password_resets.go产品账号一次性重置码摘要、原子 bcrypt 更新与审计契约
control-api/internal/openim/client.go官方已加入群组接口的当前群主筛选与有界完整扫描契约
control-api/internal/store/client_account_labels.go特殊/官方账号展示标识、权限审计与本人登录返回契约
control-api/internal/store/client_registration_invites.go预绑定产品账号激活码摘要、原子 bcrypt 映射与一次性消费契约
client-test/lib/client_registration_activation_api.dart预登录激活入口、仅提交激活码和新密码的客户端契约
control-api/internal/clientauth/server.go产品密码登录与邀请码激活的公共开关、服务端强制与令牌签发契约
control-api/internal/store/client_group_creation_policies.go用户受控建群开关、当前群主额度与审计契约
client-test/lib/client_group_creation_api.dart用途令牌建群入口与受限失败提示客户端契约
client-test/lib/client_created_groups_api.dart当前群主群组安全投影、用途令牌与关闭提示客户端契约
control-api/internal/store/community_content.go城市、圈子、文章状态与独立审核权限契约
control-api/internal/store/client_community_content.go已发布城市、圈子、文章的成员安全投影契约
client-test/lib/client_community_content_api.dart用途令牌、已发布社区内容读取与关闭提示客户端契约
control-api/internal/store/community_member_article_submissions.go成员有限文本投稿、独立审核、发布和撤回契约
client-test/lib/client_community_article_submission_api.dart本人投稿状态、用途令牌、受限提交与关闭提示客户端契约
control-api/internal/store/community_albums.go圈子相册、受限图片元数据、审核状态与独立权限契约
control-api/internal/store/recruitment.go招聘企业、职位、最小简历、非资金化申请状态、权限与审计契约
control-api/internal/store/client_recruitment_applications.go成员本人投递、最小资料快照、独立审核队列与撤回边界契约
client-test/lib/client_recruitment_application_api.dart已发布职位、本人申请、用途令牌提交与撤回客户端契约
control-api/internal/store/client_session_risk_notices.go人工用户风险提示、确认、撤回与最小审计契约
client-test/lib/client_session_risk_notice_api.dart本人风险提示收件箱、用途令牌与受限确认客户端契约
control-api/internal/store/client_daily_checkins.go每日签到、不可变非现金积分、UTC 唯一约束与审计契约
client-test/lib/client_daily_checkin_api.dart本人签到摘要、用途令牌与服务端强制客户端契约
control-api/internal/store/growth_reward_tasks.go非现金奖励任务、成员认领、后台审核与不可变积分流水契约
client-test/lib/client_growth_reward_task_api.dart本人任务、用途令牌、受限认领与关闭提示客户端契约
client-test/官方 Flutter SDK 的独立测试客户端
harmony-push-test/HarmonyOS Push Kit 的独立设备登记样例
docs/control-api.md节点代理、指标、任务与审计契约
../memo.log按时间记录的开发证据,不存放凭据