This is very useful — you've actually got the real manual now, and it hands you exact field names, which is better than anything I could infer from search snippets. Let me pull out what matters for your build.
Real field names for your Block Demand schema (use these instead of my earlier guesses)
From the actual Power Block Request form:
Power Block Date
Depot Incharge
Power Block Type(dropdown — e.g. Normal)
COA Block Section
Direction
COA Line
Carrier
Traffic Block required?(Y/N)
Type of Block required
Train Allowed Upto?
- Tower Wagon sub-fields:
Entered At,Exit,Offering,Moving,Arrived at site
From the demand lifecycle table:
Block Section/Station,Sub Section,Direction,Line,Approval Start Time,Approval End Time,Status,COA ID
Demand Start Time,Demand End Time
PB Granted Time(From/To),Permit to Work(Issued Time, Returned Time)
Block type is literally binary in the real system, and this matters for your scheduler constraints:
"Major: Traffic Blocks for longer duration of planned works. Regular: Traffic Blocks for day to day routine track maintenance works."
That maps directly onto the "1×4hr or 2×2.5hr" rule — use
block_type ∈ {Major, Regular} as a real field, not something you invented.Confirms the Integrated Block mechanism exactly
Assistance Required (dropdown: ASAM, BTN, ENGG, OHE, SNT) + Integrated Block? (Yes/No) — so a demand explicitly declares which other department it needs, and there are colour-coded block categories: TRD Blocks, Ongoing Blocks, S&T Blocks, Other Blocks. This is a real categorical field you should replicate in your dataset (initiating_dept ∈ {ENGG, OHE/TRD, SNT, ASAM, BTN}).Confirms the report types verbatim (use for your "why this matters" slide)
Traffic Block Status, Rolling Block Program, Integrated Blocks – No Associated Block Demanded, Approved but Not Granted, Extended Blocks, Spilled Over/Burst Blocks — filterable by Railway, Division, Date range, Sub-Section, Block Section/Station, Status, Rolling Block (Period-wise), Shadow/Integrated Blocks, Reason Code, Organization.Notably there's a real
Reason Code field for withdrawn/rejected blocks — worth adding to your Sanctioned Blocks table so your conflict-resolution demo can show why something got rejected, not just that it did.So, updated first step: before your team splits into pairs, spend 10 more minutes replacing the schema field names from my earlier answer with these real ones above — it's a small change now, expensive to change later once code is written against it. Want me to rewrite Section 4 of the build-plan file with this real schema so it's the single source of truth your team codes against?
Â
Â