Second Brain

Implementação — o que está construído

D2U.NET · Flows · Arquitetura · Testes · Roadmap · Migracao-Legado

Snapshot do código em C:\Projetos\D2U.NET\D2U.NET\d2u.net\.
Estado: paridade 100% (Onda 9) + Role Inbox pós-onda — cutover operacional ⏳.

Solution

d2u.net.slnx
src/       → Domain · Application · Persistence · Infrastructure · Web · Workers
tools/     → D2U.Tools.Etl (+ Etl.Tests)
tests/     → 5 projetos + Testing — **388 pass** — [Testes](/n/Projects/D2U.NET/Testes) · [Casos-de-Teste](/n/Projects/D2U.NET/Casos-de-Teste)
Docs_New/  → spec + flows 01–22
Onda Escopo Doc repo
0–1 Docs, scaffold, auth, PostgreSQL onda1-scaffold-completo.md
2 Jobs FSM, login, DWR base (flows 01–04) onda2-completa.md
3 Users/manage CRUD + policy (flow 07) onda3-completa.md
4 Payments + webhooks + checkout (flow 05) onda4-completa.md
5 11 relatórios PDF/Excel/CSV (flows 06, 12) onda5-completa.md
6 Workers, FTP, integrações (flows 09–10, 16–22) onda6-completa.md
7 SuperUser CRUD (flow 08) onda7-completa.md
8 ETL MySQL→PG, redirects, hardening onda8-etl-completa.md
9 Paridade total legado onda9-paridade-completa.md

PostgreSQL 4NF ✅

Detalhe: Docs_New/database/postgresql-schema-design.md · Base-de-Dados

Item Valor
Motor PostgreSQL 16 (Docker)
Schema d2u
Provider Npgsql.EntityFrameworkCore.PostgreSQL
Migrations PostgresInitialCreate + fase 2 + Onda9ContentAndContractors + MraOrganizations
Tabelas 16 core + payments, audit, rules, templates, contractors, xml_transcript*, …
Compat externa APIs/DTOs inalterados — enums ordinais legado
docker compose up -d
dotnet ef database update --project src/D2U.Persistence --startup-project src/D2U.Web

API externa ✅

Detalhe: Docs_New/implementation/api-externa-completa.md

