609 lines
25 KiB
HTML
609 lines
25 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>AI + Compliance Hub - Regulation Chat</title>
|
|
<style>
|
|
:root {
|
|
--bg: #fafafa;
|
|
--surface: #ffffff;
|
|
--surface-warm: var(--surface);
|
|
--fg: #111111;
|
|
--fg-2: var(--fg);
|
|
--muted: #6b6b6b;
|
|
--meta: var(--muted);
|
|
--border: #e5e5e5;
|
|
--border-soft: var(--border);
|
|
--primary: #e20074;
|
|
--accent: var(--primary);
|
|
--accent-on: #ffffff;
|
|
--accent-hover: color-mix(in oklab, var(--accent), black 8%);
|
|
--accent-active: color-mix(in oklab, var(--accent), black 14%);
|
|
--success: #17a34a;
|
|
--warn: #eab308;
|
|
--danger: #dc2626;
|
|
--font-display: "TeleNeoWeb-Bold", "TeleNeoWeb-Medium", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
--font-body: "TeleNeoWeb-Regular", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
--font-mono: ui-monospace, "JetBrains Mono", "SF Mono", Menlo, monospace;
|
|
--text-xs: 12px;
|
|
--text-sm: 14px;
|
|
--text-base: 16px;
|
|
--text-lg: 20px;
|
|
--text-xl: 24px;
|
|
--text-2xl: 32px;
|
|
--text-3xl: 48px;
|
|
--text-4xl: 64px;
|
|
--leading-body: 1.5;
|
|
--leading-tight: 1.2;
|
|
--tracking-display: -0.01em;
|
|
--space-1: 4px;
|
|
--space-2: 8px;
|
|
--space-3: 12px;
|
|
--space-4: 16px;
|
|
--space-5: 20px;
|
|
--space-6: 24px;
|
|
--space-8: 32px;
|
|
--space-12: 48px;
|
|
--space-20: 80px;
|
|
--section-y-desktop: 80px;
|
|
--section-y-tablet: 48px;
|
|
--section-y-phone: 32px;
|
|
--radius-sm: 8px;
|
|
--radius-md: 12px;
|
|
--radius-lg: 16px;
|
|
--radius-pill: 9999px;
|
|
--elev-flat: none;
|
|
--elev-ring: 0 0 0 1px var(--border);
|
|
--elev-raised: 0 2px 8px color-mix(in oklab, var(--fg), transparent 92%);
|
|
--focus-ring: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 70%);
|
|
--motion-fast: 150ms;
|
|
--motion-base: 200ms;
|
|
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
|
|
--container-max: 1600px;
|
|
--container-gutter-desktop: 24px;
|
|
--container-gutter-tablet: 16px;
|
|
--container-gutter-phone: 12px;
|
|
--sidebar-w: 240px;
|
|
color-scheme: light;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root:not([data-theme="light"]) {
|
|
--bg: #0f1014;
|
|
--surface: #17181d;
|
|
--surface-warm: #1d1f26;
|
|
--fg: #f5f7fb;
|
|
--fg-2: #e5e8ef;
|
|
--muted: #a2a9b8;
|
|
--meta: #858d9c;
|
|
--border: #2a2d35;
|
|
--border-soft: #21242c;
|
|
--accent-hover: color-mix(in oklab, var(--accent), white 12%);
|
|
--accent-active: color-mix(in oklab, var(--accent), black 6%);
|
|
--success: #22c55e;
|
|
--warn: #facc15;
|
|
--danger: #f87171;
|
|
--elev-raised: 0 14px 36px color-mix(in oklab, black, transparent 74%);
|
|
--focus-ring: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 56%);
|
|
color-scheme: dark;
|
|
}
|
|
}
|
|
|
|
:root[data-theme="dark"] {
|
|
--bg: #0f1014;
|
|
--surface: #17181d;
|
|
--surface-warm: #1d1f26;
|
|
--fg: #f5f7fb;
|
|
--fg-2: #e5e8ef;
|
|
--muted: #a2a9b8;
|
|
--meta: #858d9c;
|
|
--border: #2a2d35;
|
|
--border-soft: #21242c;
|
|
--accent-hover: color-mix(in oklab, var(--accent), white 12%);
|
|
--accent-active: color-mix(in oklab, var(--accent), black 6%);
|
|
--success: #22c55e;
|
|
--warn: #facc15;
|
|
--danger: #f87171;
|
|
--elev-raised: 0 14px 36px color-mix(in oklab, black, transparent 74%);
|
|
--focus-ring: 0 0 0 3px color-mix(in oklab, var(--accent), transparent 56%);
|
|
color-scheme: dark;
|
|
}
|
|
|
|
:root[data-theme="light"] {
|
|
color-scheme: light;
|
|
}
|
|
* { box-sizing: border-box; }
|
|
body {
|
|
margin: 0;
|
|
background: var(--bg);
|
|
color: var(--fg);
|
|
font-family: var(--font-body);
|
|
font-size: var(--text-base);
|
|
line-height: var(--leading-body);
|
|
text-rendering: optimizeLegibility;
|
|
-webkit-font-smoothing: antialiased;
|
|
}
|
|
h1, h2, h3 {
|
|
margin: 0;
|
|
font-family: var(--font-display);
|
|
line-height: var(--leading-tight);
|
|
letter-spacing: var(--tracking-display);
|
|
}
|
|
p { margin: 0; text-wrap: pretty; }
|
|
button, input { font: inherit; }
|
|
a { color: inherit; text-decoration: none; }
|
|
a:hover { color: var(--fg); text-decoration: underline; }
|
|
|
|
/* ── Sidebar shell ── */
|
|
.app-shell { display: grid; grid-template-columns: var(--sidebar-w) 1fr; min-height: 100vh; }
|
|
.sidebar { position: sticky; top: 0; height: 100vh; overflow-y: auto; display: flex; flex-direction: column; background: var(--surface); border-right: 1px solid var(--border); z-index: 10; }
|
|
.sidebar-brand { display: flex; align-items: center; gap: 10px; height: 56px; padding: 0 16px; border-bottom: 1px solid var(--border); flex-shrink: 0; }
|
|
.brand-logo { width: 26px; height: 26px; background: var(--accent); border-radius: 6px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
|
|
.brand-logo svg { color: #fff; }
|
|
.sidebar-brand-name { font-family: var(--font-display); font-size: 13px; font-weight: 700; line-height: 1.2; }
|
|
.sidebar-brand-sub { font-size: 10px; color: var(--muted); font-family: var(--font-mono); letter-spacing: 0.04em; }
|
|
.sidebar-nav { flex: 1; padding: 12px 0; overflow-y: auto; }
|
|
.nav-group { padding: 0 8px 4px; }
|
|
.nav-group + .nav-group { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); }
|
|
.nav-group-label { font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); padding: 0 8px 6px; display: block; }
|
|
.nav-item { display: flex; align-items: center; gap: 10px; height: 36px; padding: 0 8px; border-radius: 6px; color: var(--muted); font-size: 13px; cursor: pointer; transition: background 140ms, color 140ms; position: relative; }
|
|
.nav-item:hover { background: color-mix(in oklab, var(--fg), transparent 94%); color: var(--fg); text-decoration: none; }
|
|
.nav-item.active { background: color-mix(in oklab, var(--accent), transparent 90%); color: var(--accent); font-weight: 600; }
|
|
.nav-item.active::before { content: ""; position: absolute; left: 0; top: 6px; bottom: 6px; width: 3px; border-radius: 0 3px 3px 0; background: var(--accent); }
|
|
.nav-icon { width: 16px; height: 16px; flex-shrink: 0; opacity: 0.7; }
|
|
.nav-item.active .nav-icon { opacity: 1; }
|
|
.sidebar-footer { border-top: 1px solid var(--border); padding: 10px 8px; flex-shrink: 0; display: flex; flex-direction: column; gap: 4px; }
|
|
.sidebar-user { display: flex; align-items: center; gap: 10px; padding: 8px; border-radius: 6px; cursor: pointer; }
|
|
.sidebar-user:hover { background: color-mix(in oklab, var(--fg), transparent 94%); }
|
|
.avatar { width: 30px; height: 30px; border-radius: 50%; background: var(--accent); color: #fff; font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
|
|
.sidebar-user-info { min-width: 0; }
|
|
.sidebar-user-name { font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
.sidebar-user-role { font-size: 11px; color: var(--muted); font-family: var(--font-mono); }
|
|
.sidebar-action { display: flex; align-items: center; gap: 10px; height: 34px; padding: 0 8px; border-radius: 6px; color: var(--muted); font-size: 13px; cursor: pointer; border: none; background: transparent; width: 100%; text-align: left; transition: background 140ms, color 140ms; }
|
|
.sidebar-action:hover { background: color-mix(in oklab, var(--fg), transparent 94%); color: var(--fg); }
|
|
.content-area { display: flex; flex-direction: column; min-width: 0; min-height: 100vh; }
|
|
.content-topbar { position: sticky; top: 0; z-index: 5; display: flex; align-items: center; gap: 12px; height: 56px; padding: 0 24px; border-bottom: 1px solid var(--border); background: color-mix(in oklab, var(--bg), transparent 4%); backdrop-filter: blur(10px); }
|
|
.topbar-title { font-weight: 600; font-size: 15px; color: var(--fg); flex: 1; }
|
|
.footer-status { display: inline-flex; align-items: center; gap: 8px; }
|
|
.footer-dot { width: 7px; height: 7px; border-radius: 50%; background: #19d3a2; }
|
|
@media (max-width: 700px) { .app-shell { grid-template-columns: 1fr; } .sidebar { display: none; } }
|
|
|
|
/* ── Page content ── */
|
|
.footer {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 16px;
|
|
min-height: 36px;
|
|
padding: 0 24px;
|
|
border-top: 1px solid var(--border);
|
|
color: var(--muted);
|
|
font-size: var(--text-xs);
|
|
font-family: var(--font-mono);
|
|
letter-spacing: 0.12em;
|
|
text-transform: uppercase;
|
|
background: color-mix(in oklab, var(--bg), var(--surface) 12%);
|
|
}
|
|
.page {
|
|
max-width: 1600px;
|
|
margin: 0 auto;
|
|
padding: 24px;
|
|
display: grid;
|
|
gap: 20px;
|
|
}
|
|
.hero {
|
|
display: flex;
|
|
align-items: end;
|
|
justify-content: space-between;
|
|
gap: 20px;
|
|
}
|
|
.hero h1 { font-size: clamp(30px, 4vw, 44px); }
|
|
.hero p { max-width: 72ch; color: var(--muted); }
|
|
.eyebrow {
|
|
color: var(--accent);
|
|
font-family: var(--font-mono);
|
|
font-size: var(--text-xs);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
margin-bottom: 8px;
|
|
}
|
|
.shell {
|
|
display: grid;
|
|
grid-template-columns: 280px minmax(0, 1fr) 320px;
|
|
gap: 16px;
|
|
min-height: 760px;
|
|
}
|
|
.card {
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-md);
|
|
background: var(--surface);
|
|
padding: 18px;
|
|
min-width: 0;
|
|
}
|
|
.section-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 12px;
|
|
margin-bottom: 16px;
|
|
}
|
|
.section-head h2 { font-size: var(--text-xl); }
|
|
.helper {
|
|
color: var(--muted);
|
|
font-size: var(--text-sm);
|
|
}
|
|
.history,
|
|
.quick-list,
|
|
.sources,
|
|
.messages {
|
|
display: grid;
|
|
gap: 12px;
|
|
}
|
|
.history-item,
|
|
.quick-item,
|
|
.source-item,
|
|
.message {
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-sm);
|
|
background: color-mix(in oklab, var(--surface), var(--bg) 14%);
|
|
padding: 14px;
|
|
}
|
|
.history-item.active {
|
|
background: color-mix(in oklab, var(--accent), white 92%);
|
|
border-color: color-mix(in oklab, var(--accent), white 70%);
|
|
}
|
|
.pill,
|
|
.status {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
width: fit-content;
|
|
padding: 4px 10px;
|
|
border-radius: var(--radius-pill);
|
|
border: 1px solid var(--border);
|
|
font-size: var(--text-xs);
|
|
font-family: var(--font-mono);
|
|
}
|
|
.status::before {
|
|
content: "";
|
|
width: 7px;
|
|
height: 7px;
|
|
border-radius: 999px;
|
|
background: currentColor;
|
|
}
|
|
.status.ok { color: var(--success); }
|
|
.status.warn { color: color-mix(in oklab, var(--warn), black 24%); }
|
|
.status.risk { color: var(--danger); }
|
|
.mono {
|
|
font-family: var(--font-mono);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.chat-column {
|
|
display: grid;
|
|
grid-template-rows: auto 1fr auto;
|
|
gap: 16px;
|
|
min-height: 0;
|
|
}
|
|
.messages {
|
|
align-content: start;
|
|
overflow: auto;
|
|
min-height: 0;
|
|
padding-right: 4px;
|
|
}
|
|
.message.assistant {
|
|
background: color-mix(in oklab, var(--surface), var(--bg) 8%);
|
|
}
|
|
.message.user {
|
|
background: color-mix(in oklab, var(--accent), white 92%);
|
|
border-color: color-mix(in oklab, var(--accent), white 70%);
|
|
}
|
|
.message-top {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 12px;
|
|
margin-bottom: 10px;
|
|
}
|
|
.composer {
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-md);
|
|
background: var(--surface);
|
|
padding: 14px;
|
|
display: grid;
|
|
gap: 12px;
|
|
}
|
|
.input {
|
|
min-height: 52px;
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-sm);
|
|
background: color-mix(in oklab, var(--surface), var(--bg) 8%);
|
|
padding: 0 14px;
|
|
color: var(--fg);
|
|
width: 100%;
|
|
}
|
|
.input:focus-visible,
|
|
.quick-item:focus-visible,
|
|
.history-item:focus-visible,
|
|
.btn:focus-visible {
|
|
outline: none;
|
|
box-shadow: var(--focus-ring);
|
|
}
|
|
.btn-row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
.btn {
|
|
min-height: 44px;
|
|
padding: 0 16px;
|
|
border-radius: var(--radius-sm);
|
|
border: 1px solid var(--border);
|
|
background: transparent;
|
|
color: var(--fg);
|
|
}
|
|
.btn-primary {
|
|
background: var(--accent);
|
|
border-color: var(--accent);
|
|
color: var(--accent-on);
|
|
}
|
|
.btn-primary:hover {
|
|
background: var(--accent-hover);
|
|
border-color: var(--accent-hover);
|
|
}
|
|
.source-item strong,
|
|
.history-item strong,
|
|
.quick-item strong {
|
|
display: block;
|
|
margin-bottom: 6px;
|
|
}
|
|
.citation {
|
|
margin-top: 10px;
|
|
padding-top: 10px;
|
|
border-top: 1px solid var(--border);
|
|
color: var(--muted);
|
|
font-size: var(--text-sm);
|
|
}
|
|
@media (max-width: 1320px) {
|
|
.shell { grid-template-columns: 1fr; }
|
|
.hero { flex-direction: column; align-items: start; }
|
|
}
|
|
@media (max-width: 760px) {
|
|
.page { padding: 12px; }
|
|
}
|
|
</style>
|
|
</head>
|
|
<body data-page="chat">
|
|
<div class="app-shell">
|
|
<!-- ── Sidebar ── -->
|
|
<aside class="sidebar">
|
|
<div class="sidebar-brand">
|
|
<div class="brand-logo">
|
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true">
|
|
<path d="M3 5.5h18v2H3zm8 2h2v11h-2zm-5 3h3v2H6zm9 0h3v2h-3zm-5 4h2v2h-2z" fill="currentColor" />
|
|
</svg>
|
|
</div>
|
|
<div>
|
|
<div class="sidebar-brand-name">T-Systems</div>
|
|
<div class="sidebar-brand-sub">Regulation Hub</div>
|
|
</div>
|
|
</div>
|
|
|
|
<nav class="sidebar-nav" aria-label="Primary">
|
|
<!-- 主导航 -->
|
|
<div class="nav-group">
|
|
<span class="nav-group-label">主导航</span>
|
|
<a class="nav-item" href="index.html">
|
|
<svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
<path d="M3 9.5L12 3l9 6.5V20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.5z"/><path d="M9 21V12h6v9"/>
|
|
</svg>
|
|
概览
|
|
</a>
|
|
<a class="nav-item" href="dashboard.html">
|
|
<svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
<rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/>
|
|
</svg>
|
|
系统状态
|
|
</a>
|
|
</div>
|
|
|
|
<!-- 工作台 -->
|
|
<div class="nav-group">
|
|
<span class="nav-group-label">工作台</span>
|
|
<a class="nav-item" href="document-management.html">
|
|
<svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="8" y1="13" x2="16" y2="13"/><line x1="8" y1="17" x2="16" y2="17"/>
|
|
</svg>
|
|
文档管理
|
|
</a>
|
|
<a class="nav-item" href="compliance-analysis.html">
|
|
<svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
<polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/>
|
|
</svg>
|
|
合规分析
|
|
</a>
|
|
</div>
|
|
|
|
<!-- 对话 -->
|
|
<div class="nav-group">
|
|
<span class="nav-group-label">对话</span>
|
|
<a class="nav-item active" href="regulation-chat.html">
|
|
<svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
|
|
</svg>
|
|
法规对话
|
|
</a>
|
|
</div>
|
|
</nav>
|
|
|
|
<div class="sidebar-footer">
|
|
<div class="sidebar-user">
|
|
<div class="avatar">张</div>
|
|
<div class="sidebar-user-info">
|
|
<div class="sidebar-user-name">张工程师</div>
|
|
<div class="sidebar-user-role">compliance.eng</div>
|
|
</div>
|
|
</div>
|
|
<button class="sidebar-action" type="button" data-od-theme aria-label="Toggle color theme">
|
|
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
<circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/>
|
|
</svg>
|
|
主题: 自动
|
|
</button>
|
|
</div>
|
|
</aside>
|
|
|
|
<!-- ── Content area ── -->
|
|
<div class="content-area">
|
|
<header class="content-topbar">
|
|
<span class="topbar-title">法规对话</span>
|
|
<div class="footer-status">
|
|
<span class="footer-dot" aria-hidden="true"></span>
|
|
<span style="font-size:12px; color:var(--muted); font-family:var(--font-mono);">Session synced</span>
|
|
</div>
|
|
</header>
|
|
|
|
<main class="page">
|
|
<section class="hero" data-od-id="chat-hero">
|
|
<div>
|
|
<div class="eyebrow">Regulation chat</div>
|
|
<h1>Ask clause-level questions with citations intact.</h1>
|
|
<p>The chat surface is tuned for compliance follow-up after analysis. Conversation history stays visible, quick prompts speed common queries, and the right rail keeps cited standards inspectable while the answer streams.</p>
|
|
</div>
|
|
<div style="display:flex; gap:12px; flex-wrap:wrap;">
|
|
<a class="pill" href="compliance-analysis.html">From analysis workspace</a>
|
|
<span class="status ok">Session synced</span>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="shell" data-od-id="chat-shell">
|
|
<aside class="card">
|
|
<div class="section-head">
|
|
<h2>History</h2>
|
|
<span class="helper">3 recent threads</span>
|
|
</div>
|
|
<div class="history">
|
|
<div class="history-item active" tabindex="0">
|
|
<strong>Roof crush resistance wording</strong>
|
|
<div class="helper">Started 10:14 · 5 replies · linked to GB 26112-2010</div>
|
|
</div>
|
|
<div class="history-item" tabindex="0">
|
|
<strong>R155 incident log retention</strong>
|
|
<div class="helper">Started yesterday · 8 replies · cybersecurity watch</div>
|
|
</div>
|
|
<div class="history-item" tabindex="0">
|
|
<strong>Thermal runaway evidence checklist</strong>
|
|
<div class="helper">Started Monday · 4 replies · supplier dossier</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section-head" style="margin-top:20px;">
|
|
<h2>Quick questions</h2>
|
|
<span class="helper">Common prompts</span>
|
|
</div>
|
|
<div class="quick-list">
|
|
<button class="quick-item" type="button"><strong>What exact numeric threshold is required here?</strong><span class="helper">Turn vague compliance language into a requirement statement.</span></button>
|
|
<button class="quick-item" type="button"><strong>Which citations are mandatory versus contextual?</strong><span class="helper">Separate legal requirement from scoring or best practice references.</span></button>
|
|
<button class="quick-item" type="button"><strong>Draft replacement wording for the dossier.</strong><span class="helper">Generate an auditable sentence that cites the source clause.</span></button>
|
|
</div>
|
|
</aside>
|
|
|
|
<section class="chat-column">
|
|
<div class="card">
|
|
<div class="section-head">
|
|
<h2>Active thread</h2>
|
|
<span class="helper">Chunk 148 · GB 26112-2010 context</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="messages">
|
|
<article class="message user">
|
|
<div class="message-top">
|
|
<strong>Reviewer</strong>
|
|
<span class="helper mono">10:14</span>
|
|
</div>
|
|
<p>Does this paragraph need a numeric load statement, or is the current "meets national crush-resistance requirements" wording enough?</p>
|
|
</article>
|
|
|
|
<article class="message assistant">
|
|
<div class="message-top">
|
|
<strong>Compliance assistant</strong>
|
|
<span class="helper mono">10:14</span>
|
|
</div>
|
|
<p>The current wording is not sufficient on its own. The retrieved primary citation, <strong>GB 26112-2010 §4.2</strong>, defines a measurable resistance requirement. To make the dossier auditable, the paragraph should state the tested load threshold and link the supporting report.</p>
|
|
<div class="citation">
|
|
Primary citation: GB 26112-2010 §4.2 · lead match for the current paragraph · linked body engineering report candidate
|
|
</div>
|
|
</article>
|
|
|
|
<article class="message user">
|
|
<div class="message-top">
|
|
<strong>Reviewer</strong>
|
|
<span class="helper mono">10:16</span>
|
|
</div>
|
|
<p>Draft the exact replacement sentence I can hand back to the body structure team.</p>
|
|
</article>
|
|
|
|
<article class="message assistant">
|
|
<div class="message-top">
|
|
<strong>Compliance assistant</strong>
|
|
<span class="helper mono">10:16</span>
|
|
</div>
|
|
<p>Use: "The roof support structure was validated in accordance with <strong>GB 26112-2010 §4.2</strong>; supporting evidence is documented in the linked body engineering report."</p>
|
|
<div class="citation">
|
|
Evidence used: GB 26112-2010 §4.2, internal engineering report reference, related C-NCAP context kept as secondary only.
|
|
</div>
|
|
</article>
|
|
</div>
|
|
|
|
<form class="composer">
|
|
<input class="input" type="text" value="Which part of this answer is mandatory compliance language and which part is supporting evidence?" aria-label="Chat input" />
|
|
<div class="btn-row">
|
|
<div class="helper">Citations stay attached to each answer and are exportable with the thread.</div>
|
|
<button class="btn btn-primary" type="submit">Send question</button>
|
|
</div>
|
|
</form>
|
|
</section>
|
|
|
|
<aside class="card">
|
|
<div class="section-head">
|
|
<h2>Citation rail</h2>
|
|
<span class="helper">Sources in current answer</span>
|
|
</div>
|
|
<div class="sources">
|
|
<div class="source-item">
|
|
<strong>GB 26112-2010 §4.2</strong>
|
|
<div class="helper">Primary mandatory requirement used to justify the numeric threshold.</div>
|
|
<div class="citation">Reason surfaced: direct match on roof crush resistance wording and the validation requirement.</div>
|
|
</div>
|
|
<div class="source-item">
|
|
<strong>Linked body engineering report</strong>
|
|
<div class="helper">Internal evidence artifact proposed for linking into the final dossier.</div>
|
|
<div class="citation">The relevant static load summary should be attached before final sign-off.</div>
|
|
</div>
|
|
<div class="source-item">
|
|
<strong>C-NCAP rulebook §3.1</strong>
|
|
<div class="helper">Contextual safety framing only, not the basis of the compliance statement.</div>
|
|
<div class="citation">Kept in thread for reviewer context but not recommended as the lead citation.</div>
|
|
</div>
|
|
</div>
|
|
</aside>
|
|
</section>
|
|
</main>
|
|
|
|
<footer class="footer">
|
|
<span>T-Systems Regulation</span>
|
|
<div class="footer-status">
|
|
<span>Desktop Web</span>
|
|
<span class="footer-dot" aria-hidden="true"></span>
|
|
<span>Online</span>
|
|
</div>
|
|
</footer>
|
|
</div>
|
|
</div>
|
|
<script src="ui-preferences.js"></script>
|
|
</body>
|
|
</html>
|