# NL2CGA CGA 文件架构图

> 生成时间：2026-06-11  
> 文件总数：83 个 .cga 文件，总计 3,811 行  
> 根目录：`/www/wwwroot/nl2cga-service/library/`

---

## 一、目录结构总览

```
library/
│
├── main.cga                    ← 总调度入口 (250行)
│   └── import → config/* + base/* + 各分类/*
│
├── config/                     ← 全局配置层
│   ├── global_params.cga       ← 全局参数 (31行)
│   ├── lod_settings.cga        ← LOD分级配置 (18行)
│   └── style_mapping.cga       ← 风格编码映射表 (112行)
│
├── base/                       ← 基础组件层
│   ├── roof.cga                ← 屋顶系统 (45行)
│   │   └── Hip/Gable/Flat/Pyramid/Mansard + LOD L0/L1/L2
│   ├── facade.cga              ← 立面系统 (48行)
│   │   └── 窗框/门廊/装饰线脚分级
│   ├── material.cga            ← 材质映射 (44行)
│   │   └── PBR材质/纹理映射表
│   ├── structure.cga           ← 结构系统 (35行)
│   │   └── 柱网/梁架/楼板
│   ├── decoration.cga          ← 装饰组件 (35行)
│   │   └── 雕花/瓦片/栏杆
│   └── utils.cga               ← 工具函数 (21行)
│       └── 常用计算/辅助函数
│
├── residential/                ← 居住建筑 (33个)
│   ├── american_traditional/   ← 美洲传统 (8个)
│   │   ├── argentinian_gaucho.cga
│   │   ├── brazilian_colonial.cga
│   │   ├── canadian_log_cabin.cga
│   │   ├── indigenous_american.cga
│   │   ├── mexican_adobe.cga
│   │   ├── us_colonial.cga
│   │   ├── us_craftsman.cga
│   │   └── us_ranch.cga
│   ├── asian_traditional/      ← 亚洲传统 (5个)
│   │   ├── central_asia_adobe.cga
│   │   ├── chinese_traditional.cga
│   │   ├── japanese_traditional.cga
│   │   ├── korean_traditional.cga
│   │   └── southeast_asian_stilt.cga
│   ├── european_traditional/   ← 欧洲传统 (10个)
│   │   ├── baroque_rococo.cga
│   │   ├── british_tudor.cga
│   │   ├── classical_greek_roman.cga
│   │   ├── french_normandy.cga
│   │   ├── medieval_gothic.cga
│   │   ├── medieval_romanesque.cga
│   │   ├── nordic_wooden.cga
│   │   ├── renaissance_french.cga
│   │   ├── renaissance_italian.cga
│   │   └── spanish_mediterranean.cga
│   └── modern_contemporary/    ← 现代当代 (10个)
│       ├── affordable_housing.cga
│       ├── apartment_duplex.cga
│       ├── apartment_loft.cga
│       ├── apartment_plate.cga
│       ├── apartment_tower.cga
│       ├── special_residential.cga
│       ├── villa_american.cga
│       ├── villa_japanese.cga
│       ├── villa_mediterranean.cga
│       └── villa_modern.cga
│
├── commercial/                 ← 商业建筑 (8个)
│   ├── financial.cga
│   ├── food_beverage.cga
│   ├── hospitality_hotel.cga
│   ├── hospitality_resort.cga
│   ├── retail_mall.cga
│   ├── retail_street.cga
│   ├── retail_supermarket.cga
│   └── service.cga
│
├── industrial/                 ← 工业建筑 (7个)
│   ├── factory_heavy.cga
│   ├── factory_high_tech.cga
│   ├── factory_light.cga
│   ├── logistics_center.cga
│   ├── utility_energy.cga
│   ├── warehouse_general.cga
│   └── yard.cga
│
├── public/                     ← 公共建筑 (6个)
│   ├── administrative.cga
│   ├── cultural.cga
│   ├── education.cga
│   ├── exhibition.cga
│   ├── medical.cga
│   └── sports.cga
│
├── religious_monumental/       ← 宗教/纪念 (8个)
│   ├── buddhist.cga
│   ├── christian.cga
│   ├── hindu.cga
│   ├── islamic.cga
│   ├── jewish.cga
│   ├── monumental.cga
│   ├── sikh.cga
│   └── taoist.cga
│
├── transportation/             ← 交通建筑 (7个)
│   ├── airport.cga
│   ├── bridge_tunnel.cga
│   ├── metro_station.cga
│   ├── parking.cga
│   ├── port.cga
│   ├── railway_station.cga
│   └── road.cga
│
├── agricultural_rural/         ← 农业/乡村 (4个)
│   ├── processing_facility.cga
│   ├── production_greenhouse.cga
│   ├── production_livestock.cga
│   └── rural_public.cga
│
├── special/                    ← 特殊建筑 (4个)
│   ├── emergency.cga
│   ├── entertainment.cga
│   ├── military.cga
│   └── municipal.cga
│
├── examples/                   ← 示例场景 (3个)
│   ├── demo_chinese_village.cga
│   ├── demo_european_city.cga
│   └── demo_modern_district.cga
│
└── custom/                     ← 用户自定义 (2个)
    ├── user_style_1.cga
    └── user_style_2.cga
```

---

## 二、架构层次图

```
┌─────────────────────────────────────────────────────────────────────┐
│                        第一层：总调度入口                             │
│                        main.cga (250行)                              │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │  1. 解析 buildingType + buildingStyle 双维度路由             │   │
│  │  2. import config/* 加载全局参数                             │   │
│  │  3. import base/*  加载基础组件                              │   │
│  │  4. case 分支 → 调用对应分类的 Generate() 规则               │   │
│  └─────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────┐
│                        第二层：全局配置层                             │
│                                                                     │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────────────────┐ │
│  │ global_params│  │ lod_settings │  │    style_mapping         │ │
│  │   (31行)     │  │   (18行)     │  │      (112行)             │ │
│  │              │  │              │  │                          │ │
│  │ 全局常量/    │  │ Lod0~Lod3    │  │ 风格编码 → CGA分类映射   │ │
│  │ 属性默认值   │  │ 分级阈值     │  │ 如: "中式" → residential │ │
│  └──────────────┘  └──────────────┘  │        /asian_traditional │ │
│                                        └──────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────┐
│                        第三层：基础组件层                             │
│                                                                     │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│  │  roof    │ │ facade   │ │ material │ │ structure│ │ decoration│ │
│  │  (45行)  │ │ (48行)   │ │ (44行)   │ │ (35行)   │ │ (35行)   │ │
│  │          │ │          │ │          │ │          │ │          │ │
│  │ 5种屋顶  │ │ 窗框/门廊│ │ PBR材质  │ │ 柱网/梁架│ │ 雕花/瓦片│ │
│  │ +LOD分级 │ │ +LOD分级 │ │ 纹理映射 │ │ +LOD分级 │ │ +LOD分级 │ │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│                                                                     │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │ utils.cga (21行) — 常用计算函数（间距计算、角度转换等）       │   │
│  └─────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────┐
│                        第四层：分类建筑层                             │
│                                                                     │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐  │
│  │ residential │ │ commercial  │ │ industrial  │ │   public    │  │
│  │   (33个)    │ │   (8个)     │ │   (7个)     │ │   (6个)     │  │
│  │             │ │             │ │             │ │             │  │
│  │ 居住建筑    │ │ 商业建筑    │ │ 工业建筑    │ │ 公共建筑    │  │
│  └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘  │
│                                                                     │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐  │
│  │ religious/  │ │transportation│ │ agricultural│ │   special   │  │
│  │ monumental  │ │   (7个)      │ │   (4个)     │ │   (4个)     │  │
│  │   (8个)     │ │             │ │             │ │             │  │
│  │ 宗教/纪念   │ │ 交通建筑    │ │ 农业/乡村   │ │ 特殊建筑    │  │
│  └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘  │
│                                                                     │
│  统一接口: Generate(floorCount, lod) → 返回完整建筑规则            │
└─────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌─────────────────────────────────────────────────────────────────────┐
│                        第五层：示例与扩展                             │
│                                                                     │
│  ┌─────────────────┐  ┌─────────────────────────────────────────┐  │
│  │    examples/    │  │                custom/                  │  │
│  │   (3个场景)     │  │            (用户自定义风格)              │  │
│  │                 │  │                                         │  │
│  │ demo_chinese_   │  │  user_style_1.cga                       │  │
│  │   village       │  │  user_style_2.cga                       │  │
│  │ demo_european_  │  │                                         │  │
│  │   city          │  │  预留接口，支持用户上传自定义CGA规则      │  │
│  │ demo_modern_    │  │                                         │  │
│  │   district      │  │                                         │  │
│  └─────────────────┘  └─────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────┘
```

---

## 三、数据流图

```
用户输入 (自然语言描述)
    │
    ▼
┌──────────────────────────────────────────────┐
│  NL2CGA 意图识别器                            │
│  ─────────────────                             │
│  关键词匹配 / Embedding 语义匹配               │
│  → 确定 buildingType + buildingStyle          │
└──────────────────────────────────────────────┘
    │
    ▼
┌──────────────────────────────────────────────┐
│  main.cga 总调度入口                          │
│  ────────────────────                          │
│  1. import config/global_params.cga            │
│     → 加载 lot_width, lot_depth, floor_count  │
│  2. import config/lod_settings.cga             │
│     → 加载 Lod0~Lod3 阈值                     │
│  3. import config/style_mapping.cga           │
│     → buildingStyle "中式" → residential/     │
│       asian_traditional/chinese_traditional   │
│  4. import base/roof.cga + base/facade.cga    │
│     + base/material.cga + base/structure.cga  │
│  5. case 分支 → 调用目标分类的 Generate()    │
└──────────────────────────────────────────────┘
    │
    ▼
┌──────────────────────────────────────────────┐
│  分类CGA文件 (如 chinese_traditional.cga)     │
│  ─────────────────────────────────────         │
│  Generate(floorCount, lod)                    │
│    ├── 调用 base/roof.cga 的 Roof()           │
│    │   → 根据风格选择 Hip/Gable/Pyramid      │
│    ├── 调用 base/facade.cga 的 Facade()       │
│    │   → 根据LOD选择窗框细度                 │
│    ├── 调用 base/structure.cga 的 Structure() │
│    │   → 柱网布局                            │
│    ├── 调用 base/decoration.cga 的 Decor()    │
│    │   → 雕花/瓦片                           │
│    └── 调用 base/material.cga 的 Material()   │
│        → 颜色/纹理映射                       │
└──────────────────────────────────────────────┘
    │
    ▼
┌──────────────────────────────────────────────┐
│  引擎编译器 (cgajs-engine)                    │
│  ─────────────────────────                     │
│  ANTLR4 Parse → AST → Evaluator              │
│  → Three.js BufferGeometry                    │
│  → GLB / OBJ / JSON 输出                     │
└──────────────────────────────────────────────┘
    │
    ▼
┌──────────────────────────────────────────────┐
│  IDE 3D 预览 / Marketplace 下载              │
└──────────────────────────────────────────────┘
```

---

## 四、文件行数统计

| 层级 | 目录/文件 | 文件数 | 总行数 | 平均行数/文件 |
|------|-----------|--------|--------|--------------|
| 总调度 | `main.cga` | 1 | 250 | 250 |
| 配置层 | `config/` | 3 | 161 | 54 |
| 基础组件 | `base/` | 6 | 228 | 38 |
| 居住建筑 | `residential/` | 33 | 1,510 | 46 |
| 商业建筑 | `commercial/` | 8 | 240 | 30 |
| 工业建筑 | `industrial/` | 7 | 210 | 30 |
| 公共建筑 | `public/` | 6 | 204 | 34 |
| 宗教/纪念 | `religious_monumental/` | 8 | 248 | 31 |
| 交通建筑 | `transportation/` | 7 | 210 | 30 |
| 农业/乡村 | `agricultural_rural/` | 4 | 120 | 30 |
| 特殊建筑 | `special/` | 4 | 120 | 30 |
| 示例场景 | `examples/` | 3 | 99 | 33 |
| 用户自定义 | `custom/` | 2 | 56 | 28 |
| **合计** | — | **83** | **3,811** | **46** |

---

## 五、架构设计原则

1. **分层解耦**：config → base → category → examples，每层职责单一
2. **统一接口**：所有分类文件暴露 `Generate(floorCount, lod)` 统一入口
3. **LOD 分级**：每个组件支持 L0/L1/L2 三级细节，由 `lod_settings.cga` 统一控制
4. **import 链完整**：`main.cga` → `config/*` → `base/*` → `category/*`，可独立编译任一分类
5. **风格映射**：`style_mapping.cga` 将自然语言风格映射到具体文件路径，支持语义检索
6. **用户扩展**：`custom/` 目录预留用户上传接口，与系统规则隔离

---

## 六、现状与改进方向

| 维度 | 现状 | 改进方向 |
|------|------|----------|
| 文件数量 | 83 个 | 扩展至 150+（新增景观、室内、城市规划） |
| 平均行数 | 46 行/文件 | 提升至 100+（补充 LOD L2 细部） |
| base 层深度 | 6 个文件 | 新增 lighting.cga（光照系统）、terrain.cga（地形适配） |
| config 层 | 3 个文件 | 新增 climate_config.cga（气候带配置）、era_config.cga（时代配置） |
| import 依赖 | 单向链 | 建立依赖图可视化，检测循环依赖 |
| 编译验证 | 手动 | 建立 CI 自动编译验证（每次提交编译所有 83 个文件） |
