Files
breakpilot-core/control-pipeline/api/document_compliance_routes.py
Benjamin Admin 3ffa3f5793 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>
2026-04-24 08:39:55 +02:00

37 lines
1.0 KiB
Python

"""
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,
)