# PILOT-007

## Wedding Operation Suite

You are implementing the seventh and final Pilot Launch feature for the INVEETAIRE platform.

Current Status

✅ Sprint 0 Complete

✅ Sprint 1 Complete

✅ Sprint 2 Complete

✅ Sprint 3 Complete

✅ PILOT-001 Invitation Engine

✅ PILOT-002 Guest Import Engine

✅ PILOT-003 Public Guest Identity Layer

✅ PILOT-004 Public Invitation Rendering

✅ PILOT-005 Guest Interaction Engine

✅ PILOT-006 Message Template & Delivery Engine

Implement ONLY the Wedding Operation Suite.

This is the final Pilot implementation before Alpha Launch.

---

# Goal

Provide all operational features required on the wedding day.

The operational workflow is:

Crew Login

↓

Scan Guest QR

↓

Resolve Guest

↓

Display Guest Information

↓

Check-In

↓

Update Dashboard

Printer integration must remain optional.

---

# Mandatory Reading

Read:

* AI.md
* WORKFLOW.md
* IMPLEMENTATION_ROADMAP.md

Read implementation memories:

* PILOT-001
* PILOT-002
* PILOT-003
* PILOT-004
* PILOT-005
* PILOT-006

---

# Files Allowed

Create:

app/modules/Operation/

```
OperationController.php

OperationService.php

OperationModel.php

AttendanceService.php

DashboardService.php

routes.php
```

Create Views:

app/views/operation/

```
scanner.php

guest.php

dashboard.php
```

Modify:

routes/crew.php

No other files.

---

# Functional Scope

Implement ONLY:

## QR Scanner Entry

Provide a Crew page capable of receiving a scanned guest_token.

Assume scanner behaves as a keyboard input.

Do NOT implement camera scanning libraries.

The scanner simply submits the guest_token.

---

## Guest Resolution

Resolve:

guest_token

↓

workspace

↓

guest

↓

assigned wedding events

↓

current RSVP

↓

attendance status

↓

wish status

Return 404 if token is invalid.

---

## Guest Information

Display:

Guest Name

Guest Category

Guest Group

Seat Number

Invitation Type

Assigned Events

RSVP Status

Pax

Attendance Status

Checked-In Time (if already checked in)

---

## Check-In

Allow Crew to:

Check-In Guest

Rules:

Only first successful check-in records checked_in_at.

Subsequent scans:

Do NOT overwrite checked_in_at.

Display:

Already Checked In

instead.

Attendance status changes:

pending

↓

checked_in

---

## Attendance Dashboard

Provide live statistics:

Invited

RSVP Yes

RSVP No

Pending RSVP

Checked-In

Attendance Percentage

No charts required.

Simple statistic cards only.

---

## Printer Extension

Do NOT implement printing.

Instead provide:

PrinterAdapter interface.

Future implementations may include:

* Angpao Printer
* Name Label Printer
* Badge Printer

No printer logic yet.

---

# Service Responsibilities

OperationService

* guest resolution
* check-in workflow

AttendanceService

* attendance statistics

DashboardService

* dashboard aggregation

No SQL.

No HTML.

---

# Model Responsibilities

Own:

* guest lookup
* attendance updates
* statistics queries

Prepared PDO statements only.

Workspace isolation mandatory.

---

# Security

Verify:

Crew authentication required.

Workspace isolation.

Prepared statements.

No public guest access.

guest_token never exposes internal IDs.

Repeated scans remain idempotent.

---

# Constraints

Do NOT:

* implement camera SDK
* implement printer drivers
* implement badge printing
* implement analytics charts
* implement push notifications
* modify app/core/*
* modify database schema
* perform git operations

---

# Verification

Verify:

Guest lookup.

Invalid token.

Successful check-in.

Repeated check-in.

Dashboard refresh.

Workspace isolation.

PHP syntax.

---

# Acceptance Criteria

PASS only if:

* Operation module created.
* Scanner page created.
* Guest lookup works.
* Check-in works.
* Duplicate scans prevented.
* Dashboard statistics displayed.
* PrinterAdapter interface created.
* Workspace isolation maintained.
* PHP syntax passes.
* Scope respected.

---

# Output

Provide:

1. Files created.
2. Files modified.
3. Scanner workflow.
4. Guest resolution workflow.
5. Check-in workflow.
6. Dashboard workflow.
7. Security verification.
8. Acceptance checklist.
9. PHP syntax results.

Stop after implementation.

Wait for Human Approval.
