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>
37 lines
1.0 KiB
Python
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,
|
|
)
|