立即执行一次 Token 维护。
(request: Request)
| 802 | |
| 803 | @router.post("/tokens/maintenance/run", dependencies=[Depends(require_auth)]) |
| 804 | async def run_token_maintenance_api(request: Request): |
| 805 | """立即执行一次 Token 维护。""" |
| 806 | from app.core.config import settings |
| 807 | from app.services.token_automation import run_token_maintenance |
| 808 | |
| 809 | form_data = await request.form() |
| 810 | action_fields = ( |
| 811 | "auto_remove_duplicates", |
| 812 | "auto_health_check", |
| 813 | "auto_delete_invalid", |
| 814 | ) |
| 815 | has_explicit_actions = any(field in form_data for field in action_fields) |
| 816 | |
| 817 | if has_explicit_actions: |
| 818 | remove_duplicates = "auto_remove_duplicates" in form_data |
| 819 | run_health_check = "auto_health_check" in form_data |
| 820 | delete_invalid = "auto_delete_invalid" in form_data |
| 821 | else: |
| 822 | remove_duplicates = settings.TOKEN_AUTO_REMOVE_DUPLICATES |
| 823 | run_health_check = settings.TOKEN_AUTO_HEALTH_CHECK |
| 824 | delete_invalid = settings.TOKEN_AUTO_DELETE_INVALID |
| 825 | |
| 826 | if not any((remove_duplicates, run_health_check, delete_invalid)): |
| 827 | return _build_alert( |
| 828 | "当前没有可执行的维护动作,请先到 /admin/config#tokens 配置至少一个维护动作。", |
| 829 | title="未执行维护!", |
| 830 | level="warning", |
| 831 | status_code=400, |
| 832 | ) |
| 833 | |
| 834 | try: |
| 835 | summary = await run_token_maintenance( |
| 836 | provider=DEFAULT_TOKEN_NAMESPACE, |
| 837 | remove_duplicates=remove_duplicates, |
| 838 | run_health_check=run_health_check, |
| 839 | delete_invalid_tokens=delete_invalid, |
| 840 | ) |
| 841 | except RuntimeError as exc: |
| 842 | return _build_alert( |
| 843 | str(exc), |
| 844 | title="维护稍后重试", |
| 845 | level="warning", |
| 846 | status_code=409, |
| 847 | ) |
| 848 | except Exception as exc: |
| 849 | logger.exception(f"❌ 手动执行 Token 维护失败: {exc}") |
| 850 | return _build_alert( |
| 851 | f"Token 维护失败: {exc}", |
| 852 | title="维护失败!", |
| 853 | level="error", |
| 854 | status_code=500, |
| 855 | ) |
| 856 | |
| 857 | return _build_alert( |
| 858 | ( |
| 859 | f"本次维护共去重 {summary.duplicate_removed_count} 个," |
| 860 | f"测活 {summary.checked_count} 个(有效 {summary.valid_count} / " |
| 861 | f"匿名 {summary.guest_count} / 无效 {summary.invalid_count})," |
nothing calls this directly
no test coverage detected