Files
PacketStation/server/packetstation/domain/itp_template.py
T
spencermandClaude Fable 5.1 00531cb329
ci / frontend (push) Successful in 37s
ci / server (push) Successful in 9m18s
ci / image (push) Successful in 35s
ci / e2e (push) Successful in 2m17s
Phase 6: Q.C. inspection, project folders, packet documents and the digital ITP
The Q.C. screen (KPIs, boards, project folders), the Q.C. tab on the packet
page (check items from the qc_check_items settings row, visual exam per weld,
NDE, hardness with the NACE label, notes), accept with a route and a
signature gated by qc_missing_empty, reject with a reason or an NCR number
closing the inspection into qc_history, Q.C. folder documents per project and
unit with superseding revisions, packet documents as a closed set with
take-out reasons, the digital ITP per unit from the frozen template (line
initials with CAS, unsign, N/A, customer codes, rejects with NCR, block
signatures, sign-off with the PDF hook, admin reopen, the ITP log), hold-point
warnings by department page group, the scoped policy check for unit and
project writes, migration 0007, tests, Playwright scenarios and docs.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-17 20:08:53 -06:00

660 lines
28 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.
"""The Q.C. ITP template, ITP_Generation_Revised_2.
Copied verbatim from the old build's src/js/itp.js line 4 (ITP_TMPL), which Q.C. took from the workbook
ITP_Generation_Revised_2.xlsm (COP Template sheet). Starting an ITP freezes a copy of it into itps.template, so a
later change here never alters an ITP already in use.
Sections: n, t (title), page (WP Weld Parts, C Code, FA Final Assembly), sig (a QN # / remarks / PESCO Q.C. signature
block follows the section), final (the last block, COP complete) and items. Items: n, t (title), code (the PESCO
code), cust (the customer code), crit (acceptance criteria).
"""
from __future__ import annotations
from typing import Any
ITP_TEMPLATE: dict[str, Any] = {
"ver": "ITP_Generation_Revised_2",
"legend": "O = Observe R = Review A = Approve I = Inspect AU = Audit W = Witness (Hold) "
"H = Hold NA = Not Applicable",
"sections": [
{
"n": "1",
"t": "GENERAL FABRICATION and DATA",
"page": "WP",
"sig": False,
"items": [
{
"n": "1.1",
"t": "Material Test Reports",
"code": "R",
"cust": "R",
"crit": "MTR chemistry and mechanical properties meet PO/material spec; heat "
"numbers on MTR match material received. (API Q1 5.5.3, 5.6.5 / ISO 9001 "
"8.4.2, 8.5.2)",
},
{
"n": "1.2",
"t": "Welding Procedures",
"code": "A",
"cust": "R",
"crit": "WPS/PQR qualified per ASME IX and approved before use; current revision "
"matches the weld map assignment. (API Q1 5.6.3 / ISO 9001 8.5.1)",
},
{
"n": "1.3",
"t": "Welder Qualifications Records",
"code": "A",
"cust": "R",
"crit": "Welder current on the qualified welder log for the process, position and "
"material used; qualification not expired. (API Q1 4.3.2 / ISO 9001 7.2)",
},
{
"n": "1.4",
"t": "QA/QC Manual",
"code": "A",
"cust": "R",
"crit": "Manual reflects current API Q1 / ISO 9001 requirements and is the "
"controlled, released revision. (API Q1 4.4 / ISO 9001 7.5.3)",
},
{
"n": "1.5",
"t": "Weld Map(s)/Fabrication Drawings",
"code": "A",
"cust": "R",
"crit": "Released revision used; as-built weld numbers, WPS and welder ID recorded "
"on the map before the final documentation package is assembled. (API Q1 "
"5.6.3, 5.6.5 / ISO 9001 8.5.2)",
},
{
"n": "1.6",
"t": "Radiographic Testing and Reports",
"code": "R",
"cust": "R",
"crit": "RT reports reference weld map location and heat number; results accepted "
"to governing code/spec; technician currently certified. (API Q1 5.6.9.4 / "
"ISO 9001 7.1.5, 8.5.2)",
},
{
"n": "1.7",
"t": "Ultrasonic Testing and Reports",
"code": "R",
"cust": "R",
"crit": "UT reports reference weld map location and heat number; results accepted "
"to governing code/spec; technician currently certified. (API Q1 5.6.9.4 / "
"ISO 9001 7.1.5, 8.5.2)",
},
{
"n": "1.8",
"t": "Hydrostatic Testing and Reports",
"code": "A",
"cust": "R",
"crit": "Test pressure and hold time meet code/spec; no leaks or pressure drop; "
"gauges in current calibration. (API Q1 5.6.9.3, 5.8)",
},
{
"n": "1.9",
"t": "Pneumatic Testing and Reports",
"code": "R",
"cust": "R",
"crit": "Used only where hydrotest is not permitted by code/client spec; test "
"pressure and hold time meet code/spec; mark NA if hydrotest performed.",
},
{
"n": "1.10",
"t": "Insulation Application and Test Reports",
"code": "O",
"cust": "R",
"crit": "Insulation type and thickness per spec; test reports (where required) "
"meet the acceptance values in the spec.",
},
{
"n": "1.11",
"t": "Nonconformance Reports (NCR/QN Log)",
"code": "R",
"cust": "R",
"crit": "All QNs/NCRs from this build are dispositioned and closed, or carried to "
"the customer as an open item before shipment; concessions are "
"customer-approved. (API Q1 5.9 / ISO 9001 8.7)",
},
{
"n": "1.12",
"t": "Export Packing Plan",
"code": "R",
"cust": "R",
"crit": "Packing plan meets PO, ISPM-15 and destination country requirements.",
},
{
"n": "1.13",
"t": 'Certified "As-Built" Data and Drawings',
"code": "A",
"cust": "R",
"crit": "As-built drawings match the final fabricated configuration; all field "
"changes/redlines incorporated and approved.",
},
{
"n": "1.14",
"t": "Nameplate/Tagging Etching/Stenciling",
"code": "R",
"cust": "R",
"crit": "Nameplate data matches the approved drawing/data sheet and code stamp (if "
"applicable); stamped/etched by a qualified person.",
},
],
},
{
"n": "2",
"t": "STRUCTURAL",
"page": "WP",
"sig": False,
"items": [
{
"n": "2.1",
"t": "Structural Fit-up/Dimensional Check prior to Weldout",
"code": "I",
"cust": "R/AU",
"crit": "Fit-up dimensions per approved drawing tolerance; heat numbers "
"transferred from mill cert to cut members; welder ID/WPS recorded against "
"the weld map before weld-out. (API Q1 5.6.5 / ISO 9001 8.5.2)",
},
{
"n": "2.2",
"t": "Post Welding Dimensional Check",
"code": "I",
"cust": "R/AU",
"crit": "Final dimensions within drawing tolerance; visual weld quality meets AWS "
"D1.1 (or governing code) acceptance criteria.",
},
{
"n": "2.3",
"t": "Interface Structural and ICP Dimensional Locations",
"code": "I",
"cust": "R/AU",
"crit": "Interface/ICP dimensional locations within drawing tolerance; verified "
"and recorded before release to the next department.",
},
],
},
{
"n": "3",
"t": "PIPING",
"page": "WP",
"sig": True,
"items": [
{
"n": "3.1",
"t": "Visual Quality Inspection",
"code": "O",
"cust": "R/AU",
"crit": "Welds free of surface defects (undercut, porosity, cracking) per code "
"acceptance criteria; weld map and heat numbers current.",
},
{
"n": "3.2",
"t": "Post Welding Dimensional Check",
"code": "O",
"cust": "R/AU",
"crit": "Dimensions and alignment per isometric/drawing tolerance.",
},
{
"n": "3.3",
"t": "Ultrasonic, Radiographic and Magnetic Particle Testing and Reports",
"code": "R",
"cust": "R/AU",
"crit": "NDE method and extent per code/spec; results reference weld map location "
"and welder ID; NDE technician currently certified. (API Q1 5.6.9.4 / ISO "
"9001 8.5.2)",
},
{
"n": "3.4",
"t": "Final inspection/Hydrostatic test",
"code": "A",
"cust": "W",
"crit": "Test pressure and hold time per code/spec; no leaks or pressure drop; "
"witnessed where required by the PO. (API Q1 5.6.9.3)",
},
],
},
{
"n": "4",
"t": "VESSELS",
"page": "C",
"sig": True,
"items": [
{
"n": "4.1",
"t": "Seam/Joint Fit-up and Dimensional Check prior to Weldout",
"code": "O",
"cust": "R/AU",
"crit": "Fit-up/gap/alignment per WPS and drawing; heat numbers transferred to "
"shell/head components; welder ID/WPS recorded against the weld map.",
},
{
"n": "4.2",
"t": "Prior to vessel closing Heads Fit-up and Weldout (Internal Inspection)",
"code": "O",
"cust": "H",
"crit": "Internal surfaces, welds and attachments accepted before the vessel "
"becomes inaccessible. Hold point justified: internal access is "
"permanently lost after closure.",
},
{
"n": "4.3",
"t": "Prior to Stress Relieving",
"code": "O",
"cust": "R/AU",
"crit": "Vessel meets drawing configuration and code requirements before heat "
"treatment; PWHT procedure/chart approved.",
},
{
"n": "4.4",
"t": "Final Inspection/Pre-hydrotest",
"code": "O",
"cust": "H",
"crit": "All welds, NDE and dimensional checks complete and accepted before the "
"vessel is pressurized. Hold point justified: an unverified vessel "
"presents a personnel-safety risk under test pressure.",
},
{
"n": "4.5",
"t": "Hydrostatic Testing and Reports",
"code": "A",
"cust": "H",
"crit": "Test pressure and hold time per ASME code/spec; no leaks, no permanent "
"deformation; customer witness where required by the PO. (API Q1 5.6.9.3)",
},
{
"n": "4.6",
"t": "Ultrasonic, Radiographic and Magnetic Particle Testing and Reports",
"code": "R",
"cust": "R/AU",
"crit": "NDE method/extent per code; results reference weld map location, heat "
"number and welder ID. (API Q1 5.6.9.4 / ISO 9001 8.5.2)",
},
],
},
{
"n": "5",
"t": "INTERNAL COATING",
"page": "C",
"sig": True,
"items": [
{
"n": "5.1",
"t": "Post Surface Preparation/Blasting",
"code": "W",
"cust": "W",
"crit": "Surface profile and cleanliness (e.g., SSPC-SP/NACE) meet the coating "
"spec. Witness point justified: surface condition cannot be re-verified "
"once coated.",
},
{
"n": "5.2",
"t": "Post Application of Primer Coat",
"code": "W",
"cust": "R/AU",
"crit": "DFT within spec range; no holidays, runs or contamination before overcoat.",
},
{
"n": "5.3",
"t": "Post Application of Intermediate Coat(s)",
"code": "W",
"cust": "R/AU",
"crit": "Cumulative DFT within spec range; recoat window per data sheet met.",
},
{
"n": "5.4",
"t": "Post Application of Top Coat",
"code": "A",
"cust": "R/AU",
"crit": "Total DFT, color and finish per coating spec/data sheet.",
},
{
"n": "5.5",
"t": "Holiday Testing",
"code": "H",
"cust": "H",
"crit": "Holiday (spark) test at voltage per NACE SP0188/coating data sheet; zero "
"holidays before service. Hold point justified: final acceptance test for "
"lining integrity.",
},
],
},
{
"n": "6",
"t": "EXTERNAL COATING",
"page": "C",
"sig": True,
"items": [
{
"n": "6.1",
"t": "Post Surface Preparation/Blasting",
"code": "W",
"cust": "W",
"crit": "Surface profile and cleanliness meet the coating spec. Witness point "
"justified: surface condition cannot be re-verified once coated.",
},
{
"n": "6.2",
"t": "Post Application of Primer Coat",
"code": "W",
"cust": "R/AU",
"crit": "DFT within spec range; no holidays, runs or contamination before overcoat.",
},
{
"n": "6.3",
"t": "Post Application of Intermediate Coat(s)",
"code": "W",
"cust": "R/AU",
"crit": "Cumulative DFT within spec range; recoat window per data sheet met.",
},
{
"n": "6.4",
"t": "Post Application of Top Coat",
"code": "A",
"cust": "R/AU",
"crit": "Total DFT, color and gloss per coating spec/data sheet.",
},
{
"n": "6.5",
"t": "Final External Coating Inspection",
"code": "A",
"cust": "R/AU",
"crit": "Visual inspection (holidays, runs, mechanical damage) and DFT survey meet "
"spec; touch-ups accepted before release.",
},
{
"n": "6.6",
"t": "Holiday Testing Under Insulation (If Applicable)",
"code": "H",
"cust": "H",
"crit": "Low-voltage holiday test per spec where insulation is applied over "
"coating. Hold point justified: coating is inaccessible once insulated. "
"Mark NA if not insulated.",
},
],
},
{
"n": "7",
"t": "INSTRUMENTATION, ELECTRICAL and CONTROLS",
"page": "FA",
"sig": True,
"items": [
{
"n": "7.1",
"t": "Verify Component Parts and Model Numbers to Specs/Data Sheets",
"code": "R",
"cust": "R/AU",
"crit": "Model, range, materials and area classification match the approved "
"instrument data sheet, cross-checked to the instrument index.",
},
{
"n": "7.2",
"t": "Contractor's Inspection Records",
"code": "R",
"cust": "R",
"crit": "Sub-tier inspection records complete and signed; sub-tier NCRs closed "
"before acceptance. (API Q1 5.6 / ISO 9001 8.4)",
},
{
"n": "7.3",
"t": "Calibration Verification – Test/Measuring Equipment Used",
"code": "R",
"cust": "R",
"crit": "Megger, torque wrench and other test/measuring equipment used for "
"acceptance are within current calibration; cal-due dates recorded on the "
"inspection record. (API Q1 5.8 / ISO 9001 7.1.5)",
},
{
"n": "7.4",
"t": "Verify Grounding and Design Documents/Specs",
"code": "R",
"cust": "R/AU",
"crit": "Grounding installed per design/one-line drawing and NEC Article 250; "
"ground resistance recorded.",
},
{
"n": "7.5",
"t": "Megger / Insulation Resistance and Continuity Check of Cables",
"code": "W",
"cust": "R/AU",
"crit": "Continuity end-to-end, cores correctly identified, insulation resistance "
"within limits. (Ref: NETA ATS; cable test schedule)",
},
{
"n": "7.6",
"t": "Static checks of control switches (as required)",
"code": "O",
"cust": "R/AU",
"crit": "Switch actuation and fail-safe position verified against the loop "
"diagram; set points and fail-safe action per data sheet. (Static check "
"record)",
},
{
"n": "7.7",
"t": "Verify Nameplate Layout, Lettering and Size",
"code": "I",
"cust": "R/AU",
"crit": "Text, size, material and mounting per client labeling spec. (Nameplate checklist)",
},
{
"n": "7.8",
"t": "Verify Wire Size, Terminations and Tagging",
"code": "I",
"cust": "R/AU",
"crit": "Wire size per load and NEC Art. 310; terminations torqued; tags match "
"wiring drawings. (Termination check sheet)",
},
{
"n": "7.9",
"t": "Electrical Motor Testing",
"code": "W",
"cust": "R/AU",
"crit": "IR, winding resistance and rotation within NEMA MG-1/NETA ATS limits. (Motor test report)",
},
{
"n": "7.10",
"t": "Instrument loop checks",
"code": "I",
"cust": "R/AU",
"crit": "Signal proven at 0/50/100% of range; alarms and trips actuate at set "
"point per loop diagram/C&E. (Signed loop check sheets)",
},
{
"n": "7.11",
"t": "Factory Acceptance Test (FAT)",
"code": "W",
"cust": "W",
"crit": "All FAT steps pass per the approved FAT procedure; A-items cleared before "
"shipment. (API Q1 5.6.9.3 / signed FAT report)",
},
],
},
{
"n": "8",
"t": "FINAL ASSEMBLY",
"page": "FA",
"sig": True,
"items": [
{
"n": "8.1",
"t": "Equipment Assembly, Mounting and/or Alignment",
"code": "I",
"cust": "R/AU",
"crit": "Alignment within vendor/GA drawing tolerance; mounting hardware and "
"anchor bolts torqued to spec. (Alignment record)",
},
{
"n": "8.2",
"t": "Functional Testing and Reports",
"code": "O",
"cust": "R/AU",
"crit": "All functions operate per the approved functional test procedure with no "
"defects. (Functional test report)",
},
{
"n": "8.3",
"t": "Full Operation Testing and Reports (PRESSURE UP CONNECTIONS)",
"code": "O",
"cust": "R/AU",
"crit": "System holds test pressure with zero leaks at all connections per the "
"approved test procedure. (ASME B31.3 §345 / operational test report)",
},
{
"n": "8.4",
"t": "Stud Bolt & Nut Torqueing",
"code": "I",
"cust": "R/AU",
"crit": "Torqued in pattern to the specified value with a calibrated wrench. (ASME "
"PCC-1 / torque record)",
},
{
"n": "8.5",
"t": "Stud Bolt Length & Grade",
"code": "I",
"cust": "R/AU",
"crit": "Correct grade marks; minimum 2 threads past the nut. (ASME B16.5, "
"A193/A194 / bolting checklist)",
},
{
"n": "8.6",
"t": "Relief Valve(s) Set Pressure",
"code": "I",
"cust": "R/AU",
"crit": "Set pressure verified per vendor data sheet / ASME Section VIII (or API "
"526 for PRVs) on a calibrated test bench; seal/wire intact after test. "
"(PRV test/certification record)",
},
{
"n": "8.7",
"t": "Weir Nipple Installation",
"code": "O",
"cust": "R/AU",
"crit": "Weir nipple size and orientation per P&ID and vendor requirement; "
"installed per manufacturer instructions.",
},
{
"n": "8.8",
"t": "Pressure Gauge Inspection",
"code": "O",
"cust": "R/AU",
"crit": "Gauge range 25–75% of span at normal operating pressure; gauge in current "
"calibration. (ASME B40.100 / gauge list + certs)",
},
{
"n": "8.9",
"t": "Regulator(s) Set Pressure",
"code": "I",
"cust": "R/AU",
"crit": "Outlet pressure within the stated tolerance of the vendor data sheet. (Set-point record)",
},
{
"n": "8.10",
"t": "Pressure Controller(s) Set Pressure",
"code": "I",
"cust": "R/AU",
"crit": "Set point and control action per the approved instrument data sheet. (Set-point record)",
},
{
"n": "8.11",
"t": "Flow Direction of all Valves, etc.",
"code": "I",
"cust": "R/AU",
"crit": "Flow arrows and valve orientation match the approved P&ID. (P&ID walk-down checklist)",
},
{
"n": "8.12",
"t": "Gasket Specification",
"code": "I",
"cust": "R/AU",
"crit": "Gasket type, material, rating and size per spec; never reused. (ASME "
"B16.20/B16.21 / gasket verification record)",
},
{
"n": "8.13",
"t": "Valve Actuation",
"code": "O",
"cust": "R/AU",
"crit": "Full stroke, travel time and fail position per the vendor manual/C&E "
"matrix. (Valve stroke record)",
},
{
"n": "8.14",
"t": "Nonconformance Check – Final Assembly",
"code": "R",
"cust": "R/AU",
"crit": "No open QNs/NCRs from the assembly stage before release to Paint/Final "
"Inspection. (API Q1 5.9)",
},
],
},
{
"n": "9",
"t": "FINAL INSPECTION/ SHIPPING PREPARATION",
"page": "FA",
"sig": True,
"items": [
{
"n": "9.1",
"t": "Verify Tagging/Markings are complete",
"code": "I",
"cust": "R/AU",
"crit": "Everything tagged per the index; legible and permanent. (Client tagging "
"spec, UG-116 / tagging checklist)",
},
{
"n": "9.2",
"t": "Flange Face Protection",
"code": "I",
"cust": "R/AU",
"crit": "All flanges protected, threaded connections plugged; lifting points and "
"shipping restraints verified per the packing plan. (API Q1 5.6.8; PO "
"packing spec / ISO 9001 8.5.4 / preservation checklist)",
},
{
"n": "9.3",
"t": "Verify Punch List Items are complete",
"code": "I",
"cust": "R/AU",
"crit": "All A-items closed; B/C items agreed in writing with the customer. "
"(Client punch list procedure / signed punch list)",
},
{
"n": "9.4",
"t": "Packing of Ship Loose Items",
"code": "I",
"cust": "R/AU",
"crit": "Ship-loose items tagged, protected and listed on the packing list. "
"(Approved packing plan, ISPM-15 / signed packing list)",
},
{
"n": "9.5",
"t": "Final Pre-shipping Inspection",
"code": "A",
"cust": "R/AU",
"crit": "Every ITP line signed off; no open holds or QNs. (API Q1 5.6.9.3, 5.7 / "
"final inspection report)",
},
{
"n": "9.6",
"t": "RELEASE TO SHIP (RTS)",
"code": "A",
"cust": "H",
"crit": "Written release issued by PESCO QA and the client; QN register closed "
"with all concessions customer-approved before shipment. (API Q1 5.7, 5.9 "
"/ ISO 9001 8.6, 8.7 / signed RTS certificate)",
},
{
"n": "9.7",
"t": "DATABOOK SIGNED OFF BY QA",
"code": "R",
"cust": "H",
"crit": "Data book complete and indexed per PO requirements. (API Q1 4.5 / ISO "
"9001 7.5.3 / signed data book)",
},
],
"final": True,
},
],
}