feat: add tenant-scoped rule and permission management

This commit is contained in:
wren
2026-05-21 22:03:08 +08:00
parent a2c2bf1969
commit 1f1bccf3b3
193 changed files with 64463 additions and 1771 deletions
+14 -1
View File
@@ -7,6 +7,9 @@ from celery.schedules import crontab
from kombu import Queue
from fastapi_admin.config import (
LEAUDIT_PAGE_QUALITY_QUEUE_NORMAL,
LEAUDIT_PAGE_QUALITY_QUEUE_URGENT,
LEAUDIT_RULE_TENANT_MATERIALIZE_CRON_MINUTES,
LEAUDIT_TASK_SOFT_TIME_LIMIT,
LEAUDIT_TASK_TIME_LIMIT,
LEAUDIT_STUCK_SCAN_CRON_MINUTES,
@@ -36,10 +39,13 @@ celery_app.conf.update(
imports=(
"fastapi_modules.fastapi_leaudit.leaudit_bridge.tasks",
"fastapi_modules.fastapi_leaudit.govdoc_bridge.tasks",
"fastapi_modules.fastapi_leaudit.page_quality.tasks",
),
task_queues=(
Queue(LEAUDIT_WORKER_QUEUE_URGENT),
Queue(LEAUDIT_WORKER_QUEUE_NORMAL),
Queue(LEAUDIT_PAGE_QUALITY_QUEUE_URGENT),
Queue(LEAUDIT_PAGE_QUALITY_QUEUE_NORMAL),
),
task_track_started=True,
task_acks_late=True,
@@ -52,7 +58,12 @@ celery_app.conf.update(
"task": "leaudit.scan_stuck_documents",
"schedule": crontab(minute=f"*/{max(1, int(LEAUDIT_STUCK_SCAN_CRON_MINUTES))}"),
"options": {"queue": LEAUDIT_WORKER_QUEUE_NORMAL},
}
},
"leaudit-materialize-rule-tenants": {
"task": "leaudit.materialize_rule_tenants",
"schedule": crontab(minute=f"*/{max(1, int(LEAUDIT_RULE_TENANT_MATERIALIZE_CRON_MINUTES))}"),
"options": {"queue": LEAUDIT_WORKER_QUEUE_NORMAL},
},
},
)
@@ -60,6 +71,7 @@ celery_app.autodiscover_tasks(
[
"fastapi_modules.fastapi_leaudit.leaudit_bridge",
"fastapi_modules.fastapi_leaudit.govdoc_bridge",
"fastapi_modules.fastapi_leaudit.page_quality",
],
force=True,
)
@@ -67,3 +79,4 @@ celery_app.autodiscover_tasks(
# 显式导入任务模块,避免 worker 在某些启动方式下漏注册 bridge tasks。
from fastapi_modules.fastapi_leaudit.leaudit_bridge import tasks as _leaudit_bridge_tasks # noqa: F401,E402
from fastapi_modules.fastapi_leaudit.govdoc_bridge import tasks as _govdoc_bridge_tasks # noqa: F401,E402
from fastapi_modules.fastapi_leaudit.page_quality import tasks as _page_quality_tasks # noqa: F401,E402
+4
View File
@@ -81,8 +81,12 @@ LEAUDIT_WORKER_CONCURRENCY: int
LEAUDIT_RUN_LOCK_SECONDS: int
LEAUDIT_STUCK_SCAN_CRON_MINUTES: int
LEAUDIT_STUCK_TIMEOUT_MINUTES: int
LEAUDIT_RULE_TENANT_MATERIALIZE_CRON_MINUTES: int
LEAUDIT_TASK_SOFT_TIME_LIMIT: int
LEAUDIT_TASK_TIME_LIMIT: int
LEAUDIT_PAGE_QUALITY_ENABLED: bool
LEAUDIT_PAGE_QUALITY_QUEUE_NORMAL: str
LEAUDIT_PAGE_QUALITY_QUEUE_URGENT: str
# 常量
ROOT_PATH: object
+4
View File
@@ -122,8 +122,12 @@ class LeauditSettings(_Base):
LEAUDIT_RUN_LOCK_SECONDS: int = 1800
LEAUDIT_STUCK_SCAN_CRON_MINUTES: int = 5
LEAUDIT_STUCK_TIMEOUT_MINUTES: int = 20
LEAUDIT_RULE_TENANT_MATERIALIZE_CRON_MINUTES: int = 30
LEAUDIT_TASK_SOFT_TIME_LIMIT: int = 3300
LEAUDIT_TASK_TIME_LIMIT: int = 3600
LEAUDIT_PAGE_QUALITY_ENABLED: bool = False
LEAUDIT_PAGE_QUALITY_QUEUE_NORMAL: str = "leaudit.page_quality.normal"
LEAUDIT_PAGE_QUALITY_QUEUE_URGENT: str = "leaudit.page_quality.urgent"
# 实例化所有 Settings