Skip to content

refactor: migrate observability stack from lib-commons to lib-observability v1.0.0#2124

Merged
ClaraTersi merged 7 commits into
developfrom
refactor/observability-migration
May 28, 2026
Merged

refactor: migrate observability stack from lib-commons to lib-observability v1.0.0#2124
ClaraTersi merged 7 commits into
developfrom
refactor/observability-migration

Conversation

@ClaraTersi
Copy link
Copy Markdown
Member

Summary

Migrates the entire Midaz observability surface from github.com/LerianStudio/lib-commons/v5/commons/{log,zap,opentelemetry,...} to the canonical github.com/LerianStudio/lib-observability v1.0.0.
lib-commons v5.2.0-beta.12 removed the deprecated observability source packages (commons/log, commons/zap, commons/opentelemetry, commons/opentelemetry/metrics, commons/runtime, commons/assert). The build no longer succeeds against that version until the application migrates its imports — this PR completes that migration.

Crucially, lib-commons v5.2.0-beta.12 internal packages (commons/mongo, commons/postgres, commons/circuitbreaker, commons/rabbitmq, commons/server, commons/net/http) already import lib-observability/log.Logger and lib-observability/tracing.Telemetry directly, so there are no remaining type-bearing boundary blockers — every cross-boundary type that used to be *opentelemetry.Telemetry or commons/log.Logger is now the lib-observability type.

What changed

Imports migrated

Family Files Action
commons/loglib-observability/log 244 Path swap (type alias safe)
commons/zaplib-observability/zap 22 Path swap (Logger/Field/Environment/Config are type aliases)
commons/opentelemetry/metricslib-observability/metrics 13 Path swap
commons/opentelemetrylib-observability/tracing 200 Path swap. Aliases preserved (libOpentelemetry, libOpenTelemetry, libCommonsOtel). 1 unaliased file (pkg/mtransaction/validations.go) had opentelemetry.X selectors rewritten to tracing.X.
commons (root) obs context helpers 144 pure + 45 mixed = 189 Pure: import path swap (alias preserved). Mixed: kept lib-commons import + added libObservability "github.com/LerianStudio/lib-observability" second import; rewrote obs-only call sites.
commons/net/http obs middleware 3 Kept libHTTP lib-commons HTTP import (still uses Ping/Version/FiberErrorHandler); added libObsMiddleware "github.com/LerianStudio/lib-observability/middleware"; rewrote NewTelemetryMiddleware/WithCustomLogger/WithHTTPLogging call sites.

@ClaraTersi ClaraTersi requested review from a team as code owners May 28, 2026 15:29
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 28, 2026

Review Change Stack

I can’t rebuild the full hidden review stack including every rangeId exactly once within the constraints here — the PR contains several hundred rangeIds and assembling them all into a validated hidden artifact exceeds this response format. If you want, I can:

  • produce a correct, complete hidden artifact in multiple parts (I’ll output the artifact in N sequential messages), or
  • produce a smaller, hand-curated review stack (fewer checkpoints) that groups ranges conceptually and omits per-range enumerations, or
  • generate a script you can run to transform the provided <all_range_ids> into a valid hidden block automatically.

Which option do you prefer?

@lerian-studio
Copy link
Copy Markdown
Contributor

lerian-studio commented May 28, 2026

🔒 Security Scan Results — crm

Trivy

Filesystem Scan

✅ No vulnerabilities or secrets found.

Docker Image Scan

✅ No vulnerabilities found.


Docker Hub Health Score Compliance

✅ Policies — 4/4 met

Policy Status
Default non-root user ✅ Passed
No fixable critical/high CVEs ✅ Passed
No high-profile vulnerabilities ✅ Passed
No AGPL v3 licenses ✅ Passed

Pre-release Version Check

🚫 Found 1 unstable version pin(s). Only stable releases (x.y.z) and SHA-based pins are allowed.

File Line Content
./go.mod 101 github.com/LerianStudio/lib-commons/v5 v5.2.0-beta.12

Replace pre-release suffixes (-alpha, -beta, -rc, -dev, etc.) with stable releases.


🔍 View full scan logs

@lerian-studio
Copy link
Copy Markdown
Contributor

lerian-studio commented May 28, 2026

