Skip to content

滨湖客户端 0.30.25

Choose a tag to compare

@github-actions github-actions released this 28 Sep 16:24
b796eaa

滨湖桌面客户端 v0.30.25 更新日志

本次版本由提交 b796eaab4b6c 生成。

更新范围:v0.30.24 → v0.30.25。

更新内容

1. 其他更新

  • #818 fix(staging): allow reported true orphan links:[x] registry.py 将真孤儿链接限制在三条,超过后错误退出,导致只读 measure 被 orphan_exclusion_scope_exceeded 阻断。 [x] 报告没有明确区分真孤儿和未来可能出现的假孤儿。 [x] 控制台策略和运行文档仍把三条上限写成当前合同。
  • #819 fix(staging): ignore stale model-three sources in sample recovery:[x] 问题 1:历史模型三来源残留导致采样恢复生成业务表不存在的来源记录。 [x] 问题 2:measure 在业务来源键核对阶段失败,无法继续 Staging 快照。 [x] 问题 3:缺少对“无活跃业务记录历史来源”的回归覆盖。
  • #820 fix(staging): exclude invalid sampled rows:[x] 问题 1:Staging 复制数据中的无效业务日期阻塞 measure。 [x] 问题 2:单条异常数据导致整个 Staging 脱敏快照失败。 [x] 问题 3:缺少排除数量与原因分类报告。
  • #821 fix(staging): filter relations after sampled-row exclusion:[x] 问题 1:异常来源排除后关联记录仍按旧来源集合处理。 [x] 问题 2:导致 snapshot_source_operation_failed,阻塞 Staging measure。 [x] 问题 3:保持异常数据排除的聚合报告和 50% 样本有效性门禁。
  • #822 fix(staging): accept safe existing table identifiers:Staging 当前 schema 中存在合法的 MySQL 标识符形式,但网关只接受传统下划线表名,导致 create 在实际建库前失败。
  • #823 fix(staging): accept quoted legacy table names:PR #822 放宽下划线限制后,实际 create 仍被 invalid_target_table 拒绝,说明现有 Staging schema 使用了连接符或非 ASCII 表名。
  • #825 fix(staging): handle dotted legacy table identifiers:候选 create 在安全表名校验阶段返回 invalid_target_table;逻辑域分隔使用 split 会把合法点号表名拆成多段。
  • #827 fix(staging): preserve dotted legacy table names:候选 create 在安全表名校验阶段返回 invalid_target_table;逻辑域分隔使用 split 会把合法点号表名拆成多段。
  • #828 fix(staging): record schema table diffs:[x] 问题 1:schema 表集合不一致时缺少缺表/多表诊断。 [x] 问题 2:schema 签名不一致时缺少域和表名诊断。 [x] 问题 3:记录 Staging 未随 Production 发布自动同步的原因和预防门禁。
  • #829 feat(deploy): add Dev application acceptance gateway:[x] 问题 1:Staging application gateway 缺少可验证的 Dev application acceptance record。 [x] 问题 2:Dev event-pipeline 接受记录与 Dev application acceptance 职责混用。 [x] 问题 3:Dev 应用缺少固定 prepare/measure/apply/accept 入口和安装审计。
  • #830 fix(deploy): bind Dev application gateway to fixed host:[x] 问题 1:原 workflow 引用未配置的独立 host/port/known_hosts secrets,无法安装或运行 Dev application gateway。 [x] 问题 2:Dev application 的 SSH 目标边界需要与现有固定 Dev 服务器一致,同时保持应用网关凭据和 event-pipeline 凭据隔离。 [x] 问题 3:部署文档需要明确共享固定服务器边界与独立应用账号的关系。
  • #831 fix(deploy): install Dev application gateway dependencies:[x] 问题 1:原 workflow 引用未配置的独立 host/port/known_hosts secrets,无法安装或运行 Dev application gateway。 [x] 问题 2:Dev application 的 SSH 目标边界需要与现有固定 Dev 服务器一致,同时保持应用网关凭据和 event-pipeline 凭据隔离。 [x] 问题 3:部署文档需要明确共享固定服务器边界与独立应用账号的关系。
  • #832 fix(deploy): normalize Dev gateway state permissions:[x] 问题 1:原 workflow 引用未配置的独立 host/port/known_hosts secrets,无法安装或运行 Dev application gateway。 [x] 问题 2:Dev application 的 SSH 目标边界需要与现有固定 Dev 服务器一致,同时保持应用网关凭据和 event-pipeline 凭据隔离。 [x] 问题 3:部署文档需要明确共享固定服务器边界与独立应用账号的关系。
  • #833 fix(deploy): extract Dev application artifacts safely:[x] 问题 1:原 workflow 引用未配置的独立 host/port/known_hosts secrets,无法安装或运行 Dev application gateway。 [x] 问题 2:Dev application 的 SSH 目标边界需要与现有固定 Dev 服务器一致,同时保持应用网关凭据和 event-pipeline 凭据隔离。 [x] 问题 3:部署文档需要明确共享固定服务器边界与独立应用账号的关系。
  • #834 fix(deploy): bind Dev artifact in prepare run:[x] 问题 1:原 workflow 引用未配置的独立 host/port/known_hosts secrets,无法安装或运行 Dev application gateway。 [x] 问题 2:Dev application 的 SSH 目标边界需要与现有固定 Dev 服务器一致,同时保持应用网关凭据和 event-pipeline 凭据隔离。 [x] 问题 3:部署文档需要明确共享固定服务器边界与独立应用账号的关系。
  • #835 Fix Dev application gateway measure dependency:[x] Dev 网关安装包缺少 measure 的运行时依赖。 [x] PR #829 的审查只覆盖固定命令和静态模块,没有覆盖 prepare 完整路径及动态导入闭包。
  • #836 fix(deploy): preserve Dev operation failure diagnostics:[x] 问题 1:Dev measure/apply/accept failures lacked a stable private reason code. [x] 问题 2:Failure evidence was not written for non-prepare operations. [ ] 问题 3:The existing Dev runtime configuration/image drift remains a separate environment repair task and is intentionally not bypassed here.
  • #837 fix(deploy): add controlled Dev manifest reconciliation:[x] 问题 1:提供受控的 Dev manifest drift reconciliation。 [x] 问题 2:保持 measure/apply/accept 的 fail-closed 身份门禁。 [x] 问题 3:避免删除或重建 Dev 数据库、Redis、网络和卷。
  • #838 fix(deploy): authorize Dev reconcile action:[x] 新增 Dev reconcile * 动作的最小权限授权。 [x] 防止固定入口动作与安装脚本 sudoers 白名单再次漂移。 [x] 保留既有失败证据,不覆盖历史运行目录。
  • #839 fix(deploy): repair missing Dev disabled flag:[x] 新增 Dev reconcile * 动作的最小权限授权。 [x] 防止固定入口动作与安装脚本 sudoers 白名单再次漂移。 [x] 保留既有失败证据,不覆盖历史运行目录。
  • #840 fix(deploy): persist Dev promotion state atomically:[x] 新增 Dev reconcile * 动作的最小权限授权。 [x] 防止固定入口动作与安装脚本 sudoers 白名单再次漂移。 [x] 保留既有失败证据,不覆盖历史运行目录。
  • #841 fix(deploy): update Dev acceptance report atomically:[x] 新增 Dev reconcile * 动作的最小权限授权。 [x] 防止固定入口动作与安装脚本 sudoers 白名单再次漂移。 [x] 保留既有失败证据,不覆盖历史运行目录。
  • #842 fix(staging): add controlled application reconciliation:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • #843 fix(staging): normalize qualified image digest during reconcile:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • #844 fix(staging): reconcile legacy database manifest keys:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • #845 fix(staging): preserve reconcile preflight diagnostics:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • #846 fix(staging): capture reconcile preflight failures:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • #847 fix(staging): store reconcile diagnostics with candidate:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • #848 fix(staging): persist reconciled environment flags:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • #849 fix(staging): compare qualified image references by digest:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • #850 fix(staging): write reconciled flags with real newlines:[x] 问题 1:Staging reconcile 使用字面量 \\n,导致禁用开关未形成独立配置行。 [x] 问题 2:修复后 measure 仍会因外部开关缺失而失败。 [x] 问题 3:补充 Dev/Staging 共用路径的回归覆盖。
  • #851 fix(staging): preserve reconcile evidence on retry:[x] 问题 1:旧 staging-reconcile-* 目录存在时重试无法进行。 [x] 问题 2:重试需要保留原失败证据,不能覆盖。 [x] 问题 3:补充唯一证据路径回归测试。
  • #852 fix(staging): normalize qualified manifest image digests:[x] 问题 1:qualified Compose 镜像已规范化,但 qualified manifest 镜像未规范化。 [x] 问题 2:合法的同一 digest 被误判为环境漂移。 [x] 问题 3:补充 Compose 与 manifest 双方 qualified digest 回归测试。
  • #853 修补离线居住证批量查询逐行结果与失败定位:[x] 问题 1:批量查询只显示失败分类数量,用户无法定位具体身份证号和原表行。 [x] 问题 2:身份证无效、认证/网络/响应结构错误等情况缺少逐行处理建议。 [x] 问题 3:常住人口预检索返回非空资料时被统一归类为 resident_response_contract_changed,与明确的接口故障混淆。
  • #854 fix(staging): normalize split-domain snapshot schema contract:[x] 修复 production_staging_schema_table_mismatch 的真实根因 [x] 保持失败证据独立,不覆盖旧候选目录 [x] 增加合同归一化、冲突拒绝和候选验证测试
  • #855 fix(staging): cover all routed legacy tables:[x] 修复 production_staging_schema_table_mismatch 的真实根因 [x] 保持失败证据独立,不覆盖旧候选目录 [x] 增加合同归一化、冲突拒绝和候选验证测试
  • #856 fix(staging): prefer owning domain schema signatures:[x] 修复 production_staging_schema_table_mismatch 的真实根因 [x] 保持失败证据独立,不覆盖旧候选目录 [x] 增加合同归一化、冲突拒绝和候选验证测试
  • #857 Fix embedded Staging snapshot schema filter:[x] 修复隔离候选程序缺失 runtime_tables 的运行时错误。 [x] 防止只检查生成代码字符串而遗漏未定义名称。
  • #858 Fix embedded Staging schema map reference:[x] 将嵌入程序中的域映射引用统一为已注入的 split_domain_schema_tables。 [x] 增加生成代码 AST 检查,防止再次生成未定义的大写名称。
  • #859 fix: prevent venue registration burst throttling:[x] 问题 1:同一出口 IP 的场所登记页面、取令牌和提交请求被旧的 30 次/分钟边缘限流挡成 503。 [x] 问题 2:云端接收器单场所每分钟 60 次的应用限流低于集中登记需求。 [x] 问题 3:登记页把 Nginx 非 JSON 错误正文当 JSON 解析,用户只能看到技术错误或无法判断提交状态。
  • #860 feat(staging): add controlled schema migration gate:[x] Staging application apply 只切换应用、不执行数据库 schema migration。 [x] 最新快照 staging-9d10b74f1136e464 在 OnlineData._online_source_projection 发现真实 schema drift 后缺少受控修复入口。 [x] 迁移步骤没有固定 workflow、身份校验和可审计前后签名。
  • #861 fix(staging): report schema signature differences:[x] schema 签名不一致时,证据缺少可执行的列、索引和约束差异。 [x] 失败证据不包含结构签名摘要,难以判断后续修复是否改变目标 schema。
  • #862 fix: keep venue nginx rate limits deployable:[x] 问题 1:首次候选部署因未定义 Nginx zone 未通过 nginx -t,固定网关已回滚候选镜像。 [x] 问题 2:同一出口的场所登记页面/令牌/提交请求需要绕开全局 30 次/分钟边缘桶,仍保留应用侧限流。 [x] 问题 3:确保其它公共入口继续使用原边缘限流,避免扩大本次流量策略范围。
  • #863 fix(staging): import hashlib in isolated schema diagnostics:[x] 修复隔离候选 job 在生成 schema SHA-256 摘要时缺少 hashlib 的缺陷。 [x] 测试验证生成代码能给出缺失/多余列和双方 SHA-256,不再因未定义名称退化为通用错误。 [x] 不改变 schema 门禁或候选数据库操作范围。
  • #864 fix: resolve venue nginx rate zone validation:[x] 问题 1:修复 Nginx 未定义限流 zone 导致的 nginx -t 失败。 [x] 问题 2:同一出口 IP 的场所页面和公共登记 API 不再被 30 次/分钟边缘限流挡住。 [x] 问题 3:饮酒报备页和表单令牌 API 保留已定义的 IP 限流。
  • #865 fix: prevent venue registration fake success:[x] 问题 1:并发提交可能收到 HTTP 200、JSON 字符串和 multipart 请求体回显,客户端误显示提交成功。 [x] 问题 2:TCP 入口代理在一侧流结束时取消另一侧,可能截断或串扰响应。 [x] 问题 3:成功响应契约和前端不确定结果处理缺少测试与 OpenAPI 明确约束。
  • #866 chore: prepare 0.30.25 release:统一根目录、前端、桌面端、Android/Tauri 和安装器版本号。 使客户端发布工作流能够识别并构建 0.30.25 制品。

