📝 1. 引言
本系统是一个基于Django框架开发的焊枪产品管理系统,旨在提供高效的产品信息管理、搜索、文件下载以及用户和数据管理功能。
🖥️ 2. 系统概述
本系统采用Python的Django Web框架构建,后端使用SQLite数据库(可配置为其他数据库如PostgreSQL、MySQL等)存储数据。系统主要模块包括用户认证与授权、产品信息管理、搜索功能、文件管理(STEP、ZIP等文件下载与同步)、数据导入导出以及系统日志记录。静态文件(CSS、JavaScript、图片)和媒体文件(焊枪数据)通过Django的静态文件服务和媒体文件服务进行管理。
🛠️ 2.1 技术栈
- 后端框架: Django + Channels (ASGI支持) 🐍
- 数据库: SQLite (默认) 💾
- 前端: HTML, CSS, JavaScript (基于Django模板) 🎨
- 部署环境: Python 3.11+ ⚡
✨ 2.2 核心功能模块
- 用户管理: 用户注册、登录、登出、权限控制(普通用户、一般管理员、超级管理员)。管理员可管理用户状态、重置密码、删除用户。 👥
- 产品管理: 产品的分类、详细信息(喉深、喉宽、变压器、加压力等)的录入、查询、展示。 📦
- 搜索功能: 支持多条件组合搜索产品,包括分类、客户、图号、子分类类型以及数值范围搜索(行程、加压力、重量、喉深、喉宽)。 🔍
- 文件管理: 支持PDF、STEP等产品相关文件的下载和批量下载。系统提供文件与产品信息的同步功能。 📄
- 异步压缩: 支持异步压缩PDF、STEP等产品文件,提升大文件处理效率和用户体验。 📦⚡
- 数据管理: 支持通过CSV文件批量导入产品数据,以及导出产品、用户、日志数据为CSV格式。 📊
- 系统日志: 详细记录用户登录、登出、搜索、文件下载、数据导入导出、用户管理等操作,方便审计和问题追踪。 📋
- 用户配置管理: 为每个用户提供独立的配置,包括客户名称、密码有效期、文件下载限制以及下载统计等。 ⚙️
- 仕样链接管理: 管理员可以创建和管理特定的搜索链接,包含预设的搜索配置,支持设置链接有效期、最大点击次数等。 🔗
- 下载数据分析: 提供API接口分析下载数据,支持按时间范围和用户筛选,包含趋势数据、用户统计和总计数据。 📈
- AI智能搜索: 集成了AI智能搜索功能,支持通过API调用Coze服务。 🤖
- 用户反馈功能: 允许用户向管理员提交使用过程中的问题和建议,支持反馈分类、状态管理和用户通知,帮助持续改进系统。 💬
🏗️ 2.3 系统架构
系统遵循Django的MVT(Model-View-Template)架构模式,并集成了Channels实现ASGI支持:
- Model (模型): 定义数据结构和业务逻辑,如
Product(产品),Category(分类),Log(日志),UserProfile(用户配置),StyleLink(仕样链接),UserFeedback(用户反馈),CompressionTask(压缩任务) 等。与数据库进行交互。 🗄️ - View (视图): 处理用户请求,从模型获取数据,并将数据传递给模板进行渲染。例如
search_results视图处理搜索请求并返回搜索结果页面。 👁️ - Template (模板): 定义用户界面的结构和布局,使用Django模板语言展示动态数据。例如
search.html用于产品搜索页面,product_detail.html用于产品详情页面。 🎨 - ASGI配置: 支持异步通信,通过
asgi.py和 Channels 实现WebSocket等异步功能。 ⚡ - WebSocket支持: 通过
consumers.py和routing.py实现WebSocket通信,支持实时功能。 🔌
此外,系统还包含:
- URL配置: 定义URL路由,将URL映射到相应的视图函数。 🗺️
- 中间件: 例如
LoggingMiddleware用于记录用户请求日志。 🛡️ - 静态文件: 存放CSS、JS、图片等前端资源。 📁
- 媒体文件: 存放产品相关文件(STEP、PDF等)。 📂
📁 3. 项目目录结构
本项目的目录结构清晰,遵循Django项目的标准布局,便于开发、维护和部署。以下是主要目录和文件的说明:
welding_clamp_db/
├── clamps/ # Django 应用目录,包含核心业务逻辑
│ ├── migrations/ # 数据库迁移文件
│ ├── management/ # 自定义管理命令
│ │ ├── commands/ # 管理命令实现
│ │ │ ├── __init__.py
│ │ │ └── init_data.py # 初始化数据命令
│ │ └── __init__.py
│ ├── templatetags/ # 自定义模板标签
│ │ ├── __init__.py
│ │ └── translation_filters.py # 翻译过滤器
│ ├── __init__.py
│ ├── admin.py # Django Admin 配置
│ ├── apps.py # 应用配置
│ ├── async_compression_views.py # 异步压缩功能视图
│ ├── backup.py # 自动备份功能
│ ├── coze_service.py # Coze AI服务集成
│ ├── consumers.py # WebSocket 消费者
│ ├── media_views.py # 媒体文件视图
│ ├── middleware.py # 自定义中间件,如 LoggingMiddleware
│ ├── models.py # 数据库模型定义
│ ├── pdf_utils.py # PDF 处理工具
│ ├── routing.py # WebSocket 路由
│ ├── settings.py # 应用特定设置
│ ├── tasks.py # 异步任务定义
│ ├── tests.py # 单元测试文件
│ ├── urls.py # 应用的 URL 配置
│ └── views.py # 视图函数,处理业务逻辑
├── initial_setup/ # 初始化设置目录
│ ├── cfg/ # 配置文件
│ ├── code_review/ # 代码审查工具
│ ├── csv/ # CSV数据文件
│ ├── data/ # 数据文件
│ ├── doc/ # 文档
│ ├── howtogetpdf/ # PDF文件处理工具
│ ├── howtogetstep/ # STEP文件处理工具
│ └── initial_step.md # 初始化步骤说明
├── welding_clamp_db/ # Django 项目配置目录
│ ├── __init__.py
│ ├── asgi.py # ASGI 配置文件
│ ├── settings.py # 项目设置文件
│ ├── urls.py # 项目主 URL 配置
│ └── wsgi.py # WSGI 配置文件
├── templates/ # HTML 模板文件目录
│ ├── management/ # 管理页面模板
│ │ ├── analytics.html # 数据分析页面
│ │ ├── create_style_link.html # 创建仕样链接页面
│ │ ├── dashboard.html # 管理仪表盘
│ │ ├── edit_style_link.html # 编辑仕样链接页面
│ │ ├── export.html # 数据导出页面
│ │ ├── import_csv.html # CSV导入页面
│ │ ├── logs.html # 系统日志页面
│ │ ├── my_style_links.html # 我的仕样链接页面
│ │ ├── unmatched_files.html # 未匹配文件页面
│ │ ├── user_feedback.html # 用户反馈页面
│ │ └── users.html # 用户管理页面
│ ├── base.html
│ ├── base_en.html # 英文版基础模板
│ ├── home.html
│ ├── home_en.html # 英文版首页模板
│ ├── login.html
│ ├── login_en.html # 英文版登录模板
│ ├── product_detail.html
│ ├── product_detail_en.html # 英文版产品详情模板
│ ├── profile.html
│ ├── profile_en.html # 英文版个人资料模板
│ ├── search.html
│ ├── search_en.html # 英文版搜索模板
│ ├── search_results.html
│ ├── search_results_en.html # 英文版搜索结果模板
│ ├── style_search.html # 仕样搜索页面
│ ├── style_search_en.html # 英文版仕样搜索页面
│ ├── user_feedback.html # 用户反馈页面
│ └── user_feedback_en.html # 英文版用户反馈页面
├── static/ # 静态文件目录(CSS, JS, 图片, PDF等)
│ ├── css/
│ ├── fonts/
│ ├── icon/ # 图标目录
│ ├── images/
│ ├── js/
│ │ └── cmaps/ # PDF映射文件
│ ├── pdf/
│ └── webfonts/
├── media/ # 存放产品相关文件目录(STEP, PDF等)
├── logs/ # 系统日志文件目录
├── db.sqlite3 # 默认 SQLite 数据库文件
├── .gitignore # Git忽略文件
├── LICENSE # 许可证文件
├── manage.py # Django 项目管理脚本
└── requirements.txt # 项目依赖库列表
📋 4. 功能模块详解
👥 4.1 用户管理
系统提供完善的用户管理功能,包括用户认证、授权以及管理员对用户的管理操作。
🔐 4.1.1 用户登录与登出
- 登录: 用户通过访问系统的登录页面(
/login/)输入用户名和密码进行认证。成功登录后,系统会记录登录日志,并重定向到产品搜索页面(/search/)。如果认证失败,将提示“无效的用户名或密码”。 - 登出: 已登录用户可以通过点击登出按钮安全退出系统。系统会记录登出日志,并重定向到首页(
/)。
👑 4.1.2 管理员用户管理
管理员用户(is_superuser 为 True 的用户)可以访问管理仪表盘(/management/dashboard/)和用户管理页面(/management/users/),进行以下操作:
- 查看用户列表: 在用户管理页面,管理员可以查看所有注册用户的列表,包括用户名、邮箱、是否活跃、是否为超级用户、注册日期和最后登录时间。
- 切换用户活跃状态: 管理员可以点击“启用/禁用”按钮来切换用户的活跃状态。被禁用的用户将无法登录系统。此操作会记录日志。
- 重置用户密码: 管理员可以为任何用户重置密码。系统将生成一个随机密码并显示给管理员。请务必将新密码安全地告知用户。此操作会记录日志。
- 删除用户: 管理员可以删除任何用户。此操作不可逆,请谨慎操作。此操作会记录日志。
操作步骤:
- 以管理员身份登录系统。
- 导航到“管理仪表盘” -> “用户管理”或直接访问
/management/users/。 - 在用户列表中,找到目标用户。
- 点击对应的“启用/禁用”、“重置密码”或“删除”按钮执行操作。
🔍 4.2 产品搜索
系统提供强大的产品搜索功能,用户可以通过多种条件组合来精确查找所需的产品信息。
📄 4.2.1 搜索页面
- 访问: 登录后,用户将自动重定向到搜索页面(
/search/),或者通过导航菜单进入。 - 搜索条件: 搜索页面提供以下搜索字段:
- 分类: 下拉选择产品所属的分类。
- 描述: 文本输入,支持模糊匹配产品描述。
- 图号1(o): 文本输入,支持模糊匹配产品图号。
- 产品子分类类型: 文本输入,支持模糊匹配子分类类型。
- 数值范围: 对于“行程”、“加压力”、“重量”、“喉深”、“喉宽”等数值型字段,支持以下两种查询方式:
- 精确匹配: 输入单个数值,例如
100,将查找该字段值为100的产品。 - 范围匹配: 输入两个数值并用波浪号
~连接,例如50~150,将查找该字段值在50到150之间的产品(包含边界值)。如果只输入50~,则查找大于等于50的产品;如果只输入~150,则查找小于等于150的产品。
- 精确匹配: 输入单个数值,例如
- 其他字段: 包括“变压器”、“电极臂端部”、“MOTOR厂家”、“有无平衡”、“变压器放置方向”、“法兰P.C.D”、“托架方向”、“水路”、“齿轮箱型式”等,支持文本模糊匹配或特定值选择。
📊 4.2.2 搜索结果
- 分页显示: 搜索结果将以每页20条记录的形式分页显示,方便用户浏览大量数据。
- 结果统计: 页面会显示符合条件的总记录数。
- 日志记录: 每次搜索操作都会被记录到系统日志中,包括搜索的用户、IP地址、用户代理和具体的搜索条件。
操作步骤:
- 登录系统,进入搜索页面。
- 根据需要填写一个或多个搜索条件。
- 点击“搜索”按钮。
- 在搜索结果页面查看匹配的产品列表。可以通过页面底部的分页控件浏览更多结果。
📦 4.3 产品详情与文件下载
用户可以查看产品的详细信息,并下载相关的STEP、PDF文件。
📋 4.3.1 产品详情
- 访问: 在搜索结果页面,点击任一产品的链接,即可进入该产品的详情页面。
- 信息展示: 详情页面会展示产品的全部属性信息,包括图号、描述、分类、各种技术参数等。
- 日志记录: 每次查看产品详情的操作都会被记录到系统日志中。
📥 4.3.2 文件下载
- 单文件下载: 在产品详情页面,如果产品关联了STEP或PDF文件,用户可以点击相应的下载链接进行下载。系统会检查文件是否存在,如果文件不存在或损坏,会给出提示信息。每次下载操作都会记录日志。
- 批量下载: 在搜索结果页面,用户可以选择多个产品,然后选择批量下载STEP文件。系统会将所有选定产品的对应文件打包成一个ZIP文件供用户下载。如果选中的产品没有对应的文件,系统会提示。批量下载操作也会记录日志。
- 下载检查逻辑优化: 优化了文件下载前的检查逻辑,包括文件存在性、文件大小限制、用户下载配额等,提供更精确的下载控制和错误提示。
- 多语言支持: 文件下载相关的提示信息和界面元素均支持中英文切换,提升了国际化用户体验。
操作步骤:
- 查看产品详情: 在搜索结果页面,点击产品描述或图号进入详情页。
- 下载单个文件: 在产品详情页,点击STEP或PDF文件旁的下载图标。
- 批量下载:
- 在搜索结果页面,勾选需要下载文件的产品。
- 选择“批量下载STEP”按钮。
- 系统将生成并下载一个包含所有选中文件(如果存在)的ZIP压缩包。
⚡ 4.4 异步压缩
系统支持异步压缩功能,允许用户在后台处理大文件压缩任务,提升用户体验和系统效率。
🚀 4.4.1 核心功能
- 异步处理: 压缩任务在后台异步执行,不阻塞用户界面,用户可以继续使用系统其他功能。
- 多种文件类型支持: 支持压缩PDF、STEP、BMP等多种文件类型,可选择单个文件类型或同时压缩多种文件类型。
- 进度跟踪: 提供压缩进度实时更新(0-100%),用户可以查看任务状态和进度。
- 任务状态管理: 支持多种任务状态:待压缩(pending)、压缩中(processing)、压缩完成(completed)、压缩失败(failed)。
- 错误处理: 详细记录压缩过程中的错误信息,便于排查问题。
- 任务管理: 支持查看历史压缩任务,包括任务状态、创建时间、完成时间等。
4.4.2 操作步骤
- 在搜索结果页面,选择需要压缩文件的产品。
- 选择“异步压缩”按钮。
- 在弹出的对话框中,选择需要压缩的文件类型(PDF、STEP、BMP或全部)。
- 点击“开始压缩”按钮,系统将创建压缩任务并在后台执行。
- 用户可以在压缩任务列表中查看任务进度和状态。
- 压缩完成后,用户可以下载生成的压缩文件。
- 系统会自动记录压缩任务的执行情况,包括成功和失败的任务。
📊 4.5 数据导入与导出
系统支持CSV格式的产品数据导入和产品、用户、日志数据的导出功能。
📤 4.5.1 CSV数据导入(管理员功能)
管理员可以通过上传CSV文件批量导入或更新产品数据。系统会根据CSV文件中的“图号1(o)”字段来判断是新增产品还是更新现有产品。
- 文件编码: 系统会自动检测CSV文件的编码,支持多种编码格式。
- 字段映射: CSV文件中的列头需要与系统预定义的字段映射关系对应。例如,“描述”映射到
description字段,“行程”映射到stroke字段等。对于数值型字段,系统会尝试进行类型转换。 - 错误处理: 导入过程中如果遇到数据格式错误或缺少关键字段(如“图号1(o)”),系统会记录错误并跳过该行,同时在导入完成后提供错误报告。
- 分类关联: 导入时,系统会尝试根据CSV文件名(例如
X2C-C.csv)来关联产品所属的分类。如果对应的分类不存在,导入将失败并提示管理员先创建分类。
操作步骤:
- 以管理员身份登录系统。
- 导航到“管理仪表盘” -> “导入CSV”或直接访问
/management/import_csv/。 - 点击“选择文件”按钮,选择要导入的CSV文件。
- 点击“上传并导入”按钮。系统将处理文件并显示导入结果(新增数量、更新数量和错误信息)。
📥 4.5.2 数据导出(管理员功能)
管理员可以将产品、用户或日志数据导出为CSV文件,方便进行离线分析或备份。
- 导出类型: 支持导出以下类型的数据:
- 产品数据: 包含所有产品的详细信息。
- 用户数据: 包含所有注册用户的基本信息。
- 日志数据: 包含所有系统操作日志。
- 文件名: 导出的CSV文件将根据数据类型和当前时间自动命名,例如
products_export_20250622103000.csv。
操作步骤:
- 以管理员身份登录系统。
- 导航到“管理仪表盘” -> “导出数据”或直接访问
/management/export/。 - 在下拉菜单中选择要导出的数据类型(产品、用户或日志)。
- 点击“导出”按钮。浏览器将开始下载生成的CSV文件。
📋 4.6 系统日志
系统会详细记录用户的各项操作,包括登录、登出、搜索、文件下载、数据导入导出、用户管理等。日志信息对于系统审计、问题排查和行为分析至关重要。
- 日志内容: 每条日志记录包含时间戳、操作用户、操作类型、IP地址、用户代理和详细的操作描述。
- 日志查看: 管理员可以通过管理界面查看和筛选日志。支持按操作类型、用户名、日期范围进行过滤。
- 日志统计: 日志页面还会提供各类操作的统计信息,如登录次数、搜索次数、下载次数等。
操作步骤:
- 以管理员身份登录系统。
- 导航到“管理仪表盘” -> “查看日志”或直接访问
/management/logs/。 - 可以使用页面上方的筛选条件(操作类型、用户名、日期范围)来查找特定的日志记录。
- 日志列表支持分页浏览。
🔄 4.7 文件同步(管理员功能)
系统提供一个文件同步功能,用于将 media 文件夹中已存在的STEP、PDF和BMP文件与数据库中的产品记录进行关联。这对于批量上传文件后,快速更新数据库中的文件路径非常有用。
- 同步逻辑: 系统会遍历
media文件夹下的所有STEP、PDF和BMP文件,尝试根据文件名(假定文件名为产品的图号)来匹配数据库中的产品。如果找到匹配的产品,则更新该产品的相应文件路径字段。 - 错误报告: 如果文件未能匹配到任何产品,或者在处理过程中发生错误,系统会记录并报告这些错误。
- 二次确认提示: 为防止误操作,系统在执行文件同步前会显示二次确认提示,要求管理员确认同步操作,避免意外覆盖或修改数据。
操作步骤:
- 确保已将STEP、PDF和BMP等文件放置在系统的
media目录下。 - 以管理员身份登录系统。
- 导航到“管理仪表盘” -> “同步文件”或直接访问
/management/sync_files/。 - 点击“同步文件”按钮。
- 在弹出的确认对话框中,仔细阅读提示信息,确认无误后点击“确认同步”按钮。
- 系统将执行同步操作并显示更新的产品数量和任何错误信息。
💬 4.8 用户反馈功能
系统提供用户反馈功能,允许用户向管理员提交使用过程中的问题和建议,以帮助持续改进系统。
- 反馈分类: 支持多种反馈分类,包括数据错误、数据丢失、系统错误、功能优化和其他建议。
- 反馈状态管理: 反馈包含待确认、已确认待处理、已处理、无法确认和无效反馈等状态。
- 用户通知: 支持标记反馈是否已通知用户,便于管理员管理反馈处理流程。
- 反馈提交: 用户可以通过系统界面的反馈入口提交反馈信息,包括问题描述、建议和联系方式。
- 反馈管理: 管理员可以在系统后台查看和处理用户提交的反馈,包括回复、标记解决状态等。
- 反馈日志: 系统会记录所有反馈提交和处理的日志,便于追踪和分析用户反馈趋势。
操作步骤:
- 用户登录系统后,点击页面上的反馈按钮或链接。
- 在反馈表单中填写反馈类型、详细描述和联系方式。
- 点击“提交反馈”按钮。
- 管理员登录系统后台,查看用户反馈列表。
- 对反馈进行处理、回复或标记解决状态。
- 处理完成后,标记反馈为“已通知用户”。
🌍 5. 英文界面支持
本系统提供完整的英文界面支持,用户可以方便地在中文和英文界面之间切换。系统通过独立的英文模板文件(以 _en.html 结尾)和相应的URL配置来实现多语言功能。
🔄 5.1 切换语言
- 导航栏切换: 在系统的导航栏中,通常会有一个语言切换按钮(例如显示“中文”或“English”)。点击该按钮即可在两种语言界面之间切换。
- URL切换: 用户也可以通过直接修改URL路径来切换语言。例如,如果中文界面的产品搜索页面是
/search/,那么对应的英文界面可能是/en/search/或/search_en/(具体取决于URL配置)。
📚 5.2 英文界面内容
英文界面涵盖了系统的所有主要功能模块,包括:
- 登录页面:
login_en.html - 首页:
home_en.html - 产品搜索页面:
search_en.html - 产品详情页面:
product_detail_en.html - 搜索结果页面:
search_results_en.html - 仕样搜索页面:
style_search_en.html - 个人资料页面:
profile_en.html - 用户反馈页面:
user_feedback_en.html - 基础模板:
base_en.html(包含导航栏、页脚等公共元素)
所有文本内容、按钮标签、提示信息等都已翻译成英文,确保英文用户能够无障碍地使用系统。
⚙️ 6. 用户配置与下载管理
本项目引入了 UserProfile 模型,旨在为系统管理员提供更精细化的用户管理能力,特别是针对密码策略和文件下载权限的控制。
👤 6.1 用户配置管理 (UserProfile)
现在,每个用户都有一个关联的 UserProfile,允许管理员进行以下配置:
- 客户名称: 可以为每个用户账户关联一个客户名称,方便内部管理和识别。
- 密码有效期: 管理员可以为每个用户设置独立的密码有效期,可选择1-15天或永久有效。这增强了系统的安全性,可以强制用户定期更换密码。
- 文件下载限制: 为了控制服务器带宽和资源使用,管理员可以为每个用户设置详细的下载限制,包括:
- 单次最大下载大小 (MB): 限制用户单次下载操作(包括单个文件下载和批量下载)的文件总大小。
- 每日最大下载大小 (GB): 限制用户在一天内可以下载的总文件大小。
- 每日最大下载文件数: 限制用户在一天内可以下载的文件总数量。
- 单次批量下载最大大小 (MB): 专门为批量下载设置的大小限制。
- 下载统计: 系统会记录用户的每日下载量(大小和数量),并在每日零点自动重置。
- 创建者: 记录用户配置的创建者,增强系统的审计能力。
🔒 6.2 密码过期与强制修改
- 密码过期检查: 当用户登录时,系统会自动检查其密码是否根据
UserProfile中设置的有效期过期。 - 强制修改提示: 如果密码已过期,系统会提示用户密码已过期,并引导其联系管理员重置密码。这确保了密码策略的有效执行。
📊 6.3 下载行为监控与限制
- 实时下载监控: 系统会实时跟踪每个用户的每日下载量(大小和数量)。
- 下载限制执行: 在用户尝试下载文件(单个或批量)之前,系统会检查其行为是否会超出
UserProfile中设定的限制。如果超出限制,下载请求将被拒绝,并向用户显示相应的提示信息(例如,“文件大小超过单次下载限制”或“今日下载量已达上限”)。 - 每日统计重置: 用户的下载统计数据会在每天零点自动重置。
👑 6.4 管理员操作界面
这些新增的用户配置项已集成到Django Admin后台管理界面中。管理员可以在用户管理页面,通过编辑用户的 UserProfile 来进行上述所有配置。
操作步骤:
- 以管理员身份登录 Django Admin (
/admin/)。 - 导航到 “Clamps” -> “用户配置”。
- 选择要配置的用户,进入其
UserProfile编辑页面。 - 修改“客户名称”、“密码有效期”、“文件下载限制”等字段。
- 保存更改。
🔗 7. 仕样链接管理
系统引入了 StyleLink 模型,允许管理员创建和管理特定的搜索链接,包含预设的搜索配置,方便用户快速访问特定产品范围。
✨ 7.1 核心功能
- 创建仕样链接: 管理员可以设置产品分类、变压器类型、MOTOR厂家、齿轮箱型式等搜索配置,还可以固定特定字段的值和启用特定搜索字段。
- 链接管理: 支持查看、编辑、删除仕样链接,设置链接有效期、最大点击次数和激活状态。
- 权限控制: 普通管理员只能管理自己创建的链接,超级管理员可以管理所有链接。
- 链接访问: 用户通过唯一标识符访问仕样链接,系统会自动应用预设的搜索配置。
- 访问记录: 自动记录用户对仕样链接的访问情况,包括访问次数、首次访问时间、最近访问时间等。
- 用户访问统计: 系统会记录每个用户对仕样链接的访问历史,包括访问次数、首次访问和最近访问时间。
- 表单全选功能: 样式链接表单添加了全选功能,方便管理员快速选择所有字段配置。
- 搜索配置优化: 重构了仕样链接搜索配置逻辑,优化了变压器关联逻辑和空仕样搜索路径处理。
- UI优化: 优化了仕样链接的用户界面,提升了用户体验和操作效率。
7.2 操作步骤
- 创建仕样链接:
- 登录系统,进入管理仪表盘。
- 点击“创建仕样链接”按钮。
- 设置链接名称、有效期、最大点击次数等基本信息。
- 配置搜索选项,包括产品分类、变压器类型、MOTOR厂家、齿轮箱型式等。
- 设置固定字段和启用特定搜索字段。
- 点击“保存”按钮创建链接。
- 管理仕样链接:
- 登录系统,进入管理仪表盘。
- 点击“我的仕样链接”按钮。
- 可以查看链接列表,包括链接名称、创建时间、点击次数、有效期等信息。
- 可以编辑、删除或查看链接详情。
- 访问仕样链接:
- 通过链接URL访问,例如
/style_search/{unique_id}/(中文版)或/style_search_en/{unique_id}/(英文版)。 - 系统会自动应用预设的搜索配置,用户可以直接进行搜索。
- 英文版仕样搜索页面提供了完整的英文界面支持,包括搜索条件、搜索结果和文件下载功能。
- 通过链接URL访问,例如
📈 8. 下载数据分析
系统提供了下载数据分析功能,帮助管理员了解用户的下载行为和趋势。
✨ 8.1 核心功能
- API接口: 提供
download_analytics_api接口,支持按时间范围和用户筛选数据。 - 数据统计: 包括下载次数、文件数量、下载大小、活跃用户数等。
- 趋势分析: 提供按日统计的下载趋势数据。
- 用户统计: 按用户分组统计下载数据,包括下载次数、文件数量、下载大小和最后下载时间。
📊 8.2 数据指标
- 总下载次数: 统计时间段内的总下载次数。
- 总下载文件数: 统计时间段内的总下载文件数量。
- 总下载大小: 统计时间段内的总下载大小(MB)。
- 活跃用户数: 统计时间段内有下载行为的用户数量。
- 每日趋势: 按日统计的下载次数和下载大小。
🤖 9. AI智能搜索
系统集成了AI智能搜索功能,通过调用Coze API提供更智能的搜索体验。
✨ 9.1 核心功能
- API接口: 提供
ai_search_api接口,支持POST请求调用。 - Coze集成: 通过
coze_service.py模块与Coze API进行交互。 - 智能搜索: 支持自然语言查询,返回相关产品信息。
9.2 调用方式
- 请求方式: POST
- 请求URL:
/ai_search_api/ - 请求参数: JSON格式,包含
query字段,用于指定搜索查询。 - 响应格式: JSON格式,包含搜索结果和状态信息。
👥 10. 角色使用说明
本系统根据用户权限划分为三种主要角色:超级管理员、一般管理员和一般用户。每种角色拥有不同的操作权限和职责,以确保系统的安全性和高效运行。
👑 10.1 超级管理员
超级管理员拥有系统的最高权限,负责系统的整体维护、数据管理和安全监控。其主要职责侧重于项目数据的维护以及对系统日志和下载行为的深入分析。
主要职责与操作:
- 系统初始化与部署:负责环境准备、依赖安装、数据库迁移、超级用户创建和开发服务器的启动。
- 数据导入与导出:
- CSV数据导入:通过
/management/import_csv/页面批量导入产品数据,包括处理文件编码、字段映射和错误报告。这是维护产品数据准确性和完整性的关键环节。 - 数据导出:通过
/management/export/页面导出产品、用户和日志数据,用于离线分析、备份或与其他系统集成。
- CSV数据导入:通过
- 文件同步:通过
/management/sync_files/功能将media文件夹中的STEP、PDF和BMP文件与数据库中的产品记录进行关联,确保文件与产品信息的同步。 - 系统日志分析:通过
/management/logs/页面查看和筛选所有系统操作日志,包括用户登录、登出、搜索、文件下载、数据导入导出、用户管理等。通过分析日志,可以监控系统运行状况、发现异常行为、进行安全审计和问题追踪。 - 用户配置管理:通过Django Admin (
/admin/) 访问用户的UserProfile,为每个用户设置密码有效期、文件下载限制(单次最大下载大小、每日最大下载大小、每日最大下载文件数、单次批量下载最大大小)和客户名称。这是精细化管理用户权限和资源使用的核心。 - 用户管理(高级):在Django Admin中,可以对所有用户进行增删改查,包括修改用户权限、重置密码等。
操作路径示例:
- 数据导入:登录系统 -> 导航到“管理仪表盘” -> “导入CSV” (
/management/import_csv/) - 数据导出:登录系统 -> 导航到“管理仪表盘” -> “导出数据” (
/management/export/) - 文件同步:登录系统 -> 导航到“管理仪表盘” -> “同步文件” (
/management/sync_files/) - 日志查看:登录系统 -> 导航到“管理仪表盘” -> “查看日志” (
/management/logs/) - 用户配置:登录Django Admin (
/admin/) -> “Clamps” -> “用户配置”
🛡️ 10.2 一般管理员
一般管理员负责日常的用户管理和维护,确保用户能够正常访问系统并合理使用资源。其主要职责侧重于新增用户、管理用户状态、重置密码以及配置用户的下载权限和密码策略。
主要职责与操作:
- 用户管理:
- 新增用户:通过Django Admin (
/admin/) 或系统提供的用户注册流程(如果开放)创建新用户账户。 - 查看用户列表:通过
/management/users/页面查看所有注册用户的基本信息。 - 切换用户活跃状态:启用或禁用用户账户,控制其登录权限。
- 重置用户密码:为用户生成新的随机密码,并安全告知用户。
- 删除用户:删除不再需要的用户账户(需谨慎操作)。
- 新增用户:通过Django Admin (
- 用户配置管理:通过Django Admin (
/admin/) 访问用户的UserProfile,对用户的客户名称、密码有效期和文件下载限制进行配置。这使得管理员能够根据不同用户的需求和权限,灵活调整其使用策略。 - 密码过期处理:处理因密码过期而无法登录的用户,协助其重置密码。
操作路径示例:
- 用户管理:登录系统 -> 导航到“管理仪表盘” -> “用户管理” (
/management/users/) - 用户配置:登录Django Admin (
/admin/) -> “Clamps” -> “用户配置”
👤 10.3 一般用户
一般用户是系统的主要使用者,主要利用系统的搜索功能查找产品信息,并下载所需的相关文件。一般用户不具备管理权限,只能操作与自身账户相关的功能。
主要职责与操作:
- 用户登录与登出:通过
/login/页面登录系统,并通过导航栏的登出功能安全退出。 - 产品搜索:
- 访问搜索页面:登录后自动重定向到
/search/页面,或通过导航菜单进入。 - 多条件组合搜索:利用分类、描述、图号、子分类类型以及数值范围(行程、加压力、重量、喉深、喉宽)等多种条件组合,精确查找所需产品。
- 查看搜索结果:浏览分页显示的产品列表,并查看符合条件的记录总数。
- 访问搜索页面:登录后自动重定向到
- 产品详情与文件下载:
- 查看产品详情:点击搜索结果中的产品链接,进入详情页面,查看产品的全部属性信息。
- 单文件下载:在产品详情页面下载STEP、PDF等相关文件。
- 批量下载:在搜索结果页面选择多个产品,批量下载对应的STEP文件。
- 密码过期处理:如果密码过期,系统会提示并要求联系管理员重置。
操作路径示例:
- 登录:访问系统首页 -> 点击“登录” (
/login/) - 产品搜索:登录系统 -> 自动进入或导航到“搜索” (
/search/) - 查看产品详情:在搜索结果页面点击产品链接
- 文件下载:在产品详情页面点击下载图标,或在搜索结果页面选择产品后点击批量下载按钮
🚀 11. 服务器部署使用说明
本节详细介绍服务器部署如何进行系统的初始化设置、数据管理和日常维护。
🛠️ 11.1 环境准备与项目部署
- 安装Python: 确保您的系统安装了 Python 3.11 或更高版本。
- 安装依赖: 进入项目根目录,安装
requirements.txt中列出的所有依赖库:pip install -r requirements.txt - 数据库迁移: 运行数据库迁移命令,创建或更新数据库表结构。对于从旧版本升级,此步骤至关重要:
python manage.py migrate - 创建超级用户: 如果是全新部署,创建一个管理员账户:
按照提示输入用户名、邮箱和密码。python manage.py createsuperuser - 运行开发服务器: 启动Django开发服务器:
系统默认运行在python manage.py runserverhttp://127.0.0.1:6931/。
🔄 11.2 数据初始化与迁移
- 初始化分类数据: 对于全新部署,可以运行以下命令初始化产品分类:
python manage.py init_data - 为现有用户创建UserProfile: 从旧版本升级后,需要为所有已存在的用户创建关联的
UserProfile记录。可以编写一个简单的数据迁移脚本或在Django shell中手动完成此操作,以确保所有用户都能应用新的管理策略。
🖥️ 11.3 后台管理(Django Admin)
Django 提供了一个强大的后台管理界面,管理员可以通过它直接管理数据库中的数据,包括用户、产品、分类、日志以及 用户配置 (UserProfile)。
访问方式:
- 在浏览器中访问
/admin/路径(例如http://127.0.0.1:6931/admin/)。 - 使用
createsuperuser命令创建的管理员账户登录。
主要管理功能:
- 用户管理: 查看、添加、编辑、删除用户。
- 用户配置管理: 查看、添加、编辑、删除用户的
UserProfile,以配置密码策略和下载限制。 - 产品管理: 查看、添加、编辑、删除产品信息。
- 分类管理: 查看、添加、编辑、删除产品分类。
- 日志管理: 查看系统操作日志。
- 仕样链接管理: 查看、添加、编辑、删除仕样链接。
🧹 11.4 日常维护与管理
除了上面提到的日常维护工作,管理员还需要关注:
- 用户配置审核: 定期审核和调整用户的
UserProfile设置,确保密码策略和下载限制符合当前的安全和业务需求。 - 密码重置请求: 关注并及时处理因密码过期而产生的用户密码重置请求。
- 下载异常监控: 通过系统日志监控用户的下载行为,特别是频繁触发下载限制的用户,以发现潜在的异常活动。
- 仕样链接管理: 定期检查和清理过期或不再使用的仕样链接。
💾 11.5 自动备份系统
系统新增了自动备份功能,确保数据的安全性和可靠性,防止数据丢失。
- 自动备份: 系统会定期自动备份数据库和关键配置文件,默认备份周期为每日一次。
- 备份存储: 备份文件将存储在指定的备份目录中,支持配置备份保留天数。
- 备份类型: 支持全量备份和增量备份两种模式,可根据需求配置。
- 备份恢复: 管理员可以使用备份文件进行数据恢复,确保系统在出现故障时能够快速恢复。
- 备份日志: 系统会记录所有备份操作的日志,包括备份时间、备份类型、备份大小、备份状态等。
配置与使用:
- 备份配置文件位于项目根目录下,可通过修改配置文件调整备份周期、备份目录、保留天数等参数。
- 管理员可以通过系统后台查看备份日志和备份文件列表。
- 如需恢复数据,管理员可以选择合适的备份文件,执行恢复操作。
- 建议定期验证备份文件的完整性和可恢复性,确保备份系统正常工作。
🤝 12. 贡献与开发
如果您希望为本项目贡献代码或进行二次开发,请遵循以下步骤:
- Fork 项目: 在 GitHub 上 Fork 本项目仓库。
- 克隆仓库: 将 Fork 后的仓库克隆到本地:
git clone https://gitee.com/caifugao110/servogun2.git - 创建虚拟环境: 推荐使用虚拟环境管理项目依赖:
python -m venv venv source venv/bin/activate # Linux/macOS # venv\Scripts\activate # Windows - 安装依赖:
pip install -r requirements.txt - 进行开发: 在新的分支上进行功能开发或 bug 修复。
- 提交代码: 提交您的更改并推送到远程仓库。
- 创建 Pull Request: 向本项目提交 Pull Request,等待审核。
📄 13. 许可证
本项目采用 Apache-2.0 许可证。详情请参阅项目根目录下的 LICENSE 文件。
📞 14. 联系方式
如果您有任何问题或建议,请通过 gaoj@obara.com.cn 与我们联系。