flnxi-Wu/README.md
WuYongJie 63ec6b7dfb fix: 修复排行榜按钮消失、tag排序和输入框浅色模式问题
1. 排行榜悬浮窗关闭后小按钮消失问题
   - 修复面板居中模式关闭时按钮位置错误
   - 保存并恢复按钮的居中状态

2. 首页tag按钮按素材数量排序
   - 添加按素材数量降序排序逻辑

3. 上传弹窗输入框浅色模式文字不可见
   - 添加 text-slate-900 确保浅色模式下文字可见
   - 添加 placeholder 样式确保占位符正确显示
2025-12-14 21:41:29 +08:00

290 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# FLNXI素材库
一个遵循苹果设计语言的 3D 素材协作平台,专注企业/团队的私有化部署场景,内置 AI 辅助、部门权限、模板化元数据与可移植部署工具链。
## 🎯 项目概览
- **目标**:让团队能"一键部署 + 秒级迁移",快速落地到自有 NAS、IDC 或混合网络环境
- **定位**:设计/电商团队素材仓库 + 管理驾驶舱 + AI 实验场
- **原则**:性能优先、稳定性优先、易部署
## 🌟 核心功能
### 素材管理
- **智能搜索**:多维度筛选(品牌/系列/SKU/渲染参数)
- **模板系统**:自定义字段、拖拽排序、动态表单
- **批量操作**:上传、下载、分享、标签管理
- **版本控制**:并发冲突检测、自动版本递增
### 权限管理
- **部门体系**:树状组织结构、部门管理员
- **角色权限**:超级管理员、管理员、普通用户
- **邀请系统**:邀请链接、多次使用、过期控制
### AI 功能
- **智能对话**:Gemini 多模态对话
- **图像生成**:自动生成风格稿
- **智能标签**:自动提取素材信息
### 系统特性
- **健康检查**:`/api/health` 端点
- **系统监控**:资源使用、性能指标
- **数据恢复**:S3 桶扫描、批量导入
- **网络自识别**:内外网自动切换
## 🧱 技术栈
- **前端**:Next.js 14 App Router、React 18、TypeScript、TailwindCSS
- **认证**:NextAuth.js + 邮箱密码 + 钉钉 OAuth
- **数据库**:Prisma 5.22 + PostgreSQL
- **存储**:MinIO / S3 兼容对象存储
- **AI**:Google Gemini API
- **测试**:Jest + React Testing Library(118个单元测试)
## 🚀 快速开始
### 1. 安装依赖
```bash
npm install
```
### 2. 配置环境变量
```bash
cp .env.example .env
```
编辑 `.env` 文件,配置必要的环境变量:
```env
# 数据库
DATABASE_URL=postgresql://user:password@localhost:5432/flnxi_material
# 认证
NEXTAUTH_SECRET=your-secret-key
NEXTAUTH_URL=http://localhost:3000
# S3存储
S3_ENDPOINT=https://s3.example.com
S3_BUCKET=your-bucket
S3_ACCESS_KEY_ID=your-access-key
S3_SECRET_ACCESS_KEY=your-secret-key
```
### 3. 初始化数据库
```bash
npm run prisma:generate
npm run prisma:push
```
### 4. 启动开发服务
```bash
npm run dev
# 访问 http://localhost:3000
```
### 5. 创建管理员账号
首次注册的用户会自动成为超级管理员。
## 🔧 开发命令
```bash
# 开发
npm run dev # 启动开发服务器
npm run build # 构建生产版本
npm start # 启动生产服务器
# 测试
npm test # 运行测试
npm run test:watch # 监听模式
npm run test:coverage # 生成覆盖率报告
# 代码质量
npm run lint # ESLint检查
npm run type-check # TypeScript类型检查
npm run check # 完整检查(类型+lint+prisma)
# 数据库
npm run prisma:generate # 生成Prisma客户端
npm run prisma:push # 推送schema到数据库
npm run prisma:studio # 打开Prisma Studio
npm run prisma:validate # 验证schema
# 数据迁移
npm run migrate:template-data # 迁移模板数据
npm run verify:template-data # 验证数据完整性
```
## 📦 生产部署
### 使用Harbor部署(推荐)
```powershell
# 1. 本地构建并推送到Harbor
.\deploy-new-fixed.ps1 -Registry harbor
# 2. SSH到服务器执行数据迁移
ssh root@your-server
cd /root/deploy
docker exec flnxi-material npx prisma migrate deploy
docker exec flnxi-material npm run migrate:template-data
docker exec flnxi-material npm run verify:template-data
# 3. 验证部署
# 访问 http://your-server:4320
```
### Docker Compose部署
```bash
# 生产环境
docker-compose -f docker-compose.prod.yml up -d
# 开发环境
docker-compose -f docker-compose.dev.yml up -d
```
详细部署文档:
- [完整部署说明](docs/deployment/DEPLOYMENT.md)
- [快速部署指南](docs/deployment/quick-deployment-guide.md)
- [部署前检查清单](docs/deployment/pre-deployment-checklist.md)
## 🗂️ 项目结构
```
.
├── app/ # Next.js App Router
│ ├── page.tsx # 首页
│ ├── admin/ # 管理后台
│ └── api/ # API路由
├── components/ # React组件
├── lib/ # 工具库
│ ├── template-validator.ts # 模板验证器
│ ├── field-pool.ts # 字段池管理
│ └── hooks/ # 自定义Hooks
├── prisma/ # 数据库
│ ├── schema.prisma # 数据模型
│ └── migrations/ # 迁移文件
├── scripts/ # 脚本工具
│ ├── migrate-template-data.ts # 数据迁移
│ └── verify-template-data.ts # 数据验证
├── docs/ # 文档
│ ├── api/ # API文档
│ ├── deployment/ # 部署文档
│ └── user-guide/ # 用户手册
└── tests/ # 测试文件
```
## 📚 文档
### 用户文档
- [用户手册](docs/user-guide/template-system-guide.md) - 如何使用模板系统
- [API文档](docs/api/template-system-api.md) - API接口说明
### 开发文档
- [项目总结](docs/template-system-optimization-summary.md) - 最新优化总结
- [数据迁移脚本](scripts/README.md) - 脚本使用说明
### 部署文档
- [完整部署说明](docs/deployment/DEPLOYMENT.md) - 详细部署步骤
- [快速部署指南](docs/deployment/quick-deployment-guide.md) - 快速上手
- [部署前检查清单](docs/deployment/pre-deployment-checklist.md) - 检查清单
## 🧪 测试
项目包含118个单元测试,覆盖核心功能:
- 模板验证器(25个测试)
- 字段池管理器(34个测试)
- 模板CRUD API(13个测试)
- 防抖Hooks(17个测试)
- UI组件(29个测试)
```bash
# 运行所有测试
npm test
# 查看覆盖率
npm run test:coverage
```
核心模块覆盖率:
- template-validator.ts: 92.62%
- useDebounce.ts: 100%
- upload-templates API: 85.88%
## 🔐 环境变量
### 必需变量
| 变量 | 说明 |
|------|------|
| `DATABASE_URL` | PostgreSQL连接字符串 |
| `NEXTAUTH_SECRET` | NextAuth加密密钥 |
| `NEXTAUTH_URL` | 应用URL |
| `S3_ENDPOINT` | S3端点 |
| `S3_BUCKET` | S3桶名称 |
| `S3_ACCESS_KEY_ID` | S3访问密钥 |
| `S3_SECRET_ACCESS_KEY` | S3密钥 |
### 可选变量
| 变量 | 说明 |
|------|------|
| `GEMINI_API_KEY` | Gemini AI密钥 |
| `DINGTALK_CLIENT_ID` | 钉钉客户端ID |
| `DINGTALK_CLIENT_SECRET` | 钉钉客户端密钥 |
完整配置说明请参考 `.env.example`
## 🆘 故障排除
### 常见问题
**Q: Docker构建失败?**
A: 检查 `.env.production` 文件是否存在,或使用 `-EnvFile` 参数指定环境变量文件。
**Q: 数据库连接失败?**
A: 确认 `DATABASE_URL` 配置正确,数据库服务正在运行。
**Q: S3上传失败?**
A: 检查S3配置和网络连接,查看错误日志。
**Q: 测试失败?**
A: 运行 `npm run prisma:generate` 重新生成Prisma客户端。
更多问题请查看:
- [部署故障排除](docs/deployment/DEPLOYMENT.md#常见问题)
- [脚本故障排除](scripts/README.md#故障排除)
## 📈 性能指标
| 操作 | 目标时间 | 实际时间 |
|------|---------|---------|
| 模板列表加载 | < 500ms | ~300ms |
| 素材上传验证 | < 100ms | ~50ms |
| 字段池同步 | < 1s | ~500ms |
| 首页Tag响应 | < 100ms | ~50ms |
## 🤝 贡献
欢迎提交Issue和Pull Request!
## 📝 License
MIT
## 📞 联系方式
- 项目地址:[GitHub](https://github.com/your-repo)
- 问题反馈:[Issues](https://github.com/your-repo/issues)
---
**最后更新**: 2025年12月13日
**版本**: 1.0.0