# 代码库结构

**分析日期:** 2026-02-28

## 目录布局

```
fengling-platform/
├── Fengling.Platform.Domain/
│   ├── AggregatesModel/
│   │   ├── UserAggregate/
│   │   │   ├── ApplicationUser.cs
│   │   │   ├── AuditLog.cs
│   │   │   └── AccessLog.cs
│   │   ├── RoleAggregate/
│   │   │   └── ApplicationRole.cs
│   │   └── TenantAggregate/
│   │       ├── Tenant.cs
│   │       └── TenantInfo.cs
│   ├── GlobalUsings.cs
│   └── Fengling.Platform.Domain.csproj
├── Fengling.Platform.Infrastructure/
│   ├── Configurations/
│   │   └── TenantConfiguration.cs
│   ├── Migrations/
│   │   ├── 20260221065049_Initial.cs
│   │   ├── 20260221065049_Initial.Designer.cs
│   │   ├── 20260221071055_OpenIddict.cs
│   │   ├── 20260221071055_OpenIddict.Designer.cs
│   │   └── PlatformDbContextModelSnapshot.cs
│   ├── Extensions.cs
│   ├── GlobalUsings.cs
│   ├── ITenantStore.cs
│   ├── TenantManager.cs
│   ├── TenantStore.cs
│   ├── PlatformDbContext.cs
│   ├── SeedData.cs
│   ├── DesignTimeApplicationDbContextFactory.cs
│   └── Fengling.Platform.Infrastructure.csproj
├── Directory.Packages.props
├── NuGet.Config
├── Dockerfile
└── AGENTS.md
```

## 目录用途

**Fengling.Platform.Domain:**
- 目的: 包含核心业务实体的领域层
- 包含: 聚合（Tenant、User、Role）、值对象
- 关键文件: `AggregatesModel/*/*.cs`

**Fengling.Platform.Infrastructure:**
- 目的: 数据访问和外部关注的基础设施层
- 包含: DbContext、Stores、Managers、EF 配置、迁移
- 关键文件: `PlatformDbContext.cs`、`TenantStore.cs`、`TenantManager.cs`

**迁移:**
- 目的: EF Core 数据库迁移
- 已生成: 是（基于时间戳）
- 已提交: 是

## 关键文件位置

**入口点:**
- `Fengling.Platform.Infrastructure/Extensions.cs`: DI 注册入口点
- `Fengling.Platform.Infrastructure/PlatformDbContext.cs`: 数据库上下文

**配置:**
- `Directory.Packages.props`: 集中包版本管理
- `Fengling.Platform.Infrastructure/Configurations/TenantConfiguration.cs`: EF 租户配置

**核心逻辑:**
- `Fengling.Platform.Domain/AggregatesModel/TenantAggregate/Tenant.cs`: 租户实体
- `Fengling.Platform.Domain/AggregatesModel/UserAggregate/ApplicationUser.cs`: 用户实体
- `Fengling.Platform.Infrastructure/TenantStore.cs`: 租户数据访问
- `Fengling.Platform.Infrastructure/TenantManager.cs`: 租户业务逻辑

## 命名约定

**文件:**
- 实体: `{EntityName}.cs`（如 `Tenant.cs`、`ApplicationUser.cs`）
- 接口: `I{InterfaceName}.cs`（如 `ITenantStore.cs`、`ITenantManager.cs`）
- 实现: `{InterfaceName}.cs`（如 `TenantStore.cs`）

**目录:**
- 聚合: `*Aggregate/`（如 `TenantAggregate/`）
- 配置: `Configurations/`
- 迁移: `Migrations/`

**类:**
- 实体: PascalCase（如 `ApplicationUser`、`Tenant`）
- 枚举: PascalCase（如 `TenantStatus`）
- 值对象: PascalCase 记录（如 `TenantInfo`）

## 新增代码位置

**新聚合:**
- 领域实体: `Fengling.Platform.Domain/AggregatesModel/{AggregateName}/`
- Store 接口: `Fengling.Platform.Infrastructure/I{EntityName}Store.cs`
- Store 实现: `Fengling.Platform.Infrastructure/{EntityName}Store.cs`
- Manager 接口: `Fengling.Platform.Infrastructure/I{EntityName}Manager.cs`
- Manager 实现: `Fengling.Platform.Infrastructure/{EntityName}Manager.cs`
- EF 配置: `Fengling.Platform.Infrastructure/Configurations/`

**新实体属性:**
- 领域: 在 `AggregatesModel/` 中的现有实体添加
- 基础设施: 在 `Configurations/` 中添加配置或在 `PlatformDbContext.OnModelCreating()` 中添加

**新迁移:**
- 位置: `Fengling.Platform.Infrastructure/Migrations/`
- 通过以下方式生成: 从 Infrastructure 目录运行 `dotnet ef migrations add`

## 特殊目录

**迁移:**
- 目的: EF Core 数据库模式迁移
- 已生成: 是（由 dotnet ef 自动生成）
- 已提交: 是（纳入版本控制）

**配置:**
- 目的: EF Core 实体配置
- 包含: IEntityTypeConfiguration 实现

## 依赖关系

**Domain → Infrastructure:**
- Domain 引用: Microsoft.AspNetCore.Identity（仅接口）
- Domain 不引用 EF Core

**Infrastructure → Domain:**
- Infrastructure 引用: Fengling.Platform.Domain
- Infrastructure 引用: Microsoft.EntityFrameworkCore
- Infrastructure 引用: Npgsql.EntityFrameworkCore.PostgreSQL

---

*结构分析: 2026-02-28*
