For future Claude
Defect-first parity review 2026-07-25 (updated 2026-07-26): Java dict2us-app vs D2U.NET on shared MySQL dual-run (VM :8098 / :8099). CRITICAL C1/C2 + HIGH H1–H3 fixed and smoke-verified on demo MySQL. Veredicto reconciliado para ~96%. Sem secrets nesta nota.
Code Review Paridade — 2026-07-25
D2U.NET · Homologacao · Legado D2U · Deploy kit C:\Projetos\Util\D2U.NET
Veredicto
| Item | Valor | Confidence |
|---|---|---|
| Paridade código (dual-MySQL homolog) | ~96% (era ~93% em 2026-07-25) | high |
| E2E smoke VM (2026-07-23) | 31/31 pass (_e2e_results.json) |
stated |
| Smoke client edit (2026-07-26) | FirstName/Email/Folder round-trip OK; credits ledger OK | high |
| Pronto cutover 100% | Não — QA 7 dias ainda pendente | high |
Docs vault anteriores diziam ~97–98% (2026-07-13) — reconciliado para baixo em 2026-07-25; subido para ~96% após fix C1/C2/H1–H3.
Known fixed (verificado 2026-07-25)
| Fix | Evidência |
|---|---|
Company__SingleCompany=true |
.env deploy kit + CoreServices.cs _singleCompany |
Security__RequireHttpsCookies=false |
.env + Program.cs cookie policy |
| Workers ingest OFF beside Java | .env MailReader/Ftp*/Audio*/Lexacom/SpeechLive/Egress=false |
Theme CSS folder = data_folder |
WebServices.cs ResolveThemeFolder → DataFolder |
user_client.user_id PK |
LegacyMySqlModelExtensions.MapClient Id → user_id |
Org↔client client_id |
MapClientOrganization user_client_organization.client_id |
Fixed 2026-07-26 (C1/C2/H1–H3 + scan)
| ID | Fix | Ficheiros |
|---|---|---|
| C1 | Edit/create/update identity via client.User no MySQL; email uniqueness só em User.Email |
ClientManagementServices.cs |
| C2 | Client.Folder → user_client.folder (winscrobe_folder mantido) |
LegacyMySqlModelExtensions.cs |
| H1 | Lista: LegacyPaymentCreditsCalculator.GetBalancesAsync; edit: balance ledger |
LegacyPaymentCreditsCalculator.cs, ClientManagementServices.cs |
| H2 | Reports comprehensive/client: nomes via User |
ReportGenerationService.cs |
| H3 | Settings ThemeFolder lê/grava DataFolder no MySQL |
ClientManagementServices.cs (CompanySettingsService) |
| Scan | WhereCompany / WhereCompanyClient em pastas DWR/API + nomes via User |
ApiServices.cs, DwrEfQueries.cs |
| Bonus | total_price FLOAT→decimal conversion (evita 500 na lista credits) |
LegacyMySqlModelExtensions.MapPayment |
Smoke 2026-07-26 (VM)
- Login
demoadmin→ Clients → Edit/3 - Load: FirstName/LastName/Email + Credits ledger (
330.56) - Save round-trip: FirstName + Folder persistidos em
users/user_client - Java
:8099/d2u/login.do= 200; workers ingest OFF /MedTrans/Jobs/DragDrop= 404 (rota; Create OK)
CRITICAL (histórico — resolvido)
C1 — Client edit name/email (RESOLVIDO 2026-07-26)
Identity lida/gravada em User quando UsesLegacyMySql().
C2 — Client.Folder (RESOLVIDO 2026-07-26)
Mapeado folder em MapClient.
HIGH (histórico)
H1–H3 — RESOLVIDOS 2026-07-26
Ver tabela Fixed acima.
H4 — Observabilidade ausente até 2026-07-25
- Mitigado:
docs/GRAFANA-D2UNET.md+grafana/d2unet-overview.json— não no compose da VM
Área matrix
| Área | Paridade | Notas |
|---|---|---|
| Auth / SingleCompany / cookies HTTP | ~98% | Fixes verificados |
| Schema MySQL core jobs/users/org | ~97% | Folder + credits ledger OK |
| Client admin CRUD identity | ~95% | C1/C2 fix smoke OK |
| Jobs list/create/search/dashboard | ~95% | DragDrop rota 404 |
| Workflow FSM | ~94% | Engine + emails ops |
DWR / aliases .do |
~95% | Company scope clients OK |
| Workers (ops dual-run) | N/A | Java owns ingest |
| Reports | ~94% | Nomes via User |
| UI theme/assets | ~96% | Settings↔data_folder alinhado |
Top acções restantes
- Piloto empresa B 7 dias +
acceptance-checklist-struts.md - Confirmar rota DragDrop (404) vs Create
- Import Grafana dashboard (ops)
- Manter ingest .NET OFF até cutover workers
Não tocado (intencional)
- Java / Tomcat / compose
D2U-PRDem 192.168.0.29 - Secrets não copiados para vault