feat(contracts): Add legal export package and ESIGN compliance improvements

- Add export_legal endpoint for signed contracts that generates a ZIP with:
  - Signed contract PDF
  - Audit certificate PDF with signature details and hash verification
  - Machine-readable signature_record.json
  - Integrity verification report
  - README documentation

- Add audit certificate template with:
  - Contract and signature information
  - Consent records with exact legal text
  - Document integrity verification (SHA-256 hash comparison)
  - ESIGN Act and UETA compliance statement

- Update ContractSigning page for ESIGN/UETA compliance:
  - Consent checkbox text now matches backend-stored legal text
  - Added proper legal notice with ESIGN Act references

- Add signed_at field to ContractListSerializer
- Add view/print buttons for signed contracts in Contracts page
- Allow viewing signed contracts via public signing URL

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-05 02:29:35 -05:00
parent 6feaa8dda5
commit 35f4301fe1
8 changed files with 1156 additions and 186 deletions

View File

@@ -70,7 +70,28 @@
"rememberMe": "Remember me",
"twoFactorRequired": "Two-factor authentication required",
"enterCode": "Enter verification code",
"verifyCode": "Verify Code"
"verifyCode": "Verify Code",
"login": {
"title": "Sign in to your account",
"subtitle": "Don't have an account?",
"createAccount": "Create one now",
"platformBadge": "Platform Login",
"heroTitle": "Manage Your Business with Confidence",
"heroSubtitle": "Access your dashboard to manage appointments, customers, and grow your business.",
"features": {
"scheduling": "Smart scheduling & resource management",
"automation": "Automated reminders & follow-ups",
"security": "Enterprise-grade security"
},
"privacy": "Privacy",
"terms": "Terms"
},
"tenantLogin": {
"welcome": "Welcome to {{business}}",
"subtitle": "Sign in to manage your appointments",
"staffAccess": "Staff Access",
"customerBooking": "Customer Booking"
}
},
"nav": {
"dashboard": "Dashboard",
@@ -679,6 +700,7 @@
"edit": "Edit",
"viewDetails": "View Details",
"copyLink": "Copy Signing Link",
"copied": "Copied!",
"sendEmail": "Send Email",
"openSigningPage": "Open Signing Page",
"saveChanges": "Save Changes"
@@ -723,7 +745,11 @@
"status": "Status",
"created": "Created",
"contentPreview": "Content Preview",
"signingLink": "Signing Link"
"signingLink": "Signing Link",
"signedTitle": "Contract Successfully Signed",
"viewFullContract": "View Full Contract",
"printContract": "Print Contract",
"exportLegal": "Export Legal Package"
},
"preview": {
"title": "Preview Contract",
@@ -861,7 +887,14 @@
"noCustomersFound": "No customers found matching your search.",
"addNewCustomer": "Add New Customer",
"createCustomer": "Create Customer",
"errorLoading": "Error loading customers"
"errorLoading": "Error loading customers",
"deleteCustomer": "Delete Customer",
"deleteConfirmation": "Are you sure you want to delete this customer? This action cannot be undone.",
"password": "Password",
"newPassword": "New Password",
"passwordPlaceholder": "Leave blank to keep current password",
"accountInfo": "Account Information",
"contactDetails": "Contact Details"
},
"resources": {
"title": "Resources",