Repository: open-condo-software/condo
Pull request #6112: feat(condo): DOMA-11505 run tests for meter-importer in ci
Author: login: AleX83Xpert
Labels: name: ✋🙂 Review please
description: Comments are resolved, take a look, please
Created: 2025-04-22T05:26:31Z | Merged: 2025-04-24T07:05:41Z

- [x] ‼️ change pull_request to pull_request_target before merging

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Added automated testing for the meter-importer component in the CI pipeline. Tests now run automatically when relevant meter-importer files change.
- **Chores**
  - Enhanced change detection filters for specific project domains and components.
  - Updated the meter-importer submodule to a newer commit.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->


Diff:
diff --git a/.github/workflows/nodejs.condo.ci.yml b/.github/workflows/nodejs.condo.ci.yml
index 3396e1fe4ec..741ee24fd58 100644
--- a/.github/workflows/nodejs.condo.ci.yml
+++ b/.github/workflows/nodejs.condo.ci.yml
@@ -120,6 +120,7 @@ jobs:
     outputs:
       address-service: ${{ steps.detect-changes.outputs.address-service }}
       dev-portal-api: ${{ steps.detect-changes.outputs.dev-portal-api }}
+      meter-importer: ${{ steps.detect-changes.outputs.meter-importer }}
       migrator: ${{ steps.detect-changes.outputs.migrator }}
       open-condo: ${{ steps.detect-changes.outputs.open-condo }}
       rb: ${{ steps.detect-changes.outputs.rb }}
@@ -146,6 +147,9 @@ jobs:
               - 'apps/condo/domains/miniapp/**'
               - 'apps/condo/domains/user/**'
               - 'packages/**'
+            meter-importer:
+              - 'apps/meter-importer/**'
+              - 'packages/**'
             migrator:
               - 'packages/migrator/**'
             open-condo:
@@ -155,6 +159,8 @@ jobs:
               - '!.helm/**'
             rb:
               - 'apps/rb'
+              - 'apps/condo/domains/acquiring/**'
+              - 'apps/condo/domains/billing/**'
               - 'packages/**'
             registry-importer:
               - 'apps/registry-importer/**'
@@ -457,6 +463,58 @@ jobs:
             ./docker-logs
           retention-days: 2
 
+  run-meter-importer-tests:
+    name: Meter-importer Tests
+    runs-on: ubuntu-22.04
+    needs:
+      - authorize
+      - build-image
+      - detect-changes
+    if: ${{ needs.detect-changes.outputs.meter-importer == 'true' }}
+    steps:
+      - name: Login to cloud registry
+        uses: docker/login-action@v3
+        with:
+          registry: ${{ secrets.DOCKER_REGISTRY }}
+          username: ${{ secrets.SBERCLOUD_CR_USERNAME }}
+          password: ${{ secrets.SBERCLOUD_CR_PASSWORD }}
+      - name: Setup PG db
+        run: |
+          docker run -e POSTGRES_USER=$POSTGRES_USER -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD -e POSTGRES_DB=$POSTGRES_DB -p="127.0.0.1:5432:5432" -d ${{ env.PG_IMAGE_FULL }}
+        env:
+          POSTGRES_USER: postgres
+          POSTGRES_PASSWORD: postgres
+          POSTGRES_DB: main
+      - name: Setup Redis db
+        run: |
+          docker run -p="127.0.0.1:6379:6379" -d ${{ env.REDIS_IMAGE_FULL }}
+      - name: Run condo container with daemon
+        run: |
+          docker run --network="host" --name condo-container -dit ${{ env.DOCKER_IMAGE_FULL }} sh
+      - name: Prepare apps
+        run: |
+          docker exec condo-container node bin/prepare.js -f condo meter-importer
+      - name: Check migrations state
+        run: |
+          docker exec condo-container yarn workspace @app/meter-importer makemigrations --check
+      - name: Run apps and tests
+        run: |
+          docker exec \
+          -e PROMETHEUS_RW_SERVER_URL=$PROMETHEUS_RW_SERVER_URL \
+          -e PROMETHEUS_USER=$PROMETHEUS_USER \
+          -e PROMETHEUS_PASSWORD=$PROMETHEUS_PASSWORD \
+          -e GH_REF_NAME=$GH_REF_NAME \
+          condo-container sh -c "(\
+          yarn workspace @app/condo start & \
+          yarn workspace @app/meter-importer start & \
+          node bin/wait-apps-apis.js -f condo meter-importer) && \
+          yarn workspace @app/meter-importer test"
+        env:
+          PROMETHEUS_RW_SERVER_URL: ${{ secrets.K6_PROMETHEUS_RW_SERVER_URL }}
+          PROMETHEUS_USER: ${{ secrets.K6_PROMETHEUS_USER }}
+          PROMETHEUS_PASSWORD: ${{ secrets.K6_PROMETHEUS_PASSWORD }}
+          GH_REF_NAME: ${{ github.event.pull_request.head.ref || github.ref_name }}
+
   run-migrator-tests:
     name: Migrator Tests
     runs-on: ubuntu-22.04
