企业级客户管理与日报系统,支持客户跟进、日报提交审批、员工管理、AI智能分析、自然语言查询等功能。
- 后端: FastAPI + Python
- 前端: HTML + CSS + JavaScript
- 数据库: MySQL
- 认证: JWT Token
- AI: 支持对接 Dify LLM、NL2SQL 自然语言查询
yuejiao_end/
├── main.py # 应用入口
├── config/ # 配置文件
│ └── database.py # 数据库配置
├── apps/ # 业务模块
│ ├── auth/ # 认证模块(登录、获取用户信息)
│ ├── customer/ # 客户管理(CRUD、AI分析、跟进记录)
│ ├── daily_report/ # 日报管理(提交、审批、导出、总结、NL2SQL)
│ └── employee/ # 员工管理(CRUD、部门统计)
├── services/ # 公共服务
│ ├── llm/ # LLM 服务
│ ├── nl2sql/ # 自然语言转 SQL
│ ├── notification/ # 邮件通知
│ └── tasks/ # 定时任务
├── utils/ # 工具函数
│ ├── exporter.py # Excel 导出
│ └── log_service.py # 操作日志
├── frontend/ # 前端页面
│ └── index.html # 主页面
├── init_db.sql # 数据库初始化脚本
└── requirements.txt # Python 依赖
pip install -r requirements.txt创建 config/.env 文件:
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=123456
DB_NAME=uemp_db
# JWT 配置
JWT_SECRET=your-secret-key
JWT_ALGORITHM=HS256
# 邮件配置(可选)
SMTP_HOST=smtp.qq.com
SMTP_PORT=587
SMTP_USER=your-email@qq.com
SMTP_PASSWORD=your-password
EMAIL_TO_LIST=admin@example.com
# LLM 配置(可选)
OPENAI_API_KEY=your-api-key
OPENAI_BASE_URL=https://api.openai.com/v1
# Dify 配置(用于周报生成)
DIFY_API_URL=http://192.168.184.128/v1/run
DIFY_API_KEY=your-dify-api-keymysql -u root -p < init_db.sqlpython main.py服务启动后访问:http://localhost:8086
默认管理员账号:EMP001(密码留空)
| 接口 | 方法 | 说明 |
|---|---|---|
/api/auth/login |
POST | 登录 |
/api/auth/logout |
POST | 登出 |
/api/auth/me |
GET | 获取当前用户信息 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/customers |
GET | 获取客户列表 |
/api/customers |
POST | 批量导入客户 |
/api/customers/analyze |
POST | AI分析客户 |
/api/customers/{id} |
GET | 获取客户详情 |
/api/customers/{id}/status |
PUT | 更新客户状态 |
/api/customers/{id}/notes |
GET/POST | 获取/添加跟进记录 |
/api/customers/export |
GET | 导出客户 Excel |
/api/customers/notes/upcoming |
GET | 待跟进任务 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/daily-reports |
GET | 获取日报列表 |
/api/daily-reports |
POST | 提交日报 |
/api/daily-reports/{id} |
GET | 日报详情 |
/api/daily-reports/export |
GET | 导出日报 Excel |
/api/daily-reports/pending |
GET | 待审核日报 |
/api/daily-reports/approve |
POST | 审核通过 |
/api/daily-reports/reject |
POST | 驳回日报 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/reports/summary |
GET | 获取日报总结 |
/api/reports/summary/list |
GET | 总结列表 |
/api/reports/daily-summary/trigger |
POST | 触发总结生成 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/reports/weekly |
GET | 获取周报列表 |
/api/reports/weekly |
POST | 保存周报 |
/api/reports/weekly/latest |
GET | 获取最新周报 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/notify/email |
POST | 发送邮件通知 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/nl2sql |
POST | 自然语言转 SQL 查询 |
/api/nl2sql/schema |
GET | 获取数据库表结构 |
示例请求:
curl -X POST "http://localhost:8086/api/nl2sql" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"query": "有多少客户"}'| 接口 | 方法 | 说明 |
|---|---|---|
/api/employees |
GET | 员工列表 |
/api/employees |
POST | 新增员工 |
/api/employees/{no} |
GET/PUT/DELETE | 员工详情/更新/删除 |
/api/employees/meta/departments |
GET | 部门列表 |
/api/employees/meta/stats |
GET | 员工统计 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/org-structure |
GET | 获取公司架构 |
- 在 Dify 创建 HTTP Request 节点
- 调用登录接口获取 token
- 将 token 和用户问题传给
/api/nl2sql - 返回查询结果
POST http://localhost:8086/api/auth/login
Body: {"username": "EMP001", "password": ""}
POST http://localhost:8086/api/nl2sql
Headers: Authorization: Bearer {{token}}
Body: {"query": "{{用户问题}}"}
支持文本和文件上传,自动提取客户信息并生成匹配度评分。
配置 Dify Chatflow:
- 在 Dify 创建周报生成 Chatflow
- 提示词:行业分析专家角色 + 报告结构
- 工具:HTTP 保存到后端 + HTTP 发送邮件
- 输出:完整周报内容
定时任务:
- 每周一上午 10:00 自动调用 Dify Chatflow 生成上周周报
- 自动保存到数据库
weekly_reports表 - 自动发送邮件到配置的收件人
Dify 回调接口:
POST http://localhost:8086/api/reports/weekly
Body: {
"week_start": "2026-04-14",
"week_end": "2026-04-20",
"title": "04/14-04/20 工作周报",
"content": "周报内容..."
}
POST http://localhost:8086/api/notify/email
Body: {
"subject": "周报主题",
"content": "<h2>周报内容</h2>..."
}- 双元制事业部
- 智能装备事业部
- 课后服务事业部
- 研学服务事业部
- 科技赛事事业部
内部使用