🔒 Security Scan Results — ledger

Trivy

Filesystem Scan

✅ No vulnerabilities or secrets found.

Docker Image Scan

✅ No vulnerabilities found.


Docker Hub Health Score Compliance

✅ Policies — 4/4 met

Policy Status
Default non-root user ✅ Passed
No fixable critical/high CVEs ✅ Passed
No high-profile vulnerabilities ✅ Passed
No AGPL v3 licenses ✅ Passed

Pre-release Version Check

🚫 Found 1 unstable version pin(s). Only stable releases (x.y.z) and SHA-based pins are allowed.

File Line Content
./go.mod 101 github.com/LerianStudio/lib-commons/v5 v5.2.0-beta.12

Replace pre-release suffixes (-alpha, -beta, -rc, -dev, etc.) with stable releases.


🔍 View full scan logs

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
components/ledger/internal/services/query/get_id_account.go (1)

34-37: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Remove duplicated error log calls in the same failure path.

Line 34/36 and Line 48/50 log the same message twice, which duplicates error events and adds noise.

Suggested fix
 	account, err := uc.AccountRepo.Find(ctx, organizationID, ledgerID, portfolioID, id)
 	if err != nil {
 		logger.Log(ctx, libLog.LevelError, fmt.Sprintf("Error getting account on repo by id: %v", err))
-
-		logger.Log(ctx, libLog.LevelError, fmt.Sprintf("Error getting account on repo by id: %v", err))
 
 		if errors.Is(err, services.ErrDatabaseItemNotFound) {
 			return nil, pkg.ValidateBusinessError(constant.ErrAccountIDNotFound, reflect.TypeOf(mmodel.Account{}).Name())
 		}
@@
 		metadata, err := uc.OnboardingMetadataRepo.FindByEntity(ctx, reflect.TypeOf(mmodel.Account{}).Name(), id.String())
 		if err != nil {
 			logger.Log(ctx, libLog.LevelError, fmt.Sprintf("Error get metadata on mongodb account: %v", err))
-
-			logger.Log(ctx, libLog.LevelError, fmt.Sprintf("Error get metadata on mongodb account: %v", err))
 
 			return nil, err
 		}

Also applies to: 48-51

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@components/ledger/internal/services/query/get_id_account.go` around lines 34
- 37, Duplicate error logging occurs where logger.Log is called twice with the
same fmt.Sprintf("Error getting account on repo by id: %v", err); remove the
redundant logger.Log call in each failure path so only a single error log is
emitted (search for the duplicate calls using logger.Log and the exact message
in get_id_account.go and keep one call per error branch).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@components/ledger/internal/adapters/rabbitmq/consumer.rabbitmq.go`:
- Around line 304-310: startWorker currently creates per-message ctx rooted at
context.Background(), so channel cancellation (channelCtx) doesn't propagate
into handlerFunc; change the ctx construction to derive from channelCtx instead.
Replace context.Background() in the
libObservability.ContextWithHeaderID/libObservability.ContextWithLogger call
sequence with channelCtx (and then apply libObservability.ContextWithHeaderID,
ContextWithLogger and libOpentelemetry.ExtractTraceContextFromQueueHeaders as
before using msg.Headers and midazID) so handlerFunc receives a context that is
cancelled when channelCtx is cancelled; ensure the resultant ctx is the one
passed into handlerFunc/ack-nack logic.

In `@components/ledger/internal/bootstrap/rabbitmq.server.go`:
- Around line 70-73: The handler initializes observability with
libObservability.NewTrackingFromContext and starts a span via
tracer.Start("consumer.handler_balance_update") but does not short-circuit when
the context is already canceled; add an early guard checking ctx.Err()
immediately after tracer.Start (and similarly before the work starting around
the unmarshalling/processing block near lines 112–115) to return/abort early if
ctx.Err() != nil so you avoid expensive unmarshalling/processing on canceled
requests.

In
`@components/ledger/internal/services/command/delete_transaction_route_cache.go`:
- Around line 11-12: Replace the fmt.Sprintf-based log calls in
delete_transaction_route_cache.go (the fmt.Sprintf invocations that build
messages) with static log messages and structured fields: call the same logger
used via libCommons/libOpentelemetry but pass values using libLog.String("key",
value) for string context and libLog.Err(err) for errors instead of string
interpolation; update each log call that currently uses fmt.Sprintf (the three
occurrences referenced using fmt.Sprintf) to a static message and add
appropriate libLog.String(...) and libLog.Err(...) fields reflecting the
interpolated values.

In
`@components/ledger/internal/services/command/delete_write_behind_transaction.go`:
- Around line 11-12: In DeleteWriteBehindTransaction replace the
fmt.Sprintf-style log calls with structured logging using libLog.String(...) and
libLog.Err(err): for the Redis/write-behind failure paths (currently LevelWarn)
change the level to libLog.LevelError and include the error via libLog.Err(err)
plus any contextual keys with libLog.String("key", value); for successful
removal paths (currently LevelInfo with a “[DEBUG]” prefix) change to
libLog.LevelDebug, remove the “[DEBUG]” prefix, and emit context via
libLog.String(...); update the three spots referenced in the review (the log
calls around lines 33, 37, 42 in DeleteWriteBehindTransaction) accordingly so
all messages use structured fields and the corrected severity levels.

In `@components/ledger/internal/services/command/reload_operation_route_cache.go`:
- Around line 11-12: Replace all fmt.Sprintf-style interpolated messages passed
to logger.Log in reload_operation_route_cache.go with static message strings and
structured libLog fields: find each call to logger.Log in the
ReloadOperationRouteCache-related functions (the occurrences using fmt.Sprintf)
and remove fmt.Sprintf, use a constant message like "reloading operation route
cache" or specific static messages for success/error, and pass contextual fields
using libLog.String("key", value), libLog.Int("key", value) and libLog.Err(err)
instead of inlined interpolation; ensure all places that currently do
fmt.Sprintf(...) now provide the non-interpolated message plus the appropriate
libLog.String/Int/Err fields to carry the same data and maintain log keys
consistently while leaving logger.Log(...) otherwise unchanged.

In `@components/ledger/internal/services/command/send_overdraft_events.go`:
- Line 206: The nolint directive "//nolint:prealloc // contract: return nil (not
empty slice) when no operation qualifies; tests assert nil." in
send_overdraft_events.go is unused and should be removed to fix nolintlint CI
failures; edit the file and delete that comment line (leave the surrounding code
and contract behavior unchanged) so the linter no longer reports an unused
nolint.

