更新日志
reglow-library 后端基础库版本更新记录
当前发布版本:v0.14.3(
reglowPython;Node.js / Java / Rust 为 0.14.2)。
0.14.3 (2026-10-26)
修复版 0.14.3(Python):类内
list方法遮蔽内置类型,导致三个模块加载失败。
Fixed
- 注解求值错误:
open_api/tenant/principal_member的 Service/Repository 在类中定义了list()方法,其后方法注解里的list[int]在类体作用域内被解析成该方法对象,Python 3.12 导入时抛TypeError: 'function' object is not subscriptable,reglow.modules.{open_api,tenant,principal_member}.router均加载失败 - 统一修复方式:上述模块以及其他定义了
list()的模块(principal、studio.tools.registry)统一补from __future__ import annotations,注解延迟求值;同时覆盖从 0.9.0 升级到 0.14.2 后暴露的同类隐患 - 生成模板:
reglow-agent的service.py.j2/repository.py.j2同步加上该导入,重新生成的业务模块不再复现 - 版本常量:
APP_VERSION同步为0.14.3
0.14.2 (2026-10-25)
修复版 0.14.2(四语言同步):多租户存量库补列,并补齐审计链跨语言互校与支付测试覆盖。
Fixed
- 存量库缺列:启动自愈 / 迁移阶段幂等补
sys_tenant.principal_id列与索引(Pythonreglow/scripts/migrate_tenant_principal.py、Node.jsreglow/scripts/schema.tsP0 补列计划、Rust 迁移m20261024_000009_tenant_principal_id);此前该列只在建表脚本中,早于该列创建的库读取租户列表会报no such column - Rust:支付用例对
unionpay的断言改为「不支持的支付服务商」(银联尚未接入 Rust 版),与实现一致
Changed
- Java 审计链:
AuditChain抽出静态verifyRows(CryptoProvider, List<SecurityAuditLog>),verify()改为复用,跨语言互校可直接复用生产校验逻辑
Tests
- Java 跨语言互校:新增
AuditChainCrossVerifyTest(sqlite-jdbc),正向校验 Python 写入的 fixture、反向追加后由 Python / Node / Rust 校验通过,四语言互校闭环 - 支付覆盖:Node.js 补齐微信退款 / 关单 / 分账 / 渠道注册表用例(790 用例全绿);Java 新增
PaymentEventsTest/PaymentProviderRefundSplitTest等支付用例,覆盖率基线按实测上调
0.14.1 (2026-10-24)
修复版 0.14.1(四语言同步):版本常量滞后、Python 包形态冲突与 Node.js 依赖安全问题。
Fixed
- 版本常量:
APP_VERSION/ OpenAPI 文档版本默认值此前仍为0.13.0,现同步为0.14.1 - Python 包形态:补
reglow/__init__.py,将reglow显式声明为常规包,避免与 site-packages 中同名旧版本合并为 PEP 420 命名空间包(MultiplexedPath),修复importlib.resources.files("reglow")定位静态资源失败 - Node.js:Fastify 生态升级至 5.x(消除
@fastify/static路径穿越等漏洞,npm audit0 告警);运行时要求 Node.js >= 26
0.14.0 (2026-10-24)
四语言同步发布 0.14.0:7 个 Python 先行模块全部转为 L2 同构(ai_usage / principal / principal_member / tenant / billing / open_api / workflow),Python 已无 L3 独有模块;智能客服转人工排队与坐席并发容量四语言对齐;多租户部署模式
DEPLOY_MODE落地。
Added
- ai_usage 转为 L2:表
sys_ai_usage/sys_ai_model_price/sys_ai_price_sync_log;六种计价模式(per_token / per_image / per_second / per_request / per_megapixel / per_video_token)、北京时间工作日峰谷档位、append-only 价格快照、记账 upsert、报表聚合、价格 CRUD、XLSX/CSV 导入导出、官方价格同步适配器与媒体任务对账退避 - principal / principal_member 转为 L2:主体(个人 / 企业 / 个体户)+ 认证状态机(unverified → pending → approved/rejected,可重提 / 吊销)、自动编码、许可证 JSON、审核留痕;成员双轨关联(
user_id/employee_id二选一)、owner/admin/staff、owner 每主体唯一、邀请态 pending → active - tenant 转为 L2:租户 CRUD / 详情 / 成员 / 批量删除;新增
DEPLOY_MODE(single_tenant/saas_multi_tenant)双轨,JWT claim →X-Tenant-Id优先级解析、fail-closed、startupGuard(只信数据不信声明) - billing 转为 L2:表
sys_billing_plan/sys_billing_account/sys_billing_usage;套餐 / 账户 / 计量;开关BILLING_ENABLED且需DEPLOY_MODE=saas_multi_tenant,关闭时除GET /plans外统一 403;收款复用 payment - open_api 转为 L2:表
sys_open_api_app/sys_open_api_log;应用密钥、HMAC-SHA256 签名 v1(key = sha256(secret)、±5 分钟时间窗、nonce 防重放)、配额与调用审计 - workflow 转为 L2:表
sys_workflow_def/sys_workflow_instance/sys_workflow_task;JSON DSL(start / approve / end 节点)、条件求值(无 eval)、串行单分支推进、任务审批 - 智能客服转人工排队:坐席并发容量
max_sessions(默认 5)、FIFO 派单dispatch_queue、queue_position/waiting_total/online_agents;新增GET /cs/queue-status;无在线坐席时不排队直接提示「当前人工坐席忙,请稍后重试」 - 客服 SDK 模板同步:
sdk_template.html支持排队位次提示、10s 轮询与queue_update推送、SSEtransfer_required携带status/queue_position
Changed
- 契约升级:
contract/modules.jsonv7(共同模块集 27 → 34,Python 已无 L3 独有模块)、contract/permissions.jsonv13(四语言各 172 个控制器强制点)、contract/tenant.jsonv3 - 数据库:
db/schema.sql补齐 13 张新表;新增migrate_cs_agent_max_sessions.py(坐席容量列迁移)
0.13.0 (2026-10-24)
四语言同步发布 0.13.0:支付退款/分账/关单闭环 + Provider 注册表与能力声明 + 支付事件总线;照片管理默认相册重复记录自愈。
Added
- 支付退款闭环:Provider 新增
refund()(微信 V3 / 支付宝 / 银联 / mock);新增payment_refund表、create_refund/retry_refund/list_refunds/auto_refund_payment/reconcile_abnormal_payments,支付单状态新增refunding/refunded - 支付分账:Provider 新增
split()/query_split()/return_split()/finish_split()/bind_split_receiver()与SplitReceiver/SplitResult;新增payment_split/payment_split_receiver/payment_split_return表 - Provider 注册表与能力声明:
register_payment_provider()/list_payment_providers()/get_provider_capabilities();基类新增capabilities(),业务扩展新渠道无需改基础库 - 通用回调与能力接口:
POST /payment/notify/{provider}、GET /payment/providers、GET /payment/capabilities - 支付事件总线:
payment.succeeded/refund.succeeded/refund.failed/split.*等事件,业务注册处理器即可扩展 - 关单与退款查询:
close_order()、query_refund() - AI 用量价格列表关键字搜索:
GET /analytics/ai-usage/pricing新增keyword
Fixed
- 照片管理接口 500:
_ensure_default_album遇到历史重复默认相册不再抛MultipleResultsFound,保留最早一条、迁移照片后删除重复记录
0.12.1 (2026-10-23)
支付修复版 0.12.1(四语言同步)。
Fixed
- 支付宝 RSA2 请求签名:待签名串此前剔除了
sign_type,与网关校验串不一致,表现为invalid-signature、收银台无法打开;现改为只剔除sign
Added
- 支付宝
native平台:create_trade_by_platform(platform="native")走当面付alipay.trade.precreate,未开通当面付时自动回退电脑网站支付 - 支付宝小程序 JSAPI 前置:新增
AlipayProvider.get_user_id_by_code()与GET /api/v1/payment/alipay/buyer-id?code= - Mock Provider 支持
native
0.12.0 (2026-10-22)
Python 发布 0.12.0:入驻主体 / 成员、租户主体挂靠、仪表盘概览与照片访问量、技能种子并发安全、契约 v9。
Added
- 入驻主体
principal(L3,Python 先行):sys_principal—— 主体类型 + 认证字段 + 审核留痕;认证状态机unverified → pending → approved / rejected - 主体成员
principal_member:sys_principal_member—— user_id / employee_id 双轨 + 关系唯一约束 + owner/admin/staff + pending/active/disabled - 租户扩展:
sys_tenant新增principal_id;租户列表支持按主体筛选;新增GET /tenants/{id}/members - 仪表盘概览:新增
GET /dashboard/overview—— 基础统计 + 内容访问 Top10 + 客服待接入 + 工坊待审批 - 照片访问量:
cms_photo新增view_count,新增幂等补列脚本 - 契约 v9:登记租户 / 主体 / 成员 14 个权限码;analytics 转为四语言 L2 同构
Changed
- 技能种子并发安全:
skill._ensure_seed改为「按名称补齐缺失内置技能 + 事件循环级锁」
0.11.0 (2026-10-13)
Python 发布 0.11.0:智能工坊(技能库 + 角色 + 工作流 + 一句话自动编排 + 产物资产 + MCP 服务)由业务模块迁入基座,并同步移植 Java / Node / Rust;内容封面引用系统素材;照片 / 文章 / 视频系统默认分类与默认相册。
Added
- 智能工坊
studio(L2 四语言同构):角色 / 工作流 / 运行三大核心 + 一句话任务(compose)- 一句话自动编排:
POST /studio/compose/plan(LLM 从角色库自动组队 → 输出带依赖的 DAG)、/compose/run、/compose/polish - 编排引擎:轻量 DAG 执行器,依赖满足即并发执行,遇人工审批节点暂停,支持
approve/rework/retry - 角色库:CRUD +
toggle;内置 44 个营销角色(10 个领域),人设 v2 结构化;用户自建角色永不改动 - 产物资产
studio_asset:只记工坊语义 + 引用系统素材(material_id为唯一真源) - 长任务
studio_job:图片 / 视频生成等耗时任务的外部task_id轮询与断点恢复 - 工具注册表 / MCP 入向接入:
ToolSpec/ToolRegistry;studio_mcp_server/studio_mcp_tool(http / stdio / sse)
- 一句话自动编排:
- 技能库
skill(L2,表studio_skill):提示词(kind=prompt)或可执行工具(kind=tool,runtime 支持 builtin / http / mcp);内置 6 条技能种子 - 智能工坊菜单:一级菜单 + 一句话任务 / 角色库 / 技能库 / 工作流 / 运行记录 / 产物资产 / MCP 服务 7 个二级菜单
- 内容封面引用系统素材:
cms_article/cms_video新增cover_material_id - 照片管理:新增
POST /photos/(先建占位、后上传)、POST /photos/upload、POST /photos/{photo_id}/image - 系统默认分类 / 默认相册:未指定分类 / 相册时自动归入,幂等创建且不可删除
- 数据埋点与分析模块
analytics(Python 先行 / L3):应用 / 事件 / 会话 / 页面四张表;公开采集POST /api/v1/analytics/collect;管理端应用 / 概览 / 事件 / 页面;后续 P1–P4 补齐元素维表、搜索与偏好聚合、漏斗 / 留存 / 热点图、埋点规则、治理配置、多租户与 ClickHouse 存储适配
Changed
- 照片模型移除
material_id(落实素材中心去重) - 垃圾素材清理引用保护调整:改为「文章封面 / 视频封面 / 工坊产物
StudioAsset」 - 存量库补列迁移:新增
migrate_studio_p0.py(幂等ALTER TABLE ... ADD COLUMN)
0.10.0 (2026-10-03)
四语言发布 0.10.0:行政区划种子纳入种子脚本(存量库补齐)+ SQLite db 目录自动创建(Python)。
Changed
- 行政区划种子纳入种子脚本(存量库补齐):
init_data.py新增seed_regions调用,存量库重跑 seed 也能补齐;播种失败仅告警不阻断 - SQLite db 目录自动创建:初始化引擎前确保
DB_SQLITE_PATH所在目录存在,修复默认./db/reglow_admin.db首次启动报 "unable to open database file"
0.9.0 (2026-09-30)
四语言发布 0.9.0:客服管理菜单补全(坐席工作台 / 坐席管理 / 对话记录)+ 知识库权限码统一 cs:kb:* + 智能客服接口拉平(/search、/agents/assign、POST /sessions)+ 行政区划改名行政区域。
Added
- 客服管理菜单补全:新增 坐席工作台(cs-agent,
cs:session:list)、坐席管理(cs-agents,cs:agent:list,含 新增/编辑/删除坐席cs:agent:create/update/delete)、对话记录(cs-sessions,cs:session:list,含 查看对话记录cs:session:view)三个二级菜单;企业知识库按钮权限统一为cs:kb:create/update/delete/import - 智能客服接口拉平(对齐 Java):新增
GET /configs/{config_id}/search(cs:kb:list,配置知识库检索)、POST /agents/assign(cs:agent:update,访客分配坐席,configId 缺失返回错误码 1001)、POST /sessions(cs:session:update,创建会话)
Changed
- 知识库权限码统一为
cs:kb:*(前端cs:knowledge_base:*同步调整),消除前后端权限码不一致导致的知识库管理功能不可用 - 智能客服菜单移除重复的「查看对话记录 / 删除对话记录」按钮权限(归属对话记录页面)
- 行政区划菜单改名「行政区域」
- 版本号
0.8.0→0.9.0,同步pyproject.toml/APP_VERSION/reglow/README.md
0.8.0 (2026-09-29)
四语言发布 0.8.0:智能客服 SDK 展示配置(二维码 / 联系方式 / 常见问题 / 主题色)+ 行政区划模块 region(补齐四语言)+ 后台创建用户接口 + init_data 幂等修复。
Added
- 智能客服 SDK 展示配置:每个客服配置独立支持二维码(标题 / 描述 / 图片URL)、联系方式(服务热线 / 邮箱 / 在线咨询链接 / 地址)、常见问题面板(开关 + 标题)、SDK 主题色
primary_color(留空默认#4f46e5,作用于悬浮按钮与聊天窗主题色)- 新增客户端公开接口
GET /api/v1/cs/sdk-config,返回二维码 / 联系方式 / 常见问题 / 主题色等公开配置(常见问题自动从关联知识库提取,优先source_type=faq,上限 50 条) sdk_template.html全面升级:按primary_color渲染悬浮按钮与聊天窗主题色
- 新增客户端公开接口
- 行政区划模块
region(新增,L3 Python 先行):六级行政区划(国家 / 省 / 市 / 区县 / 街道乡镇 / 村),内置pcas.json种子;提供/api/v1/regions/meta|children|path|resolve懒加载接口,服务启动自动幂等播种国家级数据 - 后台创建用户:新增
POST /admin/api/v1/users(权限码system:user:create),新增USERNAME_EXISTS = 9205错误码;用户新增nationality(国籍)字段(同步至UserResponse/UserListResponse/UserInfoResponse与资料编辑)
Changed
init_data.py_sync_seed_menus幂等修复:空库跳过(交由create_menus全量创建)、新增按父目录同名的兜底匹配、执行顺序调整到_repair_renamed_permissions之后- 契约登记:
contract/modules.json(python 27→28 登记region,java 23→24 登记seed)、contract/permissions.json(登记system:region:create/delete/list/update与system:user:create) - 版本号
0.7.0→0.8.0,同步pyproject.toml/APP_VERSION/reglow/README.md(模块数 26 → 27)
0.7.0 (2026-09-24)
四语言发布 0.7.0:菜单路由统一相对路径(G6)+ db/ 参考 SQL 目录 + 种子初始化幂等重构。
Added
- 菜单路由统一相对路径约定(G6):页面(C)菜单
path由平铺绝对路径改为相对父目录路径 (如/articles→articles),目录(M)菜单保留绝对前缀,完整路由 = 父path + 子path- 新增
_repair_menu_paths()幂等修复(在「已初始化即跳过」之前执行,存量库升级重跑 seed 即自动重写),ABSOLUTE_MENU_PATHS = {"/dashboard"}例外清单(工作台落地页保持绝对路径) - 种子菜单树同步改为相对路径
- 新增
- db/ 参考 SQL 目录:新增
db/schema.sql与db/README.md,供查看 / 手工初始化;DB_SQLITE_PATH默认值改为./db/reglow_admin.db(统一存放于 db/ 目录,已被 gitignore) tests/test_init_data.py新增菜单路径相对化 / 修复逻辑的回归测试
Changed
init_data.py菜单树路径相对化;新增repairSysVersion()幂等同步系统版本- 版本号
0.6.0→0.7.0,同步pyproject.toml/APP_VERSION/reglow/README.md
0.6.0 (2026-09-23)
四语言发布 0.6.0:AI-Native 迁出为独立包
reglow-agent+ Scalar API 调试台 + 等保审计链 + 权限码契约收敛(G3/G8)+ 多租户安全收敛。
Added
- Scalar API 调试台(
/scalar,仅 DEBUG):现代 UI + 内嵌 Postman 式调试台(Test Request / Bearer 持久化 / 顶部搜索 / 分类折叠), 替代 Swagger UI 的联调体验;静态资源本地自托管(reglow/static/docs/scalar.standalone.js),不依赖境外 CDN; 原/docs、/redoc保留;文档标题统一为 ReglowAdmin - DEBUG 按部署环境自动判定(与 Node / Rust / Java 一致):新增
APP_ENV(dev 默认); 开发(未设置或 dev/test)默认开 DEBUG,生产(APP_ENV=production/prod)默认关;显式DEBUG永远优先。 原「Settings 过不了生产安全校验才回退 DEBUG」的判定废弃(开发配置 JWT_SECRET 不再被误判为生产) - 仪表盘模块(
reglow/modules/dashboard,G1):原server.py内联路由抽出为独立模块 (controller.py/service.py/router.py),路径与返回不变(/admin/api/v1/dashboard/stats,5 项指标)。 抽出后四语言在「dashboard 是模块」这一点上形态一致(java / rust 早已是模块,node 本次一并补齐) - 跨语言契约门禁(P4):
tests/test_contract.py(轻档,pytest -m contract):权限码登记归属 / 模块清单双向一致 / 归属守卫 / C1 约束 / 业务残留守卫tests/test_contract_permissions.py:按语言各用一条抽取规则,断言实际权限码集合与contract/permissions.json登记双向相等tests/test_contract_modules.py(7 例):模块目录 ↔ 契约矩阵双向一致、L2 四语言齐、L4 不得回流、counts必须等于实测- 本轮据此修正
contract/modules.json两处失真(counts21/26/22/21/22 → 23/27/23/23/23、security.impl→ 四语言) - 实测结论:四语言共同模块集完全相同(各 23 个),python 另有 4 个 L3 模块(billing / open_api / tenant / workflow)
- 端到端门禁(重档,P4):
pytest -m release_gate—— 生成六层 → 产物可编译 → 可导入且列齐全 → 起服务跑通 - 契约文件(
contract/,需与代码同 PR 维护):modules.json/tenant.json/audit_chain.json;产品优化执行方案.md - 相册业务策略扩展点(
modules/photo/policy.py,P3):AlbumPolicy(有效期天数 / 空间额度 / 默认来源)+register_album_policy()/get_album_policy()/reset_album_policy(); 库只定义协议,业务值由消费方注册;基础库不对任何业务额度与时长做假设
Changed(破坏性)
- AI-Native 生成能力迁出基础库:
schema_dsl/agent/agent_runtime/eval/gen_templates迁移至同仓库独立发行包reglow-agent(Python-only)- 基础库不再包含这 5 个模块,也不再自动挂载
/agent/*、/schema/validate等路由 - 应用侧需显式挂载:
import reglow_agent; reglow_agent.register(app)(同时注册本包 ORM 模型,须在create_all之前) - 迁移目的:使基础包在四语言间同构——AI-Native 不再是"Python 的对齐例外",而是库的一个消费者
- 基础库不再包含这 5 个模块,也不再自动挂载
schema_dsl.expr→reglow.core.expr(留在基础库):白名单表达式求值器是生成产物的运行时依赖(生成的service.py/schema.py会import它),因此不随生成引擎迁出;生成模板与既有产物的 import 路径需同步更新core/plugin.py增加路由发现扩展点:discover_routers(roots=...)/discover_client_routers(roots=...)支持额外模块包;抽出mount_admin_routers/mount_client_routers供附加包复用标签前缀约定- 依赖瘦身:
jinja2/pyyaml移出基础库依赖;coverage source改回["reglow"];packages.find显式排除reglow-agent - 业务残留下沉到消费方(P3):
core/redis_keys.py移除视觉业务 key(vision_cache_key/compose_daily_key等 6 个,库内零使用),key 格式不变,已迁至消费方modules/photo的另存策略不再内置业务值:新增扩展点modules/photo/policy.py,有效期 / 空间额度 / 默认来源改由业务注册;未注册时为中性默认- 清除库内行业名词:相册 code 示例(
hair/clothing/photo_bg)、"智能证件照"默认来源、列注释中的发型/证件照措辞、坐席注释中的「摄影师」
- 权限码与菜单/前端对齐(G3 / G8,跨语言契约收敛):
- 子实体改用细粒度权限码(破坏性 · 权限收紧/放开并存):文章/视频/照片的「分类 / 合集 / 相册」端点原先与父实体共用
content:article:create一类粗码,而init_data.py的菜单按钮与前端reglow-design用的是content:article_category:create等细码 —— 结果是用户被授予细码后按钮可见、点击却 403。现控制器与菜单一致:content:{article|video|photo}_category:*、content:{article|video}_collection:*、content:photo_album:*; 父码只保留内容本体端点(含 publish/upload)。实际影响很小:只有「只授了父码按钮、没授对应子实体按钮」的自定义角色会失去该操作 - 菜单排序 / 部门排序 / 协议发布各单列一个码:
PUT /menus/batch-sort→operation:menu:sort、PUT /depts/batch-sort→system:dept:sort、POST /agreements/{id}/publish→system:agreement:publish - AI 模块按内容域分码:
/video/generate→content:video:create、/video/task/{id}→content:video:list、/image/generate→content:photo:create、/image/task/{id}→content:photo:list;/models与/chat仍为content:article:create - 菜单种子改名 + 存量库自动修复:
system:material:group_update→system:material_group:update(action 必须是最后一段);init_data.py新增幂等的_repair_renamed_permissions()(放在「已初始化即跳过」之前),升级后重跑一次 init_data 即自动完成改名,无需人工改库 - 素材模块端点权限归位:
POST /materials/fetch-images与/fetch-videos由content:video:create改为system:material:list(只返回 URL 列表、不落库,属读操作);DELETE /materials/recycle-bin/permanent维持「仅超管」,与其余三语言一致
- 子实体改用细粒度权限码(破坏性 · 权限收紧/放开并存):文章/视频/照片的「分类 / 合集 / 相册」端点原先与父实体共用
- 版本号
0.5.0→0.6.0,同步pyproject.toml/APP_VERSION默认值 /README.md
Security
- 素材上传端点补齐权限强制点(G3):
POST /admin/api/v1/materials/upload原先只校验登录、不校验权限(fail-open), 而初始化菜单里早已登记「上传素材」按钮(system:material:upload)—— 该权限此前只是一枚装饰性按钮。 现加PermissionChecker("system:material:upload"),与 java 一致(node / rust 本次同步补齐)- 行为变更:原先任何已登录员工都能上传素材;现在需要
system:material:upload。超管不受影响, 但既有部署中未勾选该按钮的自定义角色会失去上传能力,升级时需在角色里补勾
- 行为变更:原先任何已登录员工都能上传素材;现在需要
- 启动自检:多租户错配拒绝启动(T3 / T5 兜底):新增
reglow/modules/tenant/guard.py的assert_tenant_guard(), 在server.py的lifespan启动阶段执行 —— 库中任一表存在tenant_id非空数据,而当前又不处于「已实现隔离的多租户模式」时拒绝启动(TenantMismatchError)- 单租户轨 + 共享库是最危险的误配(
single_tenant是默认值,过滤完全旁路)→ 正是本自检的首要目标;列存在但全 NULL(预留列)不拦 - saas 轨视为已实现隔离,但因隔离依赖生成代码显式调用
apply_tenant_filter(未做会话级强制注入,T2),此轨下额外输出一条 WARN - 逃生阀
TENANT_GUARD=enforce(默认)/off(仅 WARN,且留痕);只信数据、不信声明
- 单租户轨 + 共享库是最危险的误配(
- 修复多租户隔离 fail-open 缺陷(
modules/tenant/context.py):apply_tenant_filter原先在tenant_id is None时静默不过滤 —— 多租户轨下一次 Token 解析失败即退化为「跨租户全量可见」,这是越权而非降级。现改为 fail-closed: 多租户轨且解析不到租户上下文 → 抛ForbiddenException拒绝;单租户轨行为不变(完全旁路)
Fixed
- 审计链改用独立的
ts列作为哈希输入(重要 · 生产级隐患):原实现用created_at重算哈希, 而TimestampMixin.created_at无显式类型 → MySQL 上落DATETIME(小数秒被丢弃), 导致写入时用真实微秒算出的 hash 与读回重算(微秒已变 0)的结果不一致 →verify()会把整条链误报为「哈希被篡改」SecurityAuditLog新增ts列(String(32),写入时的规范化时间戳字符串),verify 直接读回,不再由created_at重新格式化- 新增
test_audit_chain_survives_datetime_precision_loss;存量表需加列并回填(见contract/audit_chain.json的gaps.A3)
- 审计链时间戳格式确定化(P5-b 前置):
AuditChain改用固定格式YYYY-MM-DDTHH:MM:SS.ffffff(本地墙钟、微秒为 0 也补齐 6 位、不带时区后缀),新增TS_FORMAT/format_ts()作为跨语言参照- 原先用
datetime.now().isoformat():微秒为 0 时会省略小数部分,同一实现产出两种长度,java / node / rust 无法稳定复刻 → 跨语言链会静默断裂 - 存量数据注意(见
contract/audit_chain.json的gaps.A1):微秒恰为 0 的旧记录需按链序补零重算
- 原先用
- 套餐词汇统一(G4):
tenant.package由free/standard/pro改为与billing的PLAN_FREE/PLAN_MEMBER/PLAN_METERED一致的free/member/metered(默认值standard→free,CreateTenantRequest/UpdateTenantRequest的正则同步收紧为^(free|member|metered)$)- 有意不 import billing 常量:私有化单租户部署下
BILLING_ENABLED可关闭,tenant 不应依赖 billing
- 有意不 import billing 常量:私有化单租户部署下
Tests
- 新增
test_apply_tenant_filter_fail_closed(多租户轨缺上下文必须拒绝) - 新增
test_ai_native_routes_absent_from_base_library(基础库不得含 AI-Native 路由) - 新增
tests/test_contract.py/test_contract_permissions.py/test_contract_modules.py(契约门禁,见上) - 新增契约门禁
test_no_business_leakage_in_base_library:扫描reglow/内的行业名词,防止业务概念再漂回基础库 - 新增
test_save_my_photo_neutral_policy_by_default:未注册业务策略时不过期、不填来源 test_photo_client.py改为显式注册业务策略(复刻消费方行为,同时验证扩展点生效);原USER_PHOTO_QUOTA_BYTES断言改为注册小额度策略- 修复
reglow-agent生成器测试的跨用例污染:test_agent_engine.py导入生成产物后未清理sys.modules,导致同类用例无法单独运行 - AI-Native 相关 13 个测试文件随包迁至
reglow-agent/tests/;test_expr.py保留(测reglow.core.expr)
0.5.0 (2026-09-22)
V1.0 内核补齐 + AI-Native 生成能力落地。
Features
- 多租户(
reglow/modules/tenant):single_tenant/saas_multi_tenant双轨,DEPLOY_MODE切换;提供租户 CRUD 与租户上下文(get_tenant_context/apply_tenant_filter),SaaS 轨按tenant_id行级隔离 - 计量计费(
reglow/modules/billing):免费 / 会员 / 按量三档(PLAN_FREE/PLAN_MEMBER/PLAN_METERED),复用 payment 收款,BILLING_ENABLED开关(私有化单租户轨可关闭) - 开放 API(
reglow/modules/open_api):应用密钥(app_key / app_secret)+ HMAC-SHA256 签名认证 + nonce 防重放 + 每日配额限流 + 调用审计(OpenApiApp/OpenApiCallLog) - 轻量流程审批(
reglow/modules/workflow):表单化 JSON DSL(开始 / 审批 / 结束节点 + 条件分支),审批链复用 data_scope,审批通知挂靠 message - 等保支撑(
reglow/modules/security):审计防篡改哈希链(AuditChain)+ 三员角色模板(系统管理员 / 安全管理员 / 审计管理员)+ 国密算法抽象(CryptoProvider/Sha256Provider/SmProvider),SECURITY_CRYPTO_PROVIDER切换 - AI-Native 生成能力:
schema_dsl:业务 Schema DSL v1 —— 13 种字段类型、聚合校验(保留字段 / 保留模块)、enum 自动建字典agent:生成引擎 L1(Schema → 后端六层 + Alembic 迁移 + 菜单/字典种子 + 前端页面与 api.ts)与 L2 需求对话(自然语言 → Schema DSL,支持澄清追问与迭代修正)agent_runtime:Agent 运行时骨架(ToolRegistry工具中心 /AgentAudit全量留痕 /DefaultAgentLoop执行循环)eval:生成评测集 v1(golden 10 场景 + 自动评分 CLI,通过率 ≥80% 为门槛)
- Skill 体系 4 套:
reglow-backend/reglow-frontend/reglow-deploy/reglow-business(.agents/skills/)
Fixes
- 修复操作日志写入失败(
result变量遮蔽) - 修复协议历史版本站内提醒成功路径
TypeError - 修复
open_api每日配额时区偏差 - 修复运维迁移脚本 SQL 值解析的转义引号缺陷
- 修复 payment / customer_service 三处已确认缺陷
Changed
- 新增统一服务端排序契约(
reglow/common/sort.py):管理端分页列表支持sort_by(最多 3 项,field或field:dir)与sort_order;逐项校验非法/敏感/未知字段并跳过,用户输入永不直接拼入ORDER BY schema_dsl字段类型集增补float- 测试覆盖率门槛提升至 ≥90%(TOTAL 66% → 97%)
- 版本号
0.4.5→0.5.0,同步pyproject.toml/APP_VERSION默认值与README.md
0.4.5 (2026-09-14)
Features
- 新增微信模块(
reglow/modules/wechat,客户端公开接口):POST /api/v1/wechat/miniapp/openid(小程序 code 换 openid)、POST /api/v1/wechat/miniapp/qrcode(生成小程序码,返回data:image/png;base64,...) - 新增
reglow/core/wechat.py微信基础能力:jscode2session/get_miniapp_access_token/get_miniapp_qrcode。access_token 为应用级单例资源,统一在此单点缓存(按 appid 加锁 + 双检),避免各业务模块各自刷新互相顶掉;小程序 AppSecret 读取wechat_mini_app_secret
Fixes
- 微信 JSAPI 下单 appid 按 openid 来源选择:
miniapp(小程序,openid 来自wx.login)改用小程序 AppID 下单,新增mpweb(微信内置浏览器/公众号网页,openid 来自网页授权)用公众号 AppID,两者未配置时互相回退;修正 0.4.3 起「一律公众号优先」导致小程序 JSAPI 报「appid 和 openid 不匹配」的问题
Changed
WeChatPayProvider.create_jsapi_trade新增可选参数appid(不传保持旧行为);create_trade_by_platform支持平台值mpweb
0.4.4 (2026-09-11)
Features
- 忘记密码找回(用户端):新增
POST /api/v1/auth/reset-password找回密码接口(手机验证码重置),配套新增sys.forgot_password_enabled配置开关(config 模块),员工 schema 同步扩展 - 智能客服:新增
GET /agent/me当前坐席信息接口(返回 id / employee_id / display_name / status),供坐席工作台进入前预校验,未绑定坐席抛 403
0.4.3 (2026-09-06)
Fixes
- 微信 JSAPI 下单 appid 改为公众号优先:
create_jsapi_trade原优先mini_app_id(小程序),而本库 openid 一律来自公众号网页授权(self.appid),导致下单报「appid 和 openid 不匹配」;改为appid = self.appid or self.mini_app_id,保证下单 appid 与 openid 来源一致(公众号未配置时才回退小程序)
Features
- /docs 文档页本地自托管:swagger-ui / redoc 静态资源内置到包内(
reglow/static/docs/),不再依赖境外 CDN;未打标签的路由兜底归入分类
0.4.2 (2026-09-02)
Fixes
- 内置智能客服 SDK(sdk_template.html)成功判断对齐:历史恢复、转人工、图片上传三处成功判断由
code=1改为code=0,与 0.4.0 统一响应契约(code:0 + success)完全一致,杜绝code==1残留导致 SDK 接口误判失败 README.md版本示例同步更新
0.4.1 (2026-09-02)
Changed
server.py统一响应重构:dashboard 统计、字典下拉(单个/批量)等内联接口由手写裸 dict(code:1)改为ApiResponse.success(...),与全库统一响应契约(code:0 + success)完全一致,杜绝手写响应遗漏success字段README.md版本示例同步更新
0.4.0 (2026-09-02)
Changed(破坏性契约变更)
- 统一响应格式:成功码由
code=1改为code=0,并新增success布尔字段- 成功响应:
{"code": 0, "success": true, "msg": "操作成功", "data": ...} - 失败响应:
{"code": <错误码非0>, "success": false, "msg": "...", "data": null} - 分页响应:外层同上,
data: {items, total, page, size} ApiResponse.success使用@model_serializer注入success(避免字段与类方法命名冲突),成功码code==0ApiResponse.fail默认错误码由0改为1(保证code==0恒为成功)
- 成功响应:
- 全局异常处理:
AppException/ 参数校验 / 兜底异常响应统一补充success: false字段
⚠️ 升级注意:依赖
code==1判断成功的前端需同步升级(配合@reglow/designv0.2.0),否则成功响应会被判为失败。
0.3.16 (2026-08-22)
Features
- 多端登录会话管理:基于 Redis 实现有状态会话管理,叠加在无状态 JWT 之上
- 设备类型识别:自动从 User-Agent 解析设备类型(mobile / tablet / desktop),支持浏览器、Android、iOS、鸿蒙、微信/支付宝/抖音/百度小程序、快应用
- 同类型设备互斥:员工每设备类型最多 1 个会话,用户每设备类型最多 3 个会话(可配置
SESSION_MAX_PER_DEVICE_TYPE),超过上限自动踢出最早会话 - 会话校验中间件:每次 API 请求校验 JWT 的
jti与 Redis 会话一致性,不匹配返回 401 - Redis 不可用降级:Redis 故障或重启时自动降级为纯 JWT 验证,不影响基本登录功能
- 新增 API(用户端
GET/POST/DELETE/PUT /api/v1/auth/sessions):会话列表、强制登出、备注编辑 - 新增配置:
SESSION_ENABLED(总开关)、SESSION_MAX_PER_DEVICE_TYPE(每设备类型上限)
- RedisStore 扩展:新增 sorted set 操作(zadd/zcard/zrange/zrem/zrangebyscore)和 hash 操作(hset/hget/hgetall/hdel/exists/expire/keys),均带熔断降级
- JWT 签发扩展:
create_access_token/create_refresh_token支持可选参数jti、session_id、device_type;新增generate_jti()/generate_session_id()工具函数 - 员工端登出:
POST /auth/logout实际销毁服务端会话,Token 立即失效 - 用户端登出:新增
POST /api/v1/auth/logout,销毁服务端会话
Improvements
parse_user_agent新增鸿蒙系统(HarmonyOS / OpenHarmony)识别、ArkWeb 浏览器识别、小程序环境识别(微信/支付宝/抖音/百度/快应用)LoginLog模型新增device_type、session_id字段,登录日志记录设备类型和会话关联
部署注意事项
- 数据库迁移:
sys_login_log表需新增两列: - Redis 持久化建议:开启
appendonly yes减少重启对会话的影响(未开启时 Redis 重启后已登录用户不受影响,但设备互斥功能暂时失效,下次登录自动恢复) - 配置项:在
.env中可按需覆盖SESSION_ENABLED和SESSION_MAX_PER_DEVICE_TYPE(默认启用,员工 1/1/1,用户 3/3/3) - 旧 Token 兼容:不含
session_id的旧 JWT 自动降级放行,不影响现有已登录用户
0.3.15 (2026-08-18)
Features
- photo 我的相册:新增照片重命名接口
PATCH /api/v1/photos/my/{photo_id}- 仅能修改自己的照片(越权返回 403)
- 新增
UserPhotoRenameRequestSchema(name必填,1~200 字符)
Improvements
- payment 支付单超时自动关闭:避免财务管理出现永久「待支付」挂起流水
- 新增
PAYMENT_EXPIRE_SECONDS(默认 30 分钟)与cancel_expired_pending_orders批量清扫函数(幂等,返回本次关闭的支付单供上层联动关闭关联业务订单) query_order_status查询 pending 状态时先做惰性超时闭合:超过有效期直接标记cancelled返回,不再查询支付渠道- 覆盖所有业务类型(credit_recharge / photo_hd / print_order / receipt 等)
- 新增
0.3.14 (2026-08-14)
Features
- 用户邀请注册与积分奖励:注册支持携带邀请码,注册成功后按积分规则发放奖励(新注册奖励 + 邀请人邀请奖励)
- 新增
modules/user/invite.py:邀请码编解码(用户 ID 加盐 base36 确定性生成,无需建表) UserRegisterRequest新增invite_code字段;注册服务懒加载接入方app.modules.credits发放奖励,失败不影响注册主流程- 新增
GET /api/v1/auth/invite:返回当前用户邀请码与奖励积分(分享链接由前端用自身域名拼接,避免代理环境返回后端地址)
- 新增
- 用户照片空间上限:
save_my_photo增加 100MB 空间校验(仅统计用户自行上传,管理员上传source=管理员上传不占空间),超限返回「相册空间不足(上限 100MB)」
Fixes
- 滑动验证令牌支持 Redis 不可用时内存降级(
_slide_verify_store),消费时校验过期时间;RedisStore.set_json返回写入结果(成功 True / 失败 False),供调用方判断降级
0.3.13 (2026-08-12)
Fixes
- 时区统一(修复时间少 8 小时):
datetime.now(timezone.utc)写入无时区 MySQL DATETIME 列时按 UTC 墙钟存储,比北京时间少 8 小时,全部改为datetime.now()(北京时间,与全库约定一致)- user:
registered_at注册时间、last_login_at最后登录(手机/邮箱/手机号+密码登录) - auth / employee:员工
last_login_at - 软删除:user / employee / dept / role / post 的
deleted_at - material:过期回收、AI 素材自动回收、垃圾素材清理、还原延期逻辑的
now与expire_at比较统一为北京时间,修复素材回收站删除时间显示偏移、AI 素材 2 小时自动回收延迟约 8 小时的问题 - photo:删除照片时联动素材软删除时间统一为北京时间
- user:
0.3.12 (2026-08-12)
Features
- 数据权限(数据隔离)引擎:新增通用数据权限能力
- 新增
core/data_scope.py:DataScopeProvider维度提供者协议 + 维度注册表 +resolve_data_scope解析(超管始终返回全部数据,维度未注册默认不限制) - 新增
modules/role/data_scope.py:部门维度内置实现DeptScopeProvider、行级归属过滤apply_owner_scope、角色范围解析resolve_role_scope - 支持五种数据范围:仅本人 / 本部门 / 本部门及以下(递归下级)/ 自定义部门 / 全部数据;员工多角色时取并集,任一角色为"全部数据"则整体放行
- 内容管理(文章 / 视频 / 照片)、智能客服(会话列表 / 会话消息)、日志(操作日志 / 登录日志)接入数据权限隔离,越权查看会话消息视为不存在
- 新增
- photo 照片管理与素材中心梳理
Photo模型新增creator_id创建人字段(管理端上传员工,作为数据权限归属)- 相册 / 照片列表默认排除用户私有相册 / 私有照片(新增
include_user_albums/include_user_photos查询参数) - 照片上传不再自动同步一份到素材中心(素材中心去重,仅存系统 / 业务资源)
- 客户端新增
GET /my/albums:我的相册分组列表(默认相册 + 管理员创建的独立相册,含封面缩略图与照片数) - 客户端
GET /my新增album_id相册筛选(不传返回全部相册照片)
- video 视频管理独立保存:新增
POST /videos/upload视频文件上传接口- 仅保存文件并返回 URL,不写入素材中心(封面图仍由前端上传到素材中心)
- 新增
VideoUploadResponseSchema
- core/config:新增
TENCENT_MAP_SK(腾讯地图 WebService 安全密钥,开启签名校验时必填)
Fixes
- 修复
get_current_employee的AuthorizationHeader 必填导致无 Token 请求控制台报错(改为可选Header(None))
0.3.11 (2026-08-08)
Features
- photo 用户相册:另存到「我的相册」的照片默认 365 天有效期
Photo模型新增expire_at列(到期时间),另存时自动写入now + 365 天GET /photos/my不再返回已到期照片(expire_at为空的历史照片不受影响)UserPhotoResponse新增expire_at字段,前端展示「到期时间 / 剩余天数」
0.3.10 (2026-08-08)
Features
- customer_service 会话列表:支持按应用筛选与应用名称展示
GET /cs/sessions新增app_id查询参数(按应用筛选会话)SessionResponse新增app_name应用名称字段,列表批量填充(list_configs_by_app_ids)
- customer_service 排队 AI 兜底:待接待排队中(status=1 且 agent_id 为空,管理员尚未接入)的会话,消息入库同时继续由 AI 兜底回复
- 仅"已接入坐席"(agent_id 非空)的会话消息才直接转发坐席、不调用 LLM
- 排队中跳过智能转人工重复判断(避免重复推送
transfer_required事件导致消息丢失)
- customer_service 知识库:重建索引支持失败块重试
rebuild_index/_rebuild_vector_cache改为不过滤向量化状态(list_all_chunks),重建时对之前失败的 chunk 一并重试
- 启动联调支持:新增
reglow.server一键启动入口(reglow-serve命令)与scripts/init_data.py初始化脚本server.py提供 FastAPI 应用工厂,自动加载基础模块路由,开箱即用init_data.py一键初始化菜单 / 权限 / 系统配置等基础数据
0.3.9 (2026-08-08)
Features
- customer_service SDK(sdk_template.html):客户侧对话体验增强
- 悬浮按钮新增未读消息角标(收起对话框时累计未读数,打开清零,99+ 封顶)
- 消息气泡上方显示昵称 + 时间(HH:MM),头像右侧布局调整
- 会话结束后客户重新咨询:自动创建新会话并重连 WebSocket(
session_id变化时断开旧连接重连),历史不写入已结束会话 - 流式回复中断(连接重置/后端重启)时恢复输入框并提示「网络中断,请重新发送」,避免 UI 卡死
- customer_service 后端:会话流转与坐席队列增强
- 新增
new_session事件:新会话 / 重新咨询创建时向所有在线坐席推送,坐席工作台实时刷新待接入队列 - 会话已结束(status=2)后客户重新咨询自动创建新会话
- LLM 上下文优化:历史消息角色归一化(
agent→assistant,兼容 LLM API),跳过业务系统消息(转人工/评分等),避免污染上下文
- 新增
- core/customer_service ws:Redis pub/sub 改为
get_message(timeout=1.0)轮询读取- 避免 socket_timeout 导致订阅频繁重启而丢失 publish 消息
Fixes
- 修复智能客服通信问题
- 修复打包遗漏
sdk_template.html(pyproject.toml新增package-data配置),此前安装包中缺失该文件导致 SDK 接口无法返回模板
0.3.8 (2026-08-08)
Features
- employee:新增
is_agent字段(是否开启坐席)- 创建/更新员工开启坐席时自动生成坐席记录(无则创建、已关闭则恢复启用)
- 关闭坐席时坐席记录置
enabled=0(不删除),删除员工时坐席记录一并物理删除 CreateEmployeeRequest/UpdateEmployeeRequest/EmployeeResponse/EmployeeListResponse均新增is_agent
- customer_service:坐席模型与接口增强
- 坐席接入标识
photographer_key→agent_key(页面?agent-key=路由,如 2) - 坐席新增
enabled字段(启用/关闭,关闭后不参与客户接入分配) - 新增
PUT /cs/agents/{agent_id}/enabled启用/关闭坐席接口 - 客服配置列表、会话列表新增
keyword搜索(app_name/app_id、session_id/visitor_name/visitor_id/summary) - 坐席按员工 ID / agent_key 查重(含软删除记录,兼容唯一索引)
- 坐席接入标识
- config:系统版本动态化
GET /configs/public与GET /configs的version始终返回运行时APP_VERSION(随系统升级自动更新)- 禁止通过设置接口写入
sys.version
Fixes
- 修复 message 模块未读数统计中
not Message.is_read布尔比较失效问题(改为Message.is_read == False)
0.3.7 (2026-08-07)
Features
- customer_service:智能客服功能完善(一期 + 二期)
- 文档导入:
POST /cs/knowledge-bases/{kb_id}/upload,支持 txt / md / pdf / docx(pymupdf + python-docx),自动段落切块 + 后台向量化入库(chunk.source_type="file") - 人工坐席:新增
cs_agent坐席表(绑定员工 + 摄影师)、坐席工作台 WebSocket 双向通信(/admin/api/v1/cs/ws/agent)、Redis pub/sub 广播(cs:ws:*,Redis 挂掉降级进程内投递) - 转人工流程:
POST /api/v1/cs/transfer支持 agent_key 路由;无在线坐席时进入排队(status=1, agent_id=NULL),坐席上线自动接管 - AI 辅助回复:
POST /cs/agent/sessions/{sid}/ai-draft(LLM 非流式起草,坐席工作台"AI 起草") - 会话摘要自动生成:
generate_session_summary(LLM 输出"问题/已处理/待办/情绪"存 session.summary + emotion,转人工与会话结束时后台异步生成) - 满意度评价:
POST /api/v1/cs/rating(用户端会话结束后五星评价) - 智能转人工:
_should_transfer(关键词命中 → LLM 确认输出 JSON → LLM 失败降级关键词直接触发),SSE 返回transfer_required事件 - SDK v2(sdk_template.html):配置化 + 转人工常驻按钮 + AI 回复快捷入口 + 帮助助手(data-cs-question)+ WS 实时消息 + 评分 + transfer_required 事件
- 文档导入:
- core/email:新增邮件发送基础能力
get_email_settings/update_email_settings(密码留空不修改)/send_email/send_test_email- SMTP 465(SSL) / 587(STARTTLS),配置存系统设置表(group_key=email),发送失败仅记日志不抛异常
- 管理端新增接口:
GET /settings/email、PUT /settings/email、POST /settings/email/test
- deps:新增
pymupdf>=1.24.0、python-docx>=1.1.0(文档解析)
Fixes
- 统一
core/config.py的APP_VERSION与pyproject.toml版本号
0.3.6 (2026-08-03)
Features
- core/redis_keys:重命名
wan27_*函数为模型无关的通用名称wan27_compose_daily_key->compose_daily_keywan27_compose_cd_key->compose_cd_keywan27_expand_daily_key->expand_daily_keywan27_expand_cd_key->expand_cd_key- 新增
compose_total_key:智能合成累计总次数(用于折扣阶梯,不随日重置)
- core/dependencies_client:新增
get_optional_user可选认证依赖- 未登录时返回
None而非抛异常 - 支持积分/支付等接口对未登录用户开放
- 未登录时返回
0.3.5 (2026-08-03)
Features
- photo:新增
alias字段(照片别名),用于存储中文风格名Photo模型新增alias列(VARCHAR(200))- 所有 Schema(Upload/Update/Response/PublicPhotoResponse)新增
alias - 上传接口支持
aliasForm 参数 - 编辑接口支持更新
alias
- photo:新增客户端公开接口
GET /api/v1/photos/public?album_code=xxx- 免登录,按相册编码拉取已发布照片
- 支持按分类编码筛选
- 返回
alias、category_name等字段 router.py导出client_router供自动发现
- material:上传逻辑从硬编码本地存储改为使用
get_storage()- 支持 local / S3 / COS 自动切换
storage字段动态反映实际后端
- user:新增手机号+密码登录接口
POST /api/v1/auth/phone/loginUserPhoneLoginRequestSchemaphone_loginService 方法- 带登录频控
- core/redis_keys:新增视觉缓存与频控 key
vision_cache_key:结果缓存去重compose_daily_key/compose_cd_key:智能合成用户级频控expand_daily_key/expand_cd_key:智能扩图 IP 级频控
0.3.4 (2026-07-31)
Features
- auth:新增 C 端用户认证体系(手机号验证码登录、邮箱密码登录、用户注册、Token 刷新、个人资料管理)
- sms:新增多服务商短信服务抽象层(阿里云/腾讯云/华为云/Mock),无外部 SDK 依赖,全部 httpx 实现
- captcha:新增滑动拼图验证码一次性令牌机制,防止绕过验证直接发送短信
- captcha:滑动验证码支持素材中心背景图和 6 种预设缺口形状(圆角矩形/心形/五角星/菱形/L 形/党徽)
- employee:新增员工自助注册功能(短信验证 + 多部门关联 + 注册开关 + 审核通知)
- payment:新增银联云闪付支付 Provider(扫码支付 + APP 支付 + 订单查询 + RSA-SHA256 回调验签)
- ai:新增 AI 模块(多服务商大模型对话/图片生成/视频生成,支持 DeepSeek/阿里云/火山方舟/腾讯混元/智谱/Kimi 六大服务商)
- core/rate_limit:新增频率限制(短信发送/登录/注册均接入 IP + 账号维度限流)
Improvements
- core/redis_keys:Redis Key 集中管理,新增验证码令牌、频率限制、智能客服等 Key 命名函数
- core/cache:验证码/短信码存储统一 Redis 优先、内存降级策略
- payment:支付 Provider 新增多平台分发
create_trade_by_platform(web/miniapp/app/h5)
0.3.3 (2026-07-28)
Features
- ai:AI 大模型配置 - 模型类型支持多选(逗号分隔字符串,后端数据结构不变,向前兼容)
Fixes
- 统一
APP_VERSION与pyproject.toml版本号
0.3.2 (2026-07-21)
Fixes
- 修复后端上传接口权限
- 修复后端中文编码错误
0.3.1 (2026-07-19)
Features
- 精简仓库,删除非基础库内容(reglow-design / reglow-app 拆分至独立仓库)
Fixes
- 更新基础库 env 配置
- 修复菜单数据初始化问题
0.3.0 (2026-07-02)
首个正式发布版本,完成三阶段架构优化,已发布至 PyPI / npm。
第一阶段(紧急修复)
- 修复 auth controller 变量名 Bug
- 修复后端 Dockerfile
- 统一版本号
- print 替换为 logger
- ruff 配置 + 修复 50+ lint 错误
第二阶段(质量基线)
- 后端测试从 0 到 1(22 个用例)
- 引入 mypy 类型检查
- 修复 core -> modules 层级违反
- 权限缓存迁移到 Redis
- auth controller 职责下沉
第三阶段(架构升级)
- 插件/Hook 系统
- 前端 tree-shaking
- 解耦 employee God Module
- i18n 可扩展 API
- 前端组件覆盖机制
- customer_service SDK 前后端分离
- monorepo 目录结构重构
工程实践
- 新增 GitHub Actions CI/CD(ruff + mypy + pytest + vue-tsc + vitest)
- Gitee Go 流水线
- 简化 reglow-app 启动流程(移除 PYTHONPATH hack)
0.2.1 (2026-06-30)
Features
- 初始化 Reglow 基础库仓库
- 完成前后端快速开发模板搭建,19 个后端模块 + 前端组件库基座
