Files
truenas-stacks/home/doris-kitchen/app/templates/dashboard.html
2026-05-21 23:31:53 +00:00

132 lines
5.4 KiB
HTML

{% extends 'base.html' %}
{% block content %}
<section class="hero-grid evidence-board dossier-grid">
<article class="card spotlight evidence-card">
<div class="case-legend">
<span class="section-label">Kitchen queue board</span>
<span class="pill">Case focus: approvals</span>
</div>
<h2>Leanne picks. Doris learns.</h2>
<p class="muted">Queue up web recipes, teach the household profile with yes/no decisions, and keep KitchenOwl for the final recipes worth keeping.</p>
<div class="action-row">
<button type="button" id="seed-button">Seed suggestion queue</button>
<a class="button-link" href="/search">Search a recipe idea</a>
</div>
</article>
<article class="card stats-card evidence-card">
<div class="case-legend">
<span class="section-label">Case counts</span>
<span class="pill">Pantry Evidence</span>
</div>
<div class="stats-grid">
<div><span>Suggested</span><strong id="count-suggested">0</strong></div>
<div><span>Approved</span><strong id="count-approved">0</strong></div>
<div><span>Saved</span><strong id="count-saved">0</strong></div>
<div><span>Rejected</span><strong id="count-rejected">0</strong></div>
<div><span>Plans</span><strong id="count-plans">0</strong></div>
<div><span>Failures</span><strong id="count-failed-searches">0</strong></div>
<div><span>Import flags</span><strong id="count-import-flags">0</strong></div>
</div>
<p class="muted dossier-note" id="backend-note">Loading state…</p>
</article>
</section>
<section class="split-grid dossier-grid">
<article class="card evidence-card">
<div class="section-heading">
<div>
<p class="section-label">Soft blacklist</p>
<h2>Terms to push down</h2>
</div>
<span class="pill">Lead filter</span>
</div>
<p class="muted case-legend">Mark ingredients, cuisines, or phrases Doris should treat like weak leads.</p>
<form id="blacklist-form" class="inline-form">
<input type="text" id="blacklist-name" placeholder="Add ingredient or term">
<button type="submit">Add / enable</button>
</form>
<div id="blacklist-items" class="chip-list muted">Loading…</div>
</article>
<article class="card evidence-card">
<div class="section-heading">
<div>
<p class="section-label">Preference notes</p>
<h2>Household guidance</h2>
</div>
<span class="pill">Witness notes</span>
</div>
<form id="settings-form" class="stack-form">
<label>Notes
<textarea id="profile-notes" rows="4" placeholder="Budget, texture issues, favourite cuisines, or anything else useful."></textarea>
</label>
<label>Auto-import threshold
<input type="number" id="auto-import-threshold" min="50" max="100">
</label>
<label class="checkbox-row">
<input type="checkbox" id="auto-import-enabled">
<span>Allow auto-import when Doris is extremely confident</span>
</label>
<button type="submit">Save settings</button>
</form>
</article>
</section>
<section class="card evidence-board">
<div class="section-heading">
<div>
<p class="section-label">Queue</p>
<h2>Recent recipe suggestions</h2>
</div>
<span class="pill">Kitchen queue board</span>
</div>
<p class="muted case-legend">Review the current stack like pinned case cards: promote the good leads, bury the junk.</p>
<div id="suggestion-list" class="suggestion-grid muted dossier-grid">Loading…</div>
</section>
<section class="card evidence-board">
<div class="section-heading">
<div>
<p class="section-label">Import repair queue</p>
<h2>Flag recipe import problems</h2>
</div>
<a class="button-link" href="/imports">Open import review</a>
</div>
<p class="muted case-legend">Bad imports get tagged like busted evidence bags so Doris can come back and repair them later.</p>
<form id="import-flag-form" class="stack-form intake-docket">
<label>Recipe URL or KitchenOwl link
<input type="url" id="import-flag-url" placeholder="https://...">
</label>
<label>Recipe title (optional)
<input type="text" id="import-flag-title" placeholder="Halal Guys Chicken over Rice But Better">
</label>
<label>Issue type
<select id="import-flag-type">
<option value="formatting">Formatting</option>
<option value="ingredients">Ingredients</option>
<option value="timings">Timings</option>
<option value="duplicate">Duplicate</option>
<option value="other">Other</option>
</select>
</label>
<label>What went wrong
<textarea id="import-flag-notes" rows="4" placeholder="Steps merged together, ingredients split badly, wrong yield, duplicate recipe, or whatever else looks off."></textarea>
</label>
<button type="submit">Flag for Doris review</button>
</form>
<div id="import-flag-preview" class="failure-list muted dossier-grid">Loading flagged imports…</div>
</section>
<section class="card evidence-board">
<div class="section-heading">
<div>
<p class="section-label">Troubleshooting</p>
<h2>Recent failed searches</h2>
</div>
<a class="button-link" href="/failures">Open failure review</a>
</div>
<p class="muted case-legend">Search misses stay pinned on the board until Doris can turn them into usable dinner intelligence.</p>
<div id="failed-search-preview" class="failure-list muted dossier-grid">Loading…</div>
</section>
{% endblock %}