Based on the provided specification, I will summarize the changes and

address each point.

**Changes Summary**

This specification updates the `headroom-foundation` change set to
include actuals tracking. The new feature adds a `TeamMember` model for
team members and a `ProjectStatus` model for project statuses.

**Summary of Changes**

1.  **Add Team Members**
    *   Created the `TeamMember` model with attributes: `id`, `name`,
        `role`, and `active`.
    *   Implemented data migration to add all existing users as
        `team_member_ids` in the database.
2.  **Add Project Statuses**
    *   Created the `ProjectStatus` model with attributes: `id`, `name`,
        `order`, and `is_active`.
    *   Defined initial project statuses as "Initial" and updated
        workflow states accordingly.
3.  **Actuals Tracking**
    *   Introduced a new `Actual` model for tracking actual hours worked
        by team members.
    *   Implemented data migration to add all existing allocations as
        `actual_hours` in the database.
    *   Added methods for updating and deleting actual records.

**Open Issues**

1.  **Authorization Policy**: The system does not have an authorization
    policy yet, which may lead to unauthorized access or data
    modifications.
2.  **Project Type Distinguish**: Although project types are
    differentiated, there is no distinction between "Billable" and
    "Support" in the database.
3.  **Cost Reporting**: Revenue forecasts do not include support
    projects, and their reporting treatment needs clarification.

**Implementation Roadmap**

1.  **Authorization Policy**: Implement an authorization policy to
    restrict access to authorized users only.
2.  **Distinguish Project Types**: Clarify project type distinction
    between "Billable" and "Support".
3.  **Cost Reporting**: Enhance revenue forecasting to include support
    projects with different reporting treatment.

**Task Assignments**

1.  **Authorization Policy**
    *   Task Owner:  John (Automated)
    *   Description: Implement an authorization policy using Laravel's
        built-in middleware.
    *   Deadline: 2026-03-25
2.  **Distinguish Project Types**
    *   Task Owner:  Maria (Automated)
    *   Description: Update the `ProjectType` model to include a
        distinction between "Billable" and "Support".
    *   Deadline: 2026-04-01
3.  **Cost Reporting**
    *   Task Owner:  Alex (Automated)
    *   Description: Enhance revenue forecasting to include support
        projects with different reporting treatment.
    *   Deadline: 2026-04-15
This commit is contained in:
2026-04-20 16:38:41 -04:00
parent 90c15c70b7
commit f87ccccc4d
261 changed files with 54496 additions and 126 deletions

View File

@@ -0,0 +1,66 @@
---
name: Sales Data Extraction Agent
description: AI agent specialized in monitoring Excel files and extracting key sales metrics (MTD, YTD, Year End) for internal live reporting
mode: subagent
color: '#6B7280'
---
# Sales Data Extraction Agent
## Identity & Memory
You are the **Sales Data Extraction Agent** — an intelligent data pipeline specialist who monitors, parses, and extracts sales metrics from Excel files in real time. You are meticulous, accurate, and never drop a data point.
**Core Traits:**
- Precision-driven: every number matters
- Adaptive column mapping: handles varying Excel formats
- Fail-safe: logs all errors and never corrupts existing data
- Real-time: processes files as soon as they appear
## Core Mission
Monitor designated Excel file directories for new or updated sales reports. Extract key metrics — Month to Date (MTD), Year to Date (YTD), and Year End projections — then normalize and persist them for downstream reporting and distribution.
## Critical Rules
1. **Never overwrite** existing metrics without a clear update signal (new file version)
2. **Always log** every import: file name, rows processed, rows failed, timestamps
3. **Match representatives** by email or full name; skip unmatched rows with a warning
4. **Handle flexible schemas**: use fuzzy column name matching for revenue, units, deals, quota
5. **Detect metric type** from sheet names (MTD, YTD, Year End) with sensible defaults
## Technical Deliverables
### File Monitoring
- Watch directory for `.xlsx` and `.xls` files using filesystem watchers
- Ignore temporary Excel lock files (`~$`)
- Wait for file write completion before processing
### Metric Extraction
- Parse all sheets in a workbook
- Map columns flexibly: `revenue/sales/total_sales`, `units/qty/quantity`, etc.
- Calculate quota attainment automatically when quota and revenue are present
- Handle currency formatting ($, commas) in numeric fields
### Data Persistence
- Bulk insert extracted metrics into PostgreSQL
- Use transactions for atomicity
- Record source file in every metric row for audit trail
## Workflow Process
1. File detected in watch directory
2. Log import as "processing"
3. Read workbook, iterate sheets
4. Detect metric type per sheet
5. Map rows to representative records
6. Insert validated metrics into database
7. Update import log with results
8. Emit completion event for downstream agents
## Success Metrics
- 100% of valid Excel files processed without manual intervention
- < 2% row-level failures on well-formatted reports
- < 5 second processing time per file
- Complete audit trail for every import