feat(api): 客户端密钥与可编辑菜单模块授权 #237

Open
opened 2026-09-07 15:26:49 +08:00 by ila · 11 comments
Owner

当前交付状态(2026-09-07,本机已部署、待验收)

用户已确认原型、默认兼容 HTTP/HTTPS 和明文风险,并明确授权本机合并、迁移、菜单权限写入与重启验证。

  • 实现与 HTTP 兼容已合入并推送 main;业务代码 ac3c63e,运行配置模板 9a10d82,本轮运维 Wiki 镜像 9d5242b。
  • 本机迁移 1788798000000 已执行:client_api_key、client_api_key_audit 及管理员专用菜单已创建。Supervisor 两个 GoAuto 服务从 main-runtime 启动,沿用原本机 config.yaml,常驻启动使用 -SkipMigration;原根目录未提交改动完整保留。
  • 本地 http://127.0.0.1:9527/#/client-keys/index 已验证:管理员菜单、真实空列表、创建弹窗 12 模块、HTTP/HTTPS 风险提示正常;未实际创建密钥,真实客户端密钥创建/编辑/停用与业务执行闭环仍未验证。
  • 未迁移、发布或重启线上,未构建安装 Android,未触发真实采集/采购或付款。本单保持 open,待用户验收。
    以下保留原型阶段需求与变更历史,其中“仅原型/未实施”属于当时阶段,不代表上述当前状态。

来源与当前阶段

2026-09-07 用户要求轻量客户端密钥管理,按左侧“采集采购”“采采管理”模块选择开放范围;明确“建工单,先出 qux 原型,我审核后才能做”。本单当前只建设 QuantUX v1 审核稿,不编写生产代码,不执行迁移、权限写入、发布或真实业务请求。
基线 main 29ba16e;复用 access/modules.go 现有分组及模块键。无原型依赖阻塞;Server/Web/API/权限/数据设计属于后续实施影响,Android 不变。与 #236 无代码并行修改。

目标与方案草稿

管理员专用客户端密钥列表+创建弹窗;名称、模块授权摘要、状态、最后使用时间,查看授权、停用确认。首版不做复杂 OAuth、自动续期或任意接口编辑。
模块树:采集采购(SYB商品、SYB同步、档口入库码、蝦皮商品、PDD商品、采集任务、采购管理);采采管理(SYB店铺、采集规则、采购规则、设备列表、AI规格匹配)。分组勾选仅选择当前子模块,新菜单不自动授权。
每模块默认只读,可选读写(已有查询/新增/修改接口,排除执行动作);同步、采集创建/重试、采购执行、删除、回写等独立动作默认关闭。无可开放写接口时显示不支持,不伪造通用 CRUD。
模块名仅为选择界面,后端采用稳定模块键→明确接口白名单,不直接绑定菜单标题或创建管理员身份。隐藏敏感字段;AI Provider 密钥、设备令牌、账号权限管理、支付永不随模块授权开放;现有高风险业务门禁不绕过。
客户端使用 Authorization: Bearer <客户端密钥>;与登录JWT、Agent设备Token隔离;完整密钥仅创建后一次展示,落库摘要,可停用,审计客户端身份;生产公网启用前需HTTPS。原型仅不可用示例密钥,不调用任何真实API。

原型与验收范围

列表正常/空/加载/失败;创建表单必填校验、模块选择、读写、动作边界、提交中/失败;成功仅一次显示与复制反馈;授权详情、停用确认/已停用、非管理员无权限。
QuantUX 独立 App,标题含 #237 v1 和日期(若实际工单号不同按实际编号),线上域名 qux.ilapage.cn,记录 App ID、分享地址、revision/模型指纹和覆盖范围。原型为草稿,用户明确确认后才允许后续实施;确认不等于迁移/发布授权。不导出HTML、不创建任务归档。

验证与风险

在线模型回读、屏幕/交互连接完整性、浏览器关键流程与文字可读性。原型不能证明真实密钥安全、权限隔离或幂等实现,后续须补充接口矩阵和风险相称测试。

文档影响

当前仅设计草稿,无长期已实现事实变化,不更新Wiki。审核通过后实施需更新架构、业务规则、Admin/API契约、安全和运维说明。
当前未发现可直接调用的 Gitea/QuantUX MCP 工具:Gitea 回退忽略配置API;QuantUX 优先复用本机已配置连接器/客户端,不输出凭据。

2026-09-07 范围追加:v2 编辑既有密钥授权(仅原型)

用户提出既有 API Key 能否修改授权模块,并要求“先更新 #237 和原型”。首版增加列表“编辑授权”,复用创建弹窗的模块选择与读写/独立动作布局。

  • 仅管理员可操作启用中的密钥;回显已有授权。名称和脱敏标识只读,不显示完整密钥,不重置或更换 Key。
  • 支持增减模块、修改读写与独立动作;新增模块默认只读,动作不自动扩大;移除模块时撤销对应动作,原有禁止开放边界不变。
  • 保存成功后后续请求按新授权校验,已执行操作不回滚;取消不改变原授权。至少保留一个模块;需要完全禁止访问时使用停用。
  • 保存中禁用重复提交;失败保留本次编辑并允许重试;无修改时保存禁用。服务端实施时再次检查管理员身份和密钥有效状态;若编辑期间被停用则拒绝保存。
  • 停用密钥只读查看授权,不允许编辑;记录修改人、时间和授权变更摘要,不记录密钥全文。
  • v2 补充编辑回显、修改后、空选择校验、保存中/失败/成功、取消及已停用不可编辑状态。继续采用固定组合演示,不是生产授权系统。
    当前仍仅设计,不表示生产权限修改授权。待 v2 视觉与交互检查、用户明确确认覆盖范围后再实施。

v3 范围追加(2026-09-07,仅原型,待用户审核)

来源:用户要求“要可以后续查看已创建的密钥”“模块和功能要可以全选”,并明确“先更新 #237 与 v3 原型”。此前 v2/HTTP 版本本机已部署;v3 仅设计,不能据此宣称已实现。基线 main 9d5242b。

方案及交互

  • 仅管理员:列表继续脱敏,新增“查看密钥”,弹窗按需读取完整密钥,可复制;关闭/离开清空界面内存。HTTP/HTTPS 默认兼容,不新增开关,明确 HTTP 查看/复制后的传输仍有明文风险。
  • 新密钥拟保留鉴权摘要并额外加密保存可恢复密文;专用加密配置独立于数据库且不入 Git。拟增加管理员专用 reveal 接口,不从列表或客户端业务接口返回全文;no-store、审计仅记人/时间/密钥ID/结果,禁止记录全文。缺少加密配置时不得降级明文或生成无法回看的新密钥;已有摘要鉴权不受影响。实施前确认配置备份与密钥丢失恢复边界。
  • 旧密钥只有摘要,无法恢复原文;标记“旧版·不可回看”,提示仍可使用或另建新密钥。不得自动替换、停用旧密钥或让旧客户端失效。停用密钥不允许查看全文/编辑;可看脱敏授权。
  • 创建和编辑共用:全选模块只新增当前可选模块的默认只读授权,保留原已有功能;全选功能作用于已选模块,选中当前支持的读写及独立动作。不支持写的模块跳过读写能力;无已选模块时功能全选禁用。
  • 分组模块全选、组内已选模块功能全选、单模块功能全选;全选/半选/未选联动。取消功能全选退回只读、清空动作而保留模块;取消模块选择同时移除该模块全部功能。全选仅改变表单,点击创建/保存才生效;取消不落库。
  • 全选不包含未开放接口、付款、账号权限、Provider密钥和设备令牌,不绕过业务门禁,不自动授权未来新增模块/功能。编辑不更换 API Key。至少保留一个模块,全部禁止访问仍通过停用。

设计、验收与风险

