Commit Graph

13 Commits

Author SHA1 Message Date
8ce13c2530 Implement encrypted transaction caching for GoCardless adapter
- Reduces GoCardless API calls by up to 99% through intelligent caching of transaction data
- Secure AES-GCM encryption with PBKDF2 key derivation (200k iterations) for at-rest storage
- Automatic range merging and transaction deduplication to minimize storage and API usage
- Cache-first approach with automatic fetching of uncovered date ranges
- Comprehensive test suite with 30 unit tests covering all cache operations and edge cases
- Thread-safe implementation with in-memory caching and encrypted disk persistence
2025-11-21 23:06:46 +01:00
6b5347c9f8 Add input validation for transaction amounts and currencies
- Validate amounts are non-zero and within reasonable bounds (≤1B)
- Validate currency codes are 3 uppercase ASCII letters
- Apply validation to main and foreign amounts/currencies
- Add comprehensive tests for validation logic
- Maintain graceful error handling for invalid data
2025-11-21 23:06:46 +01:00
ca94984469 Add JJ version control requirement to AGENTS.md 2025-11-21 23:06:46 +01:00
d51ad9a06f Handle expired agreements and rewrite README
- Implement robust End User Agreement expiry detection and handling
- Add graceful error recovery for failed accounts
- Rewrite README.md to focus on user benefits
- Add documentation guidelines to AGENTS.md
2025-11-21 23:06:46 +01:00
033426101c Mask details in debug traces. 2025-11-21 23:06:46 +01:00
e9f4ae6d15 Implemented debug logging to debug_logs/ 2025-11-21 23:06:46 +01:00
3890b056c9 Add specs for debug logging. 2025-11-21 23:02:22 +01:00
fd6c76f7ed Differentiate between human and LLM debugging 2025-11-21 23:02:22 +01:00
c21242d206 Implement logic 2025-11-21 23:02:22 +01:00
a0a7236752 Add high-level planning 2025-11-21 23:00:09 +01:00
dfd1918723 Remove old stuff 2025-11-21 23:00:09 +01:00
80849a9eef Fix bug in official Gocardless API definition
The official Gocardless API definition indicates that transactions are
directly output to an array.

Instead, they are wrapped in a transactions key.

This made the code fail to retrieve transactions, because they could not
be correctly serialized.

This is now fixed in the API definition, and the API code is also
regenerated.

Signed-off-by: Jacob Kiers <code@kiers.eu>
2024-10-04 20:34:27 +02:00
f0b8df90b9 Initial commit
This is definitely not functional yet.

Signed-off-by: Jacob Kiers <code@kiers.eu>
2024-10-04 20:31:39 +02:00