后端:adminpanel ledgers(全局流水+筛)+ adjust(手动调额,落 ADJUSTMENT)+ quota-policies CRUD; 额度拦截 _enforce_quota_policy(单任务/月度/项目)接入 reserve_credit,仅团队有 active 策略才生效(无策略零回归); adjust_credit helper。修真 bug:log_admin_action 加 savepoint + JSON 安全化(UUID/Decimal), 修复传 serializer.data 致审计报错污染外层事务 → TransactionManagementError。 前端:adminApi 计费/额度系列;计费审计页(流水表+手动调额弹窗)+ 额度策略页(CRUD 弹窗,团队下拉+三类上限+启用)。 测试:adminpanel 44 + billing + accounts = 70 单测过(调额±/超额拒/额度拦截 per_task+monthly/无策略零回归); 无头 e2e _admin-p7.mjs 6 断言过 + 0 console error(一次性团队,不动 demo 余额);tsc+build 绿。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
49 lines
2.2 KiB
Python
49 lines
2.2 KiB
Python
from django.urls import path
|
|
|
|
from .views import (
|
|
admin_asset_reviews,
|
|
admin_asset_reviews_poll,
|
|
admin_asset_reviews_submit,
|
|
admin_invitations,
|
|
admin_ledger_adjust,
|
|
admin_ledgers,
|
|
admin_quota_policies,
|
|
admin_quota_policy_detail,
|
|
admin_task_detail,
|
|
admin_task_retry,
|
|
admin_tasks,
|
|
admin_quality_word_detail,
|
|
admin_quality_words,
|
|
admin_revoke_invitation,
|
|
admin_team_detail,
|
|
admin_team_toggle,
|
|
admin_teams,
|
|
admin_user_reset_password,
|
|
admin_user_toggle,
|
|
admin_users,
|
|
)
|
|
|
|
|
|
urlpatterns = [
|
|
path("invitations/", admin_invitations, name="admin-invitations"),
|
|
path("invitations/<uuid:invite_id>/revoke/", admin_revoke_invitation, name="admin-invitation-revoke"),
|
|
path("teams/", admin_teams, name="admin-teams"),
|
|
path("teams/<uuid:team_id>/", admin_team_detail, name="admin-team-detail"),
|
|
path("teams/<uuid:team_id>/toggle/", admin_team_toggle, name="admin-team-toggle"),
|
|
path("users/", admin_users, name="admin-users"),
|
|
path("users/<uuid:user_id>/toggle/", admin_user_toggle, name="admin-user-toggle"),
|
|
path("users/<uuid:user_id>/reset-password/", admin_user_reset_password, name="admin-user-reset-password"),
|
|
path("quality-words/", admin_quality_words, name="admin-quality-words"),
|
|
path("quality-words/<uuid:word_id>/", admin_quality_word_detail, name="admin-quality-word-detail"),
|
|
path("asset-reviews/", admin_asset_reviews, name="admin-asset-reviews"),
|
|
path("asset-reviews/submit/", admin_asset_reviews_submit, name="admin-asset-reviews-submit"),
|
|
path("asset-reviews/poll/", admin_asset_reviews_poll, name="admin-asset-reviews-poll"),
|
|
path("tasks/", admin_tasks, name="admin-tasks"),
|
|
path("tasks/<uuid:task_id>/", admin_task_detail, name="admin-task-detail"),
|
|
path("tasks/<uuid:task_id>/retry/", admin_task_retry, name="admin-task-retry"),
|
|
path("ledgers/", admin_ledgers, name="admin-ledgers"),
|
|
path("ledgers/adjust/", admin_ledger_adjust, name="admin-ledger-adjust"),
|
|
path("quota-policies/", admin_quota_policies, name="admin-quota-policies"),
|
|
path("quota-policies/<uuid:policy_id>/", admin_quota_policy_detail, name="admin-quota-policy-detail"),
|
|
]
|