coming together

This commit is contained in:
HotSwapp
2025-08-13 18:53:35 -05:00
parent acc5155bf7
commit 5111079149
51 changed files with 14457 additions and 588 deletions

View File

@@ -1,7 +1,7 @@
"""
Advanced Search API endpoints - Comprehensive search across all data types
"""
from typing import List, Optional, Union, Dict, Any
from typing import List, Optional, Union, Dict, Any, Tuple
from fastapi import APIRouter, Depends, HTTPException, status, Query, Body
from sqlalchemy.orm import Session, joinedload
from sqlalchemy import or_, and_, func, desc, asc, text, case, cast, String, DateTime, Date, Numeric
@@ -11,6 +11,14 @@ import json
import re
from app.database.base import get_db
from app.api.search_highlight import (
build_query_tokens,
highlight_text,
create_customer_highlight,
create_file_highlight,
create_ledger_highlight,
create_qdro_highlight,
)
from app.models.rolodex import Rolodex, Phone
from app.models.files import File
from app.models.ledger import Ledger
@@ -1059,60 +1067,16 @@ def _calculate_document_relevance(doc: FormIndex, query: str) -> float:
# Highlight functions
def _create_customer_highlight(customer: Rolodex, query: str) -> str:
"""Create highlight snippet for customer"""
if not query:
return ""
full_name = f"{customer.first or ''} {customer.last}".strip()
if query.lower() in full_name.lower():
return f"Name: {full_name}"
if customer.email and query.lower() in customer.email.lower():
return f"Email: {customer.email}"
if customer.city and query.lower() in customer.city.lower():
return f"City: {customer.city}"
return ""
return create_customer_highlight(customer, query)
def _create_file_highlight(file_obj: File, query: str) -> str:
"""Create highlight snippet for file"""
if not query:
return ""
if file_obj.regarding and query.lower() in file_obj.regarding.lower():
return f"Matter: {file_obj.regarding}"
if file_obj.file_type and query.lower() in file_obj.file_type.lower():
return f"Type: {file_obj.file_type}"
return ""
return create_file_highlight(file_obj, query)
def _create_ledger_highlight(ledger: Ledger, query: str) -> str:
"""Create highlight snippet for ledger"""
if not query:
return ""
if ledger.note and query.lower() in ledger.note.lower():
return f"Note: {ledger.note[:100]}..."
return ""
return create_ledger_highlight(ledger, query)
def _create_qdro_highlight(qdro: QDRO, query: str) -> str:
"""Create highlight snippet for QDRO"""
if not query:
return ""
if qdro.form_name and query.lower() in qdro.form_name.lower():
return f"Form: {qdro.form_name}"
if qdro.pet and query.lower() in qdro.pet.lower():
return f"Petitioner: {qdro.pet}"
if qdro.case_number and query.lower() in qdro.case_number.lower():
return f"Case: {qdro.case_number}"
return ""
return create_qdro_highlight(qdro, query)