diff --git a/apps/meter-importer b/apps/meter-importer
index 08abf067d31..cbd765db28e 160000
--- a/apps/meter-importer
+++ b/apps/meter-importer
@@ -1 +1 @@
-Subproject commit 08abf067d3124454fb0d33176f449b9cc84f32ce
+Subproject commit cbd765db28efefc2c1db1cebd383f7722e0b1e24
diff --git a/yarn.lock b/yarn.lock
index 9094456ea4c..9d1bf4c526c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1090,7 +1090,6 @@ __metadata:
     "@zeit/next-less": ^1.0.1
     antd: ^4.24.12
     antd-dayjs-webpack-plugin: ^1.0.6
-    babel-jest: ^29.7.0
     cross-env: ^7.0.3
     dayjs: ^1.10.6
     express: ^4.17.1


Reviews:
user: login: coderabbitai[bot]
body: **Actionable comments posted: 2**

<details>
<summary>🧹 Nitpick comments (1)</summary><blockquote>

<details>
<summary>.github/workflows/nodejs.condo.ci.yml (1)</summary><blockquote>

`623-674`: **Review of the `run-meter-importer-tests` job**

The new job mirrors established patterns:
- Logs into the Docker registry
- Spins up Postgres & Redis containers
- Launches both `condo` and `meter-importer` apps
- Checks migrations and runs the test suite

