Files
OPC/Demo/profile.html
freedakandDevin f307e877c9 feat: OPC 社区运营公共服务平台 Demo v1.3
一人公司/超级个体产业社区公共服务基础设施 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>
2026-09-13 09:07:23 +08:00

73 lines
3.0 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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>