独立 QuantUX v3 App,保留已确认 v2;沿用 Admin 布局。展示列表、新密钥查看/复制、旧密钥提示、加载/失败/解密不可用/停用/无权限,以及创建/编辑全选、分组、半选、清空、提交中/失败保留/成功。仅无效示例与固定代表性组合,不调用真实业务或生成密钥。记录可访问链接、App ID、模型指纹、验证结果;确认人/时间待用户审核。
影响:后续 Server/Web、API、安全配置与追加数据库迁移;Android 不变。依赖 v3 原型确认及独立安全/迁移实施授权,未满足前不编写生产代码;不与其他客户端密钥改动并行。迁移/本机或线上发布重启/真实密钥操作本次均不授权。
后续验收须包含旧密钥兼容、加密回读、非管理员拒绝/日志脱敏、配置缺失不降级、取消不落库、全选范围与半选、HTTP复制失败手动复制回退、原有编辑停用并发版本保护回归。
文档影响:本轮只有草稿,无已实现长期事实变化,不更新 Wiki/不运行同步;实施后须更新架构、业务规则、API、运维/配置说明。无 HTML 导出、无任务快照。
工具回退:本会话无 Gitea MCP,使用项目忽略配置的 Gitea API;QuantUX 使用已有配置的认证 MCP 服务,不记录凭据。

v3 原型证据

  • 独立 v3 App ID:6a9e8ac3191a826306a7f746;名称 GoAuto #237 v3 密钥回看与模块功能全选。
  • 线上编辑入口:https://qux.ilapage.cn/#/apps/6a9e8ac3191a826306a7f746.html (需要 QuantUX 登录)。保留已确认 v2 App 6a9e6910191a826306a7f6d6,未覆盖。
  • 版本:v3,2026-09-07;screens/widgets/lines/startScreen 规范化 JSON SHA256:7c8a9f01b9d29782d48106d3c2daab0e5e99db7b42fd12da3bf023a6ffa78f72。
  • 模型级验证:39 个画面、1728 控件、595 连线;全部变更字段在线回读一致,连线端点无悬空引用。支持新密钥回看/示例复制、旧密钥提示、读取中/失败/解密异常、停用与权限边界、创建/编辑的模块与功能全选、分组/半选/清空、蝦皮功能明细、提交失败保留及成功状态。
  • 限制:固定代表性组合流程,不是任意勾选组合的动态权限引擎;复制仅演示,不操作真实剪贴板。浏览器连接两次读取超时,未完成视觉布局、实际点击或免登录分享预览验证;当前为草稿,不能宣称正式审核入口已验证。后续先恢复浏览器核验,再由用户确认;确认人/时间均待定。
  • UI/UX 技能用于沿用既有 Admin 布局及补齐全选/半选、取消、加载禁用、失败恢复状态,未引入新视觉体系。
  • 本轮仅修改本工单与 QuantUX 原型;无生产代码/数据库/权限写入/重启/部署,未创建或读取真实密钥,未导出 HTML 或工单归档。无已实现长期事实变化,跳过 Wiki 同步。Gitea 使用已记录的 API 回退,QuantUX 使用既有认证 MCP。
