3285e22142bc0dcb85b4a353e440e24bc5c4ace3
=== 导入系统全面增强 === - 5 Sheet 完整导入:拜访/计划/商机/要客/纪要 - 同访人智能解析:中英文逗号/顿号/分号 → 系统用户UUID + 外部人员TEXT - 客户自动创建:Excel中不存在的客户自动入库 - 模糊名称匹配:去空格 + 包含关系纠错 - manager_id 修正:导入时用客户分配的经理(非Excel列/非导入人) - 模板更新:Sheet5「客户经理」→「填报人」,同访人示例含逗号分隔 === 客户合并功能 === - PUT 改名碰撞检测 → 409 + 合并预览 - GET merge-preview / POST merge 端点 - 事务级迁移:Visit/WorkPlan/MiniBusiness/KeyVisit/联系人/分配 - 去重逻辑:联系人(name+phone)、分配(manager+role) - last_visit_date 取最大值 === 拜访记录完善 === - visits 新增 companion_names TEXT[] 列 - 同访人支持自定义输入(外部人员),el-select allow-create - 移动端 VisitForm + PC端 ManagerWorkspace 统一 - 周报「客户经理」→「相关人员」(创建人+同访人) - 纪要「客户经理」→「填报人」 - 删除拜访后重新计算 customer.last_visit_date === 客户选择放开 === - 客户经理可看到全部客户(不再限自己分配的) - 拜访时客户下拉返回全量 === 前端性能优化 === - Element Plus 按需加载 (unplugin-vue-components + unplugin-element-plus) - 周报照片URL并行请求 (Promise.all) - onMounted 三路并行 (loadReport + dropdowns + AI) - nginx Cache-Control: immutable for /assets/ - Google Fonts preconnect hints - 图片上传前 Canvas 压缩 (max 1920px, quality 0.8) Co-Authored-By: Claude <noreply@anthropic.com>
企迹 (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. 配置环境变量
# 后端
cd backend
cp .env.example .env
# 编辑 .env 填入数据库/认证/存储信息
# 前端
cd frontend
cp .env.example .env
2. 启动基础设施
# 如已有 PostgreSQL + MinIO 实例可跳过
docker-compose up -d postgres minio
3. 启动后端
cd backend
uvicorn app.main:app --reload --port 8002 --host 0.0.0.0
# API 文档 → http://localhost:8002/docs
4. 启动前端
cd frontend
npm install
npm run dev -- --host 0.0.0.0
# 页面 → http://localhost:5173
一键部署
docker-compose up -d
# 后端 :8000 + PostgreSQL :5432 + MinIO :9000/:9001
# 前端需单独部署到 nginx,见 frontend/Dockerfile
环境变量
| 配置项 | 说明 | 必须 |
|---|---|---|
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 配置 | ✅ |
Description
Languages
Vue
56.8%
Python
38%
TypeScript
4.5%
JavaScript
0.2%
CSS
0.2%
Other
0.2%