coming together
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user