AgreementSigningSection.tsx / AgreementSigningForm.tsx collects one signature and submits via agreements.ts PATCH with status: 'signed'. Signing requires a portal-access token with contactId and a contact role granting agreement permission. The agreementSchema stores a single signer (signedBy, signedByEmail, signatureData, signedRenderedHtml, etc.) — no inspector signature fields. Agreement templates support text and initials blocks (AgreementBuilderBase.tsx, initialsBlock in merged content); there is no inspector signature block type. Report unlock treats agreements as signed when the client has signed all active non-stale agreements (computeAgreementSignedForReportLock.ts, agreementLockSync.ts, checkReportAccess.ts). Inspector signatures on Spectora reports (InspectorSignatureSection.tsx) are a separate path from report/Spectora data and do not satisfy agreement signing requirements. The Attik inspectorSchema has no stored signature field for agreements today.Lock before or during implementation:
agreement.signed / report access, or tracked separately from client sign.agreementSchema.ts.agreements.ts (or inspector-specific signing endpoint) with auth appropriate for inspector/staff (not client portal contactId flow).mergeAgreementBlocksToContent.js, renderAgreementDocToHtml.ts, signedRenderedHtml capture) must include inspector signature in the immutable signed record when applicable.agreementStaleWorker.ts, signedContentHash / computeSignedContentHash).agreementLockSync.ts / checkReportAccess.ts if inspector sign is required for compliance before reports unlock.inspectorSchema.ts and inspector settings routes — not present today.src/app/client/job/[slug]/agreement/[id]/ — today client-only. May need read-only display of inspector signature once applied, or dual-signer UX if inspector signs via portal (unlikely; decision needed).AgreementContent.tsx / template builder may need a new block type or merge-field for inspector signature placement in PDF/HTML output.src/app/tools/inspections/[id]/) or agreements UI — not built today.src/app/tools/agreements/templates/[id]/, AgreementGlobalBlockModal.tsx) — extend block types beyond text and initials if inspector signature appears in template body.src/app/tools/settings/inspectors/.InspectorSignatureSection.tsx) as a substitute for agreement compliance without explicit product approvalagreement permission modelattik-frontend/src/app/client/job/[slug]/agreement/[id]/components/AgreementSigningSection.tsx, AgreementSigningForm.tsxattik-backend/src/routes/agreements.tsattik-backend/src/models/agreementSchema.tsattik-frontend/src/app/tools/agreements/templates/[id]/AgreementBuilderBase.tsxattik-backend/src/util/functions/agreements/agreementLockSync.ts, attik-frontend/src/util/functions/report/computeAgreementSignedForReportLock.tsattik-frontend/src/app/client/reports/components/InspectorSignatureSection.tsxPlease authenticate to join the conversation.
Planned
Main App
5 days ago
Linear
Get notified by email when there are changes.
Planned
Main App
5 days ago
Linear
Get notified by email when there are changes.