Files
company-ai-platform/README.md
JiuContinent 71ca804764 ```
feat: 添加公司AI管理平台基础架构

添加了完整的FastAPI后端项目结构,包括:
- 环境配置文件(.env.example)和项目说明文档(README.md、AGENTS.md)
- Dockerfile用于容器化部署
- 核心基础设施:配置管理、数据库连接、调度器、安全认证
- 模块化设计:AI代理、审批流程、审计日志、业务台账等功能模块
- 支持多数据库连接(主库和遗留系统只读库)
- AI适配器支持OpenClaw、Hermes、OpenAI兼容接口
- 飞书集成、报表生成、风险监控等企业级功能
- 完整的依赖管理和测试指南
```
2026-06-21 21:57:28 +08:00

312 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Company AI Management Platform
这是一个公司全生命周期 AI 管理系统的后端工程,定位是:
```text
现有项目管理系统 / MySQL
+
FastAPI AI 集成层
+
飞书推送与审批入口
+
OpenClaw / Hermes / 模型适配接口
```
第一版已经实现:
- FastAPI 后端工程
- Conda 独立环境配置
- MySQL 主库连接
- 现有项目管理系统 MySQL 只读接入
- 业务台账 CRUD项目、任务、采购、费用、资金、制度、规范、绩效、供应商
- 飞书文本和卡片推送接口
- 飞书 Webhook 入口
- 飞书消息命令路由日报、周报、风险、AI 问答
- AI 适配器OpenClaw、Hermes、OpenAI-compatible、noop
- 经营晨报、项目周报
- 风险检测:逾期任务、延期项目、超预算项目、资金低于安全线
- 审批单:高风险资金/绩效更新必须通过审批 ticket
- 现有 MySQL 项目数据同步到内部台账,支持 dry-run 和字段映射
- AI 操作审计日志
- Docker Compose 本地运行模板
## 1. 技术栈
```text
Python 3.11
FastAPI
SQLAlchemy 2
MySQL / PyMySQL
Redis
APScheduler / Celery 预留
httpx
Pydantic Settings
```
## 2. Conda 环境
重新创建专用环境:
```powershell
cd C:\Users\20143\Documents\Codex\2026-06-21\new-chat\outputs\company-ai-platform
conda env remove -n company-ai-platform
conda env create -f environment.yml
conda activate company-ai-platform
```
更新已有环境:
```powershell
conda env update -f environment.yml --prune
```
也可以直接运行:
```powershell
.\scripts\recreate_conda_env.ps1
```
## 3. 配置
复制配置文件:
```powershell
Copy-Item .env.example .env
```
至少配置:
```text
DATABASE_URL=你的新业务库
LEGACY_DATABASE_URL=现有项目管理系统的只读 MySQL 账号
LEGACY_PROJECT_QUERY=从现有系统读取项目的 SELECT 查询
API_KEY=你的内部 API Key
```
飞书和模型可以后续再配置。未配置模型时,`MODEL_PROVIDER=noop` 会返回可预测占位结果,确保项目先能启动。
## 4. 初始化数据库
```powershell
python -m app.tools.init_db
```
## 5. 启动服务
```powershell
uvicorn app.main:app --reload --host 0.0.0.0 --port 8010
```
访问:
```text
http://127.0.0.1:8010/docs
```
带 API Key 请求时加 header
```text
X-API-Key: 你的 API_KEY
```
## 6. 关键接口
### 系统健康
```text
GET /api/v1/health
```
### 业务台账
```text
GET /api/v1/business/domains
GET /api/v1/business/projects
POST /api/v1/business/projects
PATCH /api/v1/business/projects/{id}
```
支持的 domain
```text
projects
tasks
procurements
expenses
fund-accounts
policies
standards
performance-metrics
suppliers
```
### 现有 MySQL
```text
GET /api/v1/integrations/mysql/health
GET /api/v1/integrations/mysql/tables
GET /api/v1/integrations/mysql/tables/{table_name}
POST /api/v1/integrations/mysql/query
GET /api/v1/integrations/mysql/projects
POST /api/v1/integrations/mysql/projects/sync
```
只允许 `SELECT`,默认第一阶段不写回原系统。
项目同步默认 `dry_run=true`,确认映射无误后再设置为 `false`
### 飞书
```text
POST /api/v1/integrations/feishu/send-text
POST /api/v1/integrations/feishu/send-card
POST /api/v1/integrations/feishu/webhook
POST /api/v1/integrations/feishu/commands/preview
```
飞书命令支持:
```text
日报 / 晨报 / 经营日报
周报 / 项目周报
风险 / 预警
问 xxx / AI xxx / 普通问题
```
### AI
```text
POST /api/v1/ai/ask
POST /api/v1/ai/draft-policy
POST /api/v1/ai/investment-research
```
### 审批
```text
POST /api/v1/approvals
GET /api/v1/approvals
GET /api/v1/approvals/{ticket_id}
POST /api/v1/approvals/{ticket_id}/approve
POST /api/v1/approvals/{ticket_id}/reject
```
`fund-accounts``performance-metrics` 更新需要已批准的 `approval_ticket_id`
### 报表
```text
GET /api/v1/reports/daily-brief
GET /api/v1/reports/project-weekly
POST /api/v1/reports/daily-brief/push
POST /api/v1/reports/project-weekly/push
```
### 风险
```text
GET /api/v1/risks/summary
GET /api/v1/risks/overdue-tasks
GET /api/v1/risks/delayed-projects
GET /api/v1/risks/over-budget-projects
GET /api/v1/risks/funds
```
## 7. 接入现有项目管理系统
第一阶段建议只读接入:
```text
现有项目系统 MySQL -> FastAPI 只读查询 -> 报表/风险 -> 飞书推送
```
不要一开始让 AI 直接改原系统数据库。
配置示例:
```text
LEGACY_DATABASE_URL=mysql+pymysql://readonly_user:password@10.0.0.10:3306/project_system?charset=utf8mb4
LEGACY_PROJECT_QUERY=SELECT id, name, owner, status, progress, start_date, due_date, budget, actual_cost FROM project ORDER BY id DESC LIMIT :limit
```
## 8. 接入 OpenClaw / Hermes / 模型
OpenClaw
```text
MODEL_PROVIDER=openclaw
OPENCLAW_BASE_URL=http://127.0.0.1:18789
OPENCLAW_API_KEY=
```
Hermes
```text
MODEL_PROVIDER=hermes
HERMES_BASE_URL=http://127.0.0.1:8080
HERMES_API_KEY=
```
OpenAI-compatible
```text
MODEL_PROVIDER=direct_llm
DIRECT_LLM_BASE_URL=https://api.openai.com/v1
DIRECT_LLM_API_KEY=你的Key
DIRECT_LLM_MODEL=gpt-4.1-mini
```
## 9. 安全边界
已经内置的边界:
- 现有 MySQL 只允许 SELECT
- 高风险模块更新需要 `approval_ticket_id`
- 飞书和 AI 动作写入审计日志
- API 支持 `X-API-Key`
- AI 不直接审批付款、绩效、投资交易
后续建议补:
- 用户登录
- RBAC 角色权限
- 字段级脱敏
- 飞书审批回调
- 数据库迁移 Alembic
- 对接真实财务/采购系统 API
## 10. 下一步实施顺序
```text
1. 配置现有 MySQL 只读账号
2. 调通 /integrations/mysql/health
3. 调通 /integrations/mysql/projects
4. 初始化新业务库
5. 导入或同步项目数据
6. 配置飞书应用
7. 调通飞书 send-text/send-card
8. 配置 MODEL_PROVIDER
9. 开启日报、周报、风险推送
10. 再逐步做写回和审批闭环
```
## 11. 验证
编译:
```powershell
conda run -n company-ai-platform python -m compileall app tests scripts
```
Smoke 验证:
```powershell
conda run -n company-ai-platform python scripts\verify_smoke.py
```
测试:
```powershell
conda run -n company-ai-platform pytest -q
```