技术追溯

  • [#818] fix(staging): allow reported true orphan links:[x] registry.py 将真孤儿链接限制在三条,超过后错误退出,导致只读 measure 被 orphan_exclusion_scope_exceeded 阻断。 [x] 报告没有明确区分真孤儿和未来可能出现的假孤儿。 [x] 控制台策略和运行文档仍把三条上限写成当前合同。
  • [#819] fix(staging): ignore stale model-three sources in sample recovery:[x] 问题 1:历史模型三来源残留导致采样恢复生成业务表不存在的来源记录。 [x] 问题 2:measure 在业务来源键核对阶段失败,无法继续 Staging 快照。 [x] 问题 3:缺少对“无活跃业务记录历史来源”的回归覆盖。
  • [#820] fix(staging): exclude invalid sampled rows:[x] 问题 1:Staging 复制数据中的无效业务日期阻塞 measure。 [x] 问题 2:单条异常数据导致整个 Staging 脱敏快照失败。 [x] 问题 3:缺少排除数量与原因分类报告。
  • [#821] fix(staging): filter relations after sampled-row exclusion:[x] 问题 1:异常来源排除后关联记录仍按旧来源集合处理。 [x] 问题 2:导致 snapshot_source_operation_failed,阻塞 Staging measure。 [x] 问题 3:保持异常数据排除的聚合报告和 50% 样本有效性门禁。
  • [#822] fix(staging): accept safe existing table identifiers:Staging 当前 schema 中存在合法的 MySQL 标识符形式,但网关只接受传统下划线表名,导致 create 在实际建库前失败。
  • [#823] fix(staging): accept quoted legacy table names:PR #822 放宽下划线限制后,实际 create 仍被 invalid_target_table 拒绝,说明现有 Staging schema 使用了连接符或非 ASCII 表名。
  • [#825] fix(staging): handle dotted legacy table identifiers:候选 create 在安全表名校验阶段返回 invalid_target_table;逻辑域分隔使用 split 会把合法点号表名拆成多段。
  • [#827] fix(staging): preserve dotted legacy table names:候选 create 在安全表名校验阶段返回 invalid_target_table;逻辑域分隔使用 split 会把合法点号表名拆成多段。
  • [#828] fix(staging): record schema table diffs:[x] 问题 1:schema 表集合不一致时缺少缺表/多表诊断。 [x] 问题 2:schema 签名不一致时缺少域和表名诊断。 [x] 问题 3:记录 Staging 未随 Production 发布自动同步的原因和预防门禁。
  • [#829] feat(deploy): add Dev application acceptance gateway:[x] 问题 1:Staging application gateway 缺少可验证的 Dev application acceptance record。 [x] 问题 2:Dev event-pipeline 接受记录与 Dev application acceptance 职责混用。 [x] 问题 3:Dev 应用缺少固定 prepare/measure/apply/accept 入口和安装审计。
  • [#830] fix(deploy): bind Dev application gateway to fixed host:[x] 问题 1:原 workflow 引用未配置的独立 host/port/known_hosts secrets,无法安装或运行 Dev application gateway。 [x] 问题 2:Dev application 的 SSH 目标边界需要与现有固定 Dev 服务器一致,同时保持应用网关凭据和 event-pipeline 凭据隔离。 [x] 问题 3:部署文档需要明确共享固定服务器边界与独立应用账号的关系。
  • [#831] fix(deploy): install Dev application gateway dependencies:[x] 问题 1:原 workflow 引用未配置的独立 host/port/known_hosts secrets,无法安装或运行 Dev application gateway。 [x] 问题 2:Dev application 的 SSH 目标边界需要与现有固定 Dev 服务器一致,同时保持应用网关凭据和 event-pipeline 凭据隔离。 [x] 问题 3:部署文档需要明确共享固定服务器边界与独立应用账号的关系。
  • [#832] fix(deploy): normalize Dev gateway state permissions:[x] 问题 1:原 workflow 引用未配置的独立 host/port/known_hosts secrets,无法安装或运行 Dev application gateway。 [x] 问题 2:Dev application 的 SSH 目标边界需要与现有固定 Dev 服务器一致,同时保持应用网关凭据和 event-pipeline 凭据隔离。 [x] 问题 3:部署文档需要明确共享固定服务器边界与独立应用账号的关系。
  • [#833] fix(deploy): extract Dev application artifacts safely:[x] 问题 1:原 workflow 引用未配置的独立 host/port/known_hosts secrets,无法安装或运行 Dev application gateway。 [x] 问题 2:Dev application 的 SSH 目标边界需要与现有固定 Dev 服务器一致,同时保持应用网关凭据和 event-pipeline 凭据隔离。 [x] 问题 3:部署文档需要明确共享固定服务器边界与独立应用账号的关系。
  • [#834] fix(deploy): bind Dev artifact in prepare run:[x] 问题 1:原 workflow 引用未配置的独立 host/port/known_hosts secrets,无法安装或运行 Dev application gateway。 [x] 问题 2:Dev application 的 SSH 目标边界需要与现有固定 Dev 服务器一致,同时保持应用网关凭据和 event-pipeline 凭据隔离。 [x] 问题 3:部署文档需要明确共享固定服务器边界与独立应用账号的关系。
  • [#835] Fix Dev application gateway measure dependency:[x] Dev 网关安装包缺少 measure 的运行时依赖。 [x] PR #829 的审查只覆盖固定命令和静态模块,没有覆盖 prepare 完整路径及动态导入闭包。
  • [#836] fix(deploy): preserve Dev operation failure diagnostics:[x] 问题 1:Dev measure/apply/accept failures lacked a stable private reason code. [x] 问题 2:Failure evidence was not written for non-prepare operations. [ ] 问题 3:The existing Dev runtime configuration/image drift remains a separate environment repair task and is intentionally not bypassed here.
  • [#837] fix(deploy): add controlled Dev manifest reconciliation:[x] 问题 1:提供受控的 Dev manifest drift reconciliation。 [x] 问题 2:保持 measure/apply/accept 的 fail-closed 身份门禁。 [x] 问题 3:避免删除或重建 Dev 数据库、Redis、网络和卷。
  • [#838] fix(deploy): authorize Dev reconcile action:[x] 新增 Dev reconcile * 动作的最小权限授权。 [x] 防止固定入口动作与安装脚本 sudoers 白名单再次漂移。 [x] 保留既有失败证据,不覆盖历史运行目录。
  • [#839] fix(deploy): repair missing Dev disabled flag:[x] 新增 Dev reconcile * 动作的最小权限授权。 [x] 防止固定入口动作与安装脚本 sudoers 白名单再次漂移。 [x] 保留既有失败证据,不覆盖历史运行目录。
  • [#840] fix(deploy): persist Dev promotion state atomically:[x] 新增 Dev reconcile * 动作的最小权限授权。 [x] 防止固定入口动作与安装脚本 sudoers 白名单再次漂移。 [x] 保留既有失败证据,不覆盖历史运行目录。
  • [#841] fix(deploy): update Dev acceptance report atomically:[x] 新增 Dev reconcile * 动作的最小权限授权。 [x] 防止固定入口动作与安装脚本 sudoers 白名单再次漂移。 [x] 保留既有失败证据,不覆盖历史运行目录。
  • [#842] fix(staging): add controlled application reconciliation:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • [#843] fix(staging): normalize qualified image digest during reconcile:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • [#844] fix(staging): reconcile legacy database manifest keys:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • [#845] fix(staging): preserve reconcile preflight diagnostics:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • [#846] fix(staging): capture reconcile preflight failures:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • [#847] fix(staging): store reconcile diagnostics with candidate:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • [#848] fix(staging): persist reconciled environment flags:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • [#849] fix(staging): compare qualified image references by digest:Staging manifest.json 的 Backend image 元数据与实际 Compose 不一致,导致 measure 以 environment_image_drift 拒绝。旧网关只返回笼统失败,且没有受控对账入口。
  • [#850] fix(staging): write reconciled flags with real newlines:[x] 问题 1:Staging reconcile 使用字面量 \\n,导致禁用开关未形成独立配置行。 [x] 问题 2:修复后 measure 仍会因外部开关缺失而失败。 [x] 问题 3:补充 Dev/Staging 共用路径的回归覆盖。
  • [#851] fix(staging): preserve reconcile evidence on retry:[x] 问题 1:旧 staging-reconcile-* 目录存在时重试无法进行。 [x] 问题 2:重试需要保留原失败证据,不能覆盖。 [x] 问题 3:补充唯一证据路径回归测试。
  • [#852] fix(staging): normalize qualified manifest image digests:[x] 问题 1:qualified Compose 镜像已规范化,但 qualified manifest 镜像未规范化。 [x] 问题 2:合法的同一 digest 被误判为环境漂移。 [x] 问题 3:补充 Compose 与 manifest 双方 qualified digest 回归测试。
  • [#853] 修补离线居住证批量查询逐行结果与失败定位:[x] 问题 1:批量查询只显示失败分类数量,用户无法定位具体身份证号和原表行。 [x] 问题 2:身份证无效、认证/网络/响应结构错误等情况缺少逐行处理建议。 [x] 问题 3:常住人口预检索返回非空资料时被统一归类为 resident_response_contract_changed,与明确的接口故障混淆。
  • [#854] fix(staging): normalize split-domain snapshot schema contract:[x] 修复 production_staging_schema_table_mismatch 的真实根因 [x] 保持失败证据独立,不覆盖旧候选目录 [x] 增加合同归一化、冲突拒绝和候选验证测试
  • [#855] fix(staging): cover all routed legacy tables:[x] 修复 production_staging_schema_table_mismatch 的真实根因 [x] 保持失败证据独立,不覆盖旧候选目录 [x] 增加合同归一化、冲突拒绝和候选验证测试
  • [#856] fix(staging): prefer owning domain schema signatures:[x] 修复 production_staging_schema_table_mismatch 的真实根因 [x] 保持失败证据独立,不覆盖旧候选目录 [x] 增加合同归一化、冲突拒绝和候选验证测试
  • [#857] Fix embedded Staging snapshot schema filter:[x] 修复隔离候选程序缺失 runtime_tables 的运行时错误。 [x] 防止只检查生成代码字符串而遗漏未定义名称。
  • [#858] Fix embedded Staging schema map reference:[x] 将嵌入程序中的域映射引用统一为已注入的 split_domain_schema_tables。 [x] 增加生成代码 AST 检查,防止再次生成未定义的大写名称。
  • [#859] fix: prevent venue registration burst throttling:[x] 问题 1:同一出口 IP 的场所登记页面、取令牌和提交请求被旧的 30 次/分钟边缘限流挡成 503。 [x] 问题 2:云端接收器单场所每分钟 60 次的应用限流低于集中登记需求。 [x] 问题 3:登记页把 Nginx 非 JSON 错误正文当 JSON 解析,用户只能看到技术错误或无法判断提交状态。
  • [#860] feat(staging): add controlled schema migration gate:[x] Staging application apply 只切换应用、不执行数据库 schema migration。 [x] 最新快照 staging-9d10b74f1136e464 在 OnlineData._online_source_projection 发现真实 schema drift 后缺少受控修复入口。 [x] 迁移步骤没有固定 workflow、身份校验和可审计前后签名。
  • [#861] fix(staging): report schema signature differences:[x] schema 签名不一致时,证据缺少可执行的列、索引和约束差异。 [x] 失败证据不包含结构签名摘要,难以判断后续修复是否改变目标 schema。
  • [#862] fix: keep venue nginx rate limits deployable:[x] 问题 1:首次候选部署因未定义 Nginx zone 未通过 nginx -t,固定网关已回滚候选镜像。 [x] 问题 2:同一出口的场所登记页面/令牌/提交请求需要绕开全局 30 次/分钟边缘桶,仍保留应用侧限流。 [x] 问题 3:确保其它公共入口继续使用原边缘限流,避免扩大本次流量策略范围。
  • [#863] fix(staging): import hashlib in isolated schema diagnostics:[x] 修复隔离候选 job 在生成 schema SHA-256 摘要时缺少 hashlib 的缺陷。 [x] 测试验证生成代码能给出缺失/多余列和双方 SHA-256,不再因未定义名称退化为通用错误。 [x] 不改变 schema 门禁或候选数据库操作范围。
  • [#864] fix: resolve venue nginx rate zone validation:[x] 问题 1:修复 Nginx 未定义限流 zone 导致的 nginx -t 失败。 [x] 问题 2:同一出口 IP 的场所页面和公共登记 API 不再被 30 次/分钟边缘限流挡住。 [x] 问题 3:饮酒报备页和表单令牌 API 保留已定义的 IP 限流。
  • [#865] fix: prevent venue registration fake success:[x] 问题 1:并发提交可能收到 HTTP 200、JSON 字符串和 multipart 请求体回显,客户端误显示提交成功。 [x] 问题 2:TCP 入口代理在一侧流结束时取消另一侧,可能截断或串扰响应。 [x] 问题 3:成功响应契约和前端不确定结果处理缺少测试与 OpenAPI 明确约束。
  • [#866] chore: prepare 0.30.25 release:统一根目录、前端、桌面端、Android/Tauri 和安装器版本号。 使客户端发布工作流能够识别并构建 0.30.25 制品。

更新说明

桌面客户端优先使用更新服务器提供的增量包;增量包不可用时自动回退到全量包。