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).