feat(control-pipeline): add Document Compliance Engine — scope detection + document requirements
New service: document_scope_resolver.py with 28 document rules covering: - Base (impressum, privacy_policy) - Tracking (cookie_banner, cookie_policy) - E-Commerce (AGB, withdrawal, shipping, pricing, payment) - Digital (digital_content_terms, no_withdrawal_notice) - SaaS (ToS, service_description, DPA, SLA) - AI (transparency_notice, automated_decisions) - Hardware (warranty, return, CE, safety) - Environmental (WEEE, battery disposal) - Marketplace (seller terms, ranking transparency) - Subscription (cancellation terms) API: POST /v1/document-compliance/required Input: company flags + jurisdiction → Output: required documents + assessment Includes confidence scoring, escalation detection (e.g. ecommerce without distance_selling flag), and reasoning. 19 tests covering all business model combinations including B2B-only exclusions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
36
control-pipeline/api/document_compliance_routes.py
Normal file
36
control-pipeline/api/document_compliance_routes.py
Normal file
@@ -0,0 +1,36 @@
|
||||
"""
|
||||
FastAPI routes for Document Compliance — required documents per business model.
|
||||
|
||||
Endpoints:
|
||||
POST /v1/document-compliance/required — Determine required documents
|
||||
"""
|
||||
|
||||
from typing import Optional
|
||||
|
||||
from fastapi import APIRouter
|
||||
from pydantic import BaseModel
|
||||
|
||||
from services.document_scope_resolver import resolve_required_documents
|
||||
|
||||
router = APIRouter(prefix="/v1/document-compliance", tags=["document-compliance"])
|
||||
|
||||
|
||||
class DocumentComplianceRequest(BaseModel):
|
||||
flags: dict[str, bool]
|
||||
jurisdiction: str = "DE"
|
||||
|
||||
|
||||
@router.post("/required")
|
||||
async def get_required_documents(req: DocumentComplianceRequest):
|
||||
"""Determine which legal documents are required based on company flags.
|
||||
|
||||
Flags example:
|
||||
has_website, has_ecommerce, has_saas, sells_physical_products,
|
||||
distance_selling, uses_tracking, uses_ai, b2b_only, etc.
|
||||
|
||||
Returns required + recommended documents with legal basis and assessment.
|
||||
"""
|
||||
return resolve_required_documents(
|
||||
flags=req.flags,
|
||||
jurisdiction=req.jurisdiction,
|
||||
)
|
||||
Reference in New Issue
Block a user