## 当前交付状态(2026-09-07,本机已部署、待验收) 用户已确认原型、默认兼容 HTTP/HTTPS 和明文风险,并明确授权本机合并、迁移、菜单权限写入与重启验证。 - 实现与 HTTP 兼容已合入并推送 main;业务代码 ac3c63e,运行配置模板 9a10d82,本轮运维 Wiki 镜像 9d5242b。 - 本机迁移 1788798000000 已执行:client_api_key、client_api_key_audit 及管理员专用菜单已创建。Supervisor 两个 GoAuto 服务从 main-runtime 启动,沿用原本机 config.yaml,常驻启动使用 -SkipMigration;原根目录未提交改动完整保留。 - 本地 http://127.0.0.1:9527/#/client-keys/index 已验证:管理员菜单、真实空列表、创建弹窗 12 模块、HTTP/HTTPS 风险提示正常;未实际创建密钥,真实客户端密钥创建/编辑/停用与业务执行闭环仍未验证。 - 未迁移、发布或重启线上,未构建安装 Android,未触发真实采集/采购或付款。本单保持 open,待用户验收。 以下保留原型阶段需求与变更历史,其中“仅原型/未实施”属于当时阶段,不代表上述当前状态。 ## 来源与当前阶段 2026-09-07 用户要求轻量客户端密钥管理,按左侧“采集采购”“采采管理”模块选择开放范围;明确“建工单,先出 qux 原型,我审核后才能做”。本单当前只建设 QuantUX v1 审核稿,不编写生产代码,不执行迁移、权限写入、发布或真实业务请求。 基线 main 29ba16e;复用 access/modules.go 现有分组及模块键。无原型依赖阻塞;Server/Web/API/权限/数据设计属于后续实施影响,Android 不变。与 #236 无代码并行修改。 ## 目标与方案草稿 管理员专用客户端密钥列表+创建弹窗;名称、模块授权摘要、状态、最后使用时间,查看授权、停用确认。首版不做复杂 OAuth、自动续期或任意接口编辑。 模块树:采集采购(SYB商品、SYB同步、档口入库码、蝦皮商品、PDD商品、采集任务、采购管理);采采管理(SYB店铺、采集规则、采购规则、设备列表、AI规格匹配)。分组勾选仅选择当前子模块,新菜单不自动授权。 每模块默认只读,可选读写(已有查询/新增/修改接口,排除执行动作);同步、采集创建/重试、采购执行、删除、回写等独立动作默认关闭。无可开放写接口时显示不支持,不伪造通用 CRUD。 模块名仅为选择界面,后端采用稳定模块键→明确接口白名单,不直接绑定菜单标题或创建管理员身份。隐藏敏感字段;AI Provider 密钥、设备令牌、账号权限管理、支付永不随模块授权开放;现有高风险业务门禁不绕过。 客户端使用 Authorization: Bearer <客户端密钥>;与登录JWT、Agent设备Token隔离;完整密钥仅创建后一次展示,落库摘要,可停用,审计客户端身份;生产公网启用前需HTTPS。原型仅不可用示例密钥,不调用任何真实API。 ## 原型与验收范围 列表正常/空/加载/失败;创建表单必填校验、模块选择、读写、动作边界、提交中/失败;成功仅一次显示与复制反馈;授权详情、停用确认/已停用、非管理员无权限。 QuantUX 独立 App,标题含 #237 v1 和日期(若实际工单号不同按实际编号),线上域名 qux.ilapage.cn,记录 App ID、分享地址、revision/模型指纹和覆盖范围。原型为草稿,用户明确确认后才允许后续实施;确认不等于迁移/发布授权。不导出HTML、不创建任务归档。 ## 验证与风险 在线模型回读、屏幕/交互连接完整性、浏览器关键流程与文字可读性。原型不能证明真实密钥安全、权限隔离或幂等实现,后续须补充接口矩阵和风险相称测试。 ## 文档影响 当前仅设计草稿,无长期已实现事实变化,不更新Wiki。审核通过后实施需更新架构、业务规则、Admin/API契约、安全和运维说明。 当前未发现可直接调用的 Gitea/QuantUX MCP 工具:Gitea 回退忽略配置API;QuantUX 优先复用本机已配置连接器/客户端,不输出凭据。 ## 2026-09-07 范围追加:v2 编辑既有密钥授权(仅原型) 用户提出既有 API Key 能否修改授权模块,并要求“先更新 #237 和原型”。首版增加列表“编辑授权”,复用创建弹窗的模块选择与读写/独立动作布局。 - 仅管理员可操作启用中的密钥;回显已有授权。名称和脱敏标识只读,不显示完整密钥,不重置或更换 Key。 - 支持增减模块、修改读写与独立动作;新增模块默认只读,动作不自动扩大;移除模块时撤销对应动作,原有禁止开放边界不变。 - 保存成功后后续请求按新授权校验,已执行操作不回滚;取消不改变原授权。至少保留一个模块;需要完全禁止访问时使用停用。 - 保存中禁用重复提交;失败保留本次编辑并允许重试;无修改时保存禁用。服务端实施时再次检查管理员身份和密钥有效状态;若编辑期间被停用则拒绝保存。 - 停用密钥只读查看授权,不允许编辑;记录修改人、时间和授权变更摘要,不记录密钥全文。 - v2 补充编辑回显、修改后、空选择校验、保存中/失败/成功、取消及已停用不可编辑状态。继续采用固定组合演示,不是生产授权系统。 当前仍仅设计,不表示生产权限修改授权。待 v2 视觉与交互检查、用户明确确认覆盖范围后再实施。 ## v3 范围追加(2026-09-07,仅原型,待用户审核) 来源:用户要求“要可以后续查看已创建的密钥”“模块和功能要可以全选”,并明确“先更新 #237 与 v3 原型”。此前 v2/HTTP 版本本机已部署;v3 仅设计,不能据此宣称已实现。基线 main 9d5242b。 ### 方案及交互 - 仅管理员:列表继续脱敏,新增“查看密钥”,弹窗按需读取完整密钥,可复制;关闭/离开清空界面内存。HTTP/HTTPS 默认兼容,不新增开关,明确 HTTP 查看/复制后的传输仍有明文风险。 - 新密钥拟保留鉴权摘要并额外加密保存可恢复密文;专用加密配置独立于数据库且不入 Git。拟增加管理员专用 reveal 接口,不从列表或客户端业务接口返回全文;no-store、审计仅记人/时间/密钥ID/结果,禁止记录全文。缺少加密配置时不得降级明文或生成无法回看的新密钥;已有摘要鉴权不受影响。实施前确认配置备份与密钥丢失恢复边界。 - 旧密钥只有摘要,无法恢复原文;标记“旧版·不可回看”,提示仍可使用或另建新密钥。不得自动替换、停用旧密钥或让旧客户端失效。停用密钥不允许查看全文/编辑;可看脱敏授权。 - 创建和编辑共用:全选模块只新增当前可选模块的默认只读授权,保留原已有功能;全选功能作用于已选模块,选中当前支持的读写及独立动作。不支持写的模块跳过读写能力;无已选模块时功能全选禁用。 - 分组模块全选、组内已选模块功能全选、单模块功能全选;全选/半选/未选联动。取消功能全选退回只读、清空动作而保留模块;取消模块选择同时移除该模块全部功能。全选仅改变表单,点击创建/保存才生效;取消不落库。 - 全选不包含未开放接口、付款、账号权限、Provider密钥和设备令牌,不绕过业务门禁,不自动授权未来新增模块/功能。编辑不更换 API Key。至少保留一个模块,全部禁止访问仍通过停用。 ### 设计、验收与风险 独立 QuantUX v3 App,保留已确认 v2;沿用 Admin 布局。展示列表、新密钥查看/复制、旧密钥提示、加载/失败/解密不可用/停用/无权限,以及创建/编辑全选、分组、半选、清空、提交中/失败保留/成功。仅无效示例与固定代表性组合,不调用真实业务或生成密钥。记录可访问链接、App ID、模型指纹、验证结果;确认人/时间待用户审核。 影响:后续 Server/Web、API、安全配置与追加数据库迁移;Android 不变。依赖 v3 原型确认及独立安全/迁移实施授权,未满足前不编写生产代码;不与其他客户端密钥改动并行。迁移/本机或线上发布重启/真实密钥操作本次均不授权。 后续验收须包含旧密钥兼容、加密回读、非管理员拒绝/日志脱敏、配置缺失不降级、取消不落库、全选范围与半选、HTTP复制失败手动复制回退、原有编辑停用并发版本保护回归。 文档影响:本轮只有草稿,无已实现长期事实变化,不更新 Wiki/不运行同步;实施后须更新架构、业务规则、API、运维/配置说明。无 HTML 导出、无任务快照。 工具回退:本会话无 Gitea MCP,使用项目忽略配置的 Gitea API;QuantUX 使用已有配置的认证 MCP 服务,不记录凭据。 ### v3 原型证据 - 独立 v3 App ID:6a9e8ac3191a826306a7f746;名称 GoAuto #237 v3 密钥回看与模块功能全选。 - 线上编辑入口:https://qux.ilapage.cn/#/apps/6a9e8ac3191a826306a7f746.html (需要 QuantUX 登录)。保留已确认 v2 App 6a9e6910191a826306a7f6d6,未覆盖。 - 版本:v3,2026-09-07;screens/widgets/lines/startScreen 规范化 JSON SHA256:7c8a9f01b9d29782d48106d3c2daab0e5e99db7b42fd12da3bf023a6ffa78f72。 - 模型级验证:39 个画面、1728 控件、595 连线;全部变更字段在线回读一致,连线端点无悬空引用。支持新密钥回看/示例复制、旧密钥提示、读取中/失败/解密异常、停用与权限边界、创建/编辑的模块与功能全选、分组/半选/清空、蝦皮功能明细、提交失败保留及成功状态。 - 限制:固定代表性组合流程,不是任意勾选组合的动态权限引擎;复制仅演示,不操作真实剪贴板。浏览器连接两次读取超时,未完成视觉布局、实际点击或免登录分享预览验证;当前为草稿,不能宣称正式审核入口已验证。后续先恢复浏览器核验,再由用户确认;确认人/时间均待定。 - UI/UX 技能用于沿用既有 Admin 布局及补齐全选/半选、取消、加载禁用、失败恢复状态,未引入新视觉体系。 - 本轮仅修改本工单与 QuantUX 原型;无生产代码/数据库/权限写入/重启/部署,未创建或读取真实密钥,未导出 HTML 或工单归档。无已实现长期事实变化,跳过 Wiki 同步。Gitea 使用已记录的 API 回退,QuantUX 使用既有认证 MCP。
Author
Owner

#237 v1 原型草稿已保存(2026-09-07)

QuantUX App ID:6a9e6910191a826306a7f6d6
名称:GoAuto #237 v1 客户端密钥 · 菜单授权
编辑入口:https://qux.ilapage.cn/#/apps/6a9e6910191a826306a7f6d6.html (需要 QuantUX 登录;尚未完成浏览器可访问性检查,不作为已验证分享链接)

覆盖:密钥列表、创建弹窗、按“采集采购/采采管理”选择模块、只读/读写和独立动作边界、一次性展示示例密钥、查看授权、停用确认,以及空/加载/失败/校验/无权限状态。

在线模型已回读:18 个状态画面、673 个控件、242 条连线,连线端点结构校验无悬空引用。模型 screens/widgets/lines/startScreen 的规范化 JSON SHA256:74a480f15fe3bea260e618662ea2acfe3c841eab059093f2fb5eca9a06ebfb51。

限制:固定代表性组合演示,不是完整动态授权实现;复制和创建均为无效示例,不产生真实密钥或权限。浏览器连接连续超时,尚未完成视觉、关键点击流程和分享预览验证,因此状态仍为“草稿,待完成预览检查”,不能据此进入生产实施。

工具说明:本会话未暴露专用 Gitea/QuantUX 工具;Gitea 使用项目环境配置的 API,QuantUX 使用已配置的认证 MCP HTTP 端点,未记录凭据。

未修改生产代码、数据库或真实权限,未部署、未导出 HTML。无长期文档影响:仅未确认设计草稿,本轮不修改 Wiki、不运行镜像同步。待预览验证完成并由用户明确确认 v1 覆盖范围后,才进入实施门禁。

