Compliance Model Documentation
Overview​
The Compliance model provides comprehensive regulatory compliance management for the CODITECT platform, supporting GDPR, SOC2, and other regulatory frameworks. It manages data retention policies, data subject requests, compliance reporting, and evidence collection. The model ensures the platform meets legal requirements while maintaining operational efficiency.
Model Structure​
RetentionPolicy Model​
Core Fields​
| Field | Type | Description | Constraints |
|---|---|---|---|
id | String | Unique policy identifier | Primary key, system-defined |
name | String | Policy display name | Required |
description | String | Policy purpose | Optional |
data_type | DataType (Enum) | Type of data covered | Required |
retention_period | Duration | How long to retain data | Required |
action | RetentionAction (Enum) | Action when period expires | Required |
legal_basis | String | Legal justification | Required for compliance |
active | bool | Policy enforcement status | Required |
created_at | DateTime | Policy creation time | Auto-set |
last_executed | DateTime | Last enforcement run | Updated on execution |
DataType Enum​
enum DataType {
AuditLog, // Security audit records
SecurityEvent, // Security incidents
UserActivity, // User behavior data
PersonalData, // PII/Personal information
FinancialRecord, // Billing and payments
SystemLog, // Application logs
AnalyticsData, // Usage analytics
SessionData // Authentication sessions
}
RetentionAction Enum​
enum RetentionAction {
Delete, // Permanent removal (careful with audit logs!)
Anonymize, // Remove PII, keep analytics
Archive, // Move to cold storage
Review, // Flag for manual review
Export // Export before deletion
}
DataSubjectRequest Model (GDPR)​
Core Fields​
| Field | Type | Description | Constraints |
|---|---|---|---|
id | UUID | Unique request identifier | Primary key |
tenant_id | UUID | Associated tenant | Foreign key to Tenant |
subject_id | UUID | Data subject (user) | Foreign key to User |
request_type | DsrType (Enum) | GDPR request type | Required |
status | DsrStatus (Enum) | Current status | Required |
requested_at | DateTime | Request timestamp | Auto-set |
requested_by | UUID | Requester identity | Required |
approved_by | UUID (Optional) | Approver identity | For audit trail |
completed_at | DateTime | Completion time | Set on completion |
data_categories | Vec | Data types requested | Default: ["all"] |
result_location | String (Optional) | Export location | S3/GCS URL |
error_message | String (Optional) | Failure reason | For failed requests |
metadata | JSON | Additional context | Flexible structure |
DsrType Enum (GDPR Articles)​
enum DsrType {
Access, // Article 15 - Right of access
Portability, // Article 20 - Data portability
Erasure, // Article 17 - Right to be forgotten
Rectification, // Article 16 - Right to rectification
Restriction, // Article 18 - Right to restriction
Objection // Article 21 - Right to object
}
DsrStatus Enum​
enum DsrStatus {
Pending, // Awaiting approval
Approved, // Approved for processing
Processing, // Being executed
Completed, // Successfully completed
Failed, // Processing failed
Cancelled // Cancelled by user/admin
}
ComplianceReport Model​
Core Fields​
| Field | Type | Description |
|---|---|---|
id | UUID | Report identifier |
report_type | ReportType (Enum) | Type of compliance report |
period_start | DateTime | Reporting period start |
period_end | DateTime | Reporting period end |
generated_at | DateTime | Generation timestamp |
generated_by | String | Generator identity |
sections | Vec | Report sections |
summary | ReportSummary | Executive summary |
ReportType Enum​
enum ReportType {
SOC2TypeII,
GDPRCompliance,
DataRetention,
AccessControl,
SecurityAudit,
CustomAudit(String)
}
Default Retention Policies​
Standard Policies​
| Data Type | Retention Period | Action | Legal Basis |
|---|---|---|---|
| Audit Logs | 7 years | Archive | Regulatory compliance |
| Security Events | 2 years | Archive | Security compliance |
| User Activity | 90 days | Anonymize | Privacy protection |
| Session Data | 30 days | Delete | Security best practice |
| Financial Records | 7 years | Archive | Tax compliance |
| Personal Data | Active + 30 days | Anonymize | GDPR compliance |
Policy Examples​
Audit Log Retention​
{
"id": "audit-log-retention",
"name": "Audit Log Retention",
"description": "Retain audit logs for compliance and security analysis",
"data_type": "AuditLog",
"retention_period": "P2555D",
"action": "Archive",
"legal_basis": "SOC2 Type II compliance requirement",
"active": true,
"created_at": "2025-01-01T00:00:00Z",
"last_executed": "2025-08-29T00:00:00Z"
}
GDPR Personal Data​
{
"id": "gdpr-personal-data",
"name": "GDPR Personal Data Retention",
"description": "Anonymize personal data after account closure",
"data_type": "PersonalData",
"retention_period": "P30D",
"action": "Anonymize",
"legal_basis": "GDPR Article 5(1)(e) - storage limitation",
"active": true,
"created_at": "2025-01-01T00:00:00Z",
"last_executed": "2025-08-29T00:00:00Z"
}
Data Subject Request Examples​
Access Request​
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"tenant_id": "123e4567-e89b-12d3-a456-426614174000",
"subject_id": "456e7890-e89b-12d3-a456-426614174000",
"request_type": "Access",
"status": "Completed",
"requested_at": "2025-08-15T10:00:00Z",
"requested_by": "456e7890-e89b-12d3-a456-426614174000",
"approved_by": "789e0123-e89b-12d3-a456-426614174000",
"completed_at": "2025-08-15T11:30:00Z",
"data_categories": ["Profile", "Activity", "Preferences"],
"result_location": "s3://gdpr-exports/550e8400-export.zip",
"metadata": {
"export_format": "json",
"file_size_mb": 25.3,
"record_count": 15420
}
}
Erasure Request​
{
"id": "660e8400-e29b-41d4-a716-446655440000",
"tenant_id": "123e4567-e89b-12d3-a456-426614174000",
"subject_id": "567e8901-e89b-12d3-a456-426614174000",
"request_type": "Erasure",
"status": "Processing",
"requested_at": "2025-08-29T09:00:00Z",
"requested_by": "567e8901-e89b-12d3-a456-426614174000",
"approved_by": "890e1234-e89b-12d3-a456-426614174000",
"data_categories": ["all"],
"metadata": {
"reason": "Account closure",
"verification_method": "email",
"retention_exceptions": ["financial_records", "legal_holds"]
}
}
Compliance Report Structure​
SOC2 Type II Report Example​
{
"id": "770e8400-e29b-41d4-a716-446655440000",
"report_type": "SOC2TypeII",
"period_start": "2025-01-01T00:00:00Z",
"period_end": "2025-06-30T23:59:59Z",
"generated_at": "2025-07-15T10:00:00Z",
"generated_by": "compliance-service",
"sections": [
{
"title": "Security",
"status": "Compliant",
"findings": [],
"metrics": {
"security_incidents": 0,
"patch_compliance": 99.8,
"vulnerability_scan_frequency": "weekly"
},
"evidence": [
{
"id": "sec-001",
"evidence_type": "TestResult",
"description": "Penetration test results",
"collected_at": "2025-06-15T00:00:00Z",
"source": "third-party-auditor"
}
]
}
],
"summary": {
"total_controls": 150,
"compliant_controls": 147,
"non_compliant_controls": 3,
"critical_findings": 0,
"overall_score": 98.0,
"risk_level": "Low"
}
}
Database Schema​
Primary Storage Patterns​
# Retention policies
/compliance/retention_policies/{policy_id}
Value: JSON serialized RetentionPolicy
# Data subject requests
/{tenant_id}/data_subject_requests/{request_id}
Value: JSON serialized DataSubjectRequest
# Compliance reports
/{tenant_id}/compliance_reports/{report_type}/{period}/{report_id}
Value: JSON serialized ComplianceReport
# Evidence storage
/compliance/evidence/{evidence_id}
Value: JSON serialized Evidence
Secondary Indexes​
# DSR by subject
/{tenant_id}/dsr_by_subject/{subject_id} -> [request_ids]
# DSR by status
/{tenant_id}/dsr_by_status/{status} -> [request_ids]
# Active retention policies
/compliance/active_retention_policies -> [policy_ids]
# Reports by type
/{tenant_id}/reports_by_type/{report_type} -> [report_ids]
Compliance Workflows​
Data Subject Request Processing​
1. Request Submission
- User submits request
- Initial validation
- Create DSR record
2. Approval
- Admin review
- Legal verification
- Approve/Reject decision
3. Processing
- Identify data sources
- Collect relevant data
- Apply filters/exclusions
4. Export/Action
- Generate export file
- Perform requested action
- Store in secure location
5. Notification
- Notify requester
- Provide download link
- Log completion
Retention Policy Execution​
1. Schedule Check
- Run daily/hourly
- Check active policies
2. Data Identification
- Query data by type
- Calculate age
- Identify expired records
3. Action Execution
- Delete: Permanent removal
- Anonymize: Remove PII
- Archive: Move to cold storage
- Export: Create backup
4. Audit Logging
- Log all actions
- Update policy execution time
- Generate compliance report
API Endpoints​
Data Subject Requests​
- POST
/api/compliance/dsr- Submit new request - GET
/api/compliance/dsr/{request_id}- Get request status - PUT
/api/compliance/dsr/{request_id}/approve- Approve request - GET
/api/compliance/dsr/my-requests- User's requests
Retention Policies​
- GET
/api/compliance/retention-policies- List policies - POST
/api/compliance/retention-policies- Create policy - PUT
/api/compliance/retention-policies/{id}- Update policy - POST
/api/compliance/retention-policies/{id}/execute- Manual execution
Compliance Reports​
- GET
/api/compliance/reports- List reports - POST
/api/compliance/reports/generate- Generate report - GET
/api/compliance/reports/{report_id}- Get report details - GET
/api/compliance/reports/{report_id}/export- Export report
Security Considerations​
Access Control​
- DSR submission: Authenticated users
- DSR approval: Compliance officers only
- Policy management: Admin only
- Report generation: Compliance team
- Evidence access: Auditors
Data Protection​
- Encrypted storage for exports
- Secure deletion verification
- Audit trail for all actions
- PII masking in logs
- Access logging
Legal Safeguards​
- Legal hold preservation
- Deletion verification
- Anonymization validation
- Export integrity checks
- Chain of custody
Compliance Frameworks​
GDPR Compliance​
struct GDPRCompliance {
lawful_basis: LawfulBasis,
data_minimization: bool,
purpose_limitation: bool,
storage_limitation: bool,
integrity_confidentiality: bool,
accountability: bool
}
enum LawfulBasis {
Consent,
Contract,
LegalObligation,
VitalInterests,
PublicTask,
LegitimateInterests
}
SOC2 Trust Principles​
- Security: Protect against unauthorized access
- Availability: System operational and usable
- Processing Integrity: Complete, valid, accurate
- Confidentiality: Information designated confidential
- Privacy: Personal information lifecycle
Monitoring & Alerts​
Compliance Metrics​
- DSR response time (target: <30 days)
- Policy execution success rate
- Data retention compliance %
- Report generation frequency
- Finding resolution time
Alerts​
- DSR approaching deadline
- Policy execution failure
- High-risk findings
- Compliance score drop
- Regulatory changes
Future Enhancements​
Advanced Features​
- AI-Powered Compliance: Automated policy recommendations
- Cross-Border Transfer: Schrems II compliance
- Privacy by Design: Built-in privacy controls
- Consent Management: Granular consent tracking
Framework Extensions​
- CCPA Support: California privacy rights
- HIPAA Compliance: Healthcare data protection
- PCI-DSS: Payment card security
- ISO 27001: Information security
Automation​
- Auto-Classification: Identify data types
- Smart Anonymization: Context-aware PII removal
- Compliance Scoring: Real-time compliance health
- Regulatory Updates: Auto-update policies
Last Updated: 2025-08-29 Version: 1.0