# 🚀 Prisma 多文件 Schema 快速指南

## ⚡ TL;DR

使用 **Prisma 原生多文件支持**，所有 `.prisma` 文件会自动合并，无需手动操作！

## 📁 新结构（Prisma 原生方案）

```
backend/prisma/
├── schema/                        # ✅ Prisma 官方约定
│   ├── base.prisma               # Generator & Datasource
│   ├── platform_iam.prisma       # Users, Roles, Permissions
│   ├── corp_hr.prisma            # Departments, Positions
│   ├── mfg_inventory.prisma      # Parts Management
│   ├── platform_audit.prisma     # Audit Logs
│   ├── platform_notify.prisma    # Notifications
│   ├── corp_approval.prisma      # Workflows
│   ├── corp_request.prisma       # Business Requests
│   └── platform_automation.prisma # Automation Tasks
└── QUICK_START.md                # This file
```

## 🎯 常用命令

### 1. 查看数据库

```bash
npm run prisma:studio
```

### 2. 修改 Schema

```bash
# 编辑对应的域文件
vim prisma/schema/platform_iam.prisma

# 生成 Prisma Client
npm run prisma:generate

# 创建迁移
npm run prisma:migrate
```

### 3. 添加新 Model

在对应的域文件中添加：

```prisma
// In prisma/schema/platform_iam.prisma

model NewModel {
  id        String   @id @default(uuid()) @db.Uuid
  name      String
  createdAt DateTime @default(now()) @map("created_at")
  
  @@map("new_model")
  @@schema("platform_iam")  // ⚠️ 必须指定 schema
}
```

然后：

```bash
npm run prisma:generate
npm run prisma:migrate
```

## 🔍 编辑哪个文件？

| 要编辑的内容 | 文件 |
|-------------|------|
| Users, Roles, Permissions | `platform_iam.prisma` |
| Departments, Positions | `corp_hr.prisma` |
| Parts, Inventory | `mfg_inventory.prisma` |
| Audit Logs | `platform_audit.prisma` |
| Notifications | `platform_notify.prisma` |
| Workflows, Approvals | `corp_approval.prisma` |
| Expense/Purchase Requests | `corp_request.prisma` |
| Automation Tasks | `platform_automation.prisma` |

## 📖 规则

### DO ✅

- 编辑 `prisma/schema/` 目录下的文件
- 每个 model/enum 都加上 `@@schema("schema_name")`
- 使用清晰的文件名（按领域组织）

### DON'T ❌

- 不要创建 `schema.prisma` 文件（会覆盖目录模式）
- 不要忘记 `@@schema()` 指令
- 不要把不相关的 model 混在一个文件里

## ✨ Prisma 原生多文件的优势

### 自动功能

- **自动合并** - Prisma 自动读取所有 `.prisma` 文件
- **跨文件引用** - 无需 import，所有 model 直接可用
- **IDE 支持** - VSCode 扩展支持 "Go to Definition" 等功能
- **验证** - `prisma validate` 检查所有文件
- **格式化** - `prisma format` 格式化所有文件

### 与之前的区别

| 功能 | 之前（自定义方案） | 现在（Prisma 原生） |
|------|------------------|-------------------|
| Merge 脚本 | ✅ 需要 | ❌ 不需要 |
| 文件目录 | `schemas/` | `schema/` |
| 执行步骤 | merge + generate | generate |
| IDE 支持 | 基础 | 完整 |

## 🆘 故障排查

### "Schema not found"
**解决**: 检查文件在 `prisma/schema/` 目录下

### Model 找不到
**解决**: 确保添加了 `@@schema("schema_name")`

### 更改不生效
**解决**: 运行 `npm run prisma:generate`

## 💡 专业提示

1. **自动合并** - 所有 `prisma:*` 命令自动处理多文件
2. **VSCode 扩展** - 安装 Prisma 扩展获得最佳体验
3. **跨文件引用** - 直接引用其他文件的 model，无需 import
4. **搜索** - 使用全局搜索找到 model 定义

## 🎓 了解更多

- [完整文档](./schema/README.md)
- [迁移指南](./MIGRATION_TO_MULTI_SCHEMA.md)
- [架构概览](../../DATABASE_SCHEMA_STRUCTURE.md)
- [Prisma 官方文档](https://www.prisma.io/docs/guides/database/multi-file-schema)
- [Prisma 博客](https://www.prisma.io/blog/organize-your-prisma-schema-with-multi-file-support)

## ✅ 准备就绪！

使用 Prisma 原生多文件支持，开发更简单：

1. 编辑域文件（`prisma/schema/xxx.prisma`）
2. 运行 `npm run prisma:generate`
3. 开始使用！

**就这么简单！** 🎉

---

**版本**: 2.0 (Prisma Native)  
**更新**: 2024-11-17  
**Prisma**: 6.19.0
