# XECRM-DJANGO **Repository Path**: zhiops/xecrm-django ## Basic Information - **Project Name**: XECRM-DJANGO - **Description**: XECRM-Django是一个基于Django框架的企业级客户关系管理(CRM)系统,提供全面的客户管理、销售自动化和数据分析功能,专门为企业量身定制的工具,能够有效的管理跟进客户提供销售业绩!技术: fastapi、mysql、jwt、redis、Vue3的前后端分离的系统 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-21 - **Last Updated**: 2025-11-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CRM 系统 ## 一、技术选型说明 本 CRM 系统基于 Python 3.12 与 Django 4.0 开发,聚焦企业客户关系管理核心场景(客户管理、线索跟踪、销售管理等),技术选型遵循 “稳定优先、性能适配、易扩展” 原则,具体如下: ### 1. 核心编程语言与框架 | 类别 | 技术选型 | 版本要求 | 核心作用 | | ------ | --------------------- | ------ | -------------------------------------------- | | 编程语言 | Python | 3.12 | 系统开发主语言,提供简洁语法、丰富生态及良好的异步支持 | | Web 框架 | Django | 4.0 | 提供 MVC 架构、ORM、Admin 后台、安全防护(CSRF/XSS)等基础能力 | | API 框架 | Django REST Framework | 3.14.0 | 快速构建 RESTful API,支持序列化、认证、权限、分页、过滤等功能 | | 异步通信 | Channels | 3.0.5 | 基于 Django 扩展 WebSocket 协议,实现工单实时通知、在线状态同步等功能 | | 异步任务 | Celery | 5.2.7 | 处理耗时任务(如 Excel 报表导出、邮件发送、定时清理过期线索) | ### 2. 数据存储与缓存 | 类别 | 技术选型 | 版本要求 | 核心作用 | | ------ | ------------ | -------------- | ------------------------------------------------ | | 关系型数据库 | MySQL | 8.0+ | 存储结构化业务数据(用户、客户、合同等),支持事务与复杂查询 | | ORM 扩展 | Django ORM | 内置(Django 4.0) | 封装 SQL 操作,简化数据库交互,支持多表关联、索引优化 | | 缓存系统 | Redis | 6.2+ | 缓存高频查询数据(客户列表、产品配置)、存储 Celery 任务队列、WebSocket 频道层 | | 缓存扩展 | django-redis | 5.2.0 | 实现 Django 与 Redis 的适配,支持缓存键前缀、过期时间统一配置 | ### 3. 前端与静态资源 | 类别 | 技术选型 | 版本要求 | 核心作用 | | ------ | ------------------ | -------------- | -------------------------------------------- | | 静态资源管理 | Django Staticfiles | 内置(Django 4.0) | 管理 CSS/JS/ 图片等静态资源,支持生产环境收集(`collectstatic`) | | 文件存储 | Django Media | 内置(Django 4.0) | 存储用户上传文件(合同附件、头像、导出报表),支持自定义存储路径 | | 模板引擎 | Django Template | 内置(Django 4.0) | 渲染管理后台页面、邮件模板,支持模板继承、标签扩展 | ### 4. 部署与运维 | 类别 | 技术选型 | 版本要求 | 核心作用 | | -------- | -------------- | --------------- | --------------------------------------------- | | 容器化部署 | Docker | 20.10+ | 封装应用依赖,实现环境一致性(开发 / 测试 / 生产) | | 容器编排 | Docker Compose | 2.12+ | 一键启动多服务(Django、MySQL、Redis、Celery),简化部署流程 | | WSGI 服务器 | Gunicorn | 20.1.0 | 生产环境运行 Django 应用,支持多进程 / 多线程,提升并发处理能力 | | 反向代理 | Nginx | 1.21+ | 处理静态资源请求、负载均衡、SSL 终结,保护后端服务安全 | | 日志管理 | Python logging | 内置(Python 3.12) | 记录系统运行日志(错误日志、访问日志),支持按级别拆分(DEBUG/INFO/ERROR) | ### 5. 辅助工具与扩展 | 类别 | 技术选型 | 版本要求 | 核心作用 | | ------ | ------------------------- | ----- | ----------------------------------------- | | 数据过滤 | django-filter | 23.2 | 扩展 DRF 过滤能力,支持按字段模糊查询(如客户行业、线索状态) | | 跨域支持 | django-cors-headers | 4.0.0 | 解决前端跨域请求问题,支持配置允许的源地址、请求方法 | | 定时任务 | django-crontab | 0.7.1 | 基于 Linux Crontab 实现定时任务(如每日线索清理、月度销售报表生成) | | 数据库连接池 | django-db-connection-pool | 2.0.0 | 管理数据库连接,减少连接创建开销,提升高并发场景下的数据库性能 | ## 二、技术框架设计 ### 1. 整体架构分层 本系统采用 “四层架构” 设计,自上而下实现 “请求处理 - 业务逻辑 - 数据访问 - 基础设施” 的解耦,具体分层如下: ``` ┌─────────────────────────────────────────────────────────────────┐ │ 表现层(Presentation Layer) │ │ ├─────────────┬─────────────┬─────────────┬─────────────┐ │ │ │ Django Admin│ REST API │ WebSocket │ 静态资源 │ │ │ │ (后台管理) │ (前端接口)│ (实时通知)│ (CSS/JS) │ │ └────────────────┴─────────────┴─────────────┴─────────────┘ │ ┌─────────────────────────────────────────────────────────────────┐ │ 业务逻辑层(Business Logic Layer) │ │ ├─────────────┬─────────────┬─────────────┬─────────────┐ │ │ │ 用户服务 │ 客户服务 │ 销售服务 │ 工单服务 │ │ │ │ (权限/认证)│ (分配/公海)│ (合同/回款)│ (创建/跟踪)│ │ └────────────────┴─────────────┴─────────────┴─────────────┘ │ ┌─────────────────────────────────────────────────────────────────┐ │ 数据访问层(Data Access Layer) │ │ ├─────────────┬─────────────┬─────────────┬─────────────┐ │ │ │ Django ORM │ Redis缓存 │ 文件存储 │ 异步任务 │ │ │ │ (数据库交互)│ (高频数据)│ (上传文件)│ (Celery) │ │ └────────────────┴─────────────┴─────────────┴─────────────┘ │ ┌─────────────────────────────────────────────────────────────────┐ │ 基础设施层(Infrastructure Layer) │ │ ├─────────────┬─────────────┬─────────────┬─────────────┐ │ │ │ MySQL数据库 │ Redis服务 │ Docker容器 │ Nginx代理 │ │ │ │ (数据存储)│ (缓存/队列)│ (环境封装)│ (请求转发)│ │ └────────────────┴─────────────┴─────────────┴─────────────┘ │ ``` ### 2. 项目目录结构 ``` crm_project/ # 项目根目录 ├── manage.py # Django 命令行工具 ├── requirements.txt # 项目依赖清单 ├── .env # 环境变量(数据库密码、密钥等,不提交到Git) ├── .gitignore # Git 忽略文件(venv/、.env、__pycache__等) ├── README.md # 项目说明文档(部署步骤、接口文档等) # 项目核心配置包 ├── crm/ # 项目主配置目录(与项目名一致) │ ├── __init__.py │ ├── asgi.py # ASGI 配置(支持 Channels 异步通信) │ ├── wsgi.py # WSGI 配置(生产环境部署) │ ├── urls.py # 主 URL 路由配置 │ ├── settings/ # 拆分配置文件(按环境区分) │ │ ├── __init__.py │ │ ├── base.py # 基础配置(通用设置,如应用列表、中间件) │ │ ├── development.py # 开发环境配置(调试模式、日志等) │ │ └── production.py # 生产环境配置(安全设置、性能优化等) │ └── celery.py # Celery 异步任务配置(可选,处理耗时操作) # 业务应用模块(按功能拆分) ├── apps/ # 应用目录(统一管理所有业务模块) │ ├── __init__.py │ ├── users/ # 用户与组织管理模块 │ │ ├── __init__.py │ │ ├── admin.py # Django 后台管理配置 │ │ ├── apps.py # 应用注册配置 │ │ ├── models.py # 数据模型(用户、部门、角色等) │ │ ├── serializers.py # DRF 序列化器(API 数据转换) │ │ ├── views.py # 视图/API 接口逻辑 │ │ ├── urls.py # 子模块 URL 路由 │ │ ├── filters.py # 数据筛选器(django-filter) │ │ ├── services.py # 业务逻辑层(复杂逻辑封装,与视图分离) │ │ └── tests/ # 单元测试目录 │ │ ├── __init__.py │ │ ├── test_models.py │ │ └── test_views.py │ │ ├── customers/ # 客户管理模块 │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── models.py # 客户、联系人、跟进记录等模型 │ │ ├── serializers.py │ │ ├── views.py # 客户列表、详情、导入导出等接口 │ │ ├── urls.py │ │ ├── filters.py # 按行业、等级、状态等筛选客户 │ │ ├── services.py # 客户分配、公海管理等业务逻辑 │ │ └── tests/ │ │ ├── leads/ # 线索管理模块 │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── models.py # 线索、线索池、跟进记录模型 │ │ ├── serializers.py │ │ ├── views.py # 线索获取、转化、分配等接口 │ │ ├── urls.py │ │ ├── crons.py # 定时任务(如清理过期线索,django-crontab) │ │ └── tests/ │ │ ├── sales/ # 销售管理模块(商机、合同、回款) │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── models.py # 商机、合同、产品、回款计划模型 │ │ ├── serializers.py │ │ ├── views.py # 合同创建、回款跟踪等接口 │ │ ├── urls.py │ │ └── tests/ │ │ └── services/ # 服务管理模块(工单、售后) │ ├── __init__.py │ ├── admin.py │ ├── models.py # 服务工单、回访记录模型 │ ├── serializers.py │ ├── views.py # 工单创建、分配、处理等接口 │ ├── consumers.py # Channels 消费者(实时工单通知) │ ├── urls.py │ └── tests/ # 公共核心模块(复用功能) ├── core/ # 全局通用组件 │ ├── __init__.py │ ├── models.py # 抽象基础模型(如带时间戳的模型) │ ├── exceptions.py # 全局异常处理 │ ├── permissions.py # DRF 自定义权限类(如仅负责人可编辑) │ ├── pagination.py # 自定义分页器(统一 API 分页格式) │ ├── utils.py # 工具函数(Excel 处理、缓存工具、通用校验等) │ └── middleware.py # 自定义中间件(如请求日志、性能监控) # 静态资源与媒体文件 ├── static/ # 静态文件(CSS、JS、图片等,前端共用) │ ├── css/ │ ├── js/ │ └── images/ ├── media/ # 用户上传文件(合同附件、头像、报表等) │ ├── contracts/ # 合同文件存储 │ ├── avatars/ # 用户头像存储 │ └── exports/ # 导出的 Excel 报表存储 # 模板与日志 ├── templates/ # HTML 模板(如需 Django 模板渲染页面) │ ├── admin/ # 自定义 admin 后台模板 │ └── email/ # 邮件模板(如工单通知邮件) ├── logs/ # 项目日志目录 │ ├── crm.log # 系统运行日志 │ └── crontab.log # 定时任务执行日志 # 生产环境部署相关 ├── staticfiles/ # 静态文件收集目录(生产环境用,collectstatic 生成) └── docker/ # Docker 部署配置(可选) ├── Dockerfile # 项目镜像构建文件 └── docker-compose.yml # 容器编排配置(含 Django、MySQL、Redis 等) ``` ### 项目核心文件 项目所有核心文件,实现了用户管理、客户管理、线索管理等基础功能,并集成了 Django REST Framework、Channels 等技术栈。实际部署时需根据环境配置.env文件,并执行数据库迁移命令: ```aiignore python manage.py makemigrations python manage.py migrate python manage.py createsuperuser ```