BKS.Cmss 5.1.2-beta-26s44-1-a66a4059
BKS.Cmss
Este documento complementa o README.MD do repositório e cobre apenas a biblioteca lib/BKS.Cmss.csproj.
Papel da biblioteca
BKS.Cmss.csproj é a biblioteca de domínio do produto de comissões.
Hoje ela concentra principalmente:
- regras de negócio dos fluxos de comissão
- acesso e orquestração de persistência
- recursos SQL embarcados usados pelos dispatchers
- integrações com bibliotecas compartilhadas do ecossistema BKS
- superfície reutilizável pelo
app/WebAppComissoes.csproje pelo pacote NuGet
Em termos práticos, app/WebAppComissoes.csproj é o host ASP.NET Web Forms, mas a lógica reutilizável e boa parte do contrato técnico do produto ficam nesta biblioteca.
Target e estratégia de versionamento
O projeto usa:
netstandard2.0LangVersion 12.0Nullable enable
O AssemblyVersion está fixado em 4.0.0.0 por decisão explícita do projeto.
Isso existe para evitar problemas de binding em consumidores .NET Framework, enquanto:
PackageVersionvaria pela pipelineFileVersionacompanha a versão geradaInformationalVersionleva versão + commit
Na prática, quem evolui semanticamente no dia a dia é o pacote NuGet, não o AssemblyVersion.
Dependências
Dependências por pacote
O projeto consome, entre outras:
BKS.AcessoBKS.ClientesBKS.DadosBKS.Modelos.QITechBKS.PadraoBKS.Util
Diferente de cenários híbridos como BKS.Cartao, aqui a biblioteca usa PackageReference direto para dependências compartilhadas, inclusive BKS.Padrao.
Estrutura interna relevante
Sem repetir toda a árvore, os diretórios mais importantes são:
BLL/: regras de negócio e orquestraçãoDAL/: dispatchers, acesso a dados e recursos SQLDAL/Dispatchers/**/SQL/**: scripts SQL embarcados como recursoDML/: contratos e estruturas usadas pelos fluxos de comissão
O volume de EmbeddedResource é alto e faz parte do contrato atual da biblioteca.
Recursos SQL embarcados
A biblioteca carrega um conjunto grande de .sql como EmbeddedResource.
Isso significa que a lib não é só código C#: ela também empacota artefatos SQL usados em runtime pela camada de acesso e pelos dispatchers.
Existe inclusive um target de validação no projeto:
CheckSqlFilesAreEmbedded
Esse target falha o build se existir .sql dentro da árvore do projeto que não esteja marcado como EmbeddedResource.
Implicações:
- adicionar um
.sqlnovo exige registrar no.csproj - mover scripts entre pastas pode quebrar build se a lista não for atualizada
- este é um ponto importante de manutenção e de custo de merge
Relação com o pipeline
Os jobs de biblioteca são acionados a partir do .gitlab-ci.yml do WebAppComissoes, mas usam templates compartilhados.
Jobs diretamente relacionados à BKS.Cmss:
validate_lib_version_impactpackage_nugetpublish_nugettag_beta_git
validate_lib_version_impact
Valida se uma alteração realmente impacta a biblioteca e, em MR, exige marcador de versão quando necessário.
O foco desse job é evitar geração de pacote sem mudança relevante em:
lib/**- dependências que afetem a lib
Directory.Packages.props, quando a seção alterada impactaBKS.Cmss
package_nuget
Empacota a biblioteca BKS.Cmss como NuGet.
Esse job:
- usa o template de versionamento compartilhado
- roda
dotnet packdentro delib - lê os metadados do pacote diretamente de
BKS.Cmss.csproj, sem arquivo.nuspec - inclui este README no pacote
- injeta
PackageVersion,FileVersioneInformationalVersionvia pipeline
publish_nuget
Publica o .nupkg gerado no feed corporativo.
Esse job depende de package_nuget e não deveria recompilar a biblioteca.
tag_beta_git
Quando a versão calculada for beta, a pipeline pode gerar uma tag Git da versão publicada.
O objetivo desse job é facilitar o rastreio da última beta gerada, já que nem sempre isso fica claro apenas pelo histórico de commits.
Testes da biblioteca
No estado atual do repositório, não existe um job dedicado de testes_unitarios_lib equivalente ao do WebAppCartao.
Isso significa que:
- a esteira já empacota e publica a lib
- mas ainda não expõe um job específico de testes automatizados da
BKS.Cmss - também não existe badge de cobertura específico desta biblioteca neste diretório
Esse é um ponto natural de evolução caso a lib passe a ter suíte própria de testes.
Regras atuais de geração de versão da lib
O pacote da BKS.Cmss segue o fluxo comum de versionamento da esteira NuGet:
alphaemfeature/*,fix/*,hotfix/*betaemdevstableem tagvX.Y.Z
Além disso, a geração depende de marcador explícito de impacto:
#major#minor#patch
Esse modelo existe para impedir que qualquer merge gere pacote novo sem intenção explícita de versionamento.
Pontos de atenção para manutenção
1. Tamanho e acoplamento do projeto
BKS.Cmss hoje mistura:
- domínio
- persistência
- SQL embarcado
- integrações
Isso funciona, mas aumenta:
- tempo de build
- custo de restore/load do workspace
- impacto de mudanças pequenas
2. Custo de edição no .csproj
O arquivo do projeto é grande porque precisa declarar muitos EmbeddedResource.
Qualquer automação futura de CI/CD ou refactor deve tratar esse .csproj com cuidado, porque ele não é um projeto SDK simples com convenções implícitas para SQL.
3. Dependência direta de pacotes compartilhados
Como BKS.Cmss depende diretamente de pacotes como BKS.Dados, BKS.Util, BKS.Acesso e BKS.Padrao, mudanças em Directory.Packages.props podem ter efeito imediato na biblioteca mesmo sem alteração direta em lib/**.
Por isso a validação de impacto da pipeline considera tanto a árvore da biblioteca quanto dependências centralizadas.
Quando editar este diretório
Atualize este README.MD quando houver mudança em:
- estratégia de versionamento do pacote
- estrutura principal de
BLL/DAL/DML - política de
EmbeddedResource - forma como dependências compartilhadas são resolvidas
- jobs específicos de
package_nuget/publish_nuget/tag_beta_git/validate_lib_version_impact
No packages depend on BKS.Cmss.
.NET Standard 2.0
- BKS.Acesso (>= 8.5.2)
- BKS.Clientes (>= 6.0.1)
- BKS.Dados (>= 4.4.0)
- BKS.Modelos.QITech (>= 1.3.0)
- BKS.Padrao (>= 7.15.1)
- BKS.Util (>= 3.10.1)
| Version | Downloads | Last updated |
|---|---|---|
| 5.1.2-beta-26S44-1-a66a4059 | 12 | 10/27/2026 |
| 5.1.1-beta-26S43-1-48d35b2d | 3 | 10/21/2026 |
| 5.1.0-beta-26S40-1-9d921b9b | 6 | 09/28/2026 |
| 5.0.0-beta-26S28-1-50804336 | 24 | 07/07/2026 |
| 4.1.1-beta-26S26-1-de85404e | 12 | 06/22/2026 |
| 4.1.0-beta-26S24-1-4fb5d6ae | 11 | 06/11/2026 |
| 4.0.1-alpha-26S24-1-02d40363 | 11 | 06/09/2026 |
| 4.0.0 | 19 | 05/27/2026 |
| 4.0.0-beta-260519-112821-cf0f | 13 | 05/19/2026 |
| 4.0.0-alpha-260518-113323-2c49 | 13 | 05/18/2026 |
| 4.0.0-alpha-260515-175540-ec80 | 13 | 05/15/2026 |
| 3.4.0 | 286 | 01/22/2026 |
| 3.4.0-alpha-260122-121549-2532 | 24 | 01/22/2026 |
| 3.3.2 | 40 | 11/21/2025 |
| 3.3.2-alpha-260122-094119-778b | 23 | 01/22/2026 |
| 3.3.1 | 20 | 11/19/2025 |
| 3.3.0 | 30 | 11/13/2025 |
| 3.2.0 | 31 | 10/23/2025 |
| 3.1.1 | 26 | 10/17/2025 |
| 3.1.0 | 30 | 09/12/2025 |
| 3.0.1 | 23 | 09/12/2025 |
| 3.0.0 | 21 | 09/12/2025 |