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]>
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
import { Link } from "react-router";
|
||||
import type { PacketRead } from "../api/types";
|
||||
import { holdItemsText, holdText } from "../lib/qc";
|
||||
|
||||
/**
|
||||
* The open ITP hold, witness or rejected points for this packet's department (the old itpHoldNote). A warning
|
||||
* only: nothing is blocked by it. Users with the Q.C. screen get a link to the ITP.
|
||||
*/
|
||||
export function HoldCallout({ p, qcScreen }: { p: PacketRead; qcScreen: boolean }) {
|
||||
const hold = p.itp_hold;
|
||||
if (!hold || p.status === "filed" || !hold.count) return null;
|
||||
const items = holdItemsText(hold);
|
||||
return (
|
||||
<div className="callout warn itphold" role="note">
|
||||
<b>{holdText(hold)}</b>
|
||||
{items ? ` ${items}.` : ""} Check with Q.C. before moving past these points.
|
||||
{qcScreen ? (
|
||||
<>
|
||||
{" "}
|
||||
<Link className="lnk" to={`/qc/units/${p.unit.id}/itp`}>
|
||||
Open ITP
|
||||
</Link>
|
||||
</>
|
||||
) : null}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user