sagar008's picture
Create main.py
f1b862b verified
raw
history blame
1.64 kB
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List, Dict, Any, Optional
import os
import uvicorn
import time
import hashlib
from document_processor import DocumentProcessor
from models import *
# Initialize FastAPI app
app = FastAPI(title="Legal Document Analysis API", version="1.0.0")
# Initialize document processor
processor = DocumentProcessor()
@app.on_event("startup")
async def startup_event():
"""Initialize models on startup"""
await processor.initialize()
@app.post("/analyze_document")
async def analyze_document(data: AnalyzeDocumentInput):
"""Unified endpoint for complete document analysis"""
try:
start_time = time.time()
if not data.document_text:
return {"error": "No document text provided"}
# Generate document ID for caching
doc_id = hashlib.sha256(data.document_text.encode()).hexdigest()[:16]
# Process document completely
result = await processor.process_document(data.document_text, doc_id)
processing_time = time.time() - start_time
result["processing_time"] = f"{processing_time:.2f}s"
result["doc_id"] = doc_id
return result
except Exception as e:
return {"error": str(e)}
# Keep backward compatibility endpoints
@app.post("/chunk")
def chunk_text(data: ChunkInput):
return processor.chunk_text(data)
@app.post("/summarize_batch")
def summarize_batch(data: SummarizeBatchInput):
return processor.summarize_batch(data)
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860)