feat: implement permission-aware search baseline

This commit is contained in:
2026-07-29 15:50:11 +02:00
parent 89a4fd0874
commit c60ca2776e
27 changed files with 2282 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
from __future__ import annotations
from typing import Any, Literal
from pydantic import BaseModel, Field
class SearchExternalReferenceResponse(BaseModel):
system: str
object_type: str
object_id: str
maturity: str
connector_id: str | None = None
canonical_url: str | None = None
version: str | None = None
etag: str | None = None
observed_at: str | None = None
metadata: dict[str, Any] = Field(default_factory=dict)
class SearchResultResponse(BaseModel):
provider_id: str
module_id: str
resource_type: str
resource_id: str
title: str
summary: str | None = None
url: str
score: float = 0.0
highlights: list[str] = Field(default_factory=list)
breadcrumbs: list[str] = Field(default_factory=list)
external_reference: SearchExternalReferenceResponse | None = None
metadata: dict[str, Any] = Field(default_factory=dict)
class SearchProviderDiagnosticResponse(BaseModel):
provider_id: str
status: Literal["unavailable"]
message: str
class SearchResponse(BaseModel):
query: str
results: list[SearchResultResponse]
diagnostics: list[SearchProviderDiagnosticResponse] = Field(default_factory=list)
class SearchProviderResponse(BaseModel):
id: str
module_id: str
resource_types: list[str]
order: int
class SearchProviderListResponse(BaseModel):
providers: list[SearchProviderResponse]
__all__ = [
"SearchProviderDiagnosticResponse",
"SearchProviderListResponse",
"SearchProviderResponse",
"SearchResponse",
"SearchResultResponse",
]