Grupo Rotas Serviços
DWR /api/dwr/* (~47) IDwrApiService — EF persistido
Mobile /api/mobile/* IMobileApiService
Auth /api/auth/authenticate IAuthenticateUserService
Integrações /api/integrations/* IIntegrationApiService
Webhooks /webhooks/stripe\|realex\|paypal PaymentProcessingService + idempotência
Documentos /api/jobs/{id}/document/save IDocumentApiService
Outside API POST /Outside/Report/Search, GET /Outside/Download/{token} IOutsidePortalService
Aliases legados /webhook, /xmlrpc, /SPS*, servlets uploader, *.do LegacyIntegrationAliasEndpoints
Data folder /data/* DataFolderEndpoints (anti path-traversal)

Filtros: CompanyScope, ApiKey, MobileAuth, OutsideToken


UI Razor ✅ (~85 PageModels)

Detalhe: Docs_New/implementation/navegacao-stub-completa.md · onda9-paridade-completa.md

Item Valor
Páginas Razor ~85 PageModels funcionais
Layouts _MedTransLayout, _LoginLayout, _SuperUserLayout, _OutsideLayout
Navigator _MedTransNavigator — menu completo legado
CSS/imagens dictate2us-app/web/css + web/images
Zero stubs 28 ecrãs que eram stub → implementados (Onda 9)

Áreas: MedTrans (Account, Dashboard, Jobs, Users, Manage, Reports, Templates, Settings), SuperUser, Outside.

Funcionalidades chave: job create/edit/split/delete/download, checkout Stripe/RealEx/PayPal, 11 relatórios, contractors, templates, XML transcript, registo/activate/forgot, MFA email.


Camadas

D2U.Domain

  • Entidades core + fase 2: PaymentTransaction, Organization, WorkType, AssignmentRule, DocumentTemplate, Contractor, XmlTranscript*, …
  • JobWorkflowAction, JobStatusGroups, enums legado

D2U.Application

  • Auth, company, job creation/edit, workflow FSM
  • IPaymentService, ISuperUserService, IReportGenerationService, IRegistrationService, IJobFileDownloadService
  • API interfaces (IApiServices.cs), validators

D2U.Infrastructure

  • AuthService, PaymentService, SuperUserService, JobCreationService, JobEditService
  • JobDashboardService — inbox/dashboard por role (legado JobDAOImpl.generateRestrictionRuleByUser)
  • DwrApiService, MobileApiService, IntegrationApiService, ReportGenerationService
  • Webhooks Stripe/RealEx/PayPal, OutsidePortalService
  • Workers wiring, FluentFTP egress, MailKit email

D2U.Web

  • Middleware: SecurityHeaders, CompanyResolution, CompanyTheme, LegacyDoRedirectMiddleware
  • MapApiEndpoints() + MapRazorPages() + legacy alias endpoints
  • Cookie auth d2u.auth, CSRF d2u.csrf, RequireSuperUser
  • ReportPageModelBase — gate CanViewReports

D2U.Persistence

  • Npgsql PostgreSQL 16 — schema d2u, query filter multi-tenant CompanyId
  • Seed demo: company demo, users admin/client/superadmin

D2U.Workers

  • MailReader, FtpScanner, Lexacom download/checker, SpeechLive upload/retry
  • Vendor egress outbox, BigHand/TASP ingress, Quartz cleanup jobs

D2U.Tools.Etl

  • CLI migrate / validate / copy-files
  • 15 migradores core + 5 fase 2 (templates, contractors, …)
  • Script: tools/etl/mysql-to-postgres.ps1

Role Inbox — pós-Onda 9 ✅ (2026-06-12)

Review: Docs_New/reviews/2026-06-12-workflow-inbox-dashboard-review.md

Paridade JobListAction / JobDAOImpl.generateRestrictionRuleByUser / JobManagerImpl:

Perfil Inbox / dashboard
Admin / Supervisor Empresa inteira
Client ClientId próprio; UI colapsa staff → InProcess
MRA Jobs dos clients das orgs em user_mra_organization
Transcriber / Editor / QA Estágio do papel + AssignedUserId = eu (search relaxa)

Workflow corrigido:

  • JobWorkflowEngine.TryTransition enforced (antes qualquer user podia FinishQa)
  • AssignTranscriber grava AssignedUserId + JobAssignment
  • Audit log com userId real
  • JobActor(UserId, Role) propagado em Dashboard, Jobs, Search, Detail, Edit…

Código: JobDashboardService.cs, JobWorkflowService.cs, migration MraOrganizations


Testes

388 pass · 0 skip · 0 failTestes

Projeto Pass
D2U.UnitTests 122
D2U.IntegrationTests 215
D2U.ContractTests 24
D2U.WorkersTests 25
D2U.Tools.Etl.Tests 2

URLs principais

Route Tipo
/MedTrans/Account/Login UI + MFA
/MedTrans/Dashboard UI + nav
/MedTrans/Jobs UI CRUD + workflow
/MedTrans/Download/* Downloads ficheiros
/MedTrans/Account/Checkout Payments UI
/api/dwr/organizations API (auth)
/api/mobile/login API
/webhooks/stripe Webhook
/xmlrpc XML-RPC wire protocol
/Outside/Report?token=… Outside UI
/SuperUser/Dashboard SuperUser CRUD
/health Health

Mapa por flow: Flows


Pendente (operacional / hardening)

  • ETL staging: migrate -Fresh + validate + dry-run fase 2
  • Acceptance checklist manual + tools/scan/staging-scan.ps1
  • Cutover DNS conforme cutover-etl.md
  • Config produção: Email:*, Security:TokenSigningKey, Workers:Egress:*, Mfa:Required
  • Code review: thank-you pages não devem creditar via GET em produção (usar só webhooks)

Credenciais dev

Todos MedTrans: password ChangeMe123!

User Role
admin Administrator
supervisor Supervisor
client Client
mra MRA
transcriber Transcriber
editor Editor
qa QA
contractor ContractorAdministrator
superadmin SuperUser
API X-D2U-Api-Key: test-integration-key

Comandos

cd C:\Projetos\D2U.NET\D2U.NET\d2u.net
dotnet build d2u.net.slnx
dotnet test d2u.net.slnx
dotnet run --project src/D2U.Web/D2U.Web.csproj