6
🛠

Maintenance Schedule — Forms

Annual · One-time · Recurring tasks across assets

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

  1. 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.
  2. Schedule generation strategy: for frequency=Daily tasks, scheduler materialises only 30 days at a time (lazy) to avoid table bloat. For weekly+, materialise 3 months ahead.
  3. 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.
  4. Defect cascade: 6.5 with Critical defects → optional auto-spawn of follow-up 6.2 schedules → standalone re-inspection 6.5.
  5. Compliance dashboard: aggregates 6.6 rows by category; cards show last cert + expiry + next due. Red T-30, amber T-60.
  6. Materials integration: 6.3's "Materials Used" sub-form writes Inventory dispense_records with purpose=maintenance — closes the loop with Inventory.
  7. 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).