Files

52 lines
3.4 KiB
Python
Raw Permalink Normal View History

2026-11-09 11:51:56 -06:00
"""TEMPLATE — Field Work Order (WO). Copy this folder to <PROJECT>/source/ and fill it in.
A dispatch ticket for one job at one site, for MPM technicians or a subcontract installer. It says where,
when, what to do, what to bring and what to send back; the technician fills in the completion record and
both parties sign. Marked INTERNAL USE (it carries contacts and access details). 1–3 pages.
See MPM_Document_Standard.md §9.11.
Order: masthead (Scheduled · Assigned to) → status pill → parties (Site · Site contact · MPM dispatch)
→ job details (kv) → Safety → Work to be performed → Parts and materials → Return with this work order
→ Completion record → signatures → Revision history
Status pill: Dispatched (gold) · On site (ink) · Complete (green) · On hold (red).
The signed, completed copy is scanned into the project's _INPUTS/ (never edited); this PDF stays as issued.
Issue at 1.0; a re-dispatch with changed scope or date is 1.1.
"""
import sys, pathlib
HERE = pathlib.Path(__file__).resolve().parent
sys.path.insert(0, str(next(p / "_STANDARDS" for p in HERE.parents if (p / "_STANDARDS").is_dir())))
from mpmdoc import Doc
doc = Doc(
number="WO-MPM-SITE-01", rev="1.0", date="2026-11-06", customer="Agency", subject="Site",
title="Install: Site Name, Sign Type",
lede="One line: the job, the site, the outcome.",
meta=[("Scheduled", "Nov 10, 2026 · 8:00 AM"), ("Assigned to", "Technician · Company")],
slug="Customer_Site_Work-Order",
history=[("1.0", "2026-11-06", "Issued.")],
)
doc.add(
doc.pill("Dispatched", "gold"),
doc.parties([("Site", {"name": "Stop or facility name", "address": "Street, City, ST", "coordinates": "00.00000, -00.00000"}),
("Site contact", {"name": "Name", "contact": "Role, agency", "phone": "000-000-0000"}),
("MPM dispatch", {"name": "Jason Stedwell", "contact": "Director of Technical Services", "phone": "000-000-0000"})]),
doc.kv([("Customer / project", "Agency · project name"), ("Installer", "MPM, or subcontractor company and lead"),
("Access", "Hours, badge, escort, keys, lift or traffic control"),
("Reference documents", "INS-…, DWG-…, SVY-… (bring or have on a device)")]),
doc.note("Safety", "PPE, work at height, traffic control, lockout at the breaker before opening any enclosure.", tone="warn"),
doc.section("Work to be performed"),
doc.bullets(["Confirm the mounting point matches the drawing.", "Mount the sign; torque fasteners to spec.",
"Terminate power and network; confirm the sign reports online on MP.TV."], check=True),
doc.bom([("Parts and materials", [("Sign assembly", "Model, size", 1, "ea", "PN-0000"), ("Mounting kit", "Per drawing", 1, "kit", "PN-0000")],
"Parts")], checks=("Staged", "Used")),
doc.section("Return with this work order"),
doc.bullets(["Photos: before, mounted, wired, powered with content.", "Serial number of every unit installed or removed.",
"Any difference from the drawing, measured."], check=True),
doc.fields([("Arrival", "Date and time"), ("Departure", "Date and time"), ("Serial(s) installed", ""), ("Serial(s) removed", ""),
("Online on MP.TV", "Time confirmed"), ("Issues or deviations", "")], cols=2, title="Completion record"),
doc.signatures([("Technician", "Name · company · date"), ("Site contact", "Name · date")]),
)
doc.build()