## #237 v1 原型草稿已保存(2026-09-07) QuantUX App ID:`6a9e6910191a826306a7f6d6` 名称:`GoAuto #237 v1 客户端密钥 · 菜单授权` 编辑入口:https://qux.ilapage.cn/#/apps/6a9e6910191a826306a7f6d6.html (需要 QuantUX 登录;尚未完成浏览器可访问性检查,不作为已验证分享链接) 覆盖:密钥列表、创建弹窗、按“采集采购/采采管理”选择模块、只读/读写和独立动作边界、一次性展示示例密钥、查看授权、停用确认,以及空/加载/失败/校验/无权限状态。 在线模型已回读:18 个状态画面、673 个控件、242 条连线,连线端点结构校验无悬空引用。模型 screens/widgets/lines/startScreen 的规范化 JSON SHA256:`74a480f15fe3bea260e618662ea2acfe3c841eab059093f2fb5eca9a06ebfb51`。 限制:固定代表性组合演示,不是完整动态授权实现;复制和创建均为无效示例,不产生真实密钥或权限。浏览器连接连续超时,尚未完成视觉、关键点击流程和分享预览验证,因此状态仍为“草稿,待完成预览检查”,不能据此进入生产实施。 工具说明:本会话未暴露专用 Gitea/QuantUX 工具;Gitea 使用项目环境配置的 API,QuantUX 使用已配置的认证 MCP HTTP 端点,未记录凭据。 未修改生产代码、数据库或真实权限,未部署、未导出 HTML。无长期文档影响:仅未确认设计草稿,本轮不修改 Wiki、不运行镜像同步。待预览验证完成并由用户明确确认 v1 覆盖范围后,才进入实施门禁。
Author
Owner

v2 原型更新结果(2026-09-07)

已按用户本次要求更新本单正文与现有 QuantUX 草稿。App ID 保持 6a9e6910191a826306a7f6d6,名称升级为 GoAuto #237 v2 客户端密钥 · 可编辑授权。
入口:https://qux.ilapage.cn/#/apps/6a9e6910191a826306a7f6d6.html

新增列表“编辑授权”,19~26 号画面覆盖当前授权回显、修改、保存中、失败保留并重试、保存成功、全部取消校验、停用只读及独立动作设置。代表性变更为新增“采集规则·只读”、PDD 商品从读写降为只读;取消返回原列表,密钥不更换,全文不再显示。停用列表编辑入口禁用,授权详情进入只读状态。

验证:6 个模型字段更新成功并在线回读完全一致;26 画面、1036 控件、410 连线,端点无悬空引用。screens/widgets/lines/startScreen 规范化 JSON SHA256:36e373d14235220443abbe865875e19c78c1f9d1fed68228dfa350fb17136977。

限制:本轮完成模型级检查,浏览器视觉/实际点击及分享链接验证仍未完成(上一轮浏览器连接超时未解除);仍为 v2 草稿,不宣称已完成可访问性审核。模块和动作是固定组合演示,不是动态授权引擎。确认人/确认时间:待用户确认。

UI/UX 检查影响:沿用现有 Admin 风格,补充未修改保存禁用、提交中反馈、失败保留输入与恢复路径。没有修改生产代码、真实权限、数据库或部署;无新增长期事实,跳过 Wiki 更新和同步。未导出 HTML。Gitea/QuantUX 工具回退方式沿用前条记录。

## v2 原型更新结果(2026-09-07) 已按用户本次要求更新本单正文与现有 QuantUX 草稿。App ID 保持 `6a9e6910191a826306a7f6d6`,名称升级为 `GoAuto #237 v2 客户端密钥 · 可编辑授权`。 入口:https://qux.ilapage.cn/#/apps/6a9e6910191a826306a7f6d6.html 新增列表“编辑授权”,19~26 号画面覆盖当前授权回显、修改、保存中、失败保留并重试、保存成功、全部取消校验、停用只读及独立动作设置。代表性变更为新增“采集规则·只读”、PDD 商品从读写降为只读;取消返回原列表,密钥不更换,全文不再显示。停用列表编辑入口禁用,授权详情进入只读状态。 验证:6 个模型字段更新成功并在线回读完全一致;26 画面、1036 控件、410 连线,端点无悬空引用。screens/widgets/lines/startScreen 规范化 JSON SHA256:`36e373d14235220443abbe865875e19c78c1f9d1fed68228dfa350fb17136977`。 限制:本轮完成模型级检查,浏览器视觉/实际点击及分享链接验证仍未完成(上一轮浏览器连接超时未解除);仍为 v2 草稿,不宣称已完成可访问性审核。模块和动作是固定组合演示,不是动态授权引擎。确认人/确认时间:待用户确认。 UI/UX 检查影响:沿用现有 Admin 风格,补充未修改保存禁用、提交中反馈、失败保留输入与恢复路径。没有修改生产代码、真实权限、数据库或部署;无新增长期事实,跳过 Wiki 更新和同步。未导出 HTML。Gitea/QuantUX 工具回退方式沿用前条记录。
Author
Owner

v2 用户原型确认及实施门禁(2026-09-07)

用户明确:“原型通过,做 #237”。记录 v2 原型通过,确认人为本任务用户,覆盖现有密钥列表、创建、模块/读写/独立动作授权、查看、停用,以及编辑既有 Key 授权的全部 v2 范围。
设计证据沿用上一条:App ID 6a9e6910191a826306a7f6d6,v2,模型 SHA256 36e373d14235220443abbe865875e19c78c1f9d1fed68228dfa350fb17136977。用户确认不等同于 Agent 已完成浏览器验证;之前记录的视觉/点击未验证事实保留。

下一阶段为 Server/Web 实施,Android 不变。按仓库永久规则及本单“原型确认不等于迁移/发布授权”,密钥认证、安全和权限修改正式实施前须再次明确人工授权。目前停在该门禁,尚未修改生产代码或数据库。
拟请求授权范围:实现 #237 的客户端密钥认证、模块接口白名单与敏感字段隔离,密钥创建/授权编辑/停用和审计,管理员 UI、追加迁移文件及自动化测试。运行本机/线上数据库迁移、写入真实权限、重启发布和真实业务动作不包含在上述代码实施授权内,待具体迁移与验证方案确定后另行申请。

本轮仅更新工单确认记录,无长期事实变化,不更新 Wiki。继续沿用已记录的 Gitea API 回退原因。

## v2 用户原型确认及实施门禁(2026-09-07) 用户明确:“原型通过,做 #237”。记录 v2 原型通过,确认人为本任务用户,覆盖现有密钥列表、创建、模块/读写/独立动作授权、查看、停用,以及编辑既有 Key 授权的全部 v2 范围。 设计证据沿用上一条:App ID `6a9e6910191a826306a7f6d6`,v2,模型 SHA256 `36e373d14235220443abbe865875e19c78c1f9d1fed68228dfa350fb17136977`。用户确认不等同于 Agent 已完成浏览器验证;之前记录的视觉/点击未验证事实保留。 下一阶段为 Server/Web 实施,Android 不变。按仓库永久规则及本单“原型确认不等于迁移/发布授权”,密钥认证、安全和权限修改正式实施前须再次明确人工授权。目前停在该门禁,尚未修改生产代码或数据库。 拟请求授权范围:实现 #237 的客户端密钥认证、模块接口白名单与敏感字段隔离,密钥创建/授权编辑/停用和审计,管理员 UI、追加迁移文件及自动化测试。运行本机/线上数据库迁移、写入真实权限、重启发布和真实业务动作不包含在上述代码实施授权内,待具体迁移与验证方案确定后另行申请。 本轮仅更新工单确认记录,无长期事实变化,不更新 Wiki。继续沿用已记录的 Gitea API 回退原因。
Author
Owner

开始实施(2026-09-07)

