Skip to content

修复后台管理相关的两个已验证问题#384

Open
highkay wants to merge 9 commits intochenyme:mainfrom
highkay:main
Open

修复后台管理相关的两个已验证问题#384
highkay wants to merge 9 commits intochenyme:mainfrom
highkay:main

Conversation

@highkay
Copy link
Contributor

@highkay highkay commented Mar 23, 2026

• ## Summary

修复后台管理相关的两个已验证问题:

  1. 配置页保存后与服务端 canonical 配置不同步,且旧页面会把未编辑/已禁用字段回写覆盖服务端
    新值。
  2. POST /v1/admin/cache/online/clear 会把本应返回给客户端的 4xx 错误吞成 500,导致接口错
    误码契约不一致。

Changes

  • 功能新增
  • Bug 修复
  • 重构/清理
  • 文档更新
  • 其他(请说明)

具体变更:

  • 配置页保存时不再整包回写旧快照,改为只提交当前可编辑字段。
  • 配置保存成功后,前端使用服务端返回的 canonical 配置重绘页面,避免“保存成功但页面仍显示旧
    值”。
  • 后端 POST /v1/admin/config 返回真实保存后的配置,GET /v1/admin/config 返回快照,避免
    暴露内部可变状态。
  • 补充配置接口回归测试,覆盖 canonical 返回、partial update 不覆盖未提交字段、读取返回快照
    等场景。
  • 修复 POST /v1/admin/cache/online/clear 对客户端错误的异常处理,保留原始 4xx,不再统一
    包成 500。
  • 补充缓存清理接口回归测试,确保 sync/async 两条路径的错误码语义一致。

Related Issues

Verification

  • 本地运行验证
  • 单元/集成测试
  • Docker 构建通过
  • 未验证(请说明原因)

验证说明:

- 真实复现并验证配置页问题:
  - 保存带空格的 proxy.user_agent 后,页面会立刻显示服务端清洗后的 canonical 值
  - 页面打开期间后台更新禁用字段后,再从旧页面保存其他字段,不会再把服务端新值回滚覆盖
- 真实接口验证:
  - POST /v1/admin/cache/online/clear + {"tokens":[]} 现在返回 400
  - POST /v1/admin/cache/online/clear/async + {"tokens":[]} 仍返回 400
- 自动化测试:
  - uv run python -m unittest tests.test_admin_cache tests.test_admin_config
tests.test_admin_token_pagination
- Lint:
  - uv run ruff check app/api/v1/admin/cache.py app/api/v1/admin/config.py app/core/
config.py tests/test_admin_cache.py tests/test_admin_config.py

## Breaking Changes

- [x] 无
- [ ] 有(请说明迁移方式)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant