refactor(compare): unifica subsistema de comparação ao tipo Product de product-catalog (-24 erros baseline)#197
Conversation
…alog\n\nMigra ComparePage de @/types/product (snake_case) para\n@/types/product-catalog (camelCase), que casa com o shape de runtime vindo\nde getProductsByIds -> mapPromobrindToProduct. Remove a asser\u00e7\u00e3o\n'as unknown as CompareEntry[]' e o coment\u00e1rio de d\u00e9bito t\u00e9cnico do PR #177,\nagora desnecess\u00e1rios. Elimina 7 erros TSC reais.
…de product-catalog\n\nMigra AIComparisonAdvisor, ComparisonDuelView, ComparisonMobileView,\nComparisonPresentationLauncher, ComparisonRadarChart e FloatingCompareBar\nde @/types/product (snake_case) para @/types/product-catalog (camelCase).\nTodos j\u00e1 liam campos camelCase em runtime (minQuantity/stockStatus/colors/\nimages/supplier) \u2014 eram runtime-corretos mas type-inv\u00e1lidos. Swap puro de\nimport, sem mudan\u00e7a de l\u00f3gica. Elimina 17 erros TSC (TS2551/TS2339) reais.\nValidado same-env: 1273 -> 1249 (-24 com a ComparePage), zero regress\u00e3o.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reached
Your plan currently allows 1 review/hour. Refill in 42 minutes and 36 seconds. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more review capacity refills, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than trial, open-source, and free plans. In all cases, review capacity refills continuously over time. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (7)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
Resumo
Continuação do #177 (já mergeado). Unifica os 7 arquivos restantes do subsistema de comparação ao tipo correto
@/types/product-catalog, eliminando 24 erros de baseline TSC com zero regressão e zero mudança de runtime.Causa-raiz
Existem 3 tipos
Productno projeto. O shape de runtime dos produtos que chegam à comparação (viagetProductsByIds→mapPromobrindToProduct) é camelCase (@/types/product-catalog:minQuantity,stockStatus,colors,images,supplier/categoryaninhados não-nulos).Estes 7 arquivos liam corretamente os campos camelCase em runtime, mas estavam tipados como
@/types/product(snake_case). Resultado: eram runtime-corretos porém type-inválidos — cada acesso camelCase gerava TS2551/TS2339 no baseline.Mudança (puro swap de import, sem lógica)
6 componentes-irmãos — troca de import
@/types/product→@/types/product-catalog:AIComparisonAdvisor,ComparisonDuelView,ComparisonMobileView,ComparisonPresentationLauncher,ComparisonRadarChart,FloatingCompareBar.ComparePage.tsx— troca de import + limpeza do call-site: removida a asserçãoas unknown as CompareEntry[]e o comentário de débito técnico que o #177 havia introduzido (agora desnecessários, pois página eCompareTableViewcompartilham o mesmo tipo).Os 3 filhos que ainda tipam
Record<string, unknown>[](ComparisonScoreCard,ExportComparisonButton,SimilarProductsRail) foram deixados intactos — ver follow-up.Validação (same-env, container)
1273 → 1249= −24 erros, zero regressão. Por arquivo: AIComparisonAdvisor −2, ComparisonDuelView −3, ComparisonMobileView −4, ComparisonPresentationLauncher −3, ComparisonRadarChart −2, FloatingCompareBar −3, ComparePage −7.comm -13): o único item éComparePage(388)— o mesmo erro pré-existente doSimilarProductsRail(boundary com filhoRecord[]), deslocado de 394→388 pela remoção do comentário de 6 linhas. ComparePage caiu de 10→3 erros; os 3 restantes (213/243/388) são exatamente os boundaries pré-existentes com os 3 filhos não migrados.vite buildexit 0.Minus/refnão usados), ambos já presentes no.eslint-baseline.jsone em linhas não tocadas pelo diff (pré-existentes).git hash-objectlocal == árvore remota)..tsc-baseline.json) deixado intacto de propósito (rastreia código→contagem por arquivo; reduções passam no gate sem update; o CI pode regenerar).Follow-up (fora de escopo)
Os 3 filhos
Record<string, unknown>[](ComparisonScoreCard,ExportComparisonButton,SimilarProductsRail) consomem tipos de retorno de hooks (useComparisonScore,useProducts) que são eles próprios quebrados no baseline. Migrá-los agora introduz erros novos (medido: +2 líquido). Pertencem a um refactor mais profundo dedicado a esses hooks.Summary by cubic
Unifica o subsistema de comparação ao tipo
Productde@/types/product-catalog, alinhando o shape camelCase de runtime e removendo casts inseguros. Sem mudanças de lógica; elimina 24 erros do baseline do TSC.@/types/product→@/types/product-catalog.ComparePage.tsx: migra paraproduct-cataloge remove a asserçãoas unknown as CompareEntry[].Record<string, unknown>[]permanecem; migração virá com o refactor dos hooks.Written for commit 1a479c5. Summary will update on new commits. Review in cubic