Files
cnx_vinyl/site/public/index.html
T
grabowski 22f04ee9a1
Deploy test site / deploy (push) Successful in 24s
Plant assistant mockup: operator, management, sales
docs/plant-assistant.html (test site /demos/plant-assistant/): the
plant assistant on vinyl-ai as three roles see it. Operator at the C1
press kiosk in Thai or English with push to talk (non-fill rejects
explained from cycle rows, lot change and press hall humidity, the
stamper change procedure quoted from the approved version, a lot on
hold, a refused price question, a safety question answered word for
word); management at a desk (output and yield per press against the
plan basis, steam per record against scale.md, orders at risk, the
weekly note, payroll refused); sales on a phone (order status and ship
window, repress feasibility from archived mothers and the standby
calendar, repress leads, a test pressing status, fans' addresses
refused). Each answer carries numbered sources; the side panel shows
the tool calls (ERPNext as the asker's role, the PostgreSQL replica,
VictoriaMetrics, documents, event log) on premises with the internet
not used; action buttons create drafts only. Deep links
#role=<role>&q=<id>, light and dark theme. Invented data; names match
the factory console demo.

plant-assistant.md: mockup link; sales and customer service row in
"Who asks what"; sales drafts (quotation, CRM opportunity, message).
README, site index and site/build.sh link and publish the page.
2026-10-27 09:50:42 +07:00

