一人公司/超级个体产业社区公共服务基础设施 Demo,包含: - 18 个角色页面(运营商/OPC/企业/个人/学员/培训机构/服务机构/政府/审计/金融) - 暖橙活力主题 UI(渐变毛玻璃 + 暖色侧栏) - 五步运营闭环(选方向→育人才→建平台→立SOP→聚产业) - 华强北硬件供应链接入 - 蜂群式交付 + 产业集聚效应展示 - 需求文档(REQ-001~118 全覆盖) Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
73 lines
3.0 KiB
HTML
73 lines
3.0 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>画像中心 · OPC 公共服务平台 Demo</title>
|
||
<link rel="stylesheet" href="assets/style.css">
|
||
</head>
|
||
<body data-page="profile">
|
||
<header class="topnav" id="topnav"></header>
|
||
|
||
<div class="container">
|
||
<div class="page-title">主题画像中心</div>
|
||
<div class="page-sub" id="pf-sub">OPC / 企业 / 订单 / 学员 核心主题统一画像 · AI 自动匹配的数据底座(REQ-116)</div>
|
||
|
||
<!-- REQ-116 主题画像 -->
|
||
<div class="grid grid-2" id="pf-grid"></div>
|
||
|
||
<!-- REQ-117 AI 匹配演示 -->
|
||
<div class="section">
|
||
<h2>AI 自动匹配演示 <span class="req">REQ-117 · score + evidence + confidence</span></h2>
|
||
<div class="card">
|
||
<p class="muted" id="md-req"></p>
|
||
<table id="md-tbl"></table>
|
||
<p class="muted" style="margin-top:8px">confidence < 0.6 提示人工核对;匹配依据可追溯,不编造(REQ-117)。画像维度随业务行为自动更新(REQ-116)。</p>
|
||
<button class="btn sm" onclick="runMatch()">重新计算匹配</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="footer">OPC 公共服务平台 Demo · 主题画像中心</div>
|
||
<script src="assets/app.js"></script>
|
||
<script src="assets/store.js"></script>
|
||
<script>
|
||
function renderPage(DB) {
|
||
const P = DB.profiles;
|
||
const role = currentRole();
|
||
const subMap = {
|
||
gov: '监管视角 · 脱敏主题画像与 AI 匹配监测(REQ-116/117)',
|
||
enterprise: '需求方视角 · 查看候选 OPC 画像与 AI 匹配结果(REQ-117)',
|
||
operator: '运营管理视角 · 全量主题画像与 AI 匹配数据底座(REQ-116/117)',
|
||
};
|
||
if (subMap[role]) document.getElementById('pf-sub').textContent = subMap[role];
|
||
document.getElementById('pf-grid').innerHTML = P.entities.map(e => `
|
||
<div class="card">
|
||
<h3>${e.type} · ${e.name} <span class="req">${e.code}</span></h3>
|
||
<ul class="list">
|
||
${e.dims.map(d => `<li><span>${d[0]}</span><span class="muted">${d[1]}</span></li>`).join('')}
|
||
</ul>
|
||
</div>`).join('');
|
||
|
||
document.getElementById('md-req').textContent = '输入 · ' + P.matchDemo.req;
|
||
renderMatch();
|
||
}
|
||
|
||
function renderMatch() {
|
||
document.getElementById('md-tbl').innerHTML =
|
||
`<tr><th>候选 OPC</th><th>匹配分</th><th>依据(evidence)</th><th>置信度</th></tr>` +
|
||
DB.profiles.matchDemo.results.map(r => `<tr><td>${r.target}</td><td><b>${r.score}</b></td><td>${r.evidence}</td><td>${
|
||
r.conf === 'high' ? '<span class="badge ok">高 · 可直接派单</span>' : '<span class="badge warn">中 · 建议人工复核</span>'
|
||
}</td></tr>`).join('');
|
||
}
|
||
let matching = false;
|
||
function runMatch() {
|
||
if (matching) return;
|
||
matching = true;
|
||
document.getElementById('md-tbl').innerHTML = '<tr><td colspan="4">AI 正在基于主题画像计算匹配…</td></tr>';
|
||
setTimeout(() => { renderMatch(); toast('匹配重算完成:TOP1 OPC_00017(96 分,可直接派单)'); matching = false; }, 900);
|
||
}
|
||
</script>
|
||
</body>
|
||
</html>
|