# 玉宗 - 珠宝设计大师 AI 驱动的珠宝玉石设计生成系统,支持 12 种玉石品类的智能设计图生成,双 AI 模型多视角生图,内置后台管理系统。 ## 功能特性 ### 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. AI 多视角设计图生成 - **功能说明**:用户选择品类参数后,可配置 6 个可选设计参数(雕刻工艺、设计风格、题材纹样、尺寸规格、表面处理、用途场景),输入设计描述后系统自动生成多视角设计图(每个品类 2~4 张不同视角) - **双模型支持**: - **SiliconFlow FLUX.1 [dev]**(默认):~0.13元/张,性价比高 - **火山引擎 Seedream 4.5**(备选):~0.30元/张,高质量 - **提示词系统**:自动将中文参数(品类/子类型/颜色/6个设计参数+视角)构建为专业英文 prompt,包含玉雕行业专业术语、摄影角度、质量标签 - **按品类视角配置**: | 品类 | 视角数 | 视角列表 | |------|--------|----------| | 牌子 | 3 | 效果图(45°)、正面图、背面图 | | 珠子 | 2 | 效果图(45°)、正面图 | | 手把件/雕刻件/摆件 | 4 | 效果图(45°)、正面图、侧面图、背面图 | | 手镯 | 3 | 效果图(45°)、正面图、侧面图 | | 耳钉/耳饰/手链/项链/表带 | 2 | 效果图(45°)、正面图 | | 戒指 | 3 | 效果图(45°)、正面图、侧面图 | - **降级机制**:AI 生图失败时自动降级到 mock_generator 生成占位图 - **可选参数**: - **雕刻工艺**:浮雕、圆雕、镂空雕、阴刻、线雕、俍色雕、薄意雕、素面,支持自定义输入 - **设计风格**:古典传统、新中式、写实、抽象意境、极简素面,支持自定义输入 - **题材纹样**:观音、弥勒、莲花、貔貅、龙凤、麒麟、山水、花鸟、人物、回纹、如意、平安扣,支持自定义输入 - **尺寸规格**:根据品类动态变化(牌子尺寸/手镯内径/手把件大小等),支持自定义输入 - **表面处理**:高光抛光、亚光/哑光、磨砂、保留皮色,支持自定义输入 - **用途场景**:日常佩戴、收藏鉴赏、送礼婚庆、把玩文玩,支持自定义输入 - **实现方式**:后端 `prompt_builder` 自动构建专业英文 prompt → `ai_generator` 调用 AI API 生图 → 下载保存到本地 → 创建 `DesignImage` 多视角记录;降级时使用 `mock_generator` Pillow 生成占位图 - **优点**:AI 真实生图 + 多视角展示,专业玉雕提示词系统,双模型热切换 + 降级兜底 ### 4. 设计管理 - **功能说明**:用户中心查看设计历史列表(分页),支持预览、下载、删除设计 - **实现方式**:设计列表通过 `DesignListResponse` 分页返回(默认每页 20 条),图片通过 `FileResponse` 下载;删除时同步清理数据库记录和磁盘文件 - **优点**:完整的设计生命周期管理,支持历史设计的查看和复用 ### 5. 个人信息管理 - **功能说明**:修改昵称、手机号、密码 - **实现方式**:手机号唯一性校验,密码修改需验证旧密码;前端表单使用 Element Plus 表单验证 - **优点**:安全的密码修改流程,手机号去重保障数据一致性 ### 6. 后台管理系统 - **功能说明**:管理员专属后台,支持仪表盘、系统配置、用户管理、品类管理、设计管理五大模块 - **实现方式**: - **权限控制**:用户表 `is_admin` 字段 + `get_admin_user` 依赖注入,非管理员访问返回 403 - **系统配置**:`system_configs` 表存储配置项,数据库配置优先于 .env 文件;敏感信息(API Key)脱敏显示 - **品类管理**:支持品类、子类型、颜色的增删改查,含颜色拾色器 - **用户管理**:搜索、分页、设置/取消管理员、删除用户 - **设计管理**:查看所有用户设计,按状态筛选,管理员删除 - **前端独立布局**:左侧导航 + 内容区,管理后台与前台完全分离 - **优点**:AI 配置可热更新(无需重启服务),品类数据可视化管理,用户权限分级控制 ## 业务流程 ### 整体流程图 ```mermaid graph TB A[用户注册/登录] --> B[设计页 - 选择品类] B --> C{品类类型} C -->|full| D[选择子类型/牌型] C -->|size_color| E[选择尺寸 + 颜色] C -->|simple| F[直接进入] D --> G[生成页 - 输入设计描述] E --> G F --> G G --> G2[选择可选参数] G2 --> H[提交生成请求] H --> I[后端 AI 多视角生图] I --> J[预览多视角设计图] J --> K{用户操作} K -->|下载| L[下载 PNG 文件] K -->|重新生成| G K -->|查看历史| M[用户中心] M --> N[设计历史列表] N -->|点击卡片| G ``` ### 各阶段详细流程 1. **用户认证**:注册时检查用户名唯一性 → 密码 bcrypt 加密 → 创建用户记录 → 注册成功后自动登录 → 获取 JWT Token 存储到 localStorage 2. **品类选择**:进入设计页自动加载品类列表 → 左侧导航选择品类 → 根据 flow_type 加载对应的子类型/颜色数据 → 右侧面板显示选择界面 3. **设计生成**:跳转生成页携带品类参数 → 选择可选参数(工艺/风格/题材/尺寸/表面/用途) → 输入设计描述(最多 2000 字) → 提交请求 → 显示水墨风格加载动画 → 生成完成后展示预览 4. **设计管理**:用户中心加载设计列表 → 卡片网格展示 → 支持分页浏览、下载 PNG、删除(确认弹窗)、点击卡片跳转重新编辑 ### 关键数据流图 ```mermaid graph LR A[前端 Store] -->|“Axios + Token”| B[API 路由] B -->|“Depends 注入”| C[Service 层] C -->|prompt_builder| D1[英文 Prompt 构建] D1 -->|ai_generator| D2[AI 生图 API] D2 -->|下载保存| E[uploads/ 目录] C -->|SQLAlchemy ORM| D[MySQL 数据库] 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, carving_technique?, design_style?, motif?, size_spec?, surface_finish?, usage_scene? | | `/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 | | `/api/admin/dashboard` | GET | 管理仪表盘统计 | Bearer Token (管理员) | | `/api/admin/configs` | GET | 获取系统配置 | group? | | `/api/admin/configs` | PUT | 更新系统配置 | configs: {key: value} | | `/api/admin/configs/init` | POST | 初始化默认配置 | - | | `/api/admin/users` | GET | 用户列表 | page, page_size, keyword? | | `/api/admin/users/{id}/admin` | PUT | 设置管理员 | is_admin | | `/api/admin/categories` | GET/POST | 品类列表/创建 | name, flow_type, sort_order | | `/api/admin/categories/{id}` | PUT/DELETE | 更新/删除品类 | - | | `/api/admin/sub-types` | POST | 创建子类型 | category_id, name | | `/api/admin/colors` | POST | 创建颜色 | category_id, name, hex_code | | `/api/admin/designs` | GET | 所有设计列表 | page, status? | ## 技术栈 | 分类 | 技术 | 版本 | 说明 | |-----|------|------|-----| | **前端框架** | Vue 3 | 3.5.30 | Composition API + `