PMFlow/backend/app/api/ai_pmo_api/shared.py

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}