- Add Copy for Email button with rich HTML table (Outlook-compatible) - Show start → end dates on each timeline stage row - Syndication toggled ON by default - Fix translation feedback default to 5 days (matches config.json) - Restore form validation (disabled button until all fields filled) - Fix verdict logic in full calculator to include syndication buffer in deadline comparison (suggestedGoLive vs goLive) - Differentiate verdict message: production-over vs syndication-short - Update README with client estimator docs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
127 lines
5.7 KiB
Markdown
Executable file
127 lines
5.7 KiB
Markdown
Executable file
# SLA Calculator
|
|
|
|
A web-based SLA (Service Level Agreement) calculator for the eCom Content Factory. Replaces the Excel-based workflow with a 4-step wizard that PMs use to estimate project timelines and determine if deadlines can be met.
|
|
|
|
There are **two versions**:
|
|
- **Full Calculator** (`index.html`) — For PMs: 4-step wizard with full stage-by-stage configuration, Gantt chart, CSV/iCal export
|
|
- **Client Estimator** (`client.html`) — For clients: single-page form with 4 inputs, uses SLA defaults automatically
|
|
|
|
## How It Works
|
|
|
|
1. **Select Brief Type** - Choose from 9 brief types (Country Pull, Global Push, Local Push, Urgent, etc.). Each brief type displays a scope description and auto-populates which of the 8 project stages apply.
|
|
2. **Configure Stages** - Toggle stages on/off, set complexity levels, asset volumes (up to 300-400), revision rounds (supports decimals), and market approval days.
|
|
3. **Enter Dates** - Set the project kick-off date and required go-live date.
|
|
4. **View Results** - See the full timeline breakdown (List + Gantt views), key dates per stage, and a clear Y/N verdict on whether the deadline can be met.
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
index.html - Full PM calculator (4-step wizard, Gantt chart, CSV/iCal export)
|
|
script.js - Full calculator engine + form dynamics
|
|
client.html - Simplified client-facing estimator (single page)
|
|
client-script.js - Client estimator engine (uses config defaults)
|
|
config.json - All business rules (shared by both versions)
|
|
```
|
|
|
|
## Editing Business Rules
|
|
|
|
All assumptions, stage definitions, complexity levels, cross-reference tables, tooltips, and default values live in `config.json`. Non-developers can edit this file to update:
|
|
|
|
- **Brief types and stage matrix** - Which stages apply to which brief type
|
|
- **Production cross-reference table** - Days by complexity x asset volume
|
|
- **Syndication cross-reference table** - Days by complexity x EAN volume
|
|
- **Translation word count ranges** - Days by word count bucket
|
|
- **Opera Upload days** - Days by asset volume
|
|
- **Default values** - Revision rounds, market approval days, revision days per round
|
|
- **Tooltips and descriptions** - Help text shown to PMs in the UI
|
|
- **Syndication buffer** - Currently 10 business days (configurable)
|
|
|
|
## Key Calculation Logic
|
|
|
|
- Uses **business days** (Monday-Friday), not calendar days
|
|
- Each active stage adds: Handover (1 day) + WIP days + Market Approval days + (Revision Days x Rounds)
|
|
- **Syndication buffer**: When syndication is active, a 10 business-day buffer is added to the suggested go-live date
|
|
- **Stages 4 & 5** (Translation PDP + Asset) run in parallel and share one set of inputs
|
|
- **Opera Upload** is mandatory for all brief types — the toggle is locked on and cannot be deactivated by users (controlled via `alwaysActive: true` in config.json)
|
|
|
|
## Features
|
|
|
|
- Dark mode toggle (persists to localStorage)
|
|
- Mobile responsive layout
|
|
- Export to PDF (landscape A4)
|
|
- Export to iCal (.ics) with key milestone dates for Outlook/Google Calendar
|
|
- Real-time calculation on every input change
|
|
- Tooltips matching the original Excel comments
|
|
- Non-contractual dates disclaimer banner
|
|
- Brief type scope descriptions displayed as bullet lists
|
|
- Gantt chart view alongside list view in results
|
|
|
|
## Running Locally
|
|
|
|
Open `index.html` in a browser, or serve with any static file server:
|
|
|
|
```bash
|
|
npx serve -l 8080
|
|
```
|
|
|
|
Then visit `http://localhost:8080`.
|
|
|
|
## Dependencies (via CDN)
|
|
|
|
- [Tailwind CSS](https://tailwindcss.com/) - Styling
|
|
- [Flatpickr](https://flatpickr.js.org/) - Date pickers
|
|
- [html2pdf.js](https://ekoopmans.github.io/html2pdf.js/) - PDF export
|
|
|
|
No build step required. No npm install needed.
|
|
|
|
## Deployment
|
|
|
|
This is a fully static site (HTML + JS + JSON). Deploy to any static hosting:
|
|
|
|
- **Netlify** - Drag & drop or connect this repo
|
|
- **Vercel** - Connect this repo for auto-deploy
|
|
- **SharePoint** - Upload files directly
|
|
- **Azure Static Web Apps** - Free tier
|
|
|
|
## Verified Against Excel
|
|
|
|
The calculator has been verified against the original Excel workbook example:
|
|
|
|
| Input | Value |
|
|
|---|---|
|
|
| Brief Type | Country Pull - Simple |
|
|
| Active Stages | Production + Opera Upload |
|
|
| Production | Simple / 50-100 Assets / 0 revisions / 50% speedup |
|
|
| Kick-off | 6 Mar 2026 |
|
|
| Go-Live | 9 Mar 2026 |
|
|
|
|
| Output | Value |
|
|
|---|---|
|
|
| Production Complete | 16 Mar |
|
|
| Opera Upload Complete | 19 Mar |
|
|
| Verdict | N (cannot meet deadline) |
|
|
|
|
## Changelog
|
|
|
|
### 2026-03-12
|
|
- Added non-contractual dates disclaimer banner at top of page
|
|
- Revision and approval fields now accept decimal values (e.g. 0.2, 0.5)
|
|
- Opera Upload stage is now mandatory for all brief types
|
|
- Removed "Speed Up by %" slider from Production stage
|
|
- Extended asset volume brackets: added 100-200, 200-300, 300-400 (WIP day values are provisional placeholders — see `SLA_Asset_Brackets_Review.pdf`)
|
|
- Updated all 9 brief type descriptions with client-approved scope definitions
|
|
- Brief descriptions now render as bullet lists for easier scanning
|
|
|
|
### 2026-03-13
|
|
- Opera Upload stage is now fully locked: toggle disabled, badge non-clickable, "Required" label shown in both Step 1 badges and Step 2 stage card
|
|
- Uses config-driven `alwaysActive` flag — no hard-coded stage index in JS
|
|
- Cache-busting version bumped to `v=2026031302`
|
|
|
|
### 2026-03-13 (Client Estimator)
|
|
- Added simplified client-facing calculator (`client.html` + `client-script.js`)
|
|
- Single-page form: project type, asset volume, kick-off date, go-live date
|
|
- Uses config.json default values for all stage parameters (complexity, revisions, approval days)
|
|
- Shows active stages with day counts, estimated completion date, Y/N verdict
|
|
- Includes syndication buffer note when syndication is active
|
|
- PDF export, dark mode, non-contractual disclaimer
|
|
- Links to full calculator for detailed configuration
|