用户已授权 #237 密钥认证、安全、权限代码、UI、追加迁移文件和自动化测试。明确不含实际数据库迁移、真实权限写入、重启或发布。基线 origin/main 29ba16e;独立工作区 issue-237,保留原工作区改动。采用独立 /api/client/v1 入口,稳定模块键及逐路由白名单,不伪造管理员 JWT;所有独立动作默认关闭,每次请求重新检查密钥与授权。管理 /api/admin/v1/client-keys 仅管理员。追加 client_api_key、client_api_key_audit 表与管理员菜单迁移文件,编辑/停用使用版本条件避免覆盖。验证仅隔离自动化数据库与 mock,不调用真实采购/SYB/AI。长期文档影响:架构、业务规则、共享 API、安全运维,将于代码验证后集中更新。

## 开始实施(2026-09-07) 用户已授权 #237 密钥认证、安全、权限代码、UI、追加迁移文件和自动化测试。明确不含实际数据库迁移、真实权限写入、重启或发布。基线 origin/main 29ba16e;独立工作区 issue-237,保留原工作区改动。采用独立 /api/client/v1 入口,稳定模块键及逐路由白名单,不伪造管理员 JWT;所有独立动作默认关闭,每次请求重新检查密钥与授权。管理 /api/admin/v1/client-keys 仅管理员。追加 client_api_key、client_api_key_audit 表与管理员菜单迁移文件,编辑/停用使用版本条件避免覆盖。验证仅隔离自动化数据库与 mock,不调用真实采购/SYB/AI。长期文档影响:架构、业务规则、共享 API、安全运维,将于代码验证后集中更新。
ila changed title from feat(api): 客户端密钥与菜单模块授权(先审 QuantUX 原型) to feat(api): 客户端密钥与可编辑菜单模块授权 2026-09-07 17:16:43 +08:00
Author
Owner

代码交付待验收;实际迁移与部署联调待授权(2026-09-07)

实现与版本

已按用户确认的 QuantUX v2 实现 Server/Web,Android 未改。分支 feat/237-client-api-keys 已推送;实现提交 57b0f15,长期 Wiki 镜像提交 76c94e3,基线 29ba16e,未合并 main。

独立 /api/client/v1 共 65 条显式业务路由;复用导航 12 模块,普通读写与独立动作分开,默认动作关闭。管理 /api/admin/v1/client-keys 仅管理员;创建只返回一次随机密钥、库中保存 SHA-256 摘要,支持查看授权、原 Key 编辑和停用。编辑/停用通过 version 条件更新并与管理审计同事务;每次客户端请求重新验证授权,不伪造 Admin JWT。请求审计意图必须先保存,再执行业务;响应过滤凭据及原始载荷。现有业务幂等、状态机和支付禁止边界保持。

追加迁移文件 1788798000000_client_api_key.go 创建两表和管理员菜单,仅在隔离 SQLite 测试执行。实际 MySQL 迁移、菜单权限写入尚未执行。

验证

  • Server go test ./... 通过;最终受影响包 clientapi/clientkey/迁移目录复核通过,go build 通过。
  • Web 单元用例 8/8 通过:回显取消、默认只读、移除动作、同 ID 编辑、409 保留输入、防盲重试、停用只读、无权限和密钥清理(含离开页面后迟到响应)。
  • 新增/修改 Web 文件 ESLint 通过;生产构建通过。全量 lint 仍有既有采购任务页面 24 个缩进错误,已核对该文件与 origin/main 完全一致,未混入修复;构建有既有 CSS/大分包警告。
  • 浏览器直接运行生产组件的内存 mock fixture:取消保留授权、保存更新摘要且 Key 标识不变、停用后不可编辑、创建一次展示关闭后清空;可见布局检查通过,控制台无 error。UI/UX 规范落实为保存/取消、无改动禁用和失败保留输入。仅使用无效示例密钥,不连接真实 API;未测试剪贴板复制。
  • harness.py check --strict、唯一一轮 sync + sync --check、git diff --check 通过;测试开发服务已停止。
  • 未做真实 HTTPS 反代鉴权、MySQL 迁移、真实权限、真实客户端及 SYB/AI/采购/采集执行验收;不能把模拟验证当成线上可用。

长期文档

已在线更新并回读正文及 revision(显式保留原非空标题),随后同步只读镜像:

  • Architecture-and-Code-Map:ba4f09e1fb62f45a097b3310860fc4138b0ce48e
  • Business-Rules-and-Glossary:5ced8b2313bf5ca23096c7d5ddb3049884575f0c
  • Android-Agent-API-Contract:2ce609309aefecac2afdc1a10b79a0631797a6cb(含 65 条完整清单)
  • Deployment-and-Operations:7c6c467980eabccc77f84c404848dd624d8311d9
    本会话没有 Gitea MCP 工具,继续按已记录方案使用项目忽略配置的 Gitea API,未输出凭据。不导出原型 HTML 或工单快照。

部署前置与边界

管理端密钥接口及客户端接口在所有环境均强制 HTTPS;当前线上 HTTP IP 入口不适用,不能通过伪造协议头放行。须先确认 HTTPS 入口,再单独授权实际追加迁移、权限写入、必要服务重启和范围明确的联调;本次没有执行这些操作。
模块授权不提供行/店铺级数据隔离;已经通过校验的在途请求可在撤销授权后完成。审计 status=0 需核对结果,不能自动重放。部分既有业务操作人 ID 为授权管理员,实际客户端身份以 key_id 审计为准。客户端采购批量重试沿用现有 Admin 语义,不新增 Agent reset 能力。

工单保持 open,代码交付待验收,真实迁移与联调未完成;用户未验收前不关闭。

## 代码交付待验收;实际迁移与部署联调待授权(2026-09-07) ### 实现与版本 已按用户确认的 QuantUX v2 实现 Server/Web,Android 未改。分支 `feat/237-client-api-keys` 已推送;实现提交 `57b0f15`,长期 Wiki 镜像提交 `76c94e3`,基线 `29ba16e`,未合并 main。 独立 `/api/client/v1` 共 65 条显式业务路由;复用导航 12 模块,普通读写与独立动作分开,默认动作关闭。管理 `/api/admin/v1/client-keys` 仅管理员;创建只返回一次随机密钥、库中保存 SHA-256 摘要,支持查看授权、原 Key 编辑和停用。编辑/停用通过 version 条件更新并与管理审计同事务;每次客户端请求重新验证授权,不伪造 Admin JWT。请求审计意图必须先保存,再执行业务;响应过滤凭据及原始载荷。现有业务幂等、状态机和支付禁止边界保持。 追加迁移文件 `1788798000000_client_api_key.go` 创建两表和管理员菜单,仅在隔离 SQLite 测试执行。实际 MySQL 迁移、菜单权限写入尚未执行。 ### 验证 - Server `go test ./...` 通过;最终受影响包 clientapi/clientkey/迁移目录复核通过,`go build` 通过。 - Web 单元用例 8/8 通过:回显取消、默认只读、移除动作、同 ID 编辑、409 保留输入、防盲重试、停用只读、无权限和密钥清理(含离开页面后迟到响应)。 - 新增/修改 Web 文件 ESLint 通过;生产构建通过。全量 lint 仍有既有采购任务页面 24 个缩进错误,已核对该文件与 origin/main 完全一致,未混入修复;构建有既有 CSS/大分包警告。 - 浏览器直接运行生产组件的内存 mock fixture:取消保留授权、保存更新摘要且 Key 标识不变、停用后不可编辑、创建一次展示关闭后清空;可见布局检查通过,控制台无 error。UI/UX 规范落实为保存/取消、无改动禁用和失败保留输入。仅使用无效示例密钥,不连接真实 API;未测试剪贴板复制。 - `harness.py check --strict`、唯一一轮 `sync` + `sync --check`、`git diff --check` 通过;测试开发服务已停止。 - 未做真实 HTTPS 反代鉴权、MySQL 迁移、真实权限、真实客户端及 SYB/AI/采购/采集执行验收;不能把模拟验证当成线上可用。 ### 长期文档 已在线更新并回读正文及 revision(显式保留原非空标题),随后同步只读镜像: - Architecture-and-Code-Map:`ba4f09e1fb62f45a097b3310860fc4138b0ce48e` - Business-Rules-and-Glossary:`5ced8b2313bf5ca23096c7d5ddb3049884575f0c` - Android-Agent-API-Contract:`2ce609309aefecac2afdc1a10b79a0631797a6cb`(含 65 条完整清单) - Deployment-and-Operations:`7c6c467980eabccc77f84c404848dd624d8311d9` 本会话没有 Gitea MCP 工具,继续按已记录方案使用项目忽略配置的 Gitea API,未输出凭据。不导出原型 HTML 或工单快照。 ### 部署前置与边界 管理端密钥接口及客户端接口在所有环境均强制 HTTPS;当前线上 HTTP IP 入口不适用,不能通过伪造协议头放行。须先确认 HTTPS 入口,再单独授权实际追加迁移、权限写入、必要服务重启和范围明确的联调;本次没有执行这些操作。 模块授权不提供行/店铺级数据隔离;已经通过校验的在途请求可在撤销授权后完成。审计 status=0 需核对结果,不能自动重放。部分既有业务操作人 ID 为授权管理员,实际客户端身份以 key_id 审计为准。客户端采购批量重试沿用现有 Admin 语义,不新增 Agent reset 能力。 工单保持 open,代码交付待验收,真实迁移与联调未完成;用户未验收前不关闭。
Author
Owner