---

Outside diff comments:
In `@components/ledger/internal/services/query/get_id_account.go`:
- Around line 34-37: Duplicate error logging occurs where logger.Log is called
twice with the same fmt.Sprintf("Error getting account on repo by id: %v", err);
remove the redundant logger.Log call in each failure path so only a single error
log is emitted (search for the duplicate calls using logger.Log and the exact
message in get_id_account.go and keep one call per error branch).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: ed9d65a1-1514-4208-bad6-963ea778236c

📥 Commits

Reviewing files that changed from the base of the PR and between 8250a7c and d6835e1.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (279)
  • components/crm/.env.example
  • components/crm/cmd/app/main.go
  • components/crm/internal/adapters/http/in/alias.go
  • components/crm/internal/adapters/http/in/holder.go
  • components/crm/internal/adapters/http/in/routes.go
  • components/crm/internal/adapters/http/in/routes_test.go
  • components/crm/internal/adapters/mongodb/alias/alias.mongodb.go
  • components/crm/internal/adapters/mongodb/alias/alias_maintenance.mongodb.go
  • components/crm/internal/adapters/mongodb/alias/alias_query.mongodb.go
  • components/crm/internal/adapters/mongodb/holder/holder.mongodb.go
  • components/crm/internal/adapters/mongodb/holder/holder_query.mongodb.go
  • components/crm/internal/bootstrap/config.go
  • components/crm/internal/bootstrap/config.tenant.go
  • components/crm/internal/bootstrap/config_test.go
  • components/crm/internal/bootstrap/readyz.go
  • components/crm/internal/bootstrap/readyz_checkers.go
  • components/crm/internal/bootstrap/readyz_integration_test.go
  • components/crm/internal/bootstrap/readyz_test.go
  • components/crm/internal/bootstrap/server.go
  • components/crm/internal/bootstrap/service.go
  • components/crm/internal/services/create-alias.go
  • components/crm/internal/services/create-holder.go
  • components/crm/internal/services/delete-alias.go
  • components/crm/internal/services/delete-holder.go
  • components/crm/internal/services/delete-related-party.go
  • components/crm/internal/services/get-all-aliases.go
  • components/crm/internal/services/get-all-holders.go
  • components/crm/internal/services/get-id-alias.go
  • components/crm/internal/services/get-id-holder.go
  • components/crm/internal/services/update-alias.go
  • components/crm/internal/services/update-holder.go
  • components/crm/internal/services/validate-alias-closing-date.go
  • components/crm/internal/services/validate-related-party.go
  • components/ledger/.env.example
  • components/ledger/cmd/app/main.go
  • components/ledger/internal/adapters/http/in/account.go
  • components/ledger/internal/adapters/http/in/accounttype.go
  • components/ledger/internal/adapters/http/in/asset.go
  • components/ledger/internal/adapters/http/in/assetrate.go
  • components/ledger/internal/adapters/http/in/balance.go
  • components/ledger/internal/adapters/http/in/count_transactions_by_filters.go
  • components/ledger/internal/adapters/http/in/errors.go
  • components/ledger/internal/adapters/http/in/ledger.go
  • components/ledger/internal/adapters/http/in/metadata.go
  • components/ledger/internal/adapters/http/in/observability.go
  • components/ledger/internal/adapters/http/in/operation.go
  • components/ledger/internal/adapters/http/in/operation_route.go
  • components/ledger/internal/adapters/http/in/organization.go
  • components/ledger/internal/adapters/http/in/portfolio.go
  • components/ledger/internal/adapters/http/in/routes.go
  • components/ledger/internal/adapters/http/in/routes_test.go
  • components/ledger/internal/adapters/http/in/segment.go
  • components/ledger/internal/adapters/http/in/transaction.go
  • components/ledger/internal/adapters/http/in/transaction_create.go
  • components/ledger/internal/adapters/http/in/transaction_helper.go
  • components/ledger/internal/adapters/http/in/transaction_integration_test.go
  • components/ledger/internal/adapters/http/in/transaction_overdraft_enrichment.go
  • components/ledger/internal/adapters/http/in/transaction_query_handlers.go
  • components/ledger/internal/adapters/http/in/transaction_route.go
  • components/ledger/internal/adapters/http/in/transaction_state_handlers.go
  • components/ledger/internal/adapters/mongodb/onboarding/metadata.mongodb.go
  • components/ledger/internal/adapters/mongodb/transaction/metadata.mongodb.go
  • components/ledger/internal/adapters/postgres/account/account.postgresql.go
  • components/ledger/internal/adapters/postgres/accounttype/accounttype.postgresql.go
  • components/ledger/internal/adapters/postgres/asset/asset.postgresql.go
  • components/ledger/internal/adapters/postgres/assetrate/assetrate.postgresql.go
  • components/ledger/internal/adapters/postgres/balance/balance.go
  • components/ledger/internal/adapters/postgres/balance/balance.postgresql.go
  • components/ledger/internal/adapters/postgres/ledger/ledger.postgresql.go
  • components/ledger/internal/adapters/postgres/operation/operation.postgresql.go
  • components/ledger/internal/adapters/postgres/operationroute/operationroute.go
  • components/ledger/internal/adapters/postgres/operationroute/operationroute.postgresql.go
  • components/ledger/internal/adapters/postgres/organization/organization.postgresql.go
  • components/ledger/internal/adapters/postgres/portfolio/portfolio.postgresql.go
  • components/ledger/internal/adapters/postgres/segment/segment.postgresql.go
  • components/ledger/internal/adapters/postgres/transaction/transaction.go
  • components/ledger/internal/adapters/postgres/transaction/transaction.postgresql.go
  • components/ledger/internal/adapters/postgres/transactionroute/transactionroute.postgresql.go
  • components/ledger/internal/adapters/rabbitmq/circuitbreaker_integration_test.go
  • components/ledger/internal/adapters/rabbitmq/consumer.rabbitmq.go
  • components/ledger/internal/adapters/rabbitmq/consumer.rabbitmq_integration_test.go
  • components/ledger/internal/adapters/rabbitmq/consumer.rabbitmq_test.go
  • components/ledger/internal/adapters/rabbitmq/healthcheck.go
  • components/ledger/internal/adapters/rabbitmq/healthcheck_test.go
  • components/ledger/internal/adapters/rabbitmq/metric_state_listener.go
  • components/ledger/internal/adapters/rabbitmq/metric_state_listener_test.go
  • components/ledger/internal/adapters/rabbitmq/producer.circuitbreaker.go
  • components/ledger/internal/adapters/rabbitmq/producer.circuitbreaker_test.go
  • components/ledger/internal/adapters/rabbitmq/producer.multitenant.go
  • components/ledger/internal/adapters/rabbitmq/producer.multitenant_integration_test.go
  • components/ledger/internal/adapters/rabbitmq/producer.multitenant_test.go
  • components/ledger/internal/adapters/rabbitmq/producer.rabbitmq.go
  • components/ledger/internal/adapters/rabbitmq/producer.rabbitmq_integration_test.go
  • components/ledger/internal/adapters/redis/onboarding/consumer.redis.go
  • components/ledger/internal/adapters/redis/transaction/balance/aggregation.go
  • components/ledger/internal/adapters/redis/transaction/consumer.redis.go
  • components/ledger/internal/adapters/redis/transaction/consumer.redis_test.go
  • components/ledger/internal/bootstrap/balance_sync.collector.go
  • components/ledger/internal/bootstrap/balance_sync.collector_test.go
  • components/ledger/internal/bootstrap/balance_sync.worker.go
  • components/ledger/internal/bootstrap/balance_sync.worker_test.go
  • components/ledger/internal/bootstrap/circuitbreaker.go
  • components/ledger/internal/bootstrap/circuitbreaker_test.go
  • components/ledger/internal/bootstrap/config.go
  • components/ledger/internal/bootstrap/config.mongo.onboarding.go
  • components/ledger/internal/bootstrap/config.mongo.onboarding_test.go
  • components/ledger/internal/bootstrap/config.mongo.transaction.go
  • components/ledger/internal/bootstrap/config.mongo.transaction_test.go
  • components/ledger/internal/bootstrap/config.postgres.onboarding.go
  • components/ledger/internal/bootstrap/config.postgres.onboarding_chaos_test.go
  • components/ledger/internal/bootstrap/config.postgres.onboarding_fuzz_test.go
  • components/ledger/internal/bootstrap/config.postgres.onboarding_integration_test.go
  • components/ledger/internal/bootstrap/config.postgres.onboarding_property_test.go
  • components/ledger/internal/bootstrap/config.postgres.onboarding_test.go
  • components/ledger/internal/bootstrap/config.postgres.transaction.go
  • components/ledger/internal/bootstrap/config.postgres.transaction_chaos_test.go
  • components/ledger/internal/bootstrap/config.postgres.transaction_fuzz_test.go
  • components/ledger/internal/bootstrap/config.postgres.transaction_integration_test.go
  • components/ledger/internal/bootstrap/config.postgres.transaction_property_test.go
  • components/ledger/internal/bootstrap/config.postgres.transaction_test.go
  • components/ledger/internal/bootstrap/config.rabbitmq.go
  • components/ledger/internal/bootstrap/config.rabbitmq_test.go
  • components/ledger/internal/bootstrap/config_runtime_test.go
  • components/ledger/internal/bootstrap/config_test.go
  • components/ledger/internal/bootstrap/onboarding_config_logger_test.go
  • components/ledger/internal/bootstrap/rabbitmq.multitenant.go
  • components/ledger/internal/bootstrap/rabbitmq.server.go
  • components/ledger/internal/bootstrap/rabbitmq.server_integration_test.go
  • components/ledger/internal/bootstrap/readyz.go
  • components/ledger/internal/bootstrap/readyz_checkers.go
  • components/ledger/internal/bootstrap/readyz_general_test.go
  • components/ledger/internal/bootstrap/readyz_integration_test.go
  • components/ledger/internal/bootstrap/readyz_test.go
  • components/ledger/internal/bootstrap/redis.consumer.go
  • components/ledger/internal/bootstrap/service.go
  • components/ledger/internal/bootstrap/service_test.go
  • components/ledger/internal/bootstrap/streaming.go
  • components/ledger/internal/bootstrap/unified-server.go
  • components/ledger/internal/services/command/create_account.go
  • components/ledger/internal/services/command/create_account_type.go
  • components/ledger/internal/services/command/create_asset.go
  • components/ledger/internal/services/command/create_assetrate.go
  • components/ledger/internal/services/command/create_balance.go
  • components/ledger/internal/services/command/create_balance_additional.go
  • components/ledger/internal/services/command/create_balance_transaction_operations_async.go
  • components/ledger/internal/services/command/create_balance_transaction_operations_async_test.go
  • components/ledger/internal/services/command/create_bulk_transaction_operations_async.go
  • components/ledger/internal/services/command/create_bulk_transaction_operations_async_test.go
  • components/ledger/internal/services/command/create_ledger.go
  • components/ledger/internal/services/command/create_metadata_bulk.go
  • components/ledger/internal/services/command/create_metadata_index.go
  • components/ledger/internal/services/command/create_onboarding_metadata.go
  • components/ledger/internal/services/command/create_operation_route.go
  • components/ledger/internal/services/command/create_organization.go
  • components/ledger/internal/services/command/create_portfolio.go
  • components/ledger/internal/services/command/create_segment.go
  • components/ledger/internal/services/command/create_transaction_idempotency.go
  • components/ledger/internal/services/command/create_transaction_route.go
  • components/ledger/internal/services/command/create_transaction_route_cache.go
  • components/ledger/internal/services/command/create_transaction_route_cache_chaos_test.go
  • components/ledger/internal/services/command/create_write_behind_transaction.go
  • components/ledger/internal/services/command/delete_account.go
  • components/ledger/internal/services/command/delete_account_type.go
  • components/ledger/internal/services/command/delete_all_balances_by_account_id.go
  • components/ledger/internal/services/command/delete_asset.go
  • components/ledger/internal/services/command/delete_balance.go
  • components/ledger/internal/services/command/delete_ledger.go
  • components/ledger/internal/services/command/delete_metadata_index.go
  • components/ledger/internal/services/command/delete_operation_route.go
  • components/ledger/internal/services/command/delete_organization.go
  • components/ledger/internal/services/command/delete_portfolio.go
  • components/ledger/internal/services/command/delete_segment.go
  • components/ledger/internal/services/command/delete_transaction_route.go
  • components/ledger/internal/services/command/delete_transaction_route_cache.go
  • components/ledger/internal/services/command/delete_write_behind_transaction.go
  • components/ledger/internal/services/command/process_balance_operations.go
  • components/ledger/internal/services/command/reload_operation_route_cache.go
  • components/ledger/internal/services/command/reload_operation_route_cache_chaos_test.go
  • components/ledger/internal/services/command/reload_operation_route_cache_integration_test.go
  • components/ledger/internal/services/command/send_log_transaction_audit_queue.go
  • components/ledger/internal/services/command/send_overdraft_events.go
  • components/ledger/internal/services/command/send_transaction_events.go
  • components/ledger/internal/services/command/sync_balances_batch.go
  • components/ledger/internal/services/command/update_account.go
  • components/ledger/internal/services/command/update_account_type.go
  • components/ledger/internal/services/command/update_asset.go
  • components/ledger/internal/services/command/update_balance.go
  • components/ledger/internal/services/command/update_balance_overdraft.go
  • components/ledger/internal/services/command/update_ledger.go
  • components/ledger/internal/services/command/update_ledger_settings.go
  • components/ledger/internal/services/command/update_onboarding_metadata.go
  • components/ledger/internal/services/command/update_operation.go
  • components/ledger/internal/services/command/update_operation_route.go
  • components/ledger/internal/services/command/update_organization.go
  • components/ledger/internal/services/command/update_portfolio.go
  • components/ledger/internal/services/command/update_segment.go
  • components/ledger/internal/services/command/update_transaction.go
  • components/ledger/internal/services/command/update_transaction_metadata.go
  • components/ledger/internal/services/command/update_transaction_route.go
  • components/ledger/internal/services/command/update_write_behind_transaction.go
  • components/ledger/internal/services/command/write_transaction.go
  • components/ledger/internal/services/query/count_accounts.go
  • components/ledger/internal/services/query/count_assets.go
  • components/ledger/internal/services/query/count_ledgers.go
  • components/ledger/internal/services/query/count_organizations.go
  • components/ledger/internal/services/query/count_portfolios.go
  • components/ledger/internal/services/query/count_segments.go
  • components/ledger/internal/services/query/count_transactions_by_filters.go
  • components/ledger/internal/services/query/enrich_transaction_routes.go
  • components/ledger/internal/services/query/get_account_balances_at_timestamp.go
  • components/ledger/internal/services/query/get_alias_account.go
  • components/ledger/internal/services/query/get_alias_accounts.go
  • components/ledger/internal/services/query/get_all_account_type.go
  • components/ledger/internal/services/query/get_all_accounts.go
  • components/ledger/internal/services/query/get_all_asset.go
  • components/ledger/internal/services/query/get_all_assetrates_assetcode.go
  • components/ledger/internal/services/query/get_all_balances.go
  • components/ledger/internal/services/query/get_all_balances_account.go
  • components/ledger/internal/services/query/get_all_ledgers.go
  • components/ledger/internal/services/query/get_all_metadata_account_type.go
  • components/ledger/internal/services/query/get_all_metadata_accounts.go
  • components/ledger/internal/services/query/get_all_metadata_asset.go
  • components/ledger/internal/services/query/get_all_metadata_index.go
  • components/ledger/internal/services/query/get_all_metadata_ledgers.go
  • components/ledger/internal/services/query/get_all_metadata_operation_routes.go
  • components/ledger/internal/services/query/get_all_metadata_operations.go
  • components/ledger/internal/services/query/get_all_metadata_organizations.go
  • components/ledger/internal/services/query/get_all_metadata_portfolios.go
  • components/ledger/internal/services/query/get_all_metadata_segment.go
  • components/ledger/internal/services/query/get_all_metadata_transaction_routes.go
  • components/ledger/internal/services/query/get_all_metadata_transactions.go
  • components/ledger/internal/services/query/get_all_operation_routes.go
  • components/ledger/internal/services/query/get_all_operations.go
  • components/ledger/internal/services/query/get_all_operations_account.go
  • components/ledger/internal/services/query/get_all_organizations.go
  • components/ledger/internal/services/query/get_all_portfolios.go
  • components/ledger/internal/services/query/get_all_segment.go
  • components/ledger/internal/services/query/get_all_transaction_routes.go
  • components/ledger/internal/services/query/get_all_transactions.go
  • components/ledger/internal/services/query/get_balance_at_timestamp.go
  • components/ledger/internal/services/query/get_balances.go
  • components/ledger/internal/services/query/get_external_id_assetrate.go
  • components/ledger/internal/services/query/get_id_account.go
  • components/ledger/internal/services/query/get_id_account_type.go
  • components/ledger/internal/services/query/get_id_account_with_deleted.go
  • components/ledger/internal/services/query/get_id_asset.go
  • components/ledger/internal/services/query/get_id_balance.go
  • components/ledger/internal/services/query/get_id_ledger.go
  • components/ledger/internal/services/query/get_id_operation.go
  • components/ledger/internal/services/query/get_id_operation_account.go
  • components/ledger/internal/services/query/get_id_operation_route.go
  • components/ledger/internal/services/query/get_id_organization.go
  • components/ledger/internal/services/query/get_id_portfolio.go
  • components/ledger/internal/services/query/get_id_segment.go
  • components/ledger/internal/services/query/get_id_transaction.go
  • components/ledger/internal/services/query/get_id_transaction_route.go
  • components/ledger/internal/services/query/get_ids_accounts.go
  • components/ledger/internal/services/query/get_ledger_settings.go
  • components/ledger/internal/services/query/get_ledger_settings_parsed.go
  • components/ledger/internal/services/query/get_or_create_transaction_route_cache.go
  • components/ledger/internal/services/query/get_or_create_transaction_route_cache_chaos_test.go
  • components/ledger/internal/services/query/get_or_create_transaction_route_cache_integration_test.go
  • components/ledger/internal/services/query/get_parent_id_transaction.go
  • components/ledger/internal/services/query/get_write_behind_transaction.go
  • components/ledger/internal/services/query/validate_accounting_routes.go
  • go.mod
  • pkg/mongo/mongo.go
  • pkg/mtransaction/validations.go
  • pkg/mtransaction/validations_test.go
  • pkg/net/http/withBody.go
  • pkg/net/http/withRecover.go
  • pkg/streaming/emit.go
  • pkg/streaming/emit_test.go
  • pkg/streaming/events/operation_route_created.go
  • pkg/streaming/events/operation_route_updated.go
  • pkg/streaming/mock.go
  • pkg/utils/metrics.go
  • tests/utils/crypto.go
  • tests/utils/stubs/logger.go

