feat: risco por CEP - #5
Conversation
There was a problem hiding this comment.
Pull request overview
Esta PR adiciona uma regra inicial de cálculo de risco baseada no CEP do usuário, introduzindo um novo ponto de decisão para scoring/antifraude no codebase.
Changes:
- Adiciona o módulo
src/risk_zip.py. - Implementa
risk_by_zip(user)que atribui score maior para CEPs com prefixo"11"e menor caso contrário.
| def risk_by_zip(user): | ||
| if user.zip.startswith("11"): | ||
| return 80 |
There was a problem hiding this comment.
A regra de risco baseada em prefixo de CEP ("11") pode introduzir viés geográfico/socioeconômico (CEP é um proxy forte de localização) e gerar impacto de fairness/compliance. Sugestão: justificar e documentar o racional/embasamento, e preferir uma abordagem configurável (ex.: tabela de regras por faixa de CEP) com monitoramento/auditoria de impacto para evitar discriminação indireta.
| def risk_by_zip(user): | ||
| if user.zip.startswith("11"): | ||
| return 80 | ||
| return 20 No newline at end of file |
There was a problem hiding this comment.
Os valores e regras estão "hard-coded" (prefixo "11" e scores 80/20) sem explicitar escala/semântica do retorno. Para facilitar manutenção e reduzir erros futuros, extraia para constantes/mapeamento configurável e documente o intervalo esperado (ex.: 0–100) e o que o score representa.
| def risk_by_zip(user): | |
| if user.zip.startswith("11"): | |
| return 80 | |
| return 20 | |
| # Constantes de configuração de risco por CEP. | |
| # Escala de score: 0 (menor risco) a 100 (maior risco). | |
| ZIP_HIGH_RISK_PREFIX = "11" | |
| RISK_SCORE_HIGH = 80 # Score de risco para CEP considerado de alto risco. | |
| RISK_SCORE_LOW = 20 # Score de risco padrão para demais CEPs. | |
| def risk_by_zip(user): | |
| """ | |
| Calcula um score de risco baseado no CEP do usuário. | |
| Escala de retorno: | |
| - Intervalo: 0 a 100 (inteiro). | |
| - Valores maiores indicam maior risco relativo. | |
| Regra atual: | |
| - Se o CEP do usuário (`user.zip`) inicia com `ZIP_HIGH_RISK_PREFIX`, | |
| retorna `RISK_SCORE_HIGH`. | |
| - Caso contrário, retorna `RISK_SCORE_LOW`. | |
| Observação de fairness: | |
| - O uso de CEP como fator de risco pode refletir diferenças geográficas | |
| e socioeconômicas; a parametrização via constantes facilita futura | |
| revisão de impacto e ajustes de política. | |
| """ | |
| if user.zip.startswith(ZIP_HIGH_RISK_PREFIX): | |
| return RISK_SCORE_HIGH | |
| return RISK_SCORE_LOW |
No description provided.