mirror of
https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools.git
synced 2026-06-17 23:09:35 +00:00
74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
"""Sales endpoints — scripts, proposals."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter, Depends, HTTPException
|
|
|
|
from api.dependencies import get_proposal_agent
|
|
from api.schemas import (
|
|
ProposalRequest,
|
|
ProposalResponse,
|
|
SalesScriptRequest,
|
|
SalesScriptResponse,
|
|
)
|
|
from auto_client_acquisition.agents.intake import Lead, LeadSource
|
|
from auto_client_acquisition.agents.proposal import ProposalAgent
|
|
from core.prompts.sales_scripts import get_sales_script
|
|
from core.utils import generate_id
|
|
|
|
router = APIRouter(prefix="/api/v1/sales", tags=["sales"])
|
|
|
|
|
|
@router.post("/script", response_model=SalesScriptResponse)
|
|
async def build_script(request: SalesScriptRequest) -> SalesScriptResponse:
|
|
"""Return a bilingual sales script for a given sector + type."""
|
|
try:
|
|
script = get_sales_script(
|
|
request.script_type,
|
|
locale=request.locale,
|
|
name=request.name or "",
|
|
sector=request.sector,
|
|
company=request.company or "",
|
|
date="",
|
|
time="",
|
|
link="",
|
|
)
|
|
except KeyError as e:
|
|
raise HTTPException(status_code=404, detail=str(e)) from e
|
|
return SalesScriptResponse(
|
|
script=script,
|
|
locale=request.locale,
|
|
script_type=request.script_type,
|
|
)
|
|
|
|
|
|
@router.post("/proposal", response_model=ProposalResponse)
|
|
async def generate_proposal(
|
|
request: ProposalRequest,
|
|
agent: ProposalAgent = Depends(get_proposal_agent),
|
|
) -> ProposalResponse:
|
|
"""Generate a proposal on demand (outside the pipeline)."""
|
|
lead = Lead(
|
|
id=request.lead_id or generate_id("lead"),
|
|
source=LeadSource.MANUAL,
|
|
company_name=request.company_name,
|
|
contact_name="",
|
|
sector=request.sector,
|
|
region=request.region,
|
|
budget=request.budget_hint,
|
|
pain_points=request.pain_points,
|
|
locale=request.locale,
|
|
)
|
|
proposal = await agent.run(lead=lead, outcomes=request.outcomes or None)
|
|
return ProposalResponse(
|
|
id=proposal.id,
|
|
lead_id=proposal.lead_id,
|
|
company_name=proposal.company_name,
|
|
body_markdown=proposal.body_markdown,
|
|
budget_min=proposal.budget_min,
|
|
budget_max=proposal.budget_max,
|
|
currency=proposal.currency,
|
|
valid_until=proposal.valid_until,
|
|
created_at=proposal.created_at,
|
|
)
|