方案与安全边界变更:默认 HTTP/HTTPS(2026-09-07)

用户明确要求不加开关,HTTP 和 HTTPS 默认都可使用,并再次确认接受 HTTP 明文传输风险,授权实施代码与测试。此确认替代此前强制 HTTPS 的设计:管理员密钥管理与 /api/client/v1 均取消 TLS/转发协议头门禁,不新增环境开关;管理员身份、密钥验证、模块/动作、版本冲突、停用、审计和 no-store 保留。界面仅更新既有安全提示,不改变布局和交互,用户确认覆盖该提示与协议边界;无需另建交互原型。增加两种协议的管理权限及客户端授权回归测试,同步架构/业务/API/运维 Wiki。实际迁移、权限写入、线上配置、重启和发布未授权,本轮不执行。Gitea MCP 未提供,沿用项目 API 回退。

## 方案与安全边界变更:默认 HTTP/HTTPS(2026-09-07) 用户明确要求不加开关,HTTP 和 HTTPS 默认都可使用,并再次确认接受 HTTP 明文传输风险,授权实施代码与测试。此确认替代此前强制 HTTPS 的设计:管理员密钥管理与 /api/client/v1 均取消 TLS/转发协议头门禁,不新增环境开关;管理员身份、密钥验证、模块/动作、版本冲突、停用、审计和 no-store 保留。界面仅更新既有安全提示,不改变布局和交互,用户确认覆盖该提示与协议边界;无需另建交互原型。增加两种协议的管理权限及客户端授权回归测试,同步架构/业务/API/运维 Wiki。实际迁移、权限写入、线上配置、重启和发布未授权,本轮不执行。Gitea MCP 未提供,沿用项目 API 回退。
Author
Owner

默认 HTTP/HTTPS 兼容已实现(2026-09-07)

按用户明确风险确认和本轮开始记录 #7310,删除客户端密钥管理及客户端网关的 TLS/转发协议头门禁,不新增开关。管理路由仍要求 Admin JWT + admin;每次请求密钥、模块/动作、停用与审计校验保持,管理响应 no-store 保留。已移除旧 426 分支、过时代理信任测试;页面提示改为支持 HTTP/HTTPS 并明确 HTTP 明文风险,不变更布局和交互。

实现提交:71f7751;本轮 Wiki 镜像提交:ac3c63e;分支 feat/237-client-api-keys 已推送,未合并 main。既有初版 57b0f15 及文档 76c94e3 保留历史;此前“必须 HTTPS 才可部署”的描述已被本轮明确决定替代。

验证:65 条路由的只读/写/独立动作矩阵均在 HTTP、HTTPS 下执行;两种协议均检验无效/缺失/停用密钥拒绝、URL 凭据拒绝、响应脱敏、no-store 和请求审计关联。管理创建以 admin/purchaser/client/空角色在两种协议下验证管理员边界;全量 go test ./... 与 Go 构建通过。Web 原 8 用例通过,修改文件 ESLint 与生产构建通过,保留既有 CSS/大分包警告;全量 lint 已知采购任务页 24 项问题不在本轮修改范围。浏览器以本地内存 mock fixture 确认新 HTTP/HTTPS 及明文风险提示可见,开发服务已停止。未创建真实密钥或执行业务动作,未测试真实外部 HTTP/TLS 反代链路。

长期文档在线更新并回读 revision,已完成唯一一轮 sync + sync --check 和 check --strict:

  • Architecture-and-Code-Map:0b9d4e6e0e97f495d19a53e1aa0ecea3a66ba495
  • Business-Rules-and-Glossary:17e346d6e9398abe2188280112fc04d88fd10d88
  • Android-Agent-API-Contract:36f6f6081f0cfdfd8a4a395a27eaef0a6cd88cda
  • Deployment-and-Operations:e936b9e3a5850dea31c139c09e8aca8584d9a6dd
  • Project-Profile:3b78360779ae520f1ff9e51be3118a04cd549f51(补充本功能协议例外,不影响其他安全边界)

Gitea API 回退原因沿用 #7310;不导出工单快照或原型。工单保持 open、代码待验收。实际迁移、权限写入、重启及发布仍须用户独立授权,未执行。

## 默认 HTTP/HTTPS 兼容已实现(2026-09-07) 按用户明确风险确认和本轮开始记录 #7310,删除客户端密钥管理及客户端网关的 TLS/转发协议头门禁,不新增开关。管理路由仍要求 Admin JWT + admin;每次请求密钥、模块/动作、停用与审计校验保持,管理响应 no-store 保留。已移除旧 426 分支、过时代理信任测试;页面提示改为支持 HTTP/HTTPS 并明确 HTTP 明文风险,不变更布局和交互。 实现提交:71f7751;本轮 Wiki 镜像提交:ac3c63e;分支 feat/237-client-api-keys 已推送,未合并 main。既有初版 57b0f15 及文档 76c94e3 保留历史;此前“必须 HTTPS 才可部署”的描述已被本轮明确决定替代。 验证:65 条路由的只读/写/独立动作矩阵均在 HTTP、HTTPS 下执行;两种协议均检验无效/缺失/停用密钥拒绝、URL 凭据拒绝、响应脱敏、no-store 和请求审计关联。管理创建以 admin/purchaser/client/空角色在两种协议下验证管理员边界;全量 go test ./... 与 Go 构建通过。Web 原 8 用例通过,修改文件 ESLint 与生产构建通过,保留既有 CSS/大分包警告;全量 lint 已知采购任务页 24 项问题不在本轮修改范围。浏览器以本地内存 mock fixture 确认新 HTTP/HTTPS 及明文风险提示可见,开发服务已停止。未创建真实密钥或执行业务动作,未测试真实外部 HTTP/TLS 反代链路。 长期文档在线更新并回读 revision,已完成唯一一轮 sync + sync --check 和 check --strict: - Architecture-and-Code-Map:0b9d4e6e0e97f495d19a53e1aa0ecea3a66ba495 - Business-Rules-and-Glossary:17e346d6e9398abe2188280112fc04d88fd10d88 - Android-Agent-API-Contract:36f6f6081f0cfdfd8a4a395a27eaef0a6cd88cda - Deployment-and-Operations:e936b9e3a5850dea31c139c09e8aca8584d9a6dd - Project-Profile:3b78360779ae520f1ff9e51be3118a04cd549f51(补充本功能协议例外,不影响其他安全边界) Gitea API 回退原因沿用 #7310;不导出工单快照或原型。工单保持 open、代码待验收。实际迁移、权限写入、重启及发布仍须用户独立授权,未执行。
Author
Owner