Suggested enhancement:
Add steps to collect Docker logs and upload artifacts on failure, consistent with other service jobs:
```yaml
- name: Collect docker logs on failure
  if: failure()
  uses: jwalton/gh-docker-logs@v1
  with:
    dest: './docker-logs'

- name: Upload log artifact
  if: failure()
  uses: actions/upload-artifact@v4
  with:
    name: meter-importer-logs
    path: |
      *.log
      ./docker-logs
    retention-days: 2
```
Overall, dependencies, environment variables, and command sequences look solid.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 668eb6f59c0071375989c6fb4675663d9a8ef6d1 and 6165331e0813332b2388659b4eed8e4f7eb111df.

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.github/workflows/nodejs.condo.ci.yml` (4 hunks)
* `apps/meter-importer` (1 hunks)

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (6)</summary>

* GitHub Check: Build open-source part (windows-latest, 16.x, 3.13)
* GitHub Check: Build open-source part (ubuntu-22.04, 16.x, 3.13)
* GitHub Check: Semgrep vulnerabilities check
* GitHub Check: Check dependencies integrity (16.x)
* GitHub Check: Lint source code (16.x)
* GitHub Check: Build Docker Image

</details>

<details>
<summary>🔇 Additional comments (3)</summary><blockquote>

<details>
<summary>.github/workflows/nodejs.condo.ci.yml (3)</summary>

`9-9`: **Verify and document the trigger event change**

The workflow has been switched to trigger on `pull_request`. Remember to revert this back to `pull_request_target` before merging to main, as noted on line 8, to ensure the correct permission context for external PRs.

---

`128-128`: **Detect changes: add `meter-importer` output**

The `detect-changes` job now emits an output named `meter-importer`, which is required to conditionally run the new tests job. This aligns correctly with the added `run-meter-importer-tests` job.

---

`159-160`: **Expand RB filter paths**

Good addition of `apps/condo/domains/acquiring/**` and `apps/condo/domains/billing/**` to the `rb` filter. This ensures RB tests run when domain logic in those areas changes.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-22T05:33:12Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>♻️ Duplicate comments (1)</summary><blockquote>

<details>
<summary>.github/workflows/nodejs.condo.ci.yml (1)</summary><blockquote>

`167-169`: _🛠️ Refactor suggestion_

**Refine path filters for `meter-importer`**  
Using `packages/**` is too broad and will trigger on any package change across the repo. Restrict this to only the meter-importer package directory, e.g.:  
```diff
-meter-importer:
-  - 'apps/meter-importer/**'
-  - 'packages/**'
+meter-importer:
+  - 'apps/meter-importer/**'
+  - 'packages/meter-importer/**'
```

</blockquote></details>

</blockquote></details>

<details>
<summary>🧹 Nitpick comments (1)</summary><blockquote>

<details>
<summary>.github/workflows/nodejs.condo.ci.yml (1)</summary><blockquote>

`624-674`: **Verify new `run-meter-importer-tests` job consistency**  
The structure mirrors other test jobs (Docker login, DB setup, container run, migrations check, start & test). Ensure the following:  
1. The Docker image built in `build-image` contains all required code/imports for the meter‑importer workspace.  
2. The `wait-apps-apis.js` invocation (`-f condo meter-importer`) correctly waits for both services.  
3. Consider adding a step to collect and upload logs on failure to aid debugging, similar to other jobs.

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 9915e742a147de234ec46e05301d2894b9698d65 and ca7fb4e680fea4da2d2ab5a8c5efe774d519d133.

</details>

<details>
<summary>⛔ Files ignored due to path filters (1)</summary>

* `yarn.lock` is excluded by `!**/yarn.lock`, `!**/*.lock`

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.github/workflows/nodejs.condo.ci.yml` (4 hunks)
* `apps/meter-importer` (1 hunks)

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (1)</summary>

* apps/meter-importer

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (5)</summary>

* GitHub Check: Build open-source part (ubuntu-22.04, 16.x, 3.13)
* GitHub Check: Build open-source part (windows-latest, 16.x, 3.13)
* GitHub Check: Check dependencies integrity (16.x)
* GitHub Check: Semgrep vulnerabilities check
* GitHub Check: Build Docker Image

</details>

<details>
<summary>🔇 Additional comments (3)</summary><blockquote>

<details>
<summary>.github/workflows/nodejs.condo.ci.yml (3)</summary>

`9-15`: **Review event trigger change from `pull_request_target` to `pull_request`**  
Changing to `pull_request` will execute the workflow in the context of the PR’s head commit with limited secret access (secrets are not exposed to workflows triggered by forks). Ensure that downstream steps (e.g., Docker login, publishing, and any steps requiring secrets) will still have the necessary permissions or that this change is intended.

---

`128-128`: **Added `meter-importer` to detect-changes outputs**  
The new output key `meter-importer` correctly exposes the filter result and is later referenced in the `if` condition of the `run-meter-importer-tests` job.

---

`159-160`: **Extended RB path filters for acquiring and billing domains**  
Including `apps/condo/domains/acquiring/**` and `apps/condo/domains/billing/**` under the `rb` filter is appropriate to trigger RB tests when related domain code changes.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-22T14:25:27Z
user: login: SavelevMatthew
body: LGTM, but please sort CI job, to better lookups
state: APPROVED
author_association: MEMBER
submitted_at: 2025-04-23T13:57:59Z
user: login: dkoviazin
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-24T04:51:20Z

Review comments:
diff_hunk: @@ -1 +1 @@
-Subproject commit 08abf067d3124454fb0d33176f449b9cc84f32ce
+Subproject commit f7337e83880e09d85bb9a1b3fe63522f5eef17bd
path: apps/meter-importer
user: login: coderabbitai[bot]
body: _💡 Verification agent_

<details>
<summary>🧩 Analysis chain</summary>

**Verify submodule pointer update**  
The submodule commit has been bumped to `f7337e83880e09d85bb9a1b3fe63522f5eef17bd`. Please ensure this is the intended upstream commit that includes your CI-test enhancements. Also run a local submodule sync to confirm no unintended changes:

---

🏁 Script executed:

```shell
#!/bin/bash
# Verify the apps/meter-importer submodule is at the expected commit
git submodule status apps/meter-importer
# Navigate in and double-check HEAD
cd apps/meter-importer && git rev-parse HEAD
```

Length of output: 191

---



</details>

**Submodule pointer mismatch detected**  
The apps/meter-importer submodule in your superproject is pegged at f7337e83880e09d85bb9a1b3fe63522f5eef17bd, but the submodule’s HEAD is currently at 6165331e0813332b2388659b4eed8e4f7eb111df. Please update and commit the correct pointer:

```bash
# Sync and update your local copy
git submodule sync apps/meter-importer
git submodule update --init --recursive apps/meter-importer

# Enter, fetch, and checkout the intended commit
cd apps/meter-importer
git fetch origin
git checkout f7337e83880e09d85bb9a1b3fe63522f5eef17bd

# Go back and record the updated pointer
cd ../..
git add apps/meter-importer
git commit -m "Update apps/meter-importer submodule to f7337e8 for CI-test enhancements"
```

• apps/meter-importer – expected submodule commit f7337e83880e09d85bb9a1b3fe63522f5eef17bd, found HEAD 6165331e0813332b2388659b4eed8e4f7eb111df.

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-04-22T05:33:11Z
author_association: CONTRIBUTOR
diff_hunk: @@ -155,12 +156,17 @@ jobs:
               - '!.helm/**'
             rb:
               - 'apps/rb'
+              - 'apps/condo/domains/acquiring/**'
+              - 'apps/condo/domains/billing/**'
               - 'packages/**'
             registry-importer:
               - 'apps/registry-importer/**'
               - 'packages/**'
             webhooks:
               - 'packages/webhooks/**'
+            meter-importer:
+              - 'apps/meter-importer'
+              - 'packages/**'
 
path: .github/workflows/nodejs.condo.ci.yml
user: login: coderabbitai[bot]
body: _⚠️ Potential issue_

**Refine path filters for `meter-importer`**

The filter currently specifies:
  - `apps/meter-importer`
  - `packages/**`

1. Add a wildcard to capture all files under the app directory:
   ```yaml
   - 'apps/meter-importer/**'
   ```
2. Restrict the packages pattern to only Meter Importer, for example:
   ```yaml
   - 'packages/meter-importer/**'
   ```
As written, any change in `packages` will trigger Meter Importer tests, which may lead to unnecessary runs.

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-04-22T05:33:11Z
author_association: CONTRIBUTOR

PR comments:
user: login: coderabbitai[bot]
created_at: 2025-04-22T05:26:37Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- walkthrough_start -->

## Walkthrough

The changes update the CI workflow configuration to enhance support for the `meter-importer` component. A new output and path filters were added to the `detect-changes` job to include `meter-importer` and additional domain paths. A new job `run-meter-importer-tests` was introduced, which runs conditionally when relevant changes are detected. This job performs Docker login, sets up PostgreSQL and Redis containers, prepares and runs the condo and meter-importer apps, checks migrations, and executes the meter-importer tests. Additionally, the submodule pointer for `apps/meter-importer` was updated to a new commit reference without modifying code.

## Changes

| File(s)                             | Change Summary                                                                                                                        |
|-----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
| .github/workflows/nodejs.condo.ci.yml | Added `meter-importer` output and path filters in `detect-changes` job; expanded `rb` filter paths. Added `run-meter-importer-tests` job with Docker login, PostgreSQL and Redis setup, condo container preparation, migration checks, app startups, and meter-importer test execution. |
| apps/meter-importer                | Updated submodule pointer to a new commit reference.                                                                                  |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant GitHub
    participant CI Workflow
    participant Docker
    participant PostgreSQL
    participant Redis
    participant Condo App
    participant Meter Importer

    GitHub->>CI Workflow: Pull request event triggers workflow
    CI Workflow->>CI Workflow: Detect changes (including meter-importer paths)
    alt meter-importer changes detected
        CI Workflow->>Docker: Login and setup
        CI Workflow->>PostgreSQL: Start container
        CI Workflow->>Redis: Start container
        CI Workflow->>Condo App: Start in detached mode
        CI Workflow->>Meter Importer: Prepare workspace and check migrations
        CI Workflow->>Condo App: Start app
        CI Workflow->>Meter Importer: Start app
        CI Workflow->>Meter Importer: Run tests
    end
```

## Suggested labels

`👶 small`

## Poem

> 🐇  
> In the warren where CI flows,  
> New tests for meters now arose!  
> Docker hops, Postgres spins,  
> Redis races, the testing begins.  
> With every commit, rabbits cheer—  
> “Meter-importer’s future is here!”  
> ✨

<!-- walkthrough_end -->


---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 6f54a883517dfadf6e45a121ec1f23756986a077 and 0ad70c4a61641184ea16ab4182218ef13dac3256.

</details>

<details>
<summary>⛔ Files ignored due to path filters (1)</summary>

* `yarn.lock` is excluded by `!**/yarn.lock`, `!**/*.lock`

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.github/workflows/nodejs.condo.ci.yml` (4 hunks)
* `apps/meter-importer` (1 hunks)

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (2)</summary>

* apps/meter-importer
* .github/workflows/nodejs.condo.ci.yml

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (5)</summary>

* GitHub Check: Build open-source part (windows-latest, 16.x, 3.13)
* GitHub Check: Build open-source part (ubuntu-22.04, 16.x, 3.13)
* GitHub Check: Semgrep vulnerabilities check
* GitHub Check: Check dependencies integrity (16.x)
* GitHub Check: Lint source code (16.x)

</details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- tips_start -->

---

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=open-condo-software/condo&utm_content=6112):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai generate unit testing code for this file.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and generate unit testing code.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: CONTRIBUTOR
user: login: sonarqubecloud[bot]
created_at: 2025-04-24T04:16:40Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=open-condo-software_condo&pullRequest=6112) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=open-condo-software_condo&pullRequest=6112&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=open-condo-software_condo&pullRequest=6112&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=open-condo-software_condo&pullRequest=6112&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=open-condo-software_condo&pullRequest=6112&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=open-condo-software_condo&pullRequest=6112&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=open-condo-software_condo&pullRequest=6112)


author_association: NONE