@@ -88,6 +88,8 @@ db_urls = {
8888 'party' : os .getenv ('PARTY_DATABASE_URL' , 'postgres://meridian_party_user@cockroachdb:26257/meridian_party?sslmode=disable' ),
8989 'internal_bank_account' : os .getenv ('INTERNAL_BANK_ACCOUNT_DATABASE_URL' , 'postgres://meridian_internal_bank_account_user@cockroachdb:26257/meridian_internal_bank_account?sslmode=disable' ),
9090 'market_information' : os .getenv ('MARKET_INFORMATION_DATABASE_URL' , 'postgres://meridian_market_information_user@cockroachdb:26257/meridian_market_information?sslmode=disable' ),
91+ 'reconciliation' : os .getenv ('RECONCILIATION_DATABASE_URL' , 'postgres://meridian_reconciliation_user@cockroachdb:26257/meridian_reconciliation?sslmode=disable' ),
92+ 'forecasting' : os .getenv ('FORECASTING_DATABASE_URL' , 'postgres://meridian_forecasting_user@cockroachdb:26257/meridian_forecasting?sslmode=disable' ),
9193}
9294
9395# NOTE: Migrations now run as Kubernetes Jobs inside the cluster
@@ -474,6 +476,8 @@ k8s_resource(
474476# - Tenant: 50056
475477# - InternalBankAccount: 50057
476478# - MarketInformation: 50058
479+ # - Reconciliation: 50060
480+ # - Forecasting: 50061
477481# - Gateway (HTTP): 8080
478482# - HTTPHealth: 8081
479483# - HTTPMetrics: 9090
@@ -534,6 +538,20 @@ grpc_microservice(
534538 resource_deps = ['cockroachdb' , 'migrate-market-information' ],
535539)
536540
541+ # Reconciliation Service - gRPC microservice for reconciliation processes and settlement
542+ grpc_microservice (
543+ 'reconciliation' ,
544+ grpc_port = 50060 , # ports.Reconciliation
545+ resource_deps = ['cockroachdb' , 'migrate-reconciliation' , 'position-keeping' , 'current-account' ],
546+ )
547+
548+ # Forecasting Service - gRPC microservice for forecasting strategies and forward curves
549+ grpc_microservice (
550+ 'forecasting' ,
551+ grpc_port = 50061 , # ports.Forecasting
552+ resource_deps = ['cockroachdb' , 'migrate-forecasting' , 'market-information' ],
553+ )
554+
537555# =============================================================================
538556# Gateway Service
539557# =============================================================================
@@ -752,6 +770,20 @@ migration_job(
752770 resource_deps = ['init-database' ], # Independent database, only needs init to complete
753771)
754772
773+ migration_job (
774+ 'migrate-reconciliation' ,
775+ 'reconciliation' ,
776+ 'reconciliation' ,
777+ resource_deps = ['init-database' ], # Independent database, only needs init to complete
778+ )
779+
780+ migration_job (
781+ 'migrate-forecasting' ,
782+ 'forecasting' ,
783+ 'forecasting' ,
784+ resource_deps = ['init-database' ], # Independent database, only needs init to complete
785+ )
786+
755787# Kafka cluster health check - runs automatically after kafka-cluster is ready
756788local_resource (
757789 'kafka-health' ,
@@ -813,6 +845,8 @@ Microservices:
813845 • Tenant → localhost:50056 (gRPC)
814846 • Internal-Bank-Account → localhost:50057 (gRPC)
815847 • Market-Information → localhost:50058 (gRPC)
848+ • Reconciliation → localhost:50060 (gRPC)
849+ • Forecasting → localhost:50061 (gRPC)
816850
817851Gateway:
818852 • HTTP Gateway → localhost:8090 (subdomain routing)
@@ -851,12 +885,14 @@ Database Architecture (database-per-service):
851885 - meridian_party
852886 - meridian_internal_bank_account
853887 - meridian_market_information
888+ - meridian_reconciliation
889+ - meridian_forecasting
854890 • Within each database: org schemas for multi-tenant isolation
855891 • Tables use singular, unqualified names (search_path routing)
856892 • See ADR-0003 for architecture details
857893
858894Database Migrations:
859- • Migrations run automatically on startup (8 resources):
895+ • Migrations run automatically on startup (10 resources):
860896 1. current_account → meridian_current_account (account, lien, audit tables)
861897 2. financial_accounting → meridian_financial_accounting (ledger, booking)
862898 3. position_keeping → meridian_position_keeping (positions, transactions)
@@ -865,7 +901,9 @@ Database Migrations:
865901 6. tenant → meridian_platform (tenant registry)
866902 7. internal_bank_account → meridian_internal_bank_account (internal accounts)
867903 8. market_information → meridian_market_information (price benchmarks, market data)
868- • Parallel execution: current_account + financial_accounting + party + tenant + internal_bank_account + market_information
904+ 9. reconciliation → meridian_reconciliation (reconciliation processes)
905+ 10. forecasting → meridian_forecasting (forecasting strategies)
906+ • Parallel execution: current_account + financial_accounting + party + tenant + internal_bank_account + market_information + reconciliation + forecasting
869907 • Sequential dependencies:
870908 - position_keeping waits for current_account (Account FK)
871909 - payment_order waits for current_account (Account FK)
@@ -878,6 +916,8 @@ Database Migrations:
878916 - tilt trigger migrate-tenant
879917 - tilt trigger migrate-internal-bank-account
880918 - tilt trigger migrate-market-information
919+ - tilt trigger migrate-reconciliation
920+ - tilt trigger migrate-forecasting
881921
882922Testing Kafka Failover:
883923 kubectl delete pod kafka-1 # Kill broker
0 commit comments