# Phase 6 Implementation Plan: History, Auditing & Analytics

**Variable Remuneration, Compensation, and Commissions System - Hoteles Estelar**

---

This document defines the detailed technical specifications and deployment steps for Phase 6, covering commission history queries (US-COM-010), immutable audit log trails (US-COM-011), premium analytics dashboards (US-COM-012), and PDF/Excel financial report exporters (US-COM-013).

---

## 1. Technical Stack & Additions

* **Chart Library**: Integrate **`recharts`** (or `chart.js` + `react-chartjs-2`) as the charting library. It is fully compatible with React, Next.js, and TypeScript. All chart components will be scoped as client-side components (`"use client"`) to support SVG/Canvas interactive animations.
* **Styling**: Strictly adhere to [STYLE_GUIDE.md](STYLE_GUIDE.md). Apply Vanilla CSS Modules (`*.module.css`), utilizing CSS HSL variables from `globals.css` (e.g., `--primary`, `--card`, `--border`, `--background`) to support seamless light/dark theme switches.
* **Database & RLS**: All history and analytics database operations must execute using the `getPrisma(session)` transaction helper to automatically apply PostgreSQL Row-Level Security (RLS).
* **Internationalization**: All text labels, chart tooltips, tables, and audit logs must render dynamically in English or Spanish according to the user's active `useLocale()` context.

---

## 2. Directory Layout & Routing

The following new files will be constructed under the workspace directory:

```
src/
 ├── app/
 │    ├── history/
 │    │    ├── page.tsx               # Colaborador historical ledger view
 │    │    └── page.module.css        # Scoped history layout styles
 │    ├── dashboard/
 │    │    ├── page.tsx               # Analytics dashboard layout
 │    │    ├── page.module.css        # Scoped dashboard dashboard grid
 │    │    └── ChartComponents.tsx    # Scoped client charts using Recharts
 │    ├── admin/
 │    │    └── audit-logs/
 │    │         ├── page.tsx          # Admin Audit log tracking view
 │    │         └── page.module.css   # Audit logs UI styling
 │    └── api/
 │         ├── audit-logs/
 │         │    └── route.ts          # Redacted audit logs fetch route
 │         └── reports/
 │              └── export/
 │                   ├── excel/
 │                   │    └── route.ts # XLSX output streaming service
 │                   └── pdf/
 │                        └── route.ts # Printable print-optimized layout
```

---

## 3. Detailed Feature Specifications

### 3.1. Colaborador History Dashboard (US-COM-010)
Provides collaborators and managers with access to historical payments, goals, and calculations.

* **Database Queries**:
  - Filtered by `period` (YYYY-MM), `status` (APPROVED, REJECTED, PENDING), and `userId` (enforced automatically in database by user-context RLS session params).
* **UI/UX Design**:
  - **Aesthetics**: Glassmorphic layout using `var(--card)` with a subtle blur backdrop, rounded corners (`var(--radius-lg)`), and smooth fade-in animations on hover.
  - **Components**:
    - Filter toolbar (select options for Period and Status).
    - Settlement list displaying: Period, Target Goal, Sales Total, Commission, Clawback Adjustment, Total Payout, and Status.
    - Expandable rows showing localized AI Audit Notes: `{item.aiAuditNotes[locale]}`.
    - PDF download triggers using browser window printing sheets (`@media print`) optimized via CSS.

### 3.2. Immutable Audit Log Trail System (US-COM-011)
Automates transaction audits and logs all security-critical mutations.

* **Audit Triggers**:
  - Place `tx.auditLog.create` inside prisma transactional operations in routes:
    - `/api/plans` (Plan creation, edit, version increase)
    - `/api/goals` (Quota setup updates)
    - `/api/users` (Account additions / role changes)
* **Application Redaction Rule**:
  - Implement a central audit logger utility that strips or masks credentials (such as password hashes, cookies, or database connection passwords) from the logged `previousValue` or `newValue` JSON structures.
* **Audit Logs Viewer (Admin-Only)**:
  - Route: `/admin/audit-logs`. Blocks non-admin users with a `403 Forbidden` response.
  - Features an interactive tabular view showing action timestamp, actor name, action verb, target table, and IP address.
  - Selecting an entry reveals a side-by-side JSON diff details panel.
* **RLS Block**:
  - Validate that database RLS triggers reject any attempts to update or delete rows on the `audit_logs` table.

### 3.3. Premium Executive Dashboard (US-COM-012)
Provides executive analysis of paid commissions, quotas achievement, and cost trends.

* **Access**: Restricted to `admin`, `director`, and `analyst` roles.
* **Metrics Widgets**:
  - Total commissions paid, average goal achievement rate (progress circle), active budget utilization, and clawback adjustments.
* **Charts (Recharts Integration)**:
  - **Line/Area Chart**: Monthly trends of commission payouts vs. budget cap, utilizing gradient fills with HSL transparency (`hsla(var(--primary-h), ..., 0.1)`).
  - **Bar Chart**: Comparisons of total sales and achievements across active hotels (Cartagena, Medellin, Bogota).
  - Charts must support responsive container scales (`ResponsiveContainer`) and localized tooltip values.

### 3.4. Excel & PDF Consolidator Service (US-COM-013)
Consolidates metrics for financial department checks.

* **Excel Exporter API**: `/api/reports/export/excel`.
  - Uses the `xlsx` library to assemble and download multi-sheet spreadsheets containing summary tabs (summarized by region) and detailed sheets (sales and commission details).
* **PDF Exporter API**: `/api/reports/export/pdf`.
  - Integrates printable stylesheet directives:
    ```css
    @media print {
      body {
        background: white;
        color: black;
      }
      .noPrint {
        display: none;
      }
      .pageBreak {
        page-break-after: always;
      }
    }
    ```
  - Enables exporting cleanly formatted records to PDF directly via standard browser print commands.

---

## 4. Internationalization (i18n) Dictionary Additions

Add the following keys to `src/lib/i18n/dictionaries/en.json` and `es.json`:

* **`en.json`**:
  ```json
  {
    "dashboard.title": "Compensation Analytics Dashboard",
    "dashboard.total_paid": "Total Paid Commissions",
    "dashboard.avg_achievement": "Avg Goal Achievement",
    "dashboard.budget_cap": "Active Budget Cap",
    "dashboard.trends": "Monthly Commission Trends",
    "history.title": "My Commission History",
    "history.audit_notes": "AI Audit Notes",
    "audit.title": "System Audit Logs"
  }
  ```
* **`es.json`**:
  ```json
  {
    "dashboard.title": "Tablero de Análisis de Compensación",
    "dashboard.total_paid": "Comisiones Totales Pagadas",
    "dashboard.avg_achievement": "Promedio Logro de Metas",
    "dashboard.budget_cap": "Límite de Presupuesto Activo",
    "dashboard.trends": "Tendencias de Comisiones Mensuales",
    "history.title": "Mi Historial de Comisiones",
    "history.audit_notes": "Notas de Auditoría de IA",
    "audit.title": "Registros de Auditoría del Sistema"
  }
  ```

---

## 5. Testing & Verification

1. **Verify RLS Security**:
   - Write integration assertions attempting to query history records under a different user session. Check that the database filters correctly and returns no foreign records.
   - Run write-only tests attempting to run `DELETE` or `UPDATE` queries against the `AuditLog` table. Ensure the operations fail.
2. **Automated UI Testing (Puppeteer)**:
   - Configure a headless script `prisma/test-phase6-ui.js` that logins as collaborator, visits `/history`, checks that the table renders data properly, and triggers language switches.
   - Visits `/dashboard` as admin and verifies that the charts mount successfully.
