123 lines
4.1 KiB
Markdown
123 lines
4.1 KiB
Markdown
# 企迹 (qiji) — 政企周报管理系统
|
|
|
|
面向中国电信政企客户经理团队的周报管理系统,替代传统 Excel 填报流程。
|
|
|
|
## 功能模块
|
|
|
|
| 模块 | 说明 |
|
|
|------|------|
|
|
| 📊 **仪表盘** | 本周拜访/计划/商机/要客四卡统计 + 填报进度 + 按周翻看历史 |
|
|
| 📋 **周报** | 按周汇总拜访记录 + 每日纪要,支局长/分管领导查看全员 |
|
|
| 📅 **工作计划** | 面向未来的计划安排,支持状态流转(计划中→已完成→已取消) |
|
|
| 💰 **商机跟单** | 小微业务商机管道,按状态跟踪(跟进中→已签约→已流失) |
|
|
| ⭐ **要客拜访** | 重要客户拜访计划,紧急度排序,多拜访人协作 |
|
|
| 🏢 **客户管理** | 客户档案 CRUD + 联系人 + 归属分配 + Excel 导入/导出 |
|
|
| 👤 **用户管理** | 支局长修改用户角色(经理/支局长/分管领导) |
|
|
| 📱 **移动端** | 外勤填报适配,拍照上传,底部 TabBar |
|
|
|
|
## 技术栈
|
|
|
|
| 层 | 技术 |
|
|
|---|------|
|
|
| 后端 | FastAPI + SQLAlchemy 2.0 (async) + asyncpg |
|
|
| 数据库 | PostgreSQL |
|
|
| 文件存储 | MinIO(后端受控图片上传) |
|
|
| 认证 | Casdoor OIDC + JWT |
|
|
| 前端 | Vue 3 + Vite + TypeScript + Element Plus |
|
|
| 状态管理 | Pinia |
|
|
| 定时任务 | APScheduler (每日 18:00 填报提醒) |
|
|
|
|
## 项目结构
|
|
|
|
```
|
|
qiji/
|
|
├── docker-compose.yml
|
|
├── backend/
|
|
│ ├── app/
|
|
│ │ ├── main.py # FastAPI 入口
|
|
│ │ ├── config.py # 配置管理
|
|
│ │ ├── database.py # async engine + session
|
|
│ │ ├── models/ # 8 张表 SQLAlchemy 模型
|
|
│ │ ├── schemas/ # Pydantic 请求/响应
|
|
│ │ ├── api/ # REST 路由 (12 模块)
|
|
│ │ ├── services/ # 业务逻辑层
|
|
│ │ ├── middleware/ # JWT 鉴权 + 角色权限
|
|
│ │ └── utils/ # 工具 (JWT/时区/edit_log)
|
|
│ ├── alembic/ # 数据库迁移
|
|
│ └── requirements.txt
|
|
├── frontend/
|
|
│ ├── src/
|
|
│ │ ├── router/ # 路由 (mobile + desktop)
|
|
│ │ ├── stores/ # Pinia 状态管理
|
|
│ │ ├── api/ # Axios API 封装
|
|
│ │ ├── views/
|
|
│ │ │ ├── mobile/ # 移动端页面
|
|
│ │ │ └── desktop/ # PC 端页面
|
|
│ │ └── components/ # 通用组件
|
|
│ ├── Dockerfile
|
|
│ └── nginx.conf
|
|
└── 政企周报管理系统-设计文档.md
|
|
```
|
|
|
|
## 快速启动
|
|
|
|
### 1. 配置环境变量
|
|
|
|
```bash
|
|
# 后端
|
|
cd backend
|
|
cp .env.example .env
|
|
# 编辑 .env 填入数据库/认证/存储信息
|
|
|
|
# 前端
|
|
cd frontend
|
|
cp .env.example .env
|
|
```
|
|
|
|
### 2. 启动基础设施
|
|
|
|
```bash
|
|
# 如已有 PostgreSQL + MinIO 实例可跳过
|
|
docker-compose up -d postgres minio
|
|
```
|
|
|
|
### 3. 启动后端
|
|
|
|
```bash
|
|
cd backend
|
|
uvicorn app.main:app --reload --port 8002 --host 0.0.0.0
|
|
# API 文档 → http://localhost:8002/docs
|
|
```
|
|
|
|
### 4. 启动前端
|
|
|
|
```bash
|
|
cd frontend
|
|
npm install
|
|
npm run dev -- --host 0.0.0.0
|
|
# 页面 → http://localhost:5173
|
|
```
|
|
|
|
### 本地集成环境
|
|
|
|
```bash
|
|
# 先在 .env 中设置 POSTGRES_USER、POSTGRES_PASSWORD、MINIO_ROOT_USER、
|
|
# MINIO_ROOT_PASSWORD、SECRET_KEY 和固定版本的 MINIO_IMAGE
|
|
docker-compose up -d
|
|
# 服务仅绑定到 127.0.0.1;前端需单独部署到 nginx,见 frontend/Dockerfile
|
|
```
|
|
|
|
生产环境必须使用批准的部署流水线、密钥管理、HTTPS 反向代理和上线审批流程;不得直接将本 Compose 文件作为生产部署方案。
|
|
|
|
## 环境变量
|
|
|
|
| 配置项 | 说明 | 必须 |
|
|
|--------|------|------|
|
|
| `DATABASE_URL` | PostgreSQL 连接串 | ✅ |
|
|
| `CASDOOR_*` | Casdoor OIDC 地址/Client ID/Secret | ✅ |
|
|
| `MINIO_*` | MinIO 地址/密钥 | ✅ |
|
|
| `SECRET_KEY` | JWT 签发密钥 | ✅ |
|
|
| `CORS_ORIGINS` | 前端地址白名单 | ✅ |
|
|
| `WECOM_*` | 企微 Corp ID / Agent ID / Secret | ⚠️ |
|
|
| `VITE_CASDOOR_*` | 前端 Casdoor 配置 | ✅ |
|