# muchenshuo **Repository Path**: caifugao110/muchenshuo ## Basic Information - **Project Name**: muchenshuo - **Description**: 沐辰说,用代码细说世界 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-13 - **Last Updated**: 2025-08-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 小原焊钳选型数据库项目系统介绍 ## 1. 引言 本系统是一个基于Django框架开发的焊钳产品管理系统,旨在提供高效的产品信息管理、搜索、文件下载以及用户和数据管理功能。 ## 2. 系统概述 本系统采用Python的Django Web框架构建,后端使用SQLite数据库(可配置为其他数据库如PostgreSQL、MySQL等)存储数据。系统主要模块包括用户认证与授权、产品信息管理、搜索功能、文件管理(DWG、STEP、BMP等文件下载与同步)、数据导入导出以及系统日志记录。静态文件(CSS、JavaScript、图片)和媒体文件(用户上传的文件)通过Django的静态文件服务和媒体文件服务进行管理。 ### 2.1 技术栈 * **后端框架**: Django * **数据库**: SQLite (默认) * **前端**: HTML, CSS, JavaScript (基于Django模板) * **部署环境**: Python 3.11+ ### 2.2 核心功能模块 * **用户管理**: 用户注册、登录、登出、权限控制(普通用户、管理员)。管理员可管理用户状态、重置密码、删除用户。 * **产品管理**: 产品的分类、详细信息(图号、描述、行程、加压力等)的录入、查询、展示。 * **搜索功能**: 支持多条件组合搜索产品,包括分类、描述、图号、子分类类型以及数值范围搜索(行程、加压力、重量、喉深、喉宽)。 * **文件管理**: 支持DWG、STEP、BMP等产品相关文件的上传、下载和批量下载。系统提供文件与产品信息的同步功能。 * **数据管理**: 支持通过CSV文件批量导入产品数据,以及导出产品、用户、日志数据为CSV格式。 * **系统日志**: 详细记录用户登录、登出、搜索、文件下载、数据导入导出、用户管理等操作,方便审计和问题追踪。 * **新增功能:用户配置管理**: 为每个用户提供独立的配置,包括客户名称、密码有效期、文件下载限制以及下载统计等。 ### 2.3 系统架构 系统遵循Django的MVT(Model-View-Template)架构模式: * **Model (模型)**: 定义数据结构和业务逻辑,如 `Product` (产品), `Category` (分类), `Log` (日志), 以及新增的 `UserProfile` (用户配置) 等。与数据库进行交互。 * **View (视图)**: 处理用户请求,从模型获取数据,并将数据传递给模板进行渲染。例如 `search_results` 视图处理搜索请求并返回搜索结果页面。 * **Template (模板)**: 定义用户界面的结构和布局,使用Django模板语言展示动态数据。例如 `search.html` 用于产品搜索页面,`product_detail.html` 用于产品详情页面。 此外,系统还包含: * **URL配置**: 定义URL路由,将URL映射到相应的视图函数。 * **中间件**: 例如 `LoggingMiddleware` 用于记录用户请求日志。 * **静态文件**: 存放CSS、JS、图片等前端资源。 * **媒体文件**: 存放用户上传的产品相关文件(DWG、STEP、BMP等)。 ## 3. 项目目录结构 本项目的目录结构清晰,遵循Django项目的标准布局,便于开发、维护和部署。以下是主要目录和文件的说明: ``` welding_clamp_db/ ├── clamps/ # Django 应用目录,包含核心业务逻辑 │ ├── migrations/ # 数据库迁移文件 │ ├── management/ # 自定义管理命令,如 init_data.py │ ├── __init__.py │ ├── admin.py # Django Admin 配置 │ ├── apps.py # 应用配置 │ ├── middleware.py # 自定义中间件,如 LoggingMiddleware │ ├── models.py # 数据库模型定义 │ ├── tests.py # 单元测试文件 │ ├── urls.py # 应用的 URL 配置 │ └── views.py # 视图函数,处理业务逻辑 ├── welding_clamp_db/ # Django 项目配置目录 │ ├── __init__.py │ ├── asgi.py # ASGI 配置文件 │ ├── settings.py # 项目设置文件 │ ├── urls.py # 项目主 URL 配置 │ └── wsgi.py # WSGI 配置文件 ├── templates/ # HTML 模板文件目录 │ ├── base.html │ ├── base_en.html # 英文版基础模板 │ ├── home.html │ ├── home_en.html # 英文版首页模板 │ ├── login.html │ ├── login_en.html # 英文版登录模板 │ ├── management/ # 管理页面模板 │ │ ├── dashboard.html │ │ ├── export.html │ │ ├── import_csv.html │ │ ├── logs.html │ │ └── users.html │ ├── product_detail.html │ ├── product_detail_en.html # 英文版产品详情模板 │ ├── search.html │ ├── search_en.html # 英文版搜索模板 │ ├── search_results.html │ └── search_results_en.html # 英文版搜索结果模板 ├── static/ # 静态文件目录(CSS, JS, 图片, PDF等) │ ├── css/ │ ├── fonts/ │ ├── icon/ # 新增图标目录 │ ├── images/ │ ├── js/ │ ├── pdf/ │ └── webfonts/ ├── media/ # 用户上传的媒体文件目录(DWG, STEP, BMP等) ├── logs/ # 系统日志文件目录 ├── db.sqlite3 # 默认 SQLite 数据库文件 ├── manage.py # Django 项目管理脚本 └── requirements.txt # 项目依赖库列表 ``` ## 4. 功能模块详解 ### 4.1 用户管理 系统提供完善的用户管理功能,包括用户认证、授权以及管理员对用户的管理操作。 #### 4.1.1 用户登录与登出 * **登录**: 用户通过访问系统的登录页面(`/login/`)输入用户名和密码进行认证。成功登录后,系统会记录登录日志,并重定向到产品搜索页面(`/search/`)。如果认证失败,将提示“无效的用户名或密码”。 * **登出**: 已登录用户可以通过点击登出链接(通常在导航栏或用户菜单中)安全退出系统。系统会记录登出日志,并重定向到首页(`/`)。 #### 4.1.2 管理员用户管理 管理员用户(`is_superuser` 为 `True` 的用户)可以访问管理仪表盘(`/management/dashboard/`)和用户管理页面(`/management/users/`),进行以下操作: * **查看用户列表**: 在用户管理页面,管理员可以查看所有注册用户的列表,包括用户名、邮箱、是否活跃、是否为超级用户、注册日期和最后登录时间。 * **切换用户活跃状态**: 管理员可以点击“启用/禁用”按钮来切换用户的活跃状态。被禁用的用户将无法登录系统。此操作会记录日志。 * **重置用户密码**: 管理员可以为任何用户重置密码。系统将生成一个随机密码并显示给管理员。请务必将新密码安全地告知用户。此操作会记录日志。 * **删除用户**: 管理员可以删除任何用户。此操作不可逆,请谨慎操作。此操作会记录日志。 **操作步骤**: 1. 以管理员身份登录系统。 2. 导航到“管理仪表盘” -> “用户管理”或直接访问 `/management/users/`。 3. 在用户列表中,找到目标用户。 4. 点击对应的“启用/禁用”、“重置密码”或“删除”按钮执行操作。 ### 4.2 产品搜索 系统提供强大的产品搜索功能,用户可以通过多种条件组合来精确查找所需的产品信息。 #### 4.2.1 搜索页面 * **访问**: 登录后,用户将自动重定向到搜索页面(`/search/`),或者通过导航菜单进入。 * **搜索条件**: 搜索页面提供以下搜索字段: * **分类**: 下拉选择产品所属的分类。 * **描述**: 文本输入,支持模糊匹配产品描述。 * **图号1(o)**: 文本输入,支持模糊匹配产品图号。 * **子分类类型**: 文本输入,支持模糊匹配子分类类型。 * **数值范围**: 对于“行程”、“加压力”、“重量”、“喉深”、“喉宽”等数值型字段,支持以下两种查询方式: * **精确匹配**: 输入单个数值,例如 `100`,将查找该字段值为100的产品。 * **范围匹配**: 输入两个数值并用波浪号 `~` 连接,例如 `50~150`,将查找该字段值在50到150之间的产品(包含边界值)。如果只输入 `50~`,则查找大于等于50的产品;如果只输入 `~150`,则查找小于等于150的产品。 * **其他字段**: 包括“变压器”、“电极臂端部”、“MOTOR厂家”、“有无平衡”等,支持文本模糊匹配或特定值选择。 #### 4.2.2 搜索结果 * **分页显示**: 搜索结果将以每页20条记录的形式分页显示,方便用户浏览大量数据。 * **结果统计**: 页面会显示符合条件的总记录数。 * **日志记录**: 每次搜索操作都会被记录到系统日志中,包括搜索的用户、IP地址、用户代理和具体的搜索条件。 **操作步骤**: 1. 登录系统,进入搜索页面。 2. 根据需要填写一个或多个搜索条件。 3. 点击“搜索”按钮。 4. 在搜索结果页面查看匹配的产品列表。可以通过页面底部的分页控件浏览更多结果。 ### 4.3 产品详情与文件下载 用户可以查看产品的详细信息,并下载相关的DWG、STEP、BMP文件。 #### 4.3.1 产品详情 * **访问**: 在搜索结果页面,点击任一产品的链接,即可进入该产品的详情页面。 * **信息展示**: 详情页面会展示产品的全部属性信息,包括图号、描述、分类、各种技术参数等。 * **日志记录**: 每次查看产品详情的操作都会被记录到系统日志中。 #### 4.3.2 文件下载 * **单文件下载**: 在产品详情页面,如果产品关联了DWG、STEP或BMP文件,用户可以点击相应的下载链接进行下载。系统会检查文件是否存在,如果文件不存在或损坏,会给出提示信息。每次下载操作都会记录日志。 * **批量下载**: 在搜索结果页面,用户可以选择多个产品,然后选择批量下载DWG或STEP文件。系统会将所有选定产品的对应文件打包成一个ZIP文件供用户下载。如果选中的产品没有对应的文件,系统会提示。批量下载操作也会记录日志。 **操作步骤**: 1. **查看产品详情**: 在搜索结果页面,点击产品描述或图号进入详情页。 2. **下载单个文件**: 在产品详情页,点击DWG、STEP或BMP文件旁的下载图标。 3. **批量下载**: a. 在搜索结果页面,勾选需要下载文件的产品。 b. 选择“批量下载DWG”或“批量下载STEP”按钮。 c. 系统将生成并下载一个包含所有选中文件(如果存在)的ZIP压缩包。 ### 4.4 数据导入与导出 系统支持CSV格式的产品数据导入和产品、用户、日志数据的导出功能。 #### 4.4.1 CSV数据导入(管理员功能) 管理员可以通过上传CSV文件批量导入或更新产品数据。系统会根据CSV文件中的“图号1(o)”字段来判断是新增产品还是更新现有产品。 * **文件编码**: 系统会自动检测CSV文件的编码,支持多种编码格式。 * **字段映射**: CSV文件中的列头需要与系统预定义的字段映射关系对应。例如,“描述”映射到 `description` 字段,“行程”映射到 `stroke` 字段等。对于数值型字段,系统会尝试进行类型转换。 * **错误处理**: 导入过程中如果遇到数据格式错误或缺少关键字段(如“图号1(o)”),系统会记录错误并跳过该行,同时在导入完成后提供错误报告。 * **分类关联**: 导入时,系统会尝试根据CSV文件名(例如 `X2C-C.csv`)来关联产品所属的分类。如果对应的分类不存在,导入将失败并提示管理员先创建分类。 **操作步骤**: 1. 以管理员身份登录系统。 2. 导航到“管理仪表盘” -> “导入CSV”或直接访问 `/management/import_csv/`。 3. 点击“选择文件”按钮,选择要导入的CSV文件。 4. 点击“上传并导入”按钮。系统将处理文件并显示导入结果(新增数量、更新数量和错误信息)。 #### 4.4.2 数据导出(管理员功能) 管理员可以将产品、用户或日志数据导出为CSV文件,方便进行离线分析或备份。 * **导出类型**: 支持导出以下类型的数据: * **产品数据**: 包含所有产品的详细信息。 * **用户数据**: 包含所有注册用户的基本信息。 * **日志数据**: 包含所有系统操作日志。 * **文件名**: 导出的CSV文件将根据数据类型和当前时间自动命名,例如 `products_export_20250622103000.csv`。 **操作步骤**: 1. 以管理员身份登录系统。 2. 导航到“管理仪表盘” -> “导出数据”或直接访问 `/management/export/`。 3. 在下拉菜单中选择要导出的数据类型(产品、用户或日志)。 4. 点击“导出”按钮。浏览器将开始下载生成的CSV文件。 ### 4.5 系统日志 系统会详细记录用户的各项操作,包括登录、登出、搜索、文件下载、数据导入导出、用户管理等。日志信息对于系统审计、问题排查和行为分析至关重要。 * **日志内容**: 每条日志记录包含时间戳、操作用户、操作类型、IP地址、用户代理和详细的操作描述。 * **日志查看**: 管理员可以通过管理界面查看和筛选日志。支持按操作类型、用户名、日期范围进行过滤。 * **日志统计**: 日志页面还会提供各类操作的统计信息,如登录次数、搜索次数、下载次数等。 **操作步骤**: 1. 以管理员身份登录系统。 2. 导航到“管理仪表盘” -> “查看日志”或直接访问 `/management/logs/`。 3. 可以使用页面上方的筛选条件(操作类型、用户名、日期范围)来查找特定的日志记录。 4. 日志列表支持分页浏览。 ### 4.6 文件同步(管理员功能) 系统提供一个文件同步功能,用于将 `media` 文件夹中已存在的DWG、STEP和BMP文件与数据库中的产品记录进行关联。这对于批量上传文件后,快速更新数据库中的文件路径非常有用。 * **同步逻辑**: 系统会遍历 `media` 文件夹下的所有DWG、STEP和BMP文件,尝试根据文件名(假定文件名为产品的图号)来匹配数据库中的产品。如果找到匹配的产品,则更新该产品的相应文件路径字段。 * **错误报告**: 如果文件未能匹配到任何产品,或者在处理过程中发生错误,系统会记录并报告这些错误。 **操作步骤**: 1. 确保已将DWG、STEP、BMP等文件放置在系统的 `media` 目录下。 2. 以管理员身份登录系统。 3. 导航到“管理仪表盘” -> “同步文件”或直接访问 `/management/sync_files/`。 4. 点击“同步文件”按钮。系统将执行同步操作并显示更新的产品数量和任何错误信息。 ## 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` * **基础模板**: `base_en.html` (包含导航栏、页脚等公共元素) 所有文本内容、按钮标签、提示信息等都已翻译成英文,确保英文用户能够无障碍地使用系统。 ## 6. 用户配置与下载管理 V4.0版本引入了全新的 `UserProfile` 模型,旨在为系统管理员提供更精细化的用户管理能力,特别是针对密码策略和文件下载权限的控制。 ### 6.1 用户配置管理 (UserProfile) 现在,每个用户都有一个关联的 `UserProfile`,允许管理员进行以下配置: * **客户名称**: 可以为每个用户账户关联一个客户名称,方便内部管理和识别。 * **密码有效期**: 管理员可以为每个用户设置独立的密码有效期,可选择1-15天或永久有效。这增强了系统的安全性,可以强制用户定期更换密码。 * **文件下载限制**: 为了控制服务器带宽和资源使用,管理员可以为每个用户设置详细的下载限制,包括: * **单次最大下载大小 (MB)**: 限制用户单次下载操作(包括单个文件下载和批量下载)的文件总大小。 * **每日最大下载大小 (GB)**: 限制用户在一天内可以下载的总文件大小。 * **每日最大下载文件数**: 限制用户在一天内可以下载的文件总数量。 * **单次批量下载最大大小 (MB)**: 专门为批量下载设置的大小限制。 * **下载统计**: 系统会记录用户的每日下载量(大小和数量),并在每日零点自动重置。 ### 6.2 密码过期与强制修改 * **密码过期检查**: 当用户登录时,系统会自动检查其密码是否根据 `UserProfile` 中设置的有效期过期。 * **强制修改提示**: 如果密码已过期,系统会提示用户密码已过期,并引导其联系管理员重置密码。这确保了密码策略的有效执行。 ### 6.3 下载行为监控与限制 * **实时下载监控**: 系统会实时跟踪每个用户的每日下载量(大小和数量)。 * **下载限制执行**: 在用户尝试下载文件(单个或批量)之前,系统会检查其行为是否会超出 `UserProfile` 中设定的限制。如果超出限制,下载请求将被拒绝,并向用户显示相应的提示信息(例如,“文件大小超过单次下载限制”或“今日下载量已达上限”)。 * **每日统计重置**: 用户的下载统计数据会在每天零点自动重置。 ### 6.4 管理员操作界面 这些新增的用户配置项已集成到Django Admin后台管理界面中。管理员可以在用户管理页面,通过编辑用户的 `UserProfile` 来进行上述所有配置。 **操作步骤**: 1. 以管理员身份登录 Django Admin (`/admin/`)。 2. 导航到 “Clamps” -> “用户配置”。 3. 选择要配置的用户,进入其 `UserProfile` 编辑页面。 4. 修改“客户名称”、“密码有效期”、“文件下载限制”等字段。 5. 保存更改。 ## 7. 管理员使用说明 本节详细介绍管理员如何进行系统的初始化设置、数据管理和日常维护。 ### 7.1 环境准备与项目部署 1. **安装Python**: 确保您的系统安装了 Python 3.11 或更高版本。 2. **安装依赖**: 进入项目根目录,安装 `requirements.txt` 中列出的所有依赖库: ```bash pip install -r requirements.txt ``` 3. **数据库迁移**: 运行数据库迁移命令,创建或更新数据库表结构。对于从旧版本升级,此步骤至关重要: ```bash python manage.py migrate ``` 4. **创建超级用户**: 如果是全新部署,创建一个管理员账户: ```bash python manage.py createsuperuser ``` 按照提示输入用户名、邮箱和密码。 5. **运行开发服务器**: 启动Django开发服务器: ```bash python manage.py runserver ``` 系统默认运行在 `http://127.0.0.1:8000/`。 ### 7.2 数据初始化与迁移 * **初始化分类数据**: 对于全新部署,可以运行以下命令初始化产品分类: ```bash python manage.py init_data ``` * **为现有用户创建UserProfile**: 从旧版本升级到V4.0后,需要为所有已存在的用户创建关联的 `UserProfile` 记录。可以编写一个简单的数据迁移脚本或在Django shell中手动完成此操作,以确保所有用户都能应用新的管理策略。 ### 7.3 后台管理(Django Admin) Django 提供了一个强大的后台管理界面,管理员可以通过它直接管理数据库中的数据,包括用户、产品、分类、日志以及新增的 **用户配置 (UserProfile)**。 **访问方式**: * 在浏览器中访问 `/admin/` 路径(例如 `http://127.0.0.1:8000/admin/`)。 * 使用 `createsuperuser` 命令创建的管理员账户登录。 **主要管理功能**: * **用户管理**: 查看、添加、编辑、删除用户。 * **用户配置管理**: 查看、添加、编辑、删除用户的 `UserProfile`,以配置密码策略和下载限制。 * **产品管理**: 查看、添加、编辑、删除产品信息。 * **分类管理**: 查看、添加、编辑、删除产品分类。 * **日志管理**: 查看系统操作日志。 ### 7.4 日常维护与管理 除了V3.0中提到的日常维护工作,V4.0的管理员还需要关注: * **用户配置审核**: 定期审核和调整用户的 `UserProfile` 设置,确保密码策略和下载限制符合当前的安全和业务需求。 * **密码重置请求**: 关注并及时处理因密码过期而产生的用户密码重置请求。 * **下载异常监控**: 通过系统日志监控用户的下载行为,特别是频繁触发下载限制的用户,以发现潜在的异常活动。 ## 8. 贡献与开发 如果您希望为本项目贡献代码或进行二次开发,请遵循以下步骤: 1. **Fork 项目**: 在 GitHub 上 Fork 本项目仓库。 2. **克隆仓库**: 将 Fork 后的仓库克隆到本地: ```bash git clone https://gitee.com/caifugao110/servogun2.git ``` 3. **创建虚拟环境**: 推荐使用虚拟环境管理项目依赖: ```bash python -m venv venv source venv/bin/activate # Linux/macOS # venv\Scripts\activate # Windows ``` 4. **安装依赖**: ```bash pip install -r requirements.txt ``` 5. **进行开发**: 在新的分支上进行功能开发或 bug 修复。 6. **提交代码**: 提交您的更改并推送到远程仓库。 7. **创建 Pull Request**: 向本项目提交 Pull Request,等待审核。 ## 9. 许可证 本项目采用 [Apache-2.0] 许可证。详情请参阅项目根目录下的 `LICENSE` 文件。 ## 10. 联系方式 如果您有任何问题或建议,请通过 gaoj@obara.com.cn 与我们联系。 --- **作者**: **技术开发二部** **更新日期**: 2025年8月18日