diff --git a/web/index.html b/web/index.html index eae80c7..06a5f41 100644 --- a/web/index.html +++ b/web/index.html @@ -447,17 +447,17 @@

-
- Acceptance Criteria -

Required failures produce FAIL; preferred warnings produce CONDITIONAL PASS.

+
+ Acceptance Criteria +

Required failures produce FAIL; preferred warnings produce CONDITIONAL PASS.

-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/web/js/app.js b/web/js/app.js index fc7b855..ad074b1 100644 --- a/web/js/app.js +++ b/web/js/app.js @@ -942,6 +942,15 @@ function getPrimaryResult(res) { }; } +// Same wording as the profile-selection cards above (Optimization Settings), +// reused here so the comparison table explains each candidate strategy +// instead of showing a bare name. +const CANDIDATE_DESCRIPTIONS = { + feasibility_best: 'Dynamic-programming candidate with maximum CAI inside the requested GC range when feasible.', + gc_target: 'Profile-engine comparison that prioritizes proximity to the active host GC band.', + high_cai: 'Profile-engine comparison that favors high codon adaptation index.' +}; + function renderCandidateComparison(res) { if (!elements.candidateComparisonContainer || !elements.candidateComparisonBody) return; if (!Array.isArray(res.candidates) || res.candidates.length === 0) { @@ -955,9 +964,13 @@ function renderCandidateComparison(res) { const isRecommended = candidate.id === recommendedId; const status = candidate.automated_decision || (candidate.validator_status === 'pass' ? 'PASS' : 'REVIEW'); const aaStatus = candidate.validator_status === 'pass' ? '100%' : 'Review'; + const description = CANDIDATE_DESCRIPTIONS[candidate.id]; + const nameCell = description + ? `${escapeHtml(candidate.label || candidate.id)}i${escapeHtml(description)}` + : escapeHtml(candidate.label || candidate.id); return ` - ${candidate.label || candidate.id}${isRecommended ? ' ★' : ''} + ${nameCell}${isRecommended ? ' ★' : ''} ${Number(candidate.cai || 0).toFixed(3)} ${Number(candidate.gc_percent || 0).toFixed(1)} ${Number(candidate.gc_window_min || 0).toFixed(1)}-${Number(candidate.gc_window_max || 0).toFixed(1)}