refactor: 移除审批和回写功能模块 移除了整个审批(approvals)和官方回写(writebacks)功能模块, 包括相关模型、路由、服务和配置项。更新了数据库迁移文件, 删除了相关的审批请求表和官方回写运行表。同时从API路由器中 移除了相应的路由,并调整了安全常量和字段验证器以匹配变更。 ```
83 lines
2.4 KiB
Python
83 lines
2.4 KiB
Python
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.core.database import get_db
|
|
from app.core.operation_guard import require_operations_enabled
|
|
from app.core.security import ApiPrincipal, require_api_key
|
|
from app.modules.audit.constants import AuditSource
|
|
from app.modules.ai_agent.schemas import (
|
|
AIAskRequest,
|
|
AIAskResponse,
|
|
DraftPolicyRequest,
|
|
InvestmentResearchRequest,
|
|
OpenClawToolInvokeRequest,
|
|
)
|
|
from app.modules.ai_agent.service import AIService
|
|
|
|
router = APIRouter(dependencies=[Depends(require_api_key)])
|
|
|
|
|
|
@router.post("/ask", response_model=AIAskResponse)
|
|
def ask(
|
|
payload: AIAskRequest,
|
|
db: Session = Depends(get_db),
|
|
principal: ApiPrincipal = Depends(require_api_key),
|
|
) -> dict:
|
|
return AIService(db).ask(
|
|
payload.prompt,
|
|
payload.context,
|
|
actor=principal.actor,
|
|
source=AuditSource.API,
|
|
)
|
|
|
|
|
|
@router.get("/provider-health")
|
|
def provider_health(
|
|
db: Session = Depends(get_db),
|
|
principal: ApiPrincipal = Depends(require_api_key),
|
|
) -> dict:
|
|
return AIService(db).provider_health(actor=principal.actor)
|
|
|
|
|
|
@router.post("/openclaw/tools/invoke")
|
|
def invoke_openclaw_tool(
|
|
payload: OpenClawToolInvokeRequest,
|
|
db: Session = Depends(get_db),
|
|
principal: ApiPrincipal = Depends(require_api_key),
|
|
) -> dict:
|
|
require_operations_enabled()
|
|
return AIService(db).invoke_openclaw_tool(
|
|
tool=payload.tool,
|
|
action=payload.action,
|
|
args=payload.args,
|
|
session_key=payload.session_key,
|
|
actor=principal.actor,
|
|
)
|
|
|
|
|
|
@router.post("/draft-policy", response_model=AIAskResponse)
|
|
def draft_policy(
|
|
payload: DraftPolicyRequest,
|
|
db: Session = Depends(get_db),
|
|
principal: ApiPrincipal = Depends(require_api_key),
|
|
) -> dict:
|
|
return AIService(db).draft_policy(
|
|
title=payload.title,
|
|
policy_type=payload.policy_type,
|
|
requirements=payload.requirements,
|
|
actor=principal.actor,
|
|
)
|
|
|
|
|
|
@router.post("/investment-research", response_model=AIAskResponse)
|
|
def investment_research(
|
|
payload: InvestmentResearchRequest,
|
|
db: Session = Depends(get_db),
|
|
principal: ApiPrincipal = Depends(require_api_key),
|
|
) -> dict:
|
|
return AIService(db).draft_investment_research(
|
|
symbol_or_topic=payload.symbol_or_topic,
|
|
risk_preference=payload.risk_preference,
|
|
actor=principal.actor,
|
|
)
|