# Feature: Loop Name Enrichment

**Status**: Implemented
**Date**: 2026-02-02

## Summary
Enrich incoming RCU action events with `loop_name` by looking up metadata from `temporary_project` tables. This allows easier identification of specific device loops (e.g., "Main Chandelier") in the event log.

## Requirements
1.  **Cache Mechanism**: 
    - Load `rooms` and `loops` data from `temporary_project` schema into memory.
    - Refresh cache daily at 1:00 AM.
2.  **Enrichment**:
    - For each incoming event, look up `loop_name` using `device_id` and `dev_addr`.
    - `device_id` -> `room_type_id` (via `rooms` table).
    - `room_type_id` + `dev_addr` -> `loop_name` (via `loops` table).
3.  **Storage**:
    - Store `loop_name` in `rcu_action_events` table.

## Ambiguity Resolution
- The requirement mentioned matching `dev_type` to find the loop. However, standard RCU addressing uses `dev_addr` (and `dev_loop`). We assume `loops.loop_address` corresponds to the packet's `dev_addr` (converted to string).
- We will attempt to match `dev_addr` against `loop_address`.

## Schema Changes
- **Table**: `rcu_action.rcu_action_events`
- **Column**: `loop_name` (VARCHAR(255), Nullable)

## Implementation Plan
1.  **Database**: Update `init_db.sql` and `databaseManager.js`.
2.  **Cache**: Create `src/cache/projectMetadata.js`.
3.  **Processor**: Integrate cache lookup in `src/processor/index.js`.
4.  **Lifecycle**: Initialize cache in `src/index.js`.