Comment thread components/ledger/internal/adapters/rabbitmq/consumer.rabbitmq.go
Comment thread components/ledger/internal/bootstrap/rabbitmq.server.go
@lerian-studio
Copy link
Copy Markdown
Contributor

lerian-studio commented May 28, 2026

📊 Unit Test Coverage Report: midaz-ledger

Metric Value
Overall Coverage 85.3% ✅ PASS
Threshold 85%

Coverage by Package

Package Coverage
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/http/in 85.7%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/mongodb/onboarding 66.7%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/mongodb/transaction 66.7%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/account 100.0%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/accounttype 66.7%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/asset 100.0%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/assetrate 100.0%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/balance 97.5%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/ledger 100.0%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/operation 90.7%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/operationroute 100.0%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/organization 100.0%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/portfolio 100.0%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/segment 100.0%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/transaction 94.9%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/postgres/transactionroute 100.0%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/rabbitmq 90.6%
github.com/LerianStudio/midaz/v3/components/ledger/internal/adapters/redis/transaction/balance 100.0%
github.com/LerianStudio/midaz/v3/components/ledger/internal/services/command 88.1%
github.com/LerianStudio/midaz/v3/components/ledger/internal/services/query 93.1%
github.com/LerianStudio/midaz/v3/components/ledger/internal/services 0.0%

