- **`internal/app/webhook/chirp_stack.go` (`webhook.ChirpStackListener`)**
    - **结构体改造**:
        -   [x] 移除 `ChirpStackListener` 结构体中的 `logger *logs.Logger` 成员。
        -   [x] 新增 `selfCtx context.Context` 成员。
    - **构造函数改造 (`NewChirpStackListener`)**:
        -   [x] 修改函数签名，移除 `logger *logs.Logger` 参数，改为接收 `ctx context.Context`。
        -   [x] 在函数内部，为 `ChirpStackListener` 创建其专属的 `selfCtx`：
            `selfCtx := logs.AddCompName(ctx, "ChirpStackListener")`。
        -   [x] 将这个 `selfCtx` 赋值给 `ChirpStackListener` 结构体的 `selfCtx` 成员。
    - **公共方法改造 (`Handler`)**:
        -   [x] `Handler` 方法返回 `http.HandlerFunc`。在返回的 `http.HandlerFunc` 内部，获取 `r.Context()` 作为
            `upstreamCtx`。
        -   [x] 在 `go c.handler(b, event)` 调用之前，将 `upstreamCtx` 传递给 `c.handler` 方法，即
            `go c.handler(upstreamCtx, b, event)`。
        -   [x] 将所有对 `c.logger.Errorf` 的调用替换为 `logger.Errorf` (在 `handler` 方法中处理)。
    - **内部辅助方法改造 (`handler`, `handleUpEvent`, `handleStatusEvent`, `handleAckEvent`, `handleLogEvent`,
      `handleJoinEvent`, `handleTxAckEvent`, `handleLocationEvent`, `handleIntegrationEvent`, `recordSensorData`)**:
        -   [x] 修改方法签名，添加 `ctx context.Context` 作为第一个参数。
        -   [x] 在每个方法入口处，使用 `newCtx, logger := logs.Trace(ctx, c.selfCtx, "MethodName")` 获取新的
            `context.Context` 和 `logger` 实例。
        -   [x] 将所有对 `c.logger.Errorf`, `c.logger.Infof`, `c.logger.Warnf` 的调用替换为 `logger.Errorf`,
            `logger.Infof`, `logger.Warnf`。
        -   [x] 确保所有对 `c.sensorDataRepo`, `c.deviceRepo`, `c.areaControllerRepo`, `c.deviceCommandLogRepo`,
            `c.pendingCollectionRepo` 等依赖的调用都将 `newCtx` 作为第一个参数传递。
- **`internal/app/webhook/placeholder_listener.go` (`webhook.PlaceholderListener`)**
    - **结构体改造**:
        -   [x] 移除 `PlaceholderListener` 结构体中的 `logger *logs.Logger` 成员。
        -   [x] 新增 `selfCtx context.Context` 成员。
    - **构造函数改造 (`NewPlaceholderListener`)**:
        -   [x] 修改函数签名，移除 `logger *logs.Logger` 参数，改为接收 `ctx context.Context`。
        -   [x] 在函数内部，为 `PlaceholderListener` 创建其专属的 `selfCtx`：
            `selfCtx := logs.AddCompName(ctx, "PlaceholderListener")`。
        -   [x] 将这个 `selfCtx` 赋值给 `PlaceholderListener` 结构体的 `selfCtx` 成员。
        -   [x] 使用 `newCtx, logger := logs.Trace(ctx, selfCtx, "NewPlaceholderListener")` 获取 `logger` 实例，并替换
            `logger.Info` 调用。
    - **公共方法改造 (`Handler`)**:
        -   [x] 在 `Handler` 方法返回的 `http.HandlerFunc` 内部，获取 `r.Context()` 作为 `upstreamCtx`。
        -   [x] 使用 `newCtx, logger := logs.Trace(upstreamCtx, p.selfCtx, "Handler")` 获取 `logger` 实例。
        -   [x] 将所有对 `p.logger.Warn` 的调用替换为 `logger.Warn`。