feat: 添加公司AI管理平台基础架构

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

73
docs/ai_integration.md Normal file
View File

@@ -0,0 +1,73 @@
# AI 接入说明
## Provider 选择
```text
MODEL_PROVIDER=noop
MODEL_PROVIDER=openclaw
MODEL_PROVIDER=hermes
MODEL_PROVIDER=direct_llm
```
## 统一接口
业务层只调用:
```text
AIService.ask(prompt, context)
```
所以后续切换 OpenClaw、Hermes 或 OpenAI-compatible 模型时,不需要改业务模块。
## 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=
```
适合:
- 长期记忆
- 技能沉淀
- 自学习
## Direct LLM
```text
MODEL_PROVIDER=direct_llm
DIRECT_LLM_BASE_URL=https://api.openai.com/v1
DIRECT_LLM_API_KEY=
DIRECT_LLM_MODEL=gpt-4.1-mini
```
## 安全原则
AI 可以:
- 查询数据
- 生成报告
- 生成草稿
- 推送提醒
AI 不可以自动:
- 审批付款
- 修改绩效最终分
- 删除业务数据
- 自动投资下单

55
docs/architecture.md Normal file
View File

@@ -0,0 +1,55 @@
# 架构说明
## 总体架构
```text
用户 / 管理层 / 财务 / 项目负责人
|
v
飞书入口:群聊、私聊、卡片、审批、文档
|
v
FastAPI 集成层
|
|-- legacy_mysql读取现有项目管理系统 MySQL
|-- business内部业务台账
|-- reports日报、周报、经营报告
|-- risk延期、超预算、资金风险
|-- feishu飞书推送和 Webhook
|-- ai_agentOpenClaw / Hermes / 模型适配
|-- audit审计日志
|
v
MySQL / Redis / OpenClaw / Hermes / Feishu Open Platform
```
## 为什么先做模块化单体
当前最重要的是把流程跑通,而不是上来拆微服务。
模块化单体的好处:
- 开发和部署简单
- 业务边界清晰
- 后期可以按模块拆服务
- 适合已有 MySQL 系统的外挂式增强
后期可以拆分:
```text
ai-service
feishu-service
report-service
risk-service
finance-service
investment-service
```
## 数据边界
```text
现有项目系统 MySQL事实源第一阶段只读
新业务库 MySQLAI 中台自有数据、审计日志、补充台账
飞书:协同入口和消息入口
AI 记忆:偏好、经验、技能,不保存财务事实
```

102
docs/custom_flows.md Normal file
View File

@@ -0,0 +1,102 @@
# 定制化流程
## 项目跟踪
```text
现有 MySQL 读取项目
-> 风险引擎检查延期/超预算
-> AI 生成项目摘要
-> 飞书项目群推送
-> 负责人确认
-> 必要时进入审批或整改
```
## 采购
```text
采购申请
-> 关联项目和预算
-> AI 检查重复采购、供应商风险、是否三方比价
-> 生成比价报告
-> 飞书审批
-> 下单/验收/付款
-> 审计归档
```
## 费用
```text
费用申请
-> 分类
-> 关联项目/部门/预算
-> 检查发票和凭证
-> 飞书审批
-> 财务付款
-> 月度分析
```
## 账户资金
```text
导入账户余额
-> 汇总应收应付
-> 计算安全线
-> 识别资金缺口
-> 飞书资金日报
```
## 制度和规范
```text
制度草案
-> AI 辅助起草
-> 管理层审批
-> 飞书 Wiki 发布
-> 签收
-> AI 抽取检查项
-> 执行检查
```
## 绩效
```text
指标定义
-> 绑定数据来源
-> 自动计算草稿
-> AI 解释
-> 部门负责人确认
-> 员工申诉
-> 管理层最终确认
```
AI 不能自动最终定绩效。
## 金融投资
```text
研究
-> 模拟交易
-> 风控验证
-> 人工审批
-> 半自动执行
```
第一版只做投资研究接口,不做真实交易。
## 审批闭环
```text
高风险动作
-> 创建审批单
-> 管理者批准或拒绝
-> 系统校验 approval_ticket_id
-> 执行业务更新
-> 写入审计日志
```
当前强制审批的模块:
```text
fund-accounts
performance-metrics
```

View File

@@ -0,0 +1,84 @@
# 飞书接入说明
## 飞书应用权限
建议先申请最小权限:
- 发送消息
- 读取群信息
- 接收消息事件
- 卡片消息
后续再逐步增加:
- 多维表格
- 审批
- 文档/Wiki
- 任务
- 日历
## 配置项
```text
FEISHU_APP_ID=
FEISHU_APP_SECRET=
FEISHU_VERIFICATION_TOKEN=
FEISHU_DEFAULT_CHAT_ID=
```
## 推送文本
```text
POST /api/v1/integrations/feishu/send-text
```
```json
{
"receive_id": "oc_xxx",
"receive_id_type": "chat_id",
"text": "项目日报测试"
}
```
## 推送卡片
```text
POST /api/v1/integrations/feishu/send-card
```
## Webhook
```text
POST /api/v1/integrations/feishu/webhook
```
当前 Webhook 已支持 challenge 验证和事件审计。后续可在这里接入:
- 飞书群聊问答
- 审批回调
- 卡片按钮回调
- 任务状态同步
## 消息命令
Webhook 已支持基础命令路由:
```text
日报 / 晨报 -> 每日经营晨报
周报 / 项目周报 -> 项目周报
风险 / 预警 -> 风险摘要
问 xxx / AI xxx -> AI 问答
```
本地预览:
```text
POST /api/v1/integrations/feishu/commands/preview
```
```json
{
"text": "日报",
"auto_reply": false
}
```

94
docs/mysql_integration.md Normal file
View File

@@ -0,0 +1,94 @@
# 现有 MySQL 接入说明
## 推荐方式
先创建只读账号:
```sql
CREATE USER 'company_ai_ro'@'%' IDENTIFIED BY 'strong_password';
GRANT SELECT ON existing_project_system.* TO 'company_ai_ro'@'%';
FLUSH PRIVILEGES;
```
配置:
```text
LEGACY_DATABASE_URL=mysql+pymysql://company_ai_ro:strong_password@host:3306/existing_project_system?charset=utf8mb4
```
## 表结构探查
```text
GET /api/v1/integrations/mysql/tables
GET /api/v1/integrations/mysql/tables/{table_name}
```
## 只读查询
```json
{
"sql": "SELECT id, name, status FROM projects WHERE status != :status",
"params": {"status": "closed"},
"limit": 100
}
```
系统会拒绝:
```text
INSERT
UPDATE
DELETE
DROP
ALTER
TRUNCATE
CREATE
```
## 项目同步
预览同步:
```text
POST /api/v1/integrations/mysql/projects/sync
```
```json
{
"dry_run": true,
"limit": 100,
"field_map": {
"name": "project_name",
"owner": "manager_name",
"status": "project_status",
"progress_percent": "progress",
"budget_amount": "budget",
"actual_amount": "actual_cost"
}
}
```
确认无误后正式同步:
```json
{
"dry_run": false,
"limit": 100,
"actor": "admin"
}
```
同步只写入本系统内部 `projects` 表,不写回原项目管理系统。
## 写回策略
第一阶段不要写回。
第二阶段如果必须写回,优先走原项目管理系统 API没有 API 时,再做受控写回,并必须包含:
- 权限校验
- 参数校验
- 审批单号
- 事务
- 审计日志
- 回滚方案