# 组件清单 - 主模块

本文档提供了猪场控制器应用程序中关键软件组件的清单，按其主要功能和层级进行分类。

## 1. 应用层组件 (`internal/app`)

### 1.1. API 和控制器

这些组件处理传入的 HTTP 请求，将其路由到适当的处理程序，并管理请求/响应周期。

*   **`api.go`**: 初始化 Echo Web 框架并设置全局中间件和控制器。
*   **`router.go`**: 定义所有 API 路由，将 HTTP 方法和路径映射到特定的控制器函数。包括公共和认证路由。
*   **`controller/user`**: 处理用户相关的 API 端点（例如，注册、登录、通知）。
*   **`controller/device`**: 管理设备相关的 API 端点（例如，设备的 CRUD 操作、区域控制器、设备模板、手动控制）。
*   **`controller/management`**: 管理猪群批次相关的 API 端点（例如，猪舍、猪圈、猪群批次、转栏、销售、健康记录）。
*   **`controller/monitor`**: 提供用于监控各种日志和传感器数据的 API 端点。
*   **`controller/plan`**: 处理计划相关的 API 端点（例如，计划的 CRUD 操作、启动/停止计划）。
*   **`controller/response.go`**: 用于标准化 API 响应格式的工具。

### 1.2. DTOs (数据传输对象)

位于 `internal/app/dto/` 中，这些定义了请求和响应负载的结构，确保了 API 的清晰数据契约。

*   `device_dto.go` (设备 DTO)
*   `monitor_dto.go` (监控 DTO)
*   `notification_dto.go` (通知 DTO)
*   `pig_batch_dto.go` (猪群批次 DTO)
*   `pig_farm_dto.go` (猪场 DTO)
*   `plan_dto.go` (计划 DTO)
*   `user_dto.go` (用户 DTO)

### 1.3. 中间件

位于 `internal/app/middleware/` 中，这些组件在请求到达主要处理程序之前对其进行处理。

*   **`audit.go`**: 为认证请求实现审计日志记录。
*   **`auth.go`**: 为受保护的路由处理基于 JWT 的身份验证。

### 1.4. 应用服务

位于 `internal/app/service/` 中，这些组件协调业务逻辑并与领域服务和仓库进行交互。

*   `device_service.go` (设备服务)
*   `monitor_service.go` (监控服务)
*   `pig_batch_service.go` (猪群批次服务)
*   `pig_farm_service.go` (猪场服务)
*   `pig_service.go` (猪只服务)
*   `plan_service.go` (计划服务)
*   `user_service.go` (用户服务)

### 1.5. Webhook 处理器

位于 `internal/app/webhook/` 中，这些组件处理来自外部系统的传入 Webhook。

*   **`chirp_stack.go`**: 处理来自 ChirpStack LoRaWAN 网络服务器的 Webhook。
*   **`chirp_stack_types.go`**: 定义 ChirpStack Webhook 的数据结构。
*   **`placeholder_listener.go`**: 其他 Webhook 监听器的占位符。
*   **`transport.go`**: 通用 Webhook 传输接口。

## 2. 领域层组件 (`internal/domain`)

这些组件封装了核心业务逻辑和领域规则。

*   **`audit/service.go`**: 定义审计日志操作。
*   **`device/device_service.go`**: 设备管理的核心业务逻辑。
*   **`notify/notify.go`**: 定义通知接口。
*   **`pig/`**: 包含与猪只管理相关的业务逻辑（例如，`pen_transfer_manager.go`、`pig_batch_service.go`、`pig_sick_manager.go`、`pig_trade_manager.go`）。
*   **`scheduler/`**: 管理任务调度和执行。
*   **`task/`**: 定义各种后台任务（例如，`delay_task.go`、`full_collection_task.go`）。
*   **`token/token_service.go`**: 处理 JWT 令牌的创建和验证。

## 3. 基础设施层组件 (`internal/infra`)

这些组件处理外部关注点和技术细节。

*   **`config/config.go`**: 管理应用程序配置加载。
*   **`database/`**: 处理数据库连接、迁移和 GORM 设置。
*   **`logs/logs.go`**: 提供日志工具（使用 Zap）。
*   **`models/`**: 定义映射到数据库表的 GORM 模型。
*   **`notify/`**: 实现各种通知渠道（例如，`lark.go`、`smtp.go`、`wechat.go`）。
*   **`repository/`**: 为不同的实体提供数据访问逻辑（例如，`user_repository.go`、`device_repository.go`、`pig_batch_repository.go`）。
*   **`transport/`**: 处理与外部系统（特别是 LoRaWAN）的通信。
    *   `lora/`**: LoRaWAN 特定传输实现。
    *   `proto/`**: 协议缓冲区定义。
*   **`utils/`**: 通用工具函数。
