zcbot/db/migrations/versions
caoqianming f3be3d5016 feat(wecom): 会话冷启动欢迎消息 + 未绑定入站回绑定指引(bump 0.46.0)
背景:应用配「应用主页」后点应用只进主页,应用会话要等应用发过第一条消息
才出现在成员消息列表,首次登录的员工没入口和 bot 打字。最终采用聊天优先
布局(不配主页、自定义菜单放「工作台」按钮指向 /v1/wecom/entry)。

- 回调:未绑定成员的 text/图片/文件消息不再静默,每条回绑定指引
  (聊天优先下新员工上来就打字,静默会被当成 bot 坏了;事件不回)
- 新表 wecom_welcomes(0021)+ service.maybe_send_wecom_welcome:
  免登入口回调给首次进入的成员推欢迎语"种"会话入口;两层去重
  (已推过 / 已绑定且有 chat task),claim-first 并发安全
- scripts/wecom_welcome_broadcast.py:配主页布局下的存量批量种入口
  (可选工具,--dry-run 先看名单);wecom.list_visible_userids 枚举可见范围
- 品牌名单一事实源挪 core/branding.py(app.py BRAND 与欢迎语共用)
- RUN.md 企微段补推荐布局;PROGRESS 同步

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 11:11:10 +08:00
..
20260514_0930_0001_initial_schema.py auth(dev SPA): 邀请码登录(invites 表 0005) + SENTINEL user 彻底撤 2026-05-19 13:14:31 +08:00
20260515_1011_0002_task_dir_relative.py core(§7 D + D'): /v1 JSON API + PLATFORM_KEY→JWT auth + dev SPA 2026-05-15 16:14:25 +08:00
20260517_1830_0003_task_name_and_working_dir.py core(0003): name + working_dir + skill schema 重构 + per-user .memory 2026-05-17 19:15:37 +08:00
20260518_1200_0004_drop_runs_usage_events.py core(0004): 删 runs / usage_events 表 + cancel/SSE 改 task-level 2026-05-18 11:05:35 +08:00
20260519_1500_0005_users_email_unique.py auth(dev SPA): 邀请码撤回 邮箱+密码 (users.email/password_hash bcrypt; 0005 加 UNIQUE; user add CLI; 登录两 tab) 2026-05-19 13:58:48 +08:00
20260519_1600_0006_usage_events_v2_and_message_model.py model: 同 task 内切模型(c 模式 task 级 / A 粒度)+ usage_events v2 表(0006); GET /v1/models; 前端顶栏下拉 + 历史 model 切换点小标 2026-05-19 21:43:13 +08:00
20260520_1800_0007_cost_usd_to_cny.py feat(media): 接入豆包 Seedream 5.0 图像生成 tool + 0007 cost_usd→cost_cny 全表统一币种 2026-05-20 15:20:34 +08:00
20260527_1000_0008_user_disk_usage.py Stage C 收尾包:资源 yaml + 磁盘配额 + 网络放开 + 容器内源持久化 2026-05-27 08:35:53 +08:00
20260612_1000_0009_users_role.py feat(admin): 角色化管理后台 + 分页各用户用量 + bump 0.9.0 2026-06-12 10:02:20 +08:00
20260617_1000_0010_task_soft_delete.py feat(tasks): 任务软删除(留对话轨迹做语料 + 可恢复)+ bump 0.17.0 2026-06-17 16:37:47 +08:00
20260618_1000_0011_scheduled_jobs.py feat(scheduler): 定时任务 v1 — 对话建/管 + 守护循环执行 + 只读前端 (DESIGN §8.5) 2026-06-18 13:42:31 +08:00
20260624_1000_0012_wechat_bot_bindings.py feat(wechat): ClawBot 个人微信接入第一期(后端 + 绑定页)+ 双渠道设计 §8.7 + bump 0.22.0 2026-06-24 08:59:56 +08:00
20260624_1100_0013_task_channel.py feat(wechat): 微信对话 task 渠道标记 + 列表置顶(channel 字段)+ bump 0.23.0 2026-06-24 11:12:16 +08:00
20260624_1200_0014_wecom_bindings.py feat(wecom): 企业微信渠道 B 纯推送 + OAuth 扫码绑 userid + bump 0.24.0 2026-06-24 13:44:23 +08:00
20260624_1500_0015_channel_bindings.py refactor(wechat): 绑定表合一 channel_bindings(判别列+JSONB),取代 ClawBot/企微两表 + bump 0.24.3 2026-06-24 14:55:39 +08:00
20260625_1000_0016_users_name_username.py feat(auth): 平台登录注入 name/user_name + 监控页/dev 顶栏用户名展示 + bump 0.26.1 2026-06-25 09:31:32 +08:00
20260626_1000_0017_task_scheduled_job_id.py feat: 定时任务对话归属 + push 统一记录到渠道对话(bump 0.28.0) 2026-06-26 10:51:06 +08:00
20260626_1100_0018_message_kind.py feat: 定时任务对话归属 + push 统一记录到渠道对话(bump 0.28.0) 2026-06-26 10:51:06 +08:00
20260629_1000_0019_task_context_base_idx.py feat: channel 长会话上下文软重置(gap 自动分段 + 新话题命令)(bump 0.32.0) 2026-06-29 10:05:07 +08:00
20260706_1000_0020_task_run_owner.py feat(deploy): 蓝绿双实例无感部署落地——零 503 窗口 + SSE 不断流(bump 0.41.0) 2026-07-06 14:03:10 +08:00
20260707_1000_0021_wecom_welcomes.py feat(wecom): 会话冷启动欢迎消息 + 未绑定入站回绑定指引(bump 0.46.0) 2026-07-07 11:11:10 +08:00