203 lines
9.1 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<title>CNX Vinyl · internal test site</title>
<script>
(function(){var t=null;try{t=localStorage.getItem("cnx-theme")}catch(e){}
if(t!=="light"&&t!=="dark")t=window.matchMedia&&matchMedia("(prefers-color-scheme: light)").matches?"light":"dark";
document.documentElement.setAttribute("data-theme",t);})();
</script>
<style>
:root {
--bg: #0a0f1a; --panel: #0f1626; --stroke: #2a3a56;
--fg: #d6deeb; --mute: #8a97b0; --accent: #3ddc84;
}
:root { color-scheme: dark; }
html[data-theme=light] {
color-scheme: light;
--bg: #f4f6fa; --panel: #ffffff; --stroke: #cfd8e6;
--fg: #1b2533; --mute: #5b6880; --accent: #0e8f4f;
}
main { position: relative; }
.themebtn {
position: absolute; top: 48px; right: 20px; background: var(--panel); color: var(--fg);
border: 1px solid var(--stroke); border-radius: 5px; padding: 6px 12px; font: inherit; font-size: 14px; cursor: pointer;
}
.themebtn:hover { border-color: var(--accent); }
* { box-sizing: border-box; }
body {
margin: 0; background: var(--bg); color: var(--fg);
font: 16px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
main { max-width: 760px; margin: 0 auto; padding: 48px 20px; }
h1 { margin: 0; font-size: 28px; letter-spacing: 0.02em; }
.tag {
display: inline-block; margin-top: 6px; padding: 2px 8px;
border: 1px solid var(--stroke); border-radius: 4px;
color: var(--mute); font-size: 13px;
}
p.lead { color: var(--mute); margin: 18px 0 32px; }
h2 {
font-size: 13px; text-transform: uppercase; letter-spacing: 0.08em;
color: var(--mute); margin: 32px 0 12px;
}
ul { list-style: none; margin: 0; padding: 0; }
li a {
display: block; padding: 14px 16px; margin-bottom: 10px;
background: var(--panel); border: 1px solid var(--stroke); border-radius: 6px;
color: var(--fg); text-decoration: none;
}
li a:hover, li a:focus-visible { border-color: var(--accent); }
li strong { display: block; color: var(--accent); font-weight: 600; }
li span { color: var(--mute); font-size: 14px; }
footer { margin-top: 40px; color: var(--mute); font-size: 13px; }
</style>
</head>
<body>
<main>
<button class="themebtn" id="themeBtn" type="button">Light mode</button>
<h1>CNX Vinyl</h1>
<span class="tag">internal test site</span>
<p class="lead">
Demos and static pages from the CNX Vinyl planning repository, a vinyl
pressing plant planned near Chiang Mai. Shared by link only and not
indexed. Figures in the demos are planning estimates.
</p>
<h2>Investor deck</h2>
<ul>
<li>
<a href="pitch/">
<strong>Investment proposal, Plan B (slides)</strong>
<span>The plant in 16 slides for BOI, bank and institutional
readers, proposing Plan B (~215M THB), the plan the main investor
wants, with Plan A as the comparison: the opportunity, the full
chain under one roof, the platform, site and utilities, Plan B by
block and why Plan B, the operating picture with its adverse case,
cash and returns, BOI promotion and its conditions, schedule,
risks, team and the ask. Light and dark (press T), P for the
presenter view; a PDF of each theme is linked in the control
bar.</span>
</a>
</li>
</ul>
<h2>Demos</h2>
<ul>
<li>
<a href="demos/plant-operation/">
<strong>Plant overview (simulated SCADA)</strong>
<span>The launch plant animated at real cycle times: one Newbilt
Duplex system and one Classic press, Pheenix Alpha electroforming and
Sibert stamper prep, from PVC intake and the material lab through pressing,
inspection, packaging and fulfillment, with the artist gates,
utilities and energy alongside. Real time up to a day in 24 s;
every station is clickable; on a phone, turn it sideways and pinch
to zoom.</span>
</a>
</li>
<li>
<a href="demos/fleet-calculator/">
<strong>Plant and business plan calculator</strong>
<span>Set the records a year and configure the plant: presses,
galvanics in-house or bought stampers, cutting in-house or
outsourced, metrology, solar, steam fuel and more. It builds the
investment from the launch-plant blocks, checks it against the
investor's 180M and 216M THB, runs the money a year and a ten-year
cash sketch, and lists what the plant needs, from the launch plant
to a fully equipped press hall. Every assumption is editable and a
scenario can be shared by link.</span>
</a>
</li>
<li>
<a href="demos/steam-cooling/">
<strong>Steam and cooling plant</strong>
<span>The utilities for the launch plant (one Duplex system and one
Classic on two boiler and two chiller modules, rooms built for four)
as a clickable process diagram: boiler bank, steam header and
condensate return, chiller bank, plate heat exchanger and a branch to
every press position. Switch between the launch plant, the Duplex
commissioned first, the second Duplex growth option and one module
down to see demand against installed capacity.</span>
</a>
</li>
<li>
<a href="demos/make-a-record/">
<strong>Make a record (investor demo)</strong>
<span>The artist platform as a customer sees it: design a record
against a to-scale mock-up, check the music and artwork, see one
clear price, let fans fund the pressing, follow production through
the artist approvals and open the record passport of one delivered
copy. Switch on investor notes for the business case behind each
step, or press Tour for a one-minute walk-through. Prices in THB,
USD or EUR; English or Thai.</span>
</a>
</li>
<li>
<a href="demos/factory/">
<strong>Factory console and order status (investor demo)</strong>
<span>The factory application on a simulated plant day: a Newbilt
Duplex system and a Classic with live counters, work orders for
every station, every record through optical
inspection, audio samples, the material lab gate, stamper
metrology and the hash-chained event log. Switch to the customer
portal to follow the same orders: steps and approvals, copies
pressed so far, lab and inspection results. Simulated data.</span>
</a>
</li>
<li>
<a href="demos/plant-assistant/">
<strong>Plant assistant, vinyl-ai (mockup)</strong>
<span>Ask the plant: an operator at the press kiosk in Thai by push
to talk, management at a desk, sales on a phone. Every answer shows
its sources and the tool calls behind it, drafts records for a
person to submit, quotes safety steps word for word and refuses what
the asker may not see. Self-hosted on premises. Invented data.</span>
</a>
</li>
<li>
<a href="demos/order/">
<strong>Order a record (step by step)</strong>
<span>The order tool as a step-by-step configurator: size, discs,
vinyl colour and effects, labels, sleeves, jacket and finish,
extras, mastering and cutting, test pressings, shipping, track list
and artwork, each step with its choices, beside a large live picture
of the record that changes with every choice and a running price and
ship date. Then how to pay: directly, or a fan-funded campaign with
the fans needed and what the artist keeps. Ends in a review that
lists what is still missing and the itemised quote. Indicative demo
prices; nothing is uploaded or sent.</span>
</a>
</li>
<li>
<a href="demos/artist-order/">
<strong>Artist ordering and fan funding</strong>
<span>Configure a record, type the track list or drop the master
files and artwork (checked in the browser, nothing is uploaded), get
an itemised offer with the price per copy against quantity and the
lead time, then order directly or run a fan-funded campaign to a
funded or missed end and follow the production through the artist
approvals. Indicative demo prices.</span>
</a>
</li>
</ul>
<footer>Built from <code>site/</code> in the cnx_vinyl repository.</footer>
</main>
<script>
(function(){
var b=document.getElementById("themeBtn"),de=document.documentElement;
function set(t,save){de.setAttribute("data-theme",t);if(save){try{localStorage.setItem("cnx-theme",t)}catch(e){}}
b.textContent=t==="light"?"☾ Dark mode":"☀ Light mode";b.title="Switch to "+(t==="light"?"dark":"light")+" mode";}
set(de.getAttribute("data-theme")||"dark",false);
b.addEventListener("click",function(){set(de.getAttribute("data-theme")==="light"?"dark":"light",true);b.blur();});
var mq=window.matchMedia&&matchMedia("(prefers-color-scheme: light)");
if(mq&&mq.addEventListener)mq.addEventListener("change",function(e){var s=null;try{s=localStorage.getItem("cnx-theme")}catch(_){}if(!s)set(e.matches?"light":"dark",false);});
})();
</script>
</body>
</html>