Story Index: QR Attendance (QRCONTR)
Module: qr-attendance
Total stories: 18
Decomposed from: docs/architecture/qr-attendance-arch.md (approved)
PRD reference: docs/prd/qr-attendance-prd.md
Design reference: docs/design/qr-attendance-design.md
Brand context: [BOTH] Papillon HR Suite + ALTARYS ENTERPRISE HR Suite
Date: 31/03/2026
Dependency Graph
QR-001 (Module Skeleton)
/ | \ \
/ | \ \
QR-002 QR-003 QR-004 QR-005
(Sites) (Sched) (Config) (Holidays)
/ \ | | |
/ \ | | |
QR-008 QR-006 ←───────┘ |
(Site (Clock-In/Out + |
Assign) Offline Sync) |
| |
QR-007 |
(Clock-Out + |
Validation) |
/ | \ |
/ | \ |
QR-011 QR-016 QR-009 ←──────┘
(Reg. (Hist.) (Dashboard +
Req.) Detection)
| |
QR-012 QR-010
(Reg. (Anomaly +
Approv.) Auto-Close)
/ \
/ \
QR-013 QR-017
(HR (Monthly
Direct) Report)
QR-014 ←── QR-004 (Config for limits)
(Télétrav.
Request)
|
QR-015
(Télétrav.
Approval)
QR-018 ←── QR-004 (Overtime config)
(Overtime
Report)
Story List
| # |
Story ID |
Title |
Depends On |
Complexity |
Status |
| 1 |
QR-001 |
Module Skeleton + Test Infrastructure + Shared Events |
CP |
S |
🔲 Not started |
| 2 |
QR-002 |
Site Management + QR Code Generation |
QR-001 |
M |
🔲 Not started |
| 3 |
QR-003 |
Work Schedule Configuration + Assignment |
QR-001 |
M |
🔲 Not started |
| 4 |
QR-004 |
Module Configuration + Overtime Bands + Compliance |
QR-001 |
M |
🔲 Not started |
| 5 |
QR-005 |
Public Holidays + Company Non-Working Days |
QR-001 |
S |
🔲 Not started |
| 6 |
QR-006 |
Employee Clock-In/Out + QR Scanner + Offline Sync |
QR-002, QR-003 |
L |
🔲 Not started |
| 7 |
QR-007 |
Clock-Out + Validation Rules (Duplicate, Terminated, Early Departure) |
QR-006 |
M |
🔲 Not started |
| 8 |
QR-008 |
Employee Site Assignment |
QR-002 |
S |
🔲 Not started |
| 9 |
QR-009 |
Daily Attendance Dashboard — Summary + Detection |
QR-007, QR-005 |
L |
🔲 Not started |
| 10 |
QR-010 |
Dashboard Anomalies + Auto-Close Batch + Manager Scope |
QR-009 |
M |
🔲 Not started |
| 11 |
QR-011 |
Regularization Request (Employee/Manager) |
QR-006 |
M |
🔲 Not started |
| 12 |
QR-012 |
Regularization Approval (Manager + HR) |
QR-011 |
M |
🔲 Not started |
| 13 |
QR-013 |
HR Direct Regularization |
QR-012 |
S |
🔲 Not started |
| 14 |
QR-014 |
Télétravail Request + Calendar |
QR-006, QR-004 |
M |
🔲 Not started |
| 15 |
QR-015 |
Télétravail Approval + Day-of Status Handling |
QR-014 |
M |
🔲 Not started |
| 16 |
QR-016 |
Employee Attendance History |
QR-006 |
M |
🔲 Not started |
| 17 |
QR-017 |
Monthly Attendance Report + Export |
QR-012 |
M |
🔲 Not started |
| 18 |
QR-018 |
Overtime Report + Weekly Classification |
QR-006, QR-004 |
M |
🔲 Not started |
Concurrency Tiers
| Tier |
Stories |
Can Start After |
| 0 |
QR-001 |
Control Plane available |
| 1 |
QR-002, QR-003, QR-004, QR-005 |
QR-001 merged |
| 2 |
QR-006, QR-008 |
QR-002 + QR-003 merged |
| 3 |
QR-007, QR-011, QR-014, QR-016, QR-018 |
QR-006 merged (QR-014 also needs QR-004, QR-018 also needs QR-004) |
| 4 |
QR-009, QR-012, QR-015 |
QR-007 + QR-005 merged (for QR-009), QR-011 merged (for QR-012), QR-014 merged (for QR-015) |
| 5 |
QR-010, QR-013, QR-017 |
QR-009 merged (for QR-010), QR-012 merged (for QR-013 + QR-017) |
PRD Acceptance Criteria Coverage
| PRD User Story |
ACs |
Assigned To (PRD AC # → Story) |
| US-QR-001: Employee Clock-In |
5 ACs |
PRD AC 1,2,3 → QR-006; PRD AC 4,5 → QR-007 |
| US-QR-002: Employee Clock-Out |
3 ACs |
PRD AC 1,3 → QR-007; PRD AC 2 → QR-010 |
| US-QR-003: View Own Attendance History |
2 ACs |
PRD AC 1,2 → QR-016 |
| US-QR-004: Request Regularization |
3 ACs |
PRD AC 1,2,3 → QR-011 |
| US-QR-005: Approve Regularization |
4 ACs |
PRD AC 1,2,3,4 → QR-012 |
| US-QR-006: HR Direct Regularization |
2 ACs |
PRD AC 1,2 → QR-013 |
| US-QR-007: Request Télétravail |
5 ACs |
PRD AC 1,2,3 → QR-014; PRD AC 4,5 → QR-015 |
| US-QR-008: Configure Sites and QR Codes |
3 ACs |
PRD AC 1,2,3 → QR-002 |
| US-QR-009: Configure Work Schedules |
4 ACs |
PRD AC 1,2,3,4 → QR-003 |
| US-QR-010: Daily Attendance Dashboard |
5 ACs |
PRD AC 1,2,5 → QR-009; PRD AC 3,4 → QR-010 |
| US-QR-011: Monthly Attendance Report |
3 ACs |
PRD AC 1,2,3 → QR-017 |
| US-QR-012: Overtime Report for Payroll |
2 ACs |
PRD AC 1,2 → QR-018 |
| US-QR-013: Module Activation Compliance |
3 ACs |
PRD AC 1,2,3 → QR-004 |
| TOTAL |
44 ACs |
44 assigned ✅ |
Technical Stories (No PRD User Story)
| Story |
Justification |
| QR-001: Module Skeleton |
Technical enabler — package structure, dependencies, test infrastructure. No tables. |
| QR-005: Public Holidays |
Supports US-QR-010 (dashboard no-show), US-QR-011 (reports), US-QR-018 (overtime). |
| QR-008: Employee Site Assignment |
Supports flexible site scanning, dashboard site filter, non-primary scan flagging. |
Flyway Migration Registry
All migrations use the V001_NNN__attendance_ prefix. Each migration is introduced in the story that first needs the table.
| Migration File |
Table |
Introduced In |
| V001_001__attendance_module_config.sql |
attendance_module_config |
QR-002 |
| V001_002__attendance_cached_employee.sql |
attendance_cached_employee |
QR-002 |
| V001_003__attendance_site.sql |
attendance_site |
QR-002 |
| V001_004__attendance_work_schedule.sql |
attendance_work_schedule + attendance_work_schedule_day |
QR-003 |
| V001_005__attendance_schedule_assignment.sql |
attendance_employee_schedule_assignment + attendance_department_schedule_assignment |
QR-003 |
| V001_006__attendance_overtime_config.sql |
attendance_overtime_config |
QR-004 |
| V001_007__attendance_department_config.sql |
attendance_department_config |
QR-004 |
| V001_008__attendance_overtime_ci_defaults.sql |
(seed data) |
QR-004 |
| V001_009__attendance_public_holiday.sql |
attendance_public_holiday |
QR-005 |
| V001_010__attendance_company_non_working_day.sql |
attendance_company_non_working_day |
QR-005 |
| V001_011__attendance_ci_holidays_seed.sql |
(seed data) |
QR-005 |
| V001_012__attendance_clock_event.sql |
attendance_clock_event |
QR-006 |
| V001_013__attendance_daily_attendance.sql |
attendance_daily_attendance |
QR-006 |
| V001_014__attendance_employee_site_assignment.sql |
attendance_employee_site_assignment |
QR-008 |
| V001_015__attendance_regularization_request.sql |
attendance_regularization_request |
QR-011 |
| V001_016__attendance_remote_work_request.sql |
attendance_remote_work_request |
QR-014 |
| V001_017__attendance_weekly_overtime_summary.sql |
attendance_weekly_overtime_summary |
QR-018 |
Architecture Slice → Story Mapping
| Arch Slice |
Story |
| QR-T0-001: Module Skeleton |
QR-001 |
| QR-T0-002: Flyway Migrations |
Distributed across QR-002 to QR-018 (each story owns its tables) |
| QR-T0-003: Shared Events |
QR-001 |
| QR-T0-004: CachedEmployeeData |
QR-002 (table + listeners) |
| QR-T1-001: Site CRUD + QR Gen |
QR-002 |
| QR-T1-002: Schedule CRUD + Assignment |
QR-003 |
| QR-T1-003: Module Config |
QR-004 |
| QR-T1-004: Holidays |
QR-005 |
| QR-T2-001: Clock Event + QR Validation |
QR-006 + QR-007 |
| QR-T2-002: Employee Site Assignment |
QR-008 |
| QR-T3-001: Late/Early Detection |
QR-009 (late) + QR-007 (early) |
| QR-T3-002: Auto-Close Batch |
QR-010 |
| QR-T3-003: No-Show Detection |
QR-009 |
| QR-T3-004: Shared Device Anomaly |
QR-010 |
| QR-T4-001: Regularization Workflow |
QR-011 + QR-012 + QR-013 |
| QR-T4-002: Télétravail Workflow |
QR-014 + QR-015 |
| QR-T4-003: Weekly Overtime |
QR-018 |
| QR-T5-001: Dashboard API |
QR-009 + QR-010 |
| QR-T5-002: Monthly Report |
QR-017 |
| QR-T5-003: Overtime Report |
QR-018 |
| QR-T5-004: Report Export |
QR-017 (introduces export infra) + QR-018 (reuses) |
| QR-T5-005: Batch Sync |
QR-006 (embedded in clock-in story) |
| QR-T5-006: Compliance |
QR-004 |
| QR-T5-007: QR Cache Endpoint |
QR-006 (embedded in clock-in story) |
Implementation Order
- QR-001 — Technical foundation: module skeleton, dependencies, test infra, shared events
- QR-002 — Site management: first user-visible feature, enables QR code printing at physical sites
- QR-003 — Work schedules: enables late/overtime detection, required before clock events can compute hours
- QR-004 — Module config: compliance onboarding, overtime bands, département tolerance — needed by clock events and télétravail
- QR-005 — Holidays: enables no-show detection to correctly distinguish absent from holiday
- QR-006 — Core clock-in/out: the module's hero feature — QR scanning, offline sync, daily attendance
- QR-007 — Clock-out + validation: completes the clock event flow with duplicate/terminated/early departure rules
- QR-008 — Site assignment: non-blocking, enables non-primary site flagging
- QR-009 — Dashboard: HR's primary daily tool — summary, filters, late/no-show detection
- QR-010 — Dashboard enhancements: anomalies, auto-close batch, manager scope
- QR-011 — Regularization request: employee/manager correction workflow
- QR-012 — Regularization approval: manager/HR approval with attendance recalculation
- QR-013 — HR direct regularization: fast correction from dashboard
- QR-014 — Télétravail request: calendar-based remote work requests
- QR-015 — Télétravail approval: approve/reject with day-of status handling
- QR-016 — Employee history: self-service attendance viewing
- QR-017 — Monthly report + export: attendance sheet with Excel/CSV export
- QR-018 — Overtime report: weekly classification with payroll-ready export