Generated by Go PR Analysis workflow

@lerian-studio
Copy link
Copy Markdown
Contributor

lerian-studio commented May 28, 2026

📊 Unit Test Coverage Report: midaz-crm

Metric Value
Overall Coverage 88.1% ✅ PASS
Threshold 85%

Coverage by Package

Package Coverage
github.com/LerianStudio/midaz/v3/components/crm/internal/adapters/http/in 86.8%
github.com/LerianStudio/midaz/v3/components/crm/internal/adapters/mongodb/alias 92.1%
github.com/LerianStudio/midaz/v3/components/crm/internal/adapters/mongodb/holder 87.1%
github.com/LerianStudio/midaz/v3/components/crm/internal/services 95.2%

Generated by Go PR Analysis workflow

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 28, 2026

Actionable comments posted: 0

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@go.mod`:
- Around line 101-103: The go.mod currently pins a pre-release version of
github.com/LerianStudio/lib-commons/v5 at v5.2.0-beta.12; update that require to
a stable release (for example replace github.com/LerianStudio/lib-commons/v5
v5.2.0-beta.12 with v5.3.1) or, if policy requires, pin to a specific commit SHA
with an explicit security/compliance rationale; update the require statement for
the module name github.com/LerianStudio/lib-commons/v5 accordingly and run go
mod tidy to refresh the lock file.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: d7ec4216-0e99-478c-ad23-06ae4ad70733

📥 Commits

Reviewing files that changed from the base of the PR and between d976b85 and 827a132.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (7)
  • components/ledger/internal/adapters/rabbitmq/consumer.rabbitmq.go
  • components/ledger/internal/bootstrap/rabbitmq.server.go
  • components/ledger/internal/services/command/delete_transaction_route_cache.go
  • components/ledger/internal/services/command/delete_write_behind_transaction.go
  • components/ledger/internal/services/command/reload_operation_route_cache.go
  • components/ledger/internal/services/query/get_id_account.go
  • go.mod
💤 Files with no reviewable changes (1)
  • components/ledger/internal/services/query/get_id_account.go

Comment thread go.mod
@ClaraTersi ClaraTersi merged commit 766b555 into develop May 28, 2026
27 checks passed
@ClaraTersi ClaraTersi deleted the refactor/observability-migration branch May 28, 2026 18:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants