Repository navigation
Conversation
- public/css/components.css: classes novas form-submit, auth-container-wide e progress (barra nativa com as cores da paleta) - public/css/app.css: sai o estilo antigo da barra (.progress e .progress-bar), que agora mora no components.css - views/auth/merchant/register.php: os dois style soltos (largura do card e margem do botao) viram classes - views/partials/reward-progress.php: a barra passa a ser a tag progress com value, sem style de largura - tests/Feature/RewardProgressScreenTest.php: testes conferem o value da barra e que a tela nao tem mais style solto
- src/ts/forms.ts: script novo que marca o formulario enviado, poe o botao em carregando e barra o segundo envio - public/js/forms.js: compilado do forms.ts pelo tsc (versionado, como o masks.js) - public/css/components.css: classe is-loading (botao apagado, rodinha girando, sem clique) respeitando reduzir movimento - views/auth/merchant/login.php: carrega o forms.js - views/auth/merchant/register.php: carrega o forms.js - views/customer/balance.php: carrega o forms.js - views/partials/merchant-footer.php: carrega o forms.js em todas as telas do painel - tests/js/forms.test.js: testa primeiro envio, envio duplo barrado, confirm cancelado e volta do navegador - tests/Feature/FormsScriptTest.php: confere que login, cadastro, consulta publica e painel carregam o script - .github/workflows/ci.yml: o CI passa a rodar o teste do forms.js - CLAUDE.md: documenta o forms.ts e a classe is-loading
- src/Support/helpers.php: funcao field_error_attr com o mapa de qual erro aponta qual campo - views/partials/flash.php: mensagem ganha id e role (alert no erro, status no sucesso) - public/css/components.css: borda de erro para aria-invalid e contorno transparente no lugar de outline none - public/css/global.css: regra unica de focus-visible para links, botoes e menu - views/auth/merchant/login.php: e-mail e senha marcados no erro de login - views/auth/merchant/register.php: documento, telefone, e-mail e senhas marcados conforme o erro - views/customer/balance.php: codigo da loja e telefone marcados, mensagem com id e role - views/merchant/customer-new.php: nome e consentimento marcados - views/merchant/customer.php: valor, pontos, consentimento e confirmacao marcados - views/merchant/dashboard.php: telefone marcado - views/merchant/points-rule.php: campo da regra marcado - views/merchant/profile.php: telefone e os tres campos de senha marcados - tests/Unit/HelpersTest.php: testes do field_error_attr - tests/Feature/FieldErrorTest.php: testes de tela (login errado, cadastro, pontos, consulta publica, sucesso) - CLAUDE.md: documenta o field_error_attr junto dos codigos de flash
- database/migrations/007_validade_pontos.sql: coluna points_expiry_months (padrao 12 meses) e tipo expire no points_log - database/schema.sql: mesma mudanca no estado final e registro da 007 em schema_migrations - docs/db/schema-explanation.md: documenta o prazo, o calculo do vencimento e o tipo expire - src/Models/MerchantModel.php: findById traz o prazo e updatePointsExpiry grava - src/Controllers/MerchantController.php: lista de prazos aceitos e acao de salvar a validade - src/Support/helpers.php: erro validade_invalida marca o campo do prazo - views/merchant/points-rule.php: card Validade dos pontos com o select de prazo - views/partials/flash.php: mensagens validade_invalida e validade_salva - tests/Feature/PointsExpiryConfigTest.php: testes do padrao de 12 meses, troca, desligar, valor invalido e isolamento entre lojas
- src/Models/LoyaltyCardModel.php: metodos expire, expireIdle e countExpirable, com trava do cartao e registro expire na mesma transacao - bin/expire-points.php: script da rotina, com --dry-run que so mostra o que venceria - src/Support/helpers.php: tipo expire aparece como Venceu no extrato e nos relatorios - public/css/app.css: selo badge-expire com as cores de erro da paleta - docs/operacao.md: secao Vencimento dos pontos com o comando e como agendar - CLAUDE.md: comando novo e a regra de validade no modelo de dados - tests/Integration/PointsExpiryTest.php: testes da rotina (prazo por loja, renovacao, loja inativa, lotes, sem vencer em dobro) - tests/Unit/HelpersTest.php: teste do rotulo e selo do vencimento
- src/Models/LoyaltyCardModel.php: findByMerchantAndPhone devolve expires_at (ultima movimentacao mais o prazo da loja) - src/Support/helpers.php: funcao format_date para mostrar so o dia - views/partials/points-expiry.php: linha com a validade do saldo, ou aviso de vencido - views/customer/balance.php: consulta publica mostra ate quando os pontos valem - views/merchant/customer.php: tela do cliente no painel mostra a mesma data - public/css/components.css: classe points-expiry - CLAUDE.md: documenta o format_date e de onde vem a data de vencimento - tests/Feature/PointsExpiryScreenTest.php: testes das duas telas (prazo da loja, sem data, vencido, isolamento entre lojas) - tests/Unit/HelpersTest.php: teste do format_date
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.