```
feat: 添加公司AI管理平台基础架构 添加了完整的FastAPI后端项目结构,包括: - 环境配置文件(.env.example)和项目说明文档(README.md、AGENTS.md) - Dockerfile用于容器化部署 - 核心基础设施:配置管理、数据库连接、调度器、安全认证 - 模块化设计:AI代理、审批流程、审计日志、业务台账等功能模块 - 支持多数据库连接(主库和遗留系统只读库) - AI适配器支持OpenClaw、Hermes、OpenAI兼容接口 - 飞书集成、报表生成、风险监控等企业级功能 - 完整的依赖管理和测试指南 ```
This commit is contained in:
73
docs/ai_integration.md
Normal file
73
docs/ai_integration.md
Normal 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
55
docs/architecture.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# 架构说明
|
||||
|
||||
## 总体架构
|
||||
|
||||
```text
|
||||
用户 / 管理层 / 财务 / 项目负责人
|
||||
|
|
||||
v
|
||||
飞书入口:群聊、私聊、卡片、审批、文档
|
||||
|
|
||||
v
|
||||
FastAPI 集成层
|
||||
|
|
||||
|-- legacy_mysql:读取现有项目管理系统 MySQL
|
||||
|-- business:内部业务台账
|
||||
|-- reports:日报、周报、经营报告
|
||||
|-- risk:延期、超预算、资金风险
|
||||
|-- feishu:飞书推送和 Webhook
|
||||
|-- ai_agent:OpenClaw / 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:事实源,第一阶段只读
|
||||
新业务库 MySQL:AI 中台自有数据、审计日志、补充台账
|
||||
飞书:协同入口和消息入口
|
||||
AI 记忆:偏好、经验、技能,不保存财务事实
|
||||
```
|
||||
102
docs/custom_flows.md
Normal file
102
docs/custom_flows.md
Normal 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
|
||||
```
|
||||
84
docs/feishu_integration.md
Normal file
84
docs/feishu_integration.md
Normal 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
94
docs/mysql_integration.md
Normal 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 时,再做受控写回,并必须包含:
|
||||
|
||||
- 权限校验
|
||||
- 参数校验
|
||||
- 审批单号
|
||||
- 事务
|
||||
- 审计日志
|
||||
- 回滚方案
|
||||
Reference in New Issue
Block a user