# App 数据种子使用说明（App:Seed）
> 作用：在启动时自动创建默认租户与基础字典，便于本地/测试环境快速落地必备数据。由 `AppDataSeeder` 执行，支持幂等多次运行。

## 配置入口
- 文件位置：`appsettings.Seed.{Environment}.json`（AdminApi 下新增独立种子文件，示例已写入 Development）
- 配置节：`App:Seed`

示例（已写入 `src/Api/TakeoutSaaS.AdminApi/appsettings.Seed.Development.json`）：
```json
{
  "App": {
    "Seed": {
      "Enabled": true,
      "DefaultTenant": {
        "TenantId": 1000000000001,
        "Code": "demo",
        "Name": "Demo租户",
        "ShortName": "Demo",
        "ContactName": "DemoAdmin",
        "ContactPhone": "13800000000"
      },
      "DictionaryGroups": [
        {
          "Code": "order_status",
          "Name": "订单状态",
          "Scope": "Business",
          "Items": [
            { "Key": "pending", "Value": "待支付", "SortOrder": 10 },
            { "Key": "paid", "Value": "已支付", "SortOrder": 20 },
            { "Key": "finished", "Value": "已完成", "SortOrder": 30 }
          ]
        },
        {
          "Code": "store_tags",
          "Name": "门店标签",
          "Scope": "Business",
          "Items": [
            { "Key": "hot", "Value": "热门", "SortOrder": 10 },
            { "Key": "new", "Value": "新店", "SortOrder": 20 }
          ]
        }
      ]
    }
  }
}
```

## 字段说明
- `Enabled`: 是否启用种子
- `DefaultTenant`: 默认租户（使用雪花 long ID；0 表示让雪花生成）
- `DictionaryGroups`: 基础字典，`Scope` 可选 `System`/`Business`，`Items` 支持幂等运行更新

## 运行方式
1. 确保 Admin API 已调用 `AddAppInfrastructure`（Program.cs 已注册，会启用 `AppDataSeeder`）。
2. 修改 `appsettings.Seed.{Environment}.json` 的 `App:Seed` 后，启动 Admin API，即会自动执行种子逻辑（幂等）。
3. 查看日志：`AppSeed` 前缀会输出创建/更新结果。

## 注意事项
- ID 必须用 long（雪花），不要再使用 Guid/自增。
- 系统租户使用 `TenantId = 0`；业务租户请填写实际雪花 ID。
- 字典分组编码需唯一；重复运行会按编码合并更新。
- 生产环境请按需开启 `Enabled`，避免误写入。