本机迁移与启动授权(2026-09-07)

用户已授权合并 #237、本机追加迁移和菜单权限写入、构建重启验证,不涉及线上。前置只读检查:本机数据库 127.0.0.1:3307/goauto,唯一未执行迁移 1788798000000_client_api_key,无运行中的采集/采购/SYB同步;保留定时任务启停。当前 Supervisor 仍运行原根目录旧分支,且该目录有用户改动,故使用已有干净 main-runtime 工作区快进 main 并切换本机 GoAuto 两个启动项到该目录,继续读取原 config.yaml,不改/覆盖原工作区。实际结果将在验证后回写。

## 本机迁移与启动授权(2026-09-07) 用户已授权合并 #237、本机追加迁移和菜单权限写入、构建重启验证,不涉及线上。前置只读检查:本机数据库 127.0.0.1:3307/goauto,唯一未执行迁移 1788798000000_client_api_key,无运行中的采集/采购/SYB同步;保留定时任务启停。当前 Supervisor 仍运行原根目录旧分支,且该目录有用户改动,故使用已有干净 main-runtime 工作区快进 main 并切换本机 GoAuto 两个启动项到该目录,继续读取原 config.yaml,不改/覆盖原工作区。实际结果将在验证后回写。
Author
Owner

本机部署与验证完成(2026-09-07)

授权依据:用户对本机迁移、菜单权限写入、构建及服务重启明确回复“授权”;本次未操作线上。

前置:实际数据库确认为本机 127.0.0.1:3307/goauto;唯一未执行迁移为 1788798000000_client_api_key,无运行中采集/采购/SYB同步。现有服务来自带用户改动的旧根工作区,因此不覆盖或重置,改用已有干净 main-runtime 工作区;main 已快进合入 #237 并推送。

迁移:本机构建二进制运行正式 migrate,配置与数据库凭据仅在进程环境内读取;退出 0。回读 sys_migration=1788798000000,client_api_key/client_api_key_audit 存在;菜单 GoAutoClientKeys(1186)归属采采管理父菜单 1172,角色关联仅 admin。复核无其他未执行迁移,sys_job 启停状态前后完全一致。

运行:仅停止/启动 goauto-admin-api、goauto-admin-ui;外部配置 D:/supervisor/programs/goauto.conf 指向 D:/OPC/goauto-worktrees/main-runtime,继续使用 D:/OPC/goauto/config.yaml;API 增加 -SkipMigration,移除无需的 ExecutionPolicy Bypass。配置变更后经 supervisor.reloadConfig 读取并定向启动两个进程,已按实际命令行确认新目录。未重启整个 Supervisor 或其他项目。XML-RPC 方法列举不受支持,未用其扩大操作;读取配置成功后仅对指定程序启动。

验证:main-runtime Server 构建及 Web 生产构建通过(既有 CSS/大分包警告);API 8010、Web 9527 监听且 Supervisor 均 Running。浏览器复用本地真实管理员会话刷新,采采管理中出现客户端密钥;真实密钥列表空态正常,创建弹窗加载两组 12 模块,HTTP/HTTPS 及明文风险提示可见,控制台无 error;取消弹窗未创建真实密钥。未认证客户端 GET 返回 HTTP 401;未认证管理 GET 按既有 JWT 中间件返回 HTTP 200/body code=401 且无数据,未绕过登录。

提交:功能基线 ac3c63e,版本化运行模板 9a10d82,本轮 Wiki 镜像 9d5242b,均在 main。原根目录 dirty/untracked 文件保持原样。

长期运维事实已按 Wiki-first 更新并在线回读:Architecture 9d3b3f2683b5c77f3fd6601057e64c2cda773a51;Business Rules 2a9334053de83a9a0525af074755f67964b48a29;API 59853b796dc787d6af4b6ca3a9c1ae3156cc7152;Deployment f951dbc8b6a555cbf8f44cda073910406ba55191。本轮唯一一次 sync + sync --check 与 check --strict 通过。Gitea 沿用已记录的 API 回退,不导出任务快照。

交付入口:http://127.0.0.1:9527/#/client-keys/index 。菜单未刷新时重新登录。未验证真实密钥签发/编辑/停用及客户端业务读写闭环;线上迁移/发布/重启均未执行。用户未验收,本单不关闭。

## 本机部署与验证完成(2026-09-07) 授权依据:用户对本机迁移、菜单权限写入、构建及服务重启明确回复“授权”;本次未操作线上。 前置:实际数据库确认为本机 127.0.0.1:3307/goauto;唯一未执行迁移为 1788798000000_client_api_key,无运行中采集/采购/SYB同步。现有服务来自带用户改动的旧根工作区,因此不覆盖或重置,改用已有干净 main-runtime 工作区;main 已快进合入 #237 并推送。 迁移:本机构建二进制运行正式 migrate,配置与数据库凭据仅在进程环境内读取;退出 0。回读 sys_migration=1788798000000,client_api_key/client_api_key_audit 存在;菜单 GoAutoClientKeys(1186)归属采采管理父菜单 1172,角色关联仅 admin。复核无其他未执行迁移,sys_job 启停状态前后完全一致。 运行:仅停止/启动 goauto-admin-api、goauto-admin-ui;外部配置 D:/supervisor/programs/goauto.conf 指向 D:/OPC/goauto-worktrees/main-runtime,继续使用 D:/OPC/goauto/config.yaml;API 增加 -SkipMigration,移除无需的 ExecutionPolicy Bypass。配置变更后经 supervisor.reloadConfig 读取并定向启动两个进程,已按实际命令行确认新目录。未重启整个 Supervisor 或其他项目。XML-RPC 方法列举不受支持,未用其扩大操作;读取配置成功后仅对指定程序启动。 验证:main-runtime Server 构建及 Web 生产构建通过(既有 CSS/大分包警告);API 8010、Web 9527 监听且 Supervisor 均 Running。浏览器复用本地真实管理员会话刷新,采采管理中出现客户端密钥;真实密钥列表空态正常,创建弹窗加载两组 12 模块,HTTP/HTTPS 及明文风险提示可见,控制台无 error;取消弹窗未创建真实密钥。未认证客户端 GET 返回 HTTP 401;未认证管理 GET 按既有 JWT 中间件返回 HTTP 200/body code=401 且无数据,未绕过登录。 提交:功能基线 ac3c63e,版本化运行模板 9a10d82,本轮 Wiki 镜像 9d5242b,均在 main。原根目录 dirty/untracked 文件保持原样。 长期运维事实已按 Wiki-first 更新并在线回读:Architecture 9d3b3f2683b5c77f3fd6601057e64c2cda773a51;Business Rules 2a9334053de83a9a0525af074755f67964b48a29;API 59853b796dc787d6af4b6ca3a9c1ae3156cc7152;Deployment f951dbc8b6a555cbf8f44cda073910406ba55191。本轮唯一一次 sync + sync --check 与 check --strict 通过。Gitea 沿用已记录的 API 回退,不导出任务快照。 交付入口:http://127.0.0.1:9527/#/client-keys/index 。菜单未刷新时重新登录。未验证真实密钥签发/编辑/停用及客户端业务读写闭环;线上迁移/发布/重启均未执行。用户未验收,本单不关闭。
Author
Owner

