SuperAPI AI 工具集

prowler-api

编程与开发

查看项目

更新于 10-16 04:34

技能介绍

用途:这是 Prowler 后端 API 的专用模式技能,触发场景为在 api/ 目录下处理 models、serializers、viewsets、filters、tasks 等涉及租户隔离的工作。通用 DRF 模式(ViewSet、Serializer、Filter、JSON:API)建议改用 django-drf 技能。

主要能力与规则:RLS 与租户隔离要求所有 M2M 关系使用带 tenant_id 的显式 through 模型,视图集外查询须用 rls_transaction(tenant_id),禁止用裸 SQL 或 connection.cursor() 绕过 RLS,Celery 中禁止在无 RLS 上下文时访问 Provider.objects。RBAC 中权限检查前须用 get_role()(只返回第一个角色),权限包括 MANAGE_USERS、MANAGE_ACCOUNT、MANAGE_BILLING、MANAGE_PROVIDERS、MANAGE_INTEGRATIONS、MANAGE_SCANS、UNLIMITED_VISIBILITY。Celery 任务装饰器顺序为先 @set_tenant 再 @handle_provider_deletion。架构为四数据库:default(prowler_user,启用 RLS)、admin(admin,迁移与绕过 RLS)、replica(只读)、admin_replica。Provider 支持 11 种,新增需在 ProviderChoices 枚举添加并写 validate_<provider>_uid() 静态方法。

使用方式:常用命令包括 cd api && uv run python src/backend/manage.py runserver、uv run celery -A config.celery worker -l info -Q scans,overview、uv run celery -A config.celery beat -l info、uv run pytest -x --tb=short,以及生产检查 cd api && uv run python src/backend/manage.py check --deploy。可用 Context7 MCP 查询 Celery、django-celery-beat、Django 文档。

适用场景与限制:适用于 Prowler 专有的多租户后端开发与调试;长任务返回 202 并附带任务引用;分区表使用 UUIDv7 进行分区裁剪;生产部署须关闭 DEBUG、设置 SECRET_KEY、ALLOWED_HOSTS、SECURE_SSL_REDIRECT 等。本技能不覆盖通用 DRF 模式,具体 API 测试另有 prowler-test-api 技能。