Maintenance Schedule — Forms
Maintenance Schedule — Form Specifications
Module slug:
maintenance· UX/forms agent · 2026-05-02 The institution's upkeep calendar. Tasks tied to assets — buildings, vehicles, equipment, lands. Three patterns: annual (water tank cleaning, electrical audit), periodical (daily/weekly/monthly — generator rotation, ventilation), one-time (ad-hoc). Compliance maintenance (fire / lift / lightning arrester) is a first-class concern. Frequency vocabulary preserved per framework HTML.
Form 6.1 — Maintenance Task Template
Purpose: Define WHAT to do, on which asset (or class of assets), and how often. Acts as a template; instances are spawned by Form 6.2. Who fills: Maintenance manager · once per task · revisited if frequency or assignee changes.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Task Code | text | Yes | unique per tenant | auto: MNT-{seq} |
|
| Task Name | text | Yes | 255 chars | — | E.g. Water Tank Cleaning |
| Task Name (Sanskrit) | text | No | Devanagari, VijayaDV preserved | — | |
| Description | textarea | No | 2000 chars | — | |
| Instructions | textarea | Yes | 2000 chars | — | E.g. Run generator 15 min weekly to prevent seizure; check oil before start |
| Asset (specific) | lookup | conditional | required if Asset Scope = Specific | — | from assets |
| Asset Scope | dropdown | Yes | Specific / All Buildings / All Vehicles / All Equipment / All AC Rooms / All Lands | Specific | When non-Specific, scheduler enumerates per asset |
| Branch | dropdown | No | tenant's branches | — | If null, applies tenant-wide |
| Frequency | dropdown | Yes | Daily / Weekly / Monthly / Quarterly / Half-Yearly / Annual / One-Time / Ad-Hoc | Monthly | Framework HTML language preserved |
| Frequency Interval | number | Yes | ≥ 1 | 1 | E.g. Frequency=Monthly + Interval=3 → every 3 months |
| Estimated Duration (minutes) | number | No | 1–1440 | — | |
| Estimated Cost (INR) | number | No | step 0.01 ≥ 0 | — | Per occurrence |
| Default Assignee | lookup | No | from members |
— | Suggestion; can be overridden per schedule |
| AMC Contract | lookup | No | from amc_contracts |
— | If task is fulfilled under an AMC |
| Is Compliance Task | checkbox | No | — | unchecked | Fire / lift / lightning / electrical etc. |
| Compliance Authority | text | conditional | required if Is Compliance | — | E.g. Karnataka Fire Service |
| Skip on Branch-Closed Days | checkbox | No | — | unchecked | Skips if festival holiday closes branch |
| Active | checkbox | Yes | — | checked |
Submit action: POST /api/maintenance/tasks. Optionally clicks "Generate Schedules N months ahead" → calls Form 6.2's generator with default 3 months horizon.
Related forms: Schedule Maintenance Task (6.2) instantiates this; AMC Contract (6.4) may parent it.
Form 6.2 — Schedule Maintenance Task (Instance)
Purpose: Create a scheduled occurrence of a task on a specific date with assignee. Used both for ad-hoc tasks and for one-off overrides of templated tasks. Who fills: Maintenance manager · per instance (or bulk-generated by scheduler) · revisited at start / completion.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Task Template | lookup | Yes | from maintenance_tasks |
— | |
| Asset | lookup | conditional | required if template's scope is non-Specific | from template | Picker enumerates matching assets |
| Branch | dropdown | Yes | tenant's branches | from template / asset | |
| Due Date | date | Yes | ≥ today (warning if past) | from frequency calc | |
| Grace Until | date | No | ≥ Due Date | Due + 7 days for daily, +30 for monthly | After this, status auto-flips to Overdue |
| Assigned To (Member) | lookup | conditional | required if no AMC | from template default | |
| Assigned To (AMC) | lookup | conditional | required if AMC | from template AMC | |
| Priority | dropdown | Yes | Low / Normal / High / Urgent | Normal | |
| Status | dropdown (read-only on create) | Yes | Scheduled / In-Progress / Completed / Overdue / Skipped / Cancelled | Scheduled | |
| Estimated Duration (minutes) | number | No | from template | from template | Override allowed |
| Notes | textarea | No | 1000 chars | — |
Submit action: POST /api/maintenance/schedules. Generates calendar entry; sends T-7 / T-1 reminders to assignee via Comms.
Related forms: Task Template (6.1) is parent; Mark Task Complete (6.3) closes it.
Form 6.3 — Mark Task Complete
Purpose: Record what was actually done — by whom, with what findings, materials used, and follow-up needs. Who fills: Assigned member or AMC vendor liaison · per schedule · final-state for that schedule (defects spawn follow-up via 6.5).
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Schedule | lookup (read-only when from list) | Yes | from maintenance_schedules (Scheduled / In-Progress) |
— | |
| Completion Date | date | Yes | ≤ today; ≥ Schedule.due − 30 days | today | |
| Completed By (Member) | lookup | conditional | required unless External | current user's member-id | |
| Completed By (External) | text | conditional | required if no Member | — | E.g. AMC vendor technician name |
| Duration (minutes) | number | No | 1–1440 | from schedule estimate | |
| Findings | textarea | Yes | 2000 chars | — | What was observed |
| Defects Found | checkbox | No | — | unchecked | If checked, Follow-Up Required defaults to checked |
| Follow-Up Required | checkbox | conditional | enabled if Defects Found | unchecked | Triggers Form 6.5 spawn after submit |
| Materials Used | sub-form (multiple lines) | No | each: Item lookup + Qty + UoM | empty | Each line creates a dispense_record (purpose=maintenance) |
| Cost Incurred (INR) | number | No | step 0.01 ≥ 0 | — | If external |
| Photos | file upload (multiple) | No | JPG/PNG ≤ 5 MB each, max 10 | — | Stored in object store; mobile capture friendly |
| Next-Due Override | date | No | ≥ Completion Date | computed from frequency | Override the auto-computed next due |
| Sign-off (User) | read-only | Yes | current user | current | Auth identity |
| Notes | textarea | No | 2000 chars | — |
Submit action: POST /api/maintenance/schedules/{id}/complete. Closes schedule (status=completed). If defects+follow-up: spawns ad-hoc schedule. Materials Used calls Inventory record_dispense. Updates task next_due_on.
Related forms: Schedule (6.2) is closed; Inspection Report (6.5) is the structured follow-up if defects warrant inspection.
Form 6.4 — AMC Contract Entry
Purpose: Register an Annual Maintenance Contract with a vendor — covered assets, period, value, visit cadence, callouts allowed. Who fills: Treasurer / facilities manager · per contract · revisited at renewal.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Contract Number | text | Yes | unique per tenant | auto: AMC-{YY}-{seq} |
|
| Vendor | lookup | Yes | from Vitta vendors |
— | |
| Contract Type | dropdown | Yes | Comprehensive / Non-Comprehensive / Callout-Only / Preventive-Only | Comprehensive | |
| Coverage Description | textarea | Yes | 2000 chars | — | E.g. Quarterly servicing of all Daikin AC units in RSK and GK; spare parts not included |
| Covered Assets | lookup (multi) | Yes | from assets |
— | Stored as JSON array |
| Start Date | date | Yes | ≤ End Date | — | |
| End Date | date | Yes | ≥ Start Date | Start + 1 year | |
| Annual Value (INR) | number | Yes | step 0.01 ≥ 0 | — | |
| Payment Frequency | dropdown | Yes | Annual / Half-Yearly / Quarterly / Monthly | Annual | |
| Next Invoice Due | date | conditional | required if Payment Frequency ≠ One-shot | computed | |
| Visit Frequency | dropdown | No | Monthly / Quarterly / Half-Yearly / Annual / On-Call | Quarterly | Drives auto-spawn of preventive schedules |
| Visits per Year | number | No | 1–365 | computed from Visit Frequency | |
| Callouts Allowed per Year | number | No | ≥ 0 | — | If contract caps callouts |
| Auto-Renew | checkbox | No | — | unchecked | If checked, T-30 reminder includes "renew" CTA |
| Contact Person | text | No | 127 chars | — | |
| Contact Phone | text | No | 40 chars | — | |
| Contact Email | text | No | valid email | — | |
| Contract Document | file upload | Yes | PDF ≤ 10 MB | — | Signed contract |
| Active | checkbox | Yes | — | checked |
Submit action: POST /api/maintenance/amc. Spawns visits_per_year MaintenanceSchedule rows under a synthetic task (AMC-Visit-{contract}). Posts first invoice as Vitta vendor_payable. T-30 expiry reminder scheduled.
Related forms: Task Template (6.1) may reference this AMC; Compliance Maintenance (6.6) often is fulfilled under an AMC.
Form 6.5 — Inspection Report Entry
Purpose: Record a standalone inspection — structural survey, fire-safety drill, electrical audit, lift inspection, lightning arrester check. Who fills: Inspector (with witness) · per inspection · immutable after sign-off.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Asset | lookup | Yes | from assets |
— | Inspected asset |
| Inspection Type | dropdown | Yes | Structural / Fire-Safety / Electrical / Lift / Lightning Arrester / Water Quality / Pest Control / Security Drill / General | — | |
| Inspection Date | date | Yes | ≤ today | today | |
| Inspector Name | text | Yes | 255 chars | — | |
| Inspector Organisation | text | No | 255 chars | — | E.g. Karnataka Fire Service |
| Inspector Credentials | text | No | 255 chars | — | Licence / certification number |
| Overall Rating | dropdown | Yes | Pass / Pass-with-Defects / Fail / Critical-Fail | Pass | |
| Findings | textarea | Yes | 5000 chars | — | Free-form report |
| Defects (sub-form, repeatable) | — | conditional | required if Rating ≠ Pass | — | See below |
| Report Document | file upload | Yes | PDF ≤ 20 MB | — | Original signed report |
| Photos | file upload (multiple) | No | JPG/PNG ≤ 5 MB each, max 20 | — | |
| Next Inspection Due | date | conditional | required for compliance inspections | — | Drives compliance dashboard |
| Is Compliance Inspection | checkbox | No | — | depends on type | Auto-checked for fire / lift / electrical / lightning |
| Compliance Certificate Number | text | conditional | required if Compliance + Pass | — | |
| Compliance Certificate Expiry | date | conditional | required if Compliance + Pass | — | |
| Statutory Record Link | lookup | No | from statutory_certificates |
— | Cross-link to Statutory module |
| Sign-off Witness Name | text | Yes | 255 chars | — | Trustee / staff witness |
| Lock after sign-off | checkbox | Yes | — | checked | Prevents post-sign edits; new versioned report required for corrections |
Defect sub-form (repeatable):
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Description | textarea | Yes | 1000 chars | — | |
| Severity | dropdown | Yes | Low / Medium / High / Critical | Medium | |
| Recommended Action | textarea | Yes | 1000 chars | — | |
| Target Date | date | Yes | ≥ Inspection Date | Inspection + 30 days | |
| Status | dropdown | Yes | Open / In-Progress / Resolved / Deferred | Open | |
| Spawn Follow-up Schedule | checkbox | No | — | checked if Severity ≥ High | If checked, spawns Form 6.2 instance |
Submit action: POST /api/maintenance/inspections. If Compliance + Pass, writes/updates statutory_certificates via Statutory module bridge. Critical defects emit audit_event for trustee visibility. Lock-after-sign-off freezes the row.
Related forms: Mark Task Complete (6.3) may spawn this for severity-warranting defects; Compliance Maintenance (6.6) consumes this for cycle close-out.
Form 6.6 — Compliance Maintenance Entry
Purpose: Specialised entry for statutory inspection cycles — fire systems, lifts, lightning arresters, electrical audit, water quality. Bridges to Statutory module. Who fills: Compliance officer · per cycle (typically annual) · revisited at next cycle.
| Field | Type | Required | Options / Validation | Default | Help |
|---|---|---|---|---|---|
| Compliance Category | dropdown | Yes | Fire Safety / Lift Inspection / Lightning Arrester / Electrical Audit / Water Quality / Pest Control / Building Safety / Other | — | Drives cycle defaults |
| Asset | lookup | Yes | from assets (filter by category appropriateness) |
— | |
| Branch | dropdown | Yes | tenant's branches | asset's branch | |
| Statutory Authority | text | Yes | 127 chars | from category default | E.g. Karnataka Fire Service, Lift Inspector — PWD |
| Last Inspection Date | date | Yes | ≤ today | — | |
| Last Inspection Report | lookup | No | from inspection_reports |
most recent for asset+type | |
| Last Certificate Number | text | conditional | required if Last Inspection passed | — | |
| Last Certificate Issue Date | date | conditional | required with cert number | — | |
| Last Certificate Expiry | date | Yes | ≥ today (warning if past) | — | Drives reminders |
| Statutory Cycle (months) | number | Yes | 1–60 | from category default (12 for fire, 6 for lift) | |
| Next Inspection Due | date | Yes | computed | Last + Cycle | Editable override |
| AMC Contract (if any) | lookup | No | from amc_contracts |
— | E.g. annual fire-safety AMC |
| Maintenance Task (recurring) | lookup | No | from maintenance_tasks |
— | The task that drives the cycle |
| Statutory Record | lookup | No | from statutory_certificates |
— | Master record in Statutory module |
| Custodian (Staff) | lookup | Yes | from members |
— | Holds the certificate |
| Original Document Location | text | Yes | 127 chars | — | E.g. Almirah-3 / Compliance Folder |
| Reminder Lead Times (days) | multi-select | Yes | 60 / 30 / 14 / 7 / 1 | 60, 30, 7 | Comms triggers |
| Active | checkbox | Yes | — | checked | |
| Notes | textarea | No | 2000 chars | — |
Submit action: POST /api/maintenance/compliance-entries. Creates / updates linked maintenance_task for cycle. Subscribes to Comms reminders at lead-time list. Bridges to statutory_certificates. Compliance dashboard reflects status.
Related forms: Inspection Report (6.5) is the operational next step when inspection occurs; AMC Contract (6.4) often fulfils the cycle; Task Template (6.1) for the recurring inspection task.
Workflow notes
- First-time setup order: 6.4 (AMCs already in force) → 6.1 (recurring tasks) → 6.6 (compliance cycles). Inspection Reports (6.5) and Completions (6.3) flow as operations occur.
- Schedule generation strategy: for
frequency=Dailytasks, scheduler materialises only 30 days at a time (lazy) to avoid table bloat. For weekly+, materialise 3 months ahead. - AMC visit vs callout: scheduled visit → existing schedule → 6.3 closure. Unplanned callout → retroactive schedule + 6.3 closure (preserves audit trail) and decrements
callouts_used_in_year. - Defect cascade: 6.5 with Critical defects → optional auto-spawn of follow-up 6.2 schedules → standalone re-inspection 6.5.
- Compliance dashboard: aggregates 6.6 rows by category; cards show last cert + expiry + next due. Red T-30, amber T-60.
- Materials integration: 6.3's "Materials Used" sub-form writes Inventory
dispense_recordswithpurpose=maintenance— closes the loop with Inventory. - Inspection lock: once a 6.5 is signed off and locked, corrections must be filed as a new versioned inspection report referencing the original (link via
notes).