Updated on 2026-08-14

This commit is contained in:
Tangem 2026-04-08 13:16:03 +04:00
parent f69ee8bece
commit 090e0964d4
10 changed files with 33 additions and 9 deletions

View file

@ -2,16 +2,18 @@
## Branch Naming ## Branch Naming
| Type | Format | Example | | Type | Format | Example |
|------|--------|---------| |---------|-------------------------------------|-------------------------------------|
| Feature | `feature/AND-xxx_short_description` | `feature/AND-13391_balance_fetcher` | | Feature | `feature/AND-xxx_short_description` | `feature/AND-13391_balance_fetcher` |
| Bugfix | `bugfix/AND-xxx_short_description` | `bugfix/AND-14000_fix_crash` | | Bugfix | `bugfix/AND-xxx_short_description` | `bugfix/AND-14000_fix_crash` |
| Pre-release | `x.x_pre_release` | `5.36_pre_release` | | Release | `releases/x.xx` | `releases/5.36` |
| Hotfix | `releases/x.xx.x` | `releases/5.36.1` |
**Key branches:** **Key branches:**
- `develop` — main integration branch, all feature/bugfix branches merge here - `develop` — main integration branch, all feature/bugfix branches merge here
- `x.x_pre_release` — branched from `develop` on the last day of sprint for the upcoming release; receives regression bugfixes and additional release items - `releases/x.xx` — release branches, branched from `develop`
- `release` — merging into this branch triggers appTester build and production artifacts; PRs come from `x.x_pre_release` - `releases/x.xx.x` — hotfix branches, branched from `releases/x.xx`
## Commit Messages ## Commit Messages

View file

@ -32,6 +32,10 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
**Build types:** `debug`, `mocked`, `internal`, `external`, `release`. **Build types:** `debug`, `mocked`, `internal`, `external`, `release`.
## Branching
See @.claude/rules/git-rules.md
## Architecture Overview ## Architecture Overview
### Module Layers ### Module Layers

View file

@ -48,8 +48,9 @@ internal class DefaultAuthProvider(
ApiEnvironment.DEV_2, ApiEnvironment.DEV_2,
ApiEnvironment.DEV_3, ApiEnvironment.DEV_3,
-> environmentConfig.tangemApiKeyDev -> environmentConfig.tangemApiKeyDev
ApiEnvironment.STAGE_2,
ApiEnvironment.STAGE, ApiEnvironment.STAGE,
ApiEnvironment.STAGE_2,
ApiEnvironment.STAGE_3,
-> environmentConfig.tangemApiKeyStage -> environmentConfig.tangemApiKeyStage
ApiEnvironment.PROD -> environmentConfig.tangemApiKey ApiEnvironment.PROD -> environmentConfig.tangemApiKey
} ?: error("No tangem tech api config provided") } ?: error("No tangem tech api config provided")

View file

@ -25,6 +25,9 @@ enum class ApiEnvironment {
@Json(name = "STAGE_2") @Json(name = "STAGE_2")
STAGE_2, STAGE_2,
@Json(name = "STAGE_3")
STAGE_3,
@Json(name = "MOCK") @Json(name = "MOCK")
MOCK, MOCK,

View file

@ -31,6 +31,7 @@ internal class Express(
createDev3Environment(), createDev3Environment(),
createStageEnvironment(), createStageEnvironment(),
createStage2Environment(), createStage2Environment(),
createStage3Environment(),
createMockedEnvironment(), createMockedEnvironment(),
createProdEnvironment(), createProdEnvironment(),
) )
@ -80,6 +81,12 @@ internal class Express(
headers = createHeaders(isProd = false), headers = createHeaders(isProd = false),
) )
private fun createStage3Environment(): ApiEnvironmentConfig = ApiEnvironmentConfig(
environment = ApiEnvironment.STAGE_3,
baseUrl = "[REDACTED_ENV_URL]",
headers = createHeaders(isProd = false),
)
private fun createMockedEnvironment(): ApiEnvironmentConfig = ApiEnvironmentConfig( private fun createMockedEnvironment(): ApiEnvironmentConfig = ApiEnvironmentConfig(
environment = ApiEnvironment.MOCK, environment = ApiEnvironment.MOCK,
baseUrl = "[REDACTED_ENV_URL]", baseUrl = "[REDACTED_ENV_URL]",

View file

@ -65,6 +65,7 @@ internal sealed class TangemPay(
ApiEnvironment.PROD -> environmentConfig.bffStaticToken ApiEnvironment.PROD -> environmentConfig.bffStaticToken
ApiEnvironment.STAGE, ApiEnvironment.STAGE,
ApiEnvironment.STAGE_2, ApiEnvironment.STAGE_2,
ApiEnvironment.STAGE_3,
ApiEnvironment.DEV_2, ApiEnvironment.DEV_2,
ApiEnvironment.DEV_3, ApiEnvironment.DEV_3,
-> null -> null
@ -84,6 +85,7 @@ internal sealed class TangemPay(
ApiEnvironment.DEV_3, ApiEnvironment.DEV_3,
ApiEnvironment.STAGE, ApiEnvironment.STAGE,
ApiEnvironment.STAGE_2, ApiEnvironment.STAGE_2,
ApiEnvironment.STAGE_3,
-> error("Unknown environment: $apiEnvironment") -> error("Unknown environment: $apiEnvironment")
} }
} }
@ -102,6 +104,7 @@ internal sealed class TangemPay(
ApiEnvironment.DEV_3, ApiEnvironment.DEV_3,
ApiEnvironment.STAGE, ApiEnvironment.STAGE,
ApiEnvironment.STAGE_2, ApiEnvironment.STAGE_2,
ApiEnvironment.STAGE_3,
-> error("Unknown environment: $apiEnvironment") -> error("Unknown environment: $apiEnvironment")
} }
} }

