From 9e9c506ba980db164b86bbdfa6e2d3dc4cecde62 Mon Sep 17 00:00:00 2001 From: QihuAI Design Date: Sat, 18 Jul 2026 23:19:18 +0800 Subject: [PATCH] =?UTF-8?q?release:=20v2026.07.18.1=20(prod)=20=E2=80=94?= =?UTF-8?q?=20Phase0=20=E5=B7=A5=E7=A8=8B=E7=BA=AA=E5=BE=8B=E6=AD=A2?= =?UTF-8?q?=E8=A1=80=EF=BC=9A=E9=83=A8=E7=BD=B2=E5=89=8D=E9=95=9C=E5=83=8F?= =?UTF-8?q?=E5=A4=87=E4=BB=BDSOP=20+=20=E7=89=88=E6=9C=AC=E5=8F=B7?= =?UTF-8?q?=E8=A7=84=E8=8C=83=20+=20=E6=B5=8B=E8=AF=95=E5=9F=BA=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VERSION | 50 ++++++++++------------ docs/VERSIONING.md | 102 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+), 29 deletions(-) create mode 100644 docs/VERSIONING.md diff --git a/VERSION b/VERSION index 1fdddb7..61f8348 100644 --- a/VERSION +++ b/VERSION @@ -1,29 +1,21 @@ -AIFlow v2.0.1 -Build Date: 2026-06-02 -Features: AI chat with real API, tool-call function calling, knowledge base file storage + AI-driven graph (LLM entity/relation extraction), channel QR codes, email/SMS config with AI content generation, payment config, admin dashboard (platform cockpit) with cumulative token stats, audit/operation logs, agent resources API, evolution pipeline with auto-recovery, global default model, ad banner image upload + AI image generation, app market install/uninstall + search + duplicate detection, asset file type classification + online preview -Migrations: 001-015 (15 total) -Fix: 015_production_fixes - knowledge_documents增加content列; AppPurchase状态在卸载时重置 -Fix: 014_clean_test_data - 交付前清理Mock/测试数据,去重model_provider,保留admin账号及种子数据 -Fix: 013_knowledge_graph_tables - 知识图谱节点/边/构建记录三张新表 -Fix: 012_production_column_sync - 幂等补全生产环境可能缺失的列 -Fix: run.sh admin密码智能检测 - 仅在哈希无效时重置,保护用户修改的密码 -Fix: main.py lifespan - Evolution Pipeline自动恢复运行+chat.py自动启动Pipeline -Fix: Auth login - 前端区分用户名不存在和密码错误(/auth/login 401特殊处理) -Fix: Dashboard - 更名平台驾驶舱 + total_tokens累计统计 -Fix: ChatPage - Agent/技能选择修复onClick交互 + used_skills关联请求skill_ids -Fix: Channels QR - 统一使用config.APP_ACCESS_URL(3处os.environ改为config) -Fix: Ad banners - 后端图片上传+AI绘图接口 -Fix: Models - 全局默认LLM设置入口+is_default显示 -Fix: Email config - 字段空值校验+测试前先保存+SMTP逐字段验证 -Fix: docker-compose.yml - APP_ACCESS_URL改为https://bot.qihuyun.com(二维码localhost根因) -Fix: Token dashboard - 导出CSV下载+一键充值API+服务器时间同步 -Fix: Knowledge graph - Canvas节点拖拽+悬停高亮tooltip+点击选中详情面板 -Fix: Assets - 按ID去重+Office/PDF在线预览+文件类型映射修复 -Fix: ChatPage - 知识库/Agent/技能多选组合(checkbox多选dropdown) -Feature: AstrBot借鉴 - 统一Webhook端点+消息组件系统+平台适配器注册+MessageSession+Pipeline管道+Redis事件总线 -Refactor: 清理旧版_handle_*_webhook函数和_create_unified_event辅助函数(约330行冗余代码),统一通过适配器模式工作 -Fix: unified_webhook - URL验证(challenge/url_verification)优先于频道存在性检查 -Fix: config.py - APP_ACCESS_URL三级防护(检测临时域名自动覆盖为正式域名) -Fix: BUG-1 - 邮件/SMS/站点设置GET接口返回标准{code,data,message}格式,修复配置持久化后刷新丢失 -Fix: BUG-2 - Token驾驶舱CSV导出分页获取(page_size=100) + 一键充值跳转/#/pricing -Fix: 生产环境6项缺陷修复 - (1)频道二维码add bind页面+后端API,(2)knowledge_documents add content列,(3)tool-call优先调用skills system prompt,(4)卸载时重置AppPurchase状态,(5)Token overview add server_time (Shanghai时区),(6)邮件测试add smtplib全异常捕获+标准返回格式 +# 七虎AI PaaS 平台 — 版本清单 (VERSION) +# 版本规范见 docs/VERSIONING.md +# 版本号格式: vYYYY.MM.DD.N (年.月.日.当日递增序号,从 1 开始) +# 环境标签: prod = 正式版 | test = 测试版 + +VERSION=v2026.07.18.1 +ENV=prod +DATE=2026-07-18 +BASE_IMAGE=qihu-aiflow:with-deps +BACKUP_IMAGE=qihu-aiflow:backup-20260718-001 + +## 本版本变更 (v2026.07.18.1 / prod) +- Phase0 工程纪律止血 启动 +- 新增「部署前镜像备份 SOP」:scripts/backup_before_deploy.py,每次部署前自动提交递增序号镜像快照 +- 统一版本号规范 vYYYY.MM.DD.N + prod/test 标签(取代旧 -recover 标签) +- 引入后端 pytest / 前端 vitest 测试基建,作为迭代式重构的安全网 +- 固化反复问题的回归用例 R1/R2/R3 + +## 历史 +- 旧方案:镜像曾用 AIFlow v2.0.1 / v2026.07.14 / v2026.07.14-nav;git 曾用 v2026.07.12-recover / v2026.07.12-ui-recover / v2026.07.13-recover。自 v2026.07.18.1 起统一为 vYYYY.MM.DD.N + prod/test,便于正式版推广后与测试版做环境切割。 +- 历史功能:AI聊天(real API + tool-call function calling)、知识库文件存储 + AI 图谱、频道二维码、邮件/短信配置 + AI 生成、支付配置、平台驾驶舱(token 累计 + 审计/操作日志)、Agent 资源 API、evolution pipeline 自动恢复、全局默认模型、广告位图片上传 + AI 绘图、应用市场安装/卸载/搜索/去重、资产文件类型分类 + 在线预览。迁移 001-015。 diff --git a/docs/VERSIONING.md b/docs/VERSIONING.md new file mode 100644 index 0000000..ea1ed7a --- /dev/null +++ b/docs/VERSIONING.md @@ -0,0 +1,102 @@ +# 版本号规范 (Versioning) + +> 适用:七虎AI PaaS 平台 (qihuaiflow) 全部发布物(源码、Docker 镜像、线上环境)。 +> 生效版本:`v2026.07.18.1`(取代旧 `-recover` 标签体系)。 + +--- + +## 1. 版本号格式 + +``` +vYYYY.MM.DD.N +``` + +| 段 | 含义 | 示例 | +|----|------|------| +| `YYYY` | 年(4 位) | 2026 | +| `MM` | 月(2 位,补零) | 07 | +| `DD` | 日(2 位,补零) | 18 | +| `N` | **当日**递增序号,从 `1` 开始,同日多次发布顺延 | 1, 2, 3 … | + +- 同一天第 1 次发布 = `v2026.07.18.1`,第 2 次 = `v2026.07.18.2`。 +- 跨天序号**重置**:次日第 1 次发布 = `v2026.07.19.1`。 +- 序号不与全局总发布数绑定,只跟"当天第几次"有关,便于人类快速判断发布日期与顺序。 + +## 2. 环境标签 (prod / test) + +每个版本必须标注环境,用于正式版与测试版的环境切割: + +- **`prod`** — 正式版,面向最终用户,质量门禁(测试全绿 + 备份完成)必须达标。 +- **`test`** — 测试版 / 灰度 / 预发布,允许未完全冻结,但同样需要镜像备份。 + +环境信息记录在 `VERSION` 文件的 `ENV=` 字段,并写入 git tag 注解与镜像 metadata。 + +## 3. 三类发布物的对应关系 + +一次发布同时产生三个相互关联的制品: + +| 制品 | 命名 | 工具 | +|------|------|------| +| Git 标签 | `v2026.07.18.1`(注解含 `env=prod`) | `git tag -a` | +| Docker 镜像 | `qihu-aiflow:v2026.07.18.1` | `docker tag` / `docker commit` | +| 运行态快照(回滚点) | `qihu-aiflow:backup-YYYYMMDD-NNN` | `scripts/backup_before_deploy.py` | + +> **关键纪律**:`backup-*` 是部署**前**对当前健康运行态的快照(防线);`v*` 镜像/标签是部署**后**的发布物(成果)。两者不是一个东西。 + +## 4. 发布流程(SOP) + +每次部署严格遵守以下步骤: + +```bash +# 0. 在改任何代码之前,先打部署前镜像备份(强制) +python scripts/backup_before_deploy.py --env prod --note "发布 v2026.07.18.1 前快照" + +# 1. 在容器中完成代码修改 +# (编辑 /app/... → 必要时 npm run build → docker restart) + +# 2. 把容器内最新源码 docker cp 回宿主仓库 +docker cp qihu-aiflow:/app /www/wwwroot/qihuaiflow # 仅后端;前端 dist 同理 + +# 3. 更新 VERSION 文件(VERSION / ENV / DATE / BACKUP_IMAGE) + +# 4. 提交并打标签 +cd /www/wwwroot/qihuaiflow +git add -A +git commit -m "release: v2026.07.18.1 (prod) — <一句话变更摘要>" +git tag -a v2026.07.18.1 -m "prod | Phase0 工程纪律止血:备份SOP + 版本规范 + 测试基建" +git push origin main +git push origin v2026.07.18.1 + +# 5. 固化发布镜像(可选但推荐,便于回滚到有版本号的镜像) +docker commit qihu-aiflow qihu-aiflow:v2026.07.18.1 +``` + +## 5. 回滚流程 + +若发布后发现问题: + +```bash +# 方案 A:回滚到部署前快照(最快,不依赖源码) +docker tag qihu-aiflow:backup-20260718-001 qihu-aiflow:with-deps +docker restart qihu-aiflow + +# 方案 B:回滚到某个历史发布镜像 +docker tag qihu-aiflow:v2026.07.18.1 qihu-aiflow:with-deps +docker restart qihu-aiflow + +# 方案 C:源码回滚 +git checkout v2026.07.18.1 +docker cp /www/wwwroot/qihuaiflow/app qihu-aiflow:/app +docker restart qihu-aiflow +``` + +## 6. VERSION 文件维护 + +- 仓库根目录 `VERSION` 为机器 + 人共读的清单,必须包含 `VERSION=` / `ENV=` / `DATE=` / `BASE_IMAGE=` / `BACKUP_IMAGE=` 五个字段。 +- 每次发布更新 `VERSION` 与 `DATE`,并在"本版本变更"小节追加一行摘要。 +- `BACKUP_IMAGE` 必须填写本次发布前实际生成的 `backup-*` 标签,作为可审计的回滚点。 + +## 7. 旧标签处理 + +- 旧 `-recover` 系列标签(`v2026.07.12-recover` 等)**保留不删**,仅停止使用,避免丢失历史快照索引。 +- 旧镜像标签 `AIFlow v2.0.1` / `v2026.07.14` / `v2026.07.14-nav` 视为历史资产,新发布不再沿用该命名。