63 lines
3.0 KiB
Python
63 lines
3.0 KiB
Python
"""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()
|