Files
pig-farm-controller/bmad/component-inventory-main.md
2025-11-01 19:22:39 +08:00

4.2 KiB

Component Inventory - Main

This document provides an inventory of key software components within the Pig Farm Controller application, categorized by their primary function and layer.

1. Application Layer Components (internal/app)

1.1. API and Controllers

These components handle incoming HTTP requests, route them to appropriate handlers, and manage the request/response cycle.

  • api.go: Initializes the Echo web framework and sets up global middleware and controllers.
  • router.go: Defines all API routes, mapping HTTP methods and paths to specific controller functions. Includes public and authenticated routes.
  • controller/user: Handles user-related API endpoints (e.g., registration, login, notifications).
  • controller/device: Manages device-related API endpoints (e.g., CRUD for devices, area controllers, device templates, manual control).
  • controller/management: Manages pig batch related API endpoints (e.g., pig houses, pens, pig batches, transfers, sales, health records).
  • controller/monitor: Provides API endpoints for monitoring various logs and sensor data.
  • controller/plan: Handles plan-related API endpoints (e.g., CRUD for plans, start/stop plans).
  • controller/response.go: Utility for standardized API response formatting.

1.2. DTOs (Data Transfer Objects)

Located in internal/app/dto/, these define the structures for request and response payloads, ensuring clear data contracts for the API.

  • device_dto.go
  • monitor_dto.go
  • notification_dto.go
  • pig_batch_dto.go
  • pig_farm_dto.go
  • plan_dto.go
  • user_dto.go

1.3. Middleware

Located in internal/app/middleware/, these components process requests before they reach the main handlers.

  • audit.go**: Implements audit logging for authenticated requests.
  • auth.go: Handles JWT-based authentication for protected routes.

1.4. Application Services

Located in internal/app/service/, these orchestrate business logic and interact with domain services and repositories.

  • 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 Handlers

Located in internal/app/webhook/, these handle incoming webhooks from external systems.

  • chirp_stack.go**: Processes webhooks from ChirpStack LoRaWAN Network Server.
  • chirp_stack_types.go**: Defines data structures for ChirpStack webhooks.
  • placeholder_listener.go**: Placeholder for other webhook listeners.
  • transport.go**: Generic webhook transport interface.

2. Domain Layer Components (internal/domain)

These components encapsulate the core business logic and domain rules.

  • audit/service.go: Defines audit logging operations.
  • device/device_service.go: Core business logic for device management.
  • notify/notify.go: Defines notification interfaces.
  • pig/: Contains business logic related to pig management (e.g., pen_transfer_manager.go, pig_batch_service.go, pig_sick_manager.go, pig_trade_manager.go).
  • scheduler/: Manages task scheduling and execution.
  • task/: Defines various background tasks (e.g., delay_task.go, full_collection_task.go).
  • token/token_service.go: Handles JWT token creation and validation.

3. Infrastructure Layer Components (internal/infra)

These components deal with external concerns and technical details.

  • config/config.go: Manages application configuration loading.
  • database/: Handles database connection, migration, and GORM setup.
  • logs/logs.go: Provides logging utilities (using Zap).
  • models/: Defines GORM models that map to database tables.
  • notify/: Implements various notification channels (e.g., lark.go, smtp.go, wechat.go).
  • repository/: Provides data access logic for different entities (e.g., user_repository.go, device_repository.go, pig_batch_repository.go).
  • transport/: Handles communication with external systems, particularly LoRaWAN.
    • lora/**: LoRaWAN specific transport implementation.
    • proto/**: Protocol Buffer definitions for external communication.
  • utils/: General utility functions.