Files
mpm-documentation-kit/_STANDARDS/templates/SOP/build.py
T
Jason StedwellandClaude Opus 5.5 5b52636003 MPM Documentation Kit v1.3 (CW-034)
MPM Document Standard 1.3, mpmdoc build engine, templates for TN, INS, SOP,
BOM, SVY, TAP, DWG, TSB, PRO, SOW and WO (Chinese editions for TN and DWG),
glossary, MPM fonts and logos, and the mpm-technical-documents plugin 1.3.0.
Worked examples ship in the kit zip on Drive only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NWatTMmqmGatgHjDZvWs5b
2026-11-09 11:51:56 -06:00

64 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""TEMPLATE — Standard Operating Procedure (SOP). Copy this folder to <PROJECT>/source/ and fill it in.
A repeatable task for MPM staff (setup, onboarding, process). Marked INTERNAL USE automatically.
2–6 pages. See MPM_Document_Standard.md §9.2. Reference: SOP-IT-UNIFI-01 (UniFi Talk).
Order (do not reorder):
masthead (automatic) → Before you start → Process at a glance (who does each part)
→ Walkthrough (doc.step per step, screenshots in img/) → special cases (doc.special)
→ Setup checklist → Troubleshooting → Need help? → Revision history (automatic)
Screenshots: crop to the relevant part, mark the control to tap with a gold box, save as JPG in img/.
They are captioned but not numbered. Name on-screen controls with ui('Label').
"""
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, ui
doc = Doc(
number="SOP-IT-SUBJ-01", rev="0.1", date="2026-11-06", # CUST = department: IT, ENG, OPS, QA
customer=None, subject="System",
kicker="End-user walkthrough · System",
title="Do the Thing with the App",
lede="One sentence: what the reader will have done and be able to do at the end.",
meta=[("Audience", "All MPM staff"), ("Time needed", "About 10 minutes")],
slug="MPM_System_Task",
history=[("0.1", "2026-11-06", "Initial draft.")],
)
PHONE, SIDE = "92px", "20%" # one phone screenshot beside a step
doc.add(
doc.before_you_start([
"<b>What has already been done for you</b>, and by whom.",
"What to have in hand before you start.",
"Anything that expires or needs a special case (point to it by name).",
]),
doc.section("Process at a glance"),
doc.glance([
("Account<br>created", "IT", "✓", True), # done by someone else: tick + greyed tile
("Open<br>email", "You"), ("Install<br>app", "You"), ("Sign in", "You"),
]),
doc.section("Walkthrough", new_page=True),
doc.step(1, "Your inbox", "Open the invitation email", doc.steps([
f"Open the email from <b>Vendor</b> and tap {ui('Get Started')}.",
"Continue to Step 2.",
]) + doc.note("Good to know", "One short fact that prevents a support call."),
doc.shot("img/placeholder.jpg", "Caption: what to look for", PHONE), side=SIDE),
doc.special("Some staff only", "Outside the U.S.? Do this first",
"<p>Who this applies to and how they'll know.</p>"
+ doc.steps([f"Tap {ui('VPN')}.", "Leave it on for your whole shift."])),
doc.checklist("Setup checklist", ["Email opened and link tapped", "App shows my name", "Test completed"], cols=1),
doc.section("Troubleshooting"),
doc.table([("Problem", "", "28%"), ("What to do", "")],
[["<b>Email is missing</b>", "Check Spam/Junk. If it isn't there, ask IT to resend it."]]),
doc.note("Need help?", "Contact MPM IT."),
)
doc.build()