feat: 添加公司AI管理平台基础架构 添加了完整的FastAPI后端项目结构,包括: - 环境配置文件(.env.example)和项目说明文档(README.md、AGENTS.md) - Dockerfile用于容器化部署 - 核心基础设施:配置管理、数据库连接、调度器、安全认证 - 模块化设计:AI代理、审批流程、审计日志、业务台账等功能模块 - 支持多数据库连接(主库和遗留系统只读库) - AI适配器支持OpenClaw、Hermes、OpenAI兼容接口 - 飞书集成、报表生成、风险监控等企业级功能 - 完整的依赖管理和测试指南 ```
71 lines
2.2 KiB
Python
71 lines
2.2 KiB
Python
from typing import Any
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.modules.ai_agent.adapters import get_adapter
|
|
from app.modules.audit.schemas import AuditLogCreate
|
|
from app.modules.audit.service import AuditService
|
|
|
|
|
|
class AIService:
|
|
"""Coordinate AI provider calls and audit logging."""
|
|
|
|
def __init__(self, db: Session):
|
|
self.db = db
|
|
self.audit = AuditService(db)
|
|
|
|
def ask(
|
|
self,
|
|
prompt: str,
|
|
context: dict[str, Any] | None = None,
|
|
actor: str = "api",
|
|
source: str = "api",
|
|
) -> dict[str, Any]:
|
|
adapter = get_adapter()
|
|
result = adapter.ask(prompt, context or {})
|
|
response = {
|
|
"provider": adapter.provider_name,
|
|
"answer": result["answer"],
|
|
"raw": result.get("raw", {}),
|
|
}
|
|
self.audit.log(
|
|
AuditLogCreate(
|
|
actor=actor,
|
|
source=source,
|
|
action="ai.ask",
|
|
target_type="ai",
|
|
risk_level="medium",
|
|
request_payload={"prompt": prompt, "context": context or {}},
|
|
response_payload=response,
|
|
)
|
|
)
|
|
return response
|
|
|
|
def draft_policy(
|
|
self,
|
|
title: str,
|
|
policy_type: str,
|
|
requirements: list[str],
|
|
actor: str,
|
|
) -> dict[str, Any]:
|
|
prompt = (
|
|
f"Draft a company policy in Chinese. Title: {title}. Type: {policy_type}. "
|
|
"Include purpose, scope, roles, process, approval rules, audit rules, and KPI linkage. "
|
|
f"Requirements: {requirements}"
|
|
)
|
|
return self.ask(prompt, actor=actor, source="policy")
|
|
|
|
def draft_investment_research(
|
|
self,
|
|
symbol_or_topic: str,
|
|
risk_preference: str,
|
|
actor: str,
|
|
) -> dict[str, Any]:
|
|
prompt = (
|
|
"Create an investment research memo in Chinese. Do not give direct trading "
|
|
"instructions. Include thesis, risks, data needed, position sizing constraints, "
|
|
"and human approval checklist. "
|
|
f"Topic: {symbol_or_topic}. Risk preference: {risk_preference}."
|
|
)
|
|
return self.ask(prompt, actor=actor, source="investment")
|