"""Manual-notify "driver". No external API call; exists so every software_connector_bindings row can reference a valid integration. The provisioning service detects ``manual`` at dispatch time and routes to a human assignee. """ from __future__ import annotations from app.integrations.driver_base import ( ProvisioningContext, ProvisioningResult, SoftwareProvisioningDriver, ) from app.integrations.registry import register_driver from app.integrations.schemas import ( IntegrationFieldInfo, IntegrationTestResult, ) @register_driver class ManualSoftwareDriver(SoftwareProvisioningDriver): provider = "manual" display_name = "手动处理(通知负责人)" description = ( "没有对接 API 的软件,由对应的软件负责人手动处理。provisioning 服务" "会把任务派发给人,不走 connector。" ) supports_seat = True supports_permission = True supports_multi_instance = False config_schema: list[IntegrationFieldInfo] = [] async def test_connection(self) -> IntegrationTestResult: return IntegrationTestResult( ok=True, message="Manual driver — no external call to test.", ) async def grant_seat(self, ctx: ProvisioningContext) -> ProvisioningResult: return ProvisioningResult(ok=True, external_ref="manual") async def revoke_seat(self, ctx: ProvisioningContext) -> ProvisioningResult: return ProvisioningResult(ok=True, external_ref="manual") async def grant_permission(self, ctx: ProvisioningContext) -> ProvisioningResult: return ProvisioningResult(ok=True, external_ref="manual") async def revoke_permission(self, ctx: ProvisioningContext) -> ProvisioningResult: return ProvisioningResult(ok=True, external_ref="manual")