33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
import asyncio
|
|
from datetime import datetime
|
|
from typing import Any, Literal, Optional
|
|
|
|
from fastapi import APIRouter, Depends, HTTPException
|
|
from pydantic import BaseModel, Field
|
|
from sqlalchemy import and_, select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from ...core.logging import get_logger
|
|
from ...core.response import success_response
|
|
from ...core.database import AsyncSessionLocal, get_db
|
|
from ...dependencies.auth import get_current_user
|
|
from ...dependencies.tenant import get_tenant_id
|
|
from ...models import DecisionRecord, IngestEvent, PlanBundle, PortfolioSnapshot, Project, ReplyReceipt, User, WorkItem
|
|
from ...services.ai_pmo.ai_pmo_cadence import AIPMOCadenceService
|
|
from ...services.ai_pmo.ai_pmo_kernel import AIPMOKernelService
|
|
from ...services.ai_pmo.workflow_semantic_planner.constants import (
|
|
FRONT_NOISE_HINTS,
|
|
FRONT_NOISE_STRUCTURED_HINTS,
|
|
GENERIC_SIGNAL_SOURCE_MESSAGE_RE as GENERIC_SOURCE_TEXT_RE,
|
|
INTENT_QUERY,
|
|
LOW_VALUE_CLOSURE_HINTS,
|
|
ROUTE_QUERY_ANSWER,
|
|
SMALLTALK_EXACT as FRONT_NOISE_EXACT,
|
|
)
|
|
|
|
router = APIRouter(prefix="/ai-pmo", tags=["AI PMO"])
|
|
logger = get_logger(__name__)
|
|
FRONT_NOISE_INTENTS = {INTENT_QUERY, ROUTE_QUERY_ANSWER}
|