made version 2

This commit is contained in:
bolade
2025-09-25 17:00:38 +01:00
parent b1b1c5ea1e
commit 0f7beca5e1
42 changed files with 660 additions and 2036 deletions
+18 -11
View File
@@ -1,17 +1,20 @@
import io
import pandas as pd
from api import companies, investors
from db.db import db_dependency, init_database
from fastapi import FastAPI, File, UploadFile
from py_schemas import InvestorList
from dotenv import load_dotenv
from fastapi import FastAPI, File, Form, UploadFile
from pydantic import BaseModel
from services.openrouter_v2 import InvestorProcessor
from routers import companies, investors
from schemas.router_schemas import InvestorList
from services.llm_parser import InvestorProcessor
from services.querying import QueryProcessor
app = FastAPI()
load_dotenv()
init_database()
app = FastAPI()
# Request models
class QueryRequest(BaseModel):
@@ -20,7 +23,7 @@ class QueryRequest(BaseModel):
class Config:
json_schema_extra = {
"example": {
"question": "Show me growth stage fintech investors in the US with check sizes over $1 million"
"question": "Find me deep tech investors that do deals in Europe under 5 million."
}
}
@@ -31,21 +34,25 @@ def health():
@app.post("/parse-csv", tags=["CSV Upload"], response_model=list[dict])
async def parse_csv(db: db_dependency, file: UploadFile = File(...)):
async def parse_csv(db: db_dependency, file: UploadFile = File(...), is_investor: int = Form(...)):
# Read uploaded CSV with pandas
content = await file.read()
df = pd.read_csv(io.StringIO(content.decode("utf-8")))
# Process the dataframe
processor = InvestorProcessor(sql_session=db)
results = await processor.process_csv(df)
processor = InvestorProcessor()
if is_investor == 1:
results = await processor.parse_investors(df)
else:
results = await processor.parse_companies(df)
# Convert Pydantic objects to dictionaries
return [r.model_dump() for r in results]
@app.post("/query", response_model=InvestorList, tags=["Querying"])
async def query_investors(db: db_dependency, request: QueryRequest):
async def query_investors(request: QueryRequest):
"""
Query investors using natural language.
@@ -55,7 +62,7 @@ async def query_investors(db: db_dependency, request: QueryRequest):
- "Growth stage investors with $5M+ check sizes"
- "Healthcare investors in Europe"
"""
processor = QueryProcessor(sql_session=db)
processor = QueryProcessor()
results = processor.process_query(request.question)
return results