Skip to content

feat: 管理设置支持内部询问保留天数 - #122

Merged
leafliber merged 1 commit into
mainfrom
feat/question-expiry-setting
Oct 17, 2026
Merged

leafliber merged 1 commit into
mainfrom
feat/question-expiry-setting

Conversation

@leafliber

Copy link
Copy Markdown
Member

将 #118 的内部询问保留天数接入管理设置,完成 MM-05,并按 MM-06 对齐两处既有测试的旧行为。

GET /admin/api/settings 的 goals.internal_question_expiry_days 缺省返回 7。PATCH /admin/api/settings/goals 接受该可选字段,严格整数 1—365;省略保留现值,非法类型或越界返回 400。可与 default_reminder_minutes、overdue_reminders 一起保存,沿用管理员会话、CSRF 和操作记录,所有设置与操作记录在同一事务中提交或回滚。读取默认值不回写数据库,部分保存保留所有已有键。

沿用 runtime_settings.goals,无需迁移。README 目标一节已补充接口说明;页面由 UX 后续接入。

既有断言调整仅限 MM-06 批准的内容:

  1. tests/test_goals_api.py::test_admin_goal_crud_filters_settings_notifications_and_audit:GET 默认值、PATCH 旧字段后的两处精确返回值比较,各补入 internal_question_expiry_days: 7。
  2. tests/test_question_goal_expiry.py::test_setting_write_persists_and_existing_admin_patch_preserves_internal_key:返回值公开已保存的保留天数,合法 PATCH 由预期 400 改为 200。保留其他断言及原有非法值检查,不跳过用例;新增测试覆盖越界和类型错误返回 400。

验证:

  • 新增 tests/test_question_expiry_settings.py,34 项参数化实例,覆盖默认值、内部已有值、单独及混合 PATCH、遗漏保留、非法输入、操作记录及失败回滚、管理员会话与 CSRF/Origin/Host/JSON 防护。
  • 先红后绿:新测试及获批既有用例共 38 项,从 19 failed / 19 passed 到 38 passed。
  • Python 3.13.13:uv run pytest --show-capture=no,3747 passed(1143.66 秒)。
  • Python 3.12.12:随后串行运行 uv run --locked --isolated --python 3.12 pytest --show-capture=no,3747 passed(1179.01 秒)。项目 .venv 保持 3.13。
  • uv build:wheel 与 sdist 构建通过;本 worktree 的 .pytest-tmp 已清理。
  • 未涉及学习和召回逻辑,按 MM-05 许可省略学习请求与七份召回对照;未进行真实模型评测。

@leafliber
leafliber merged commit d9fc539 into main Oct 17, 2026
1 check passed
@leafliber
leafliber deleted the feat/question-expiry-setting branch October 17, 2026 11:26
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