```
feat: 添加公司AI管理平台基础架构 添加了完整的FastAPI后端项目结构,包括: - 环境配置文件(.env.example)和项目说明文档(README.md、AGENTS.md) - Dockerfile用于容器化部署 - 核心基础设施:配置管理、数据库连接、调度器、安全认证 - 模块化设计:AI代理、审批流程、审计日志、业务台账等功能模块 - 支持多数据库连接(主库和遗留系统只读库) - AI适配器支持OpenClaw、Hermes、OpenAI兼容接口 - 飞书集成、报表生成、风险监控等企业级功能 - 完整的依赖管理和测试指南 ```
This commit is contained in:
311
README.md
Normal file
311
README.md
Normal file
@@ -0,0 +1,311 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user