v3 原型已更新,待审核;当前仅设计,详见正文。

  • 独立 v3 App ID:6a9e8ac3191a826306a7f746;名称 GoAuto #237 v3 密钥回看与模块功能全选。
  • 线上编辑入口:https://qux.ilapage.cn/#/apps/6a9e8ac3191a826306a7f746.html (需要 QuantUX 登录)。保留已确认 v2 App 6a9e6910191a826306a7f6d6,未覆盖。
  • 版本:v3,2026-09-07;screens/widgets/lines/startScreen 规范化 JSON SHA256:7c8a9f01b9d29782d48106d3c2daab0e5e99db7b42fd12da3bf023a6ffa78f72。
  • 模型级验证:39 个画面、1728 控件、595 连线;全部变更字段在线回读一致,连线端点无悬空引用。支持新密钥回看/示例复制、旧密钥提示、读取中/失败/解密异常、停用与权限边界、创建/编辑的模块与功能全选、分组/半选/清空、蝦皮功能明细、提交失败保留及成功状态。
  • 限制:固定代表性组合流程,不是任意勾选组合的动态权限引擎;复制仅演示,不操作真实剪贴板。浏览器连接两次读取超时,未完成视觉布局、实际点击或免登录分享预览验证;当前为草稿,不能宣称正式审核入口已验证。后续先恢复浏览器核验,再由用户确认;确认人/时间均待定。
  • UI/UX 技能用于沿用既有 Admin 布局及补齐全选/半选、取消、加载禁用、失败恢复状态,未引入新视觉体系。
  • 本轮仅修改本工单与 QuantUX 原型;无生产代码/数据库/权限写入/重启/部署,未创建或读取真实密钥,未导出 HTML 或工单归档。无已实现长期事实变化,跳过 Wiki 同步。Gitea 使用已记录的 API 回退,QuantUX 使用既有认证 MCP。
v3 原型已更新,待审核;当前仅设计,详见正文。 - 独立 v3 App ID:6a9e8ac3191a826306a7f746;名称 GoAuto #237 v3 密钥回看与模块功能全选。 - 线上编辑入口:https://qux.ilapage.cn/#/apps/6a9e8ac3191a826306a7f746.html (需要 QuantUX 登录)。保留已确认 v2 App 6a9e6910191a826306a7f6d6,未覆盖。 - 版本:v3,2026-09-07;screens/widgets/lines/startScreen 规范化 JSON SHA256:7c8a9f01b9d29782d48106d3c2daab0e5e99db7b42fd12da3bf023a6ffa78f72。 - 模型级验证:39 个画面、1728 控件、595 连线;全部变更字段在线回读一致,连线端点无悬空引用。支持新密钥回看/示例复制、旧密钥提示、读取中/失败/解密异常、停用与权限边界、创建/编辑的模块与功能全选、分组/半选/清空、蝦皮功能明细、提交失败保留及成功状态。 - 限制:固定代表性组合流程,不是任意勾选组合的动态权限引擎;复制仅演示,不操作真实剪贴板。浏览器连接两次读取超时,未完成视觉布局、实际点击或免登录分享预览验证;当前为草稿,不能宣称正式审核入口已验证。后续先恢复浏览器核验,再由用户确认;确认人/时间均待定。 - UI/UX 技能用于沿用既有 Admin 布局及补齐全选/半选、取消、加载禁用、失败恢复状态,未引入新视觉体系。 - 本轮仅修改本工单与 QuantUX 原型;无生产代码/数据库/权限写入/重启/部署,未创建或读取真实密钥,未导出 HTML 或工单归档。无已实现长期事实变化,跳过 Wiki 同步。Gitea 使用已记录的 API 回退,QuantUX 使用既有认证 MCP。
Author
Owner

2026-09-08 已授权线上发布,待验收

  • 用户明确授权最新 Server/Web 发布、#237 迁移和 GoAuto/Nginx 重启。Gitea MCP 不可用,沿用安全配置中的 API 凭据回写,未输出凭据。
  • 发布源码 main d403f3b3a04aad2f81eccf712da159cf60590643;Linux Server 与 Web 生产构建通过;clientkey/clientapi/迁移/sybimport/sybclient Go 测试通过。未将 Android 独立分支混入本次发布。
  • 新 release /home/goauto/releases/20260908-d403f3b-239;Server SHA256 6184524f190b8d2ec48e2334bbdc43c003c55179c87e2608639cf93e4471b619;Web 包 SHA256 fb0aee1135d8c08817e7b4c9a5b33b70525684c4e8b9749e444865608eb2f12b;上传后摘要一致。
  • 发布前无运行中的 SYB/采集/采购/AI 批任务;停止 API 后完成全库备份 /home/goauto/backups/goauto-before-20260908-d403f3b.sql.gz(4022745 bytes,0600),再执行唯一待执行迁移 1788798000000。迁移记录、client_api_key/client_api_key_audit、仅 admin 菜单关联已核对。
  • current 原子切换,GoAuto active/running,Nginx 重启及配置检查通过;外部 HTTP 9527 页面和健康接口均 200。214 个 JS 资源中已核对 partial_success。未登录密钥管理请求 HTTP 200、JSON 业务码 401,未返回密钥数据。
  • 定时任务状态保持原值:1/2 关闭,3/4/5 开启。未主动触发同步、创建密钥、采集、采购或订单。真实客户端密钥业务闭环和线上部分成功场景未执行验收。
  • 旧 release /home/goauto/releases/20260907-29ba16e-236 保留;数据库备份保留,未删除持久化目录。回退程序不等于回退追加迁移。
  • #239 页级保存已上线;#240 上游尾页超时仍未修复。工单保持待验收,不关闭。

Wiki 在线回读、镜像检查和提交:fdd26af(已推送 main);sync 与 sync --check 均通过;Deployment df033d06fd94a4b02a447a27ced8d711521342f3;SYB 214485db630141aeb03d4b49b22a65e572fb592a;Business 7d7f515652a2b24880e55cfd95e94d3c25cbbc4d

## 2026-09-08 已授权线上发布,待验收 - 用户明确授权最新 Server/Web 发布、#237 迁移和 GoAuto/Nginx 重启。Gitea MCP 不可用,沿用安全配置中的 API 凭据回写,未输出凭据。 - 发布源码 main d403f3b3a04aad2f81eccf712da159cf60590643;Linux Server 与 Web 生产构建通过;clientkey/clientapi/迁移/sybimport/sybclient Go 测试通过。未将 Android 独立分支混入本次发布。 - 新 release /home/goauto/releases/20260908-d403f3b-239;Server SHA256 6184524f190b8d2ec48e2334bbdc43c003c55179c87e2608639cf93e4471b619;Web 包 SHA256 fb0aee1135d8c08817e7b4c9a5b33b70525684c4e8b9749e444865608eb2f12b;上传后摘要一致。 - 发布前无运行中的 SYB/采集/采购/AI 批任务;停止 API 后完成全库备份 /home/goauto/backups/goauto-before-20260908-d403f3b.sql.gz(4022745 bytes,0600),再执行唯一待执行迁移 1788798000000。迁移记录、client_api_key/client_api_key_audit、仅 admin 菜单关联已核对。 - current 原子切换,GoAuto active/running,Nginx 重启及配置检查通过;外部 HTTP 9527 页面和健康接口均 200。214 个 JS 资源中已核对 partial_success。未登录密钥管理请求 HTTP 200、JSON 业务码 401,未返回密钥数据。 - 定时任务状态保持原值:1/2 关闭,3/4/5 开启。未主动触发同步、创建密钥、采集、采购或订单。真实客户端密钥业务闭环和线上部分成功场景未执行验收。 - 旧 release /home/goauto/releases/20260907-29ba16e-236 保留;数据库备份保留,未删除持久化目录。回退程序不等于回退追加迁移。 - #239 页级保存已上线;#240 上游尾页超时仍未修复。工单保持待验收,不关闭。 Wiki 在线回读、镜像检查和提交:fdd26af(已推送 main);sync 与 sync --check 均通过;Deployment df033d06fd94a4b02a447a27ced8d711521342f3;SYB 214485db630141aeb03d4b49b22a65e572fb592a;Business 7d7f515652a2b24880e55cfd95e94d3c25cbbc4d
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#237