How pratripat/cbs-functional-tests works
This is a Spring Boot banking platform with an Android client: users query accounts, transfer funds, and view transaction history through a channel gateway, while account operations are also directly exposed. Transfers are handled by a dedicated orchestrator with idempotency, a CBS call, and best-effort history recording. Account and history services provide persistence-backed operations. The graph preserves the documented mobile capabilities and service boundaries; unsampled internals are included only where README or source-index evidence supports them.
Main entry points: DownstreamClients.java Downstream clients · FundsTransferService.java Transfer orchestrator · MainActivity.kt Android app · TransactionRepository.java History repository
Components 22
Mobile client
- Android app
banking-mobile-app/app/src/main/java/com/banking/mobile/MainActivity.kt
Channel gateway
- Channel API
channel-service/src/main/java/com/banking/channel/controller/ChannelController.java - Downstream clients
channel-service/src/main/java/com/banking/channel/client/DownstreamClients.java - Gateway DTOs
channel-service/src/main/java/com/banking/channel/dto/ChannelDtos.java
Account management
- Account API
account-service/src/main/java/com/banking/account/controller/AccountController.java - Account operations
account-service/src/main/java/com/banking/account/service/AccountService.java - Account DTOs
account-service/src/main/java/com/banking/account/dto/AccountDtos.java - Account repository
account-service/src/main/java/com/banking/account/repository/AccountRepository.java - PostgreSQL
Funds transfer
- Transfer API
funds-transfer-service/src/main/java/com/banking/transfer/controller/FundsTransferController.java - Transfer orchestrator
funds-transfer-service/src/main/java/com/banking/transfer/service/FundsTransferService.java - Transfer record
funds-transfer-service/src/main/java/com/banking/transfer/entity/FundsTransfer.java - Transfer repository
funds-transfer-service/src/main/java/com/banking/transfer/repository/FundsTransferRepository.java - CBS client
funds-transfer-service/src/main/java/com/banking/transfer/client/CbsClient.java - History client
funds-transfer-service/src/main/java/com/banking/transfer/client/HistoryServiceClient.java
Transaction history
- History API
transaction-history-service/src/main/java/com/banking/history/controller/TransactionHistoryController.java - History operations
transaction-history-service/src/main/java/com/banking/history/service/TransactionHistoryService.java - Transaction record
transaction-history-service/src/main/java/com/banking/history/entity/Transaction.java - History repository
transaction-history-service/src/main/java/com/banking/history/repository/TransactionRepository.java - PostgreSQL
Other components
- Banking client
- CBS mock
Connections 21
- Banking client → Android app: uses
README.md - Android app → Channel API: calls banking APIs
README.md - Android app → Account API: calls deposit API
README.md - Channel API → Downstream clients: delegates requests
channel-service/src/main/java/com/banking/channel/controller/ChannelController.java - Downstream clients → Account API: HTTP account calls
channel-service/src/main/java/com/banking/channel/client/DownstreamClients.java - Downstream clients → Transfer API: HTTP transfer call
channel-service/src/main/java/com/banking/channel/client/DownstreamClients.java - Downstream clients → History API: fetches statement
README.md - Transfer API → Transfer orchestrator: invokes
funds-transfer-service/src/main/java/com/banking/transfer/controller/FundsTransferController.java - Account API → Account operations: invokes
account-service/src/main/java/com/banking/account/controller/AccountController.java - Account operations → Account repository: reads and writes
account-service/src/main/java/com/banking/account/service/AccountService.java - Account repository → PostgreSQL: persists accounts
README.md - Transfer orchestrator → Transfer repository: checks and saves
funds-transfer-service/src/main/java/com/banking/transfer/service/FundsTransferService.java - Transfer repository → Transfer record: stores
funds-transfer-service/src/main/java/com/banking/transfer/repository/FundsTransferRepository.java - Transfer orchestrator → CBS client: executes transfer
funds-transfer-service/src/main/java/com/banking/transfer/service/FundsTransferService.java - CBS client → CBS mock: submits transfer
funds-transfer-service/src/main/java/com/banking/transfer/client/CbsClient.java - Transfer orchestrator → History client: records success
funds-transfer-service/src/main/java/com/banking/transfer/service/FundsTransferService.java - History client → History API: submits transaction
funds-transfer-service/src/main/java/com/banking/transfer/client/HistoryServiceClient.java - History API → History operations: invokes
transaction-history-service/src/main/java/com/banking/history/controller/TransactionHistoryController.java - History operations → History repository: records and queries
transaction-history-service/src/main/java/com/banking/history/service/TransactionHistoryService.java - History repository → Transaction record: stores
transaction-history-service/src/main/java/com/banking/history/repository/TransactionRepository.java - History repository → PostgreSQL: persists ledger
README.md