# 素材库功能说明

## 概述

素材库是一个专业的图片素材管理页面，完全按照设计图实现，支持上传、浏览、编辑和删除素材。

## 功能特性

### 1. 页面布局
- **页面标题**: "素材库" - 上传、浏览和管理所有基础图片素材
- **导航标签**: 三个主要分类
  - IP素材 (人脸) - 管理人脸图片素材
  - 产品素材 (服装) - 管理服装产品素材  
  - 上传原图 - 通用上传功能

### 2. 上传功能
- **拖拽上传**: 支持拖拽文件到上传区域
- **点击上传**: 点击上传区域或"浏览文件"按钮选择文件
- **文件限制**: 
  - 支持格式: PNG, JPG, JPEG
  - 文件大小: 不超过200MB
- **批量上传**: 支持同时选择多个文件上传

### 3. 素材管理
- **素材展示**: 网格布局展示所有上传的素材
- **素材信息**: 显示素材名称、类型、上传时间
- **编辑功能**: 点击编辑按钮可以修改素材名称
- **删除功能**: 悬停显示删除按钮，支持删除素材
- **AI标签**: 人脸素材显示"AI生成"标签

### 4. 后端集成
- **API接口**: 完全集成后端user_material_api.py
- **认证支持**: 支持用户认证和权限验证
- **实时同步**: 上传、编辑、删除操作实时同步到后端

## 技术实现

### 前端技术栈
- **React 18**: 使用函数式组件和Hooks
- **Tailwind CSS**: 响应式设计和现代UI
- **Radix UI**: 高质量UI组件库
- **Lucide React**: 图标库
- **Sonner**: 现代化Toast通知

### 后端API
- **FastAPI**: 高性能Python Web框架
- **SQLAlchemy**: ORM数据库操作
- **文件存储**: 本地文件系统存储
- **权限验证**: 用户认证和授权

### 核心组件

#### MaterialLibrary.jsx
主页面组件，包含：
- 页面布局和导航
- 文件上传处理
- 素材数据管理
- 与后端API交互

#### MaterialCard.jsx
素材卡片组件，包含：
- 图片展示
- 编辑名称功能
- 删除功能
- AI生成标签

#### materials.js
API接口封装，包含：
- 上传素材接口
- 获取素材列表
- 删除素材
- 更新素材信息

## 使用流程

### 1. 访问素材库
- 登录系统后，点击侧边栏"素材库"菜单
- 页面将显示当前用户的素材列表

### 2. 上传素材
- 选择对应的素材类型标签（人脸/产品）
- 拖拽文件到上传区域或点击"浏览文件"
- 选择支持格式的图片文件
- 等待上传完成，素材将显示在列表中

### 3. 管理素材
- **查看素材**: 素材以网格形式展示
- **编辑名称**: 点击素材下方的编辑按钮修改名称
- **删除素材**: 悬停在素材上显示删除按钮
- **切换类型**: 点击不同标签查看对应类型的素材

### 4. 素材分类
- **IP素材 (人脸)**: 管理人脸图片，用于AI换脸
- **产品素材 (服装)**: 管理服装图片，用于AI换装
- **上传原图**: 通用上传功能

## API接口说明

### 上传素材
```
POST /api/v1/users/{user_id}/materials
Content-Type: multipart/form-data

参数:
- file: 图片文件
- image_type: 素材类型 (face/cloth)
- original_filename: 原始文件名
```

### 获取素材列表
```
GET /api/v1/users/{user_id}/materials?material_type={type}&page={page}&page_size={size}
```

### 删除素材
```
DELETE /api/v1/users/{user_id}/materials/{material_id}
```

### 更新素材
```
PUT /api/v1/users/{user_id}/materials/{material_id}
Content-Type: application/json

参数:
- original_filename: 新的文件名
```

## 开发说明

### 环境要求
- Node.js 18+
- Python 3.8+
- FastAPI
- SQLAlchemy

### 启动开发环境
```bash
# 启动后端服务
cd backend
python -m uvicorn backend.api.ai_swap_api:app --reload --host 0.0.0.0 --port 8000

# 启动前端服务
cd frontend
npm run dev
```

### 访问地址
- 前端: http://localhost:5173
- 后端API: http://localhost:8000
- API文档: http://localhost:8000/docs

## 注意事项

1. **文件大小限制**: 单个文件不能超过200MB
2. **文件格式**: 仅支持PNG、JPG、JPEG格式
3. **用户权限**: 只能管理自己的素材
4. **网络连接**: 上传大文件需要稳定的网络连接
5. **存储空间**: 注意服务器存储空间的使用

## 故障排除

### 常见问题

1. **上传失败**
   - 检查文件格式是否正确
   - 检查文件大小是否超限
   - 检查网络连接是否正常

2. **图片无法显示**
   - 检查图片文件是否完整
   - 检查服务器存储路径是否正确

3. **编辑失败**
   - 检查用户权限是否正确
   - 检查素材ID是否存在

4. **删除失败**
   - 检查素材是否被其他功能使用
   - 检查用户权限是否正确

### 日志查看
- 前端控制台: 浏览器开发者工具
- 后端日志: backend/logs/ 目录
- API日志: 查看FastAPI启动时的日志输出 