<workflowRun _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><action _class='hudson.model.CauseAction'><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by younex1</shortDescription></cause></action><action></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmain _class='hudson.plugins.git.util.Build'><buildNumber>15</buildNumber><marked><SHA1>49f3d63e2f1169fda0b321572605cb5f9b6fcd5e</SHA1><branch><SHA1>49f3d63e2f1169fda0b321572605cb5f9b6fcd5e</SHA1><name>refs/remotes/origin/main</name></branch></marked><revision><SHA1>49f3d63e2f1169fda0b321572605cb5f9b6fcd5e</SHA1><branch><SHA1>49f3d63e2f1169fda0b321572605cb5f9b6fcd5e</SHA1><name>refs/remotes/origin/main</name></branch></revision></refsremotesoriginmain></buildsByBranchName><lastBuiltRevision><SHA1>49f3d63e2f1169fda0b321572605cb5f9b6fcd5e</SHA1><branch><SHA1>49f3d63e2f1169fda0b321572605cb5f9b6fcd5e</SHA1><name>refs/remotes/origin/main</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/blut24-landing.git</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.workflow.cps.EnvActionImpl'></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'></action><action></action><action></action><action></action><building>false</building><displayName>#15 49f3d63</displayName><duration>30604</duration><estimatedDuration>28038</estimatedDuration><fullDisplayName>blut24-landing #15 49f3d63</fullDisplayName><id>15</id><keepLog>false</keepLog><number>15</number><queueId>5476</queueId><result>SUCCESS</result><timestamp>1785257388243</timestamp><url>https://jenkins.younex.de/job/blut24-landing/15/</url><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/locales/de.ts</affectedPath><affectedPath>scripts/test-registration.mjs</affectedPath><affectedPath>server/api/registration/confirm.post.ts</affectedPath><affectedPath>server/utils/i18n.ts</affectedPath><affectedPath>app/locales/en.ts</affectedPath><affectedPath>README.md</affectedPath><commitId>49f3d63e2f1169fda0b321572605cb5f9b6fcd5e</commitId><timestamp>1785257378000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>registration: keep the manual-review promise — gate ERP onboarding on needs_manual_approval

HANDOFF §4 (ERP repo, reference/blut24/HANDOFF.md). needs_manual_approval gated
nothing: couriers and no-domain clinics — exactly the registrations nothing
could verify — were auto-onboarded into iDempiere with live credentials mailed,
while form, confirmation mail and welcome mail promised a manual review.
confirm.post.ts now skips onboarding for them and records erp_status
'manual-approval'; the operator provisions them by hand. Verified and test
registrations stay fully automatic.

Copy made truthful: the test-domain notice no longer claims "marked for manual
approval" (test domains auto-activate; they are marked internally as test
registrations), and the manual-review texts are courier-neutral instead of
explaining a clinic-only domain lookup.

alreadyConfirmed now returns credentialsSent, read from the stored ERP payload
(setErpResult persists it).

README: the ERP auth section described a Bearer scheme the code never uses —
the token travels as the logship_it cookie, and the ERP's send-credentials
route is now gated on exact equality with the instance's IDEMPIERETOKEN, so
ERP_SERVICE_TOKEN must be exactly that value.

test-registration.mjs: courier confirm asserts needsManualApproval,
credentialsSent=false and erp_status 'manual-approval' (83/83 green).

Co-Authored-By: Claude Opus 4.8 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-28 18:49:38 +0200</date><id>49f3d63e2f1169fda0b321572605cb5f9b6fcd5e</id><msg>registration: keep the manual-review promise — gate ERP onboarding on needs_manual_approval</msg><path><editType>edit</editType><file>scripts/test-registration.mjs</file></path><path><editType>edit</editType><file>app/locales/en.ts</file></path><path><editType>edit</editType><file>README.md</file></path><path><editType>edit</editType><file>app/locales/de.ts</file></path><path><editType>edit</editType><file>server/api/registration/confirm.post.ts</file></path><path><editType>edit</editType><file>server/utils/i18n.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit><inProgress>false</inProgress><previousBuild><number>14</number><url>https://jenkins.younex.de/job/blut24-landing/14/</url></previousBuild></workflowRun>