# 玉宗 - 珠宝设计大师 AI 驱动的珠宝玉石设计生成系统,支持 12 种玉石品类的智能设计图生成。 ## 功能特性 ### 1. 用户认证系统 - **功能说明**:支持用户注册、登录、退出,JWT Token 鉴权 - **实现方式**:后端使用 `python-jose` 生成 JWT Token(有效期 1440 分钟),密码通过 `passlib + bcrypt` 加密存储;前端通过 Axios 拦截器自动携带 Token,401 响应自动跳转登录页 - **优点**:无状态认证,前后端分离友好;密码 bcrypt 加密,安全可靠 ### 2. 品类管理系统 - **功能说明**:12 种玉石品类(牌子、珠子、手把件、雕刻件、摆件、手镯、耳钉、耳饰、手链、项链、戒指、表带),支持子类型和颜色选择 - **实现方式**:品类通过 `flow_type` 字段区分三种工作流程:`full`(选子类型,如牌子选牌型)、`size_color`(选尺寸+颜色,如珠子)、`simple`(直接设计);前端 `SubTypePanel` 组件根据 flow_type 动态渲染不同的选择界面 - **优点**:灵活的品类工作流适配不同产品特性,用户操作路径清晰 ### 3. 设计图生成 - **功能说明**:用户选择品类参数后输入设计描述,系统生成 800×800 PNG 设计图 - **实现方式**:后端 `mock_generator` 使用 Pillow 生成设计图,包含品类信息、颜色映射(中文颜色名→HEX)、自动文字颜色对比计算、系统中文字体检测(PingFang/STHeiti/DroidSansFallback);设计记录先创建(status=generating),生成完成后更新为 completed - **优点**:即时生成预览图,支持颜色定制;后续可替换为真实 AI 模型 ### 4. 设计管理 - **功能说明**:用户中心查看设计历史列表(分页),支持预览、下载、删除设计 - **实现方式**:设计列表通过 `DesignListResponse` 分页返回(默认每页 20 条),图片通过 `FileResponse` 下载;删除时同步清理数据库记录和磁盘文件 - **优点**:完整的设计生命周期管理,支持历史设计的查看和复用 ### 5. 个人信息管理 - **功能说明**:修改昵称、手机号、密码 - **实现方式**:手机号唯一性校验,密码修改需验证旧密码;前端表单使用 Element Plus 表单验证 - **优点**:安全的密码修改流程,手机号去重保障数据一致性 ## 业务流程 ### 整体流程图 ```mermaid graph TB A[用户注册/登录] --> B[设计页 - 选择品类] B --> C{品类类型} C -->|full| D[选择子类型/牌型] C -->|size_color| E[选择尺寸 + 颜色] C -->|simple| F[直接进入] D --> G[生成页 - 输入设计描述] E --> G F --> G G --> H[提交生成请求] H --> I[后端生成设计图] I --> J[预览设计图] J --> K{用户操作} K -->|下载| L[下载 PNG 文件] K -->|重新生成| G K -->|查看历史| M[用户中心] M --> N[设计历史列表] N -->|点击卡片| G ``` ### 各阶段详细流程 1. **用户认证**:注册时检查用户名唯一性 → 密码 bcrypt 加密 → 创建用户记录 → 注册成功后自动登录 → 获取 JWT Token 存储到 localStorage 2. **品类选择**:进入设计页自动加载品类列表 → 左侧导航选择品类 → 根据 flow_type 加载对应的子类型/颜色数据 → 右侧面板显示选择界面 3. **设计生成**:跳转生成页携带品类参数 → 输入设计描述(最多 500 字) → 提交请求 → 显示水墨风格加载动画 → 生成完成后展示预览 4. **设计管理**:用户中心加载设计列表 → 卡片网格展示 → 支持分页浏览、下载 PNG、删除(确认弹窗)、点击卡片跳转重新编辑 ### 关键数据流图 ```mermaid graph LR A[前端 Store] -->|Axios + Token| B[API 路由] B -->|Depends 注入| C[Service 层] C -->|SQLAlchemy ORM| D[MySQL 数据库] C -->|Pillow 生成| E[uploads/ 目录] E -->|StaticFiles 服务| F[前端图片展示] ``` ### API 调用链路 | 接口路径 | 方法 | 功能说明 | 关键参数 | |---------|------|---------|---------| | `/api/auth/register` | POST | 用户注册 | username, password, nickname | | `/api/auth/login` | POST | 用户登录 | username, password | | `/api/auth/me` | GET | 获取当前用户 | Bearer Token | | `/api/users/profile` | PUT | 更新个人信息 | nickname, phone, avatar | | `/api/users/password` | PUT | 修改密码 | old_password, new_password | | `/api/categories` | GET | 获取品类列表 | - | | `/api/categories/{id}/sub-types` | GET | 获取子类型 | category_id | | `/api/categories/{id}/colors` | GET | 获取颜色选项 | category_id | | `/api/designs/generate` | POST | 生成设计 | category_id, sub_type_id, color_id, prompt | | `/api/designs` | GET | 设计列表(分页) | page, page_size | | `/api/designs/{id}` | GET | 设计详情 | design_id | | `/api/designs/{id}` | DELETE | 删除设计 | design_id | | `/api/designs/{id}/download` | GET | 下载设计图 | design_id | ## 技术栈 | 分类 | 技术 | 版本 | 说明 | |-----|------|------|-----| | **前端框架** | Vue 3 | 3.5.30 | Composition API + `