View file

@ -78,6 +78,7 @@ internal class YieldSupply(
ApiEnvironment.DEV_3, ApiEnvironment.DEV_3,
ApiEnvironment.STAGE, ApiEnvironment.STAGE,
ApiEnvironment.STAGE_2, ApiEnvironment.STAGE_2,
ApiEnvironment.STAGE_3,
-> environmentConfig.yieldModuleApiKeyDev -> environmentConfig.yieldModuleApiKeyDev
ApiEnvironment.PROD -> environmentConfig.yieldModuleApiKey ApiEnvironment.PROD -> environmentConfig.yieldModuleApiKey
} ?: error("No tangem tech api config provided") } ?: error("No tangem tech api config provided")

View file

@ -334,6 +334,7 @@ internal class DefaultTangemPayCardDetailsRepository @Inject constructor(
ApiEnvironment.DEV_3, ApiEnvironment.DEV_3,
ApiEnvironment.STAGE, ApiEnvironment.STAGE,
ApiEnvironment.STAGE_2, ApiEnvironment.STAGE_2,
ApiEnvironment.STAGE_3,
ApiEnvironment.MOCK, ApiEnvironment.MOCK,
-> visaLibLoader.getOrCreateConfig().rainRSAPublicKey.dev -> visaLibLoader.getOrCreateConfig().rainRSAPublicKey.dev
ApiEnvironment.PROD -> visaLibLoader.getOrCreateConfig().rainRSAPublicKey.prod ApiEnvironment.PROD -> visaLibLoader.getOrCreateConfig().rainRSAPublicKey.prod

View file

@ -173,6 +173,7 @@ internal class DefaultVisaActivationRepository @AssistedInject constructor(
ApiEnvironment.DEV_3, ApiEnvironment.DEV_3,
ApiEnvironment.STAGE, ApiEnvironment.STAGE,
ApiEnvironment.STAGE_2, ApiEnvironment.STAGE_2,
ApiEnvironment.STAGE_3,
ApiEnvironment.MOCK, ApiEnvironment.MOCK,
-> rsaPublicKey.dev -> rsaPublicKey.dev
ApiEnvironment.PROD -> rsaPublicKey.prod ApiEnvironment.PROD -> rsaPublicKey.prod

View file

@ -17,8 +17,9 @@ internal object ApiEnvironmentComparator : Comparator<ApiEnvironmentConfig> {
ApiEnvironment.DEV_3 -> 2 ApiEnvironment.DEV_3 -> 2
ApiEnvironment.STAGE -> 3 ApiEnvironment.STAGE -> 3
ApiEnvironment.STAGE_2 -> 4 ApiEnvironment.STAGE_2 -> 4
ApiEnvironment.MOCK -> 5 ApiEnvironment.STAGE_3 -> 5
ApiEnvironment.PROD -> 6 ApiEnvironment.MOCK -> 6
ApiEnvironment.PROD -> 7
} }
} }