Skip to content

feat: PII Export & Delete Workflow (GDPR-ready)#345

Open
lucascrespo23 wants to merge 1 commit intorohitdash08:mainfrom
lucascrespo23:feat/pii-export-delete
Open

feat: PII Export & Delete Workflow (GDPR-ready)#345
lucascrespo23 wants to merge 1 commit intorohitdash08:mainfrom
lucascrespo23:feat/pii-export-delete

Conversation

@lucascrespo23
Copy link

/claim #76

Summary

Implements PII Export & Delete Workflow as described in #76.

Export (GET /pii/export)

  • JWT-protected endpoint
  • Downloads complete JSON package of all user data
  • Includes: profile (excluding password_hash), categories, expenses, recurring expenses, bills, reminders, ad impressions, subscriptions, audit logs
  • Returns as downloadable application/json attachment
  • Creates audit trail entry on each export

Delete (POST /pii/delete)

  • Requires explicit {"confirm": true} body to prevent accidental deletion
  • Irreversibly deletes all user data in correct foreign key dependency order
  • Creates anonymized audit trail entry (hashed email) for compliance
  • Returns detailed deletion summary with counts per table

Files Changed

  • packages/backend/app/services/pii.py — Export & delete business logic
  • packages/backend/app/routes/pii.py — REST endpoints
  • packages/backend/app/routes/__init__.py — Route registration
  • packages/backend/tests/test_pii.py — 15 test cases

Acceptance Criteria

  • ✅ Export package generation
  • ✅ Irreversible deletion workflow
  • ✅ Audit trail logging
  • ✅ Production ready implementation
  • ✅ Includes tests
  • ✅ Documentation (docstrings + OpenAPI-style comments)

Implements issue rohitdash08#76 with:

## Export (GET /pii/export)
- Downloads complete JSON package of all user data
- Includes: profile, categories, expenses, recurring expenses, bills, reminders, ad impressions, subscriptions, audit logs
- Excludes password_hash from export
- Returns as downloadable JSON attachment
- Creates audit trail entry on each export

## Delete (POST /pii/delete)
- Requires explicit {"confirm": true} body to prevent accidents
- Irreversibly deletes all user data in correct FK dependency order
- Creates anonymized audit trail entry (hashed email reference) for compliance
- Returns deletion summary with counts per table

## Tests (15 test cases)
- Export: auth required, JSON attachment format, contains all data sections, excludes password hash, audit logging
- Delete: auth required, confirmation required, removes all data, returns summary

Closes rohitdash08#76
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant