## 系统架构总览

- **DDS-Section**: 3. 总体架构设计
- **DDS-Lines**: L77-L164

### Extract

#### 分层架构

| 层级 | 技术选型 | 核心职责 |
|------|----------|----------|
| **展现层** | Vue3 + TS + Vuetify | 上传文件、批次管理、预览确认、规则配置、人工确认、导入结果展示 |
| **接入层** | GIN Framework | RESTful 接口，统一参数校验、错误处理、响应封装 |
| **应用服务层** | Go Service | 编排完整业务流程（ETL Pipeline），不承载具体解析规则 |
| **Adapter 层** | Go Plugin Interface | 按平台解析原始文件，输出平台原始记录 DTO |
| **Normalize 层** | Go Service | 统一字段、金额、方向、时间、分类原始值 |
| **Match 层** | Go Service | 严格去重、模糊去重（多因子评分） |
| **Link 层** | Go Service | 转账闭环、订单链路聚合 |
| **Rule 层** | Go Service | 分类、账户、对手方、标签映射 |
| **Export 层** | Go Service | 适配 Firefly III / Data Importer API 或 CSV/JSON |
| **Repository 层** | GORM | 隔离数据库访问，面向领域对象持久化 |
| **数据持久层** | SQLite | 本地数据库，存储全量数据与审计链路 |

#### 数据流转拓扑

```
多源账单导入 → 解析器(Parser) → 标准化入库 → 去重与链路合并 → 规则映射 → 导出/推送
 (文件上传)     (Adapter层)      (SQLite)     (Dedup+Link)    (Rule Engine)   (API/CSV)
```

#### 后端包结构

```
projectmoneyx-server/
├── cmd/server/main.go              # 程序入口
├── internal/
│   ├── config/                     # 配置管理
│   ├── handler/                    # GIN Handler（接入层）
│   ├── middleware/                  # 中间件
│   ├── service/                    # 应用服务层
│   ├── domain/                     # 领域层
│   │   ├── entity/                 # 领域实体
│   │   ├── valueobject/            # 值对象
│   │   └── repository/             # 仓储接口
│   ├── parser/                     # Adapter 解析层（插件化）
│   ├── normalize/                  # 标准化引擎
│   ├── matcher/                    # 去重引擎
│   ├── linker/                     # 链路合并引擎
│   ├── rule/                       # 规则引擎
│   ├── exporter/                   # 导出引擎
│   ├── dao/                        # 数据访问层（GORM 实现）
│   └── dto/                        # 数据传输对象
├── migrations/                     # 数据库迁移
├── web/                            # 前端打包产物
└── go.mod
```

#### 前端项目结构

```
projectmoneyx-web/
├── src/
│   ├── api/                        # API 调用封装
│   ├── views/                      # 页面视图 (8 个核心页面)
│   ├── components/                 # 可复用组件
│   ├── stores/                     # Pinia 状态管理
│   ├── types/                      # TypeScript 类型定义
│   ├── router/                     # Vue Router
│   ├── plugins/                    # Vuetify 等插件
│   ├── App.vue
│   └── main.ts
├── package.json
├── tsconfig.json
└── vite.config.ts
```

#### 模块清单

| 模块 | 包名 | 职责 | 优先级 |
|------|------|------|--------|
| 导入中心 | `import-center` | 文件上传、批次管理、来源识别 | P0 |
| 解析引擎 | `parser-engine` | 平台解析器注册、装载与执行 | P0 |
| 标准化引擎 | `normalize-engine` | 统一模型转换 | P0 |
| 去重引擎 | `dedup-engine` | 严格去重与模糊去重 | P0/P1 |
| 链路引擎 | `link-engine` | 转账闭环与订单链路合并 | P0 |
| 规则引擎 | `rule-engine` | 分类/账户/标签/商户归一化 | P0/P1 |
| 导入编排 | `import-orchestrator` | 导入预览、执行、重试 | P0 |
| 审计中心 | `audit-center` | 审计日志、处理链追溯 | P0 |
| 系统设置 | `settings-center` | Firefly 配置、阈值参数 | P1 |

#### 核心 Service 清单

```go
type ImportBatchService struct { ... }        // 批次管理
type PipelineService struct { ... }           // ETL 流水线编排
type ParserRegistry struct { ... }            // 解析器注册中心
type TransactionNormalizeService struct { ... } // 标准化服务
type DedupMatchService struct { ... }          // 去重匹配服务
type TransferLinkService struct { ... }        // 转账链路合并服务
type RuleApplyService struct { ... }           // 规则应用服务
type FireflyExportService struct { ... }       // Firefly 导出服务
type AuditTraceService struct { ... }          // 审计追溯服务
```

#### 关键设计约束

| # | 约束 | 说明 |
|---|------|------|
| 1 | 本地优先 | 财务数据敏感，必须本地部署 |
| 2 | 插件化解析器 | 平台格式变化频繁，适配逻辑隔离在 Adapter 层 |
| 3 | 统一交易模型稳定 | 避免下游 Firefly 或上游平台格式污染核心域模型 |
| 4 | 支付宝分类为标准 | 支付宝 22 种分类最丰富，其他平台映射到此体系 |
| 5 | 微信分类需推断 | 微信"交易类型"粗粒度，结合"商品"字段推断分类 |
