fix:更改图表展示方式
由原生 HTML/CSS/JS 多页项目 1:1 组件化还原为 Vue 3 单页应用,并对接 http://192.168.215.211:5000 后端(接口契约见根目录 openapi.json,121 个接口按需取用)。 原展示项目参照:D:\Desktop\keda\fanhao\chainWarning。
http://192.168.215.211:5000
openapi.json
D:\Desktop\keda\fanhao\chainWarning
<script setup>
/api
/kc
/admin
http://192.168.215.211:5001
artifact-platform
原 5 个大屏页 1:1 还原(样式/交互/动画不变),数据源改为 实时优先 + 演示兜底:
src/stores/dataset.js
scd.js
D
refreshLive()
units / systems / vulnerabilities / catalog-stats
D.live.*
enrichSystem
CLEAN_SHOW
⚠️ 当前线上数据库尚未创建 units / software_systems / deploy_platforms / devices / vulnerabilities 五张表,上述模块接口返回 500——前端已就绪,建表后即可全链路使用; 在此之前列表页显示「暂无数据」。
units / software_systems / deploy_platforms / devices / vulnerabilities
src/stores/auth.js
POST /kc/realms/artifact-platform/protocol/openid-connect/token
admin / admin@321
platform-frontend
http://192.168.215.211:3000/*
http://localhost:5173/*
两路 token 均为同 realm 签发,/auth/me 返回 { username, roles } 驱动顶栏显示。
/auth/me
{ username, roles }
原版手写 Canvas/SVG 图表全部换为 ECharts 实现,视觉按原版逐一对齐:
DonutChart.vue
HBarChart.vue
AreaChart.vue
SupplyGraph.vue
TraceChain.vue
src/utils/echarts.js
echarts/core
import 'echarts'
initWhenSized()
init
watch
setOption
src/ ├── api/ # request.js(envelope/Bearer/401/分页)+ index.js(六域 API) ├── stores/ │ ├── auth.js # 双模式登录、token 管理、路由守卫配合 │ └── dataset.js # 展示页数据集(SCD 演示基线 + 后端实时覆盖) ├── components/ # ECharts 图表组件 + TraceChain/SupplyGraph + admin/AdmModal/AdmPager ├── views/ # 5 个展示页 │ └── admin/ # 登录页 + 布局 + 5 个管理模块页 ├── utils/ # echarts.js(按需引入+initWhenSized)+ app.js + chain.js ├── data/scd.js # 演示数据(改演示数据只动这里) └── assets/css/ # base 全局 + 各页样式 + admin.css(后台浅色) public/silent-check-sso.html # keycloak-js 静默会话恢复页
npm install npm run dev # 端口 3000(代理已配好) npm run build
生产部署(nginx)需要两条代理(对齐 vite dev 代理):
location /api/ { proxy_pass http://127.0.0.1:5000/api/; } # 或 /prod-api location /kc/ { proxy_pass http://127.0.0.1:5001/; }
screen.css
html, body
.screen-mode
.theme-dark
.sync-row
#stage
trace.css
body
.trace-page
vulnhub.css
.trust-mini
.trust-grid
window.SCD
SCD
供应链预警平台
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
开源软件供应链监控预警平台(Vue 3 版)
由原生 HTML/CSS/JS 多页项目 1:1 组件化还原为 Vue 3 单页应用,并对接
http://192.168.215.211:5000后端(接口契约见根目录openapi.json,121 个接口按需取用)。 原展示项目参照:D:\Desktop\keda\fanhao\chainWarning。技术栈
<script setup>Composition API)/api→ 后端、/kc→ Keycloak,免 CORS)/admin后台路由段 + 登录守卫)http://192.168.215.211:5001/ realmartifact-platform)两大板块
1. 展示页(/, /units, /vuln, /vulnhub /trace)
原 5 个大屏页 1:1 还原(样式/交互/动画不变),数据源改为 实时优先 + 演示兜底:
src/stores/dataset.js:与原scd.js同构的响应式数据集D;refreshLive()并行拉units / systems / vulnerabilities / catalog-stats, 成功一个覆盖一个(D.live.*标记),失败静默保留演示数据enrichSystem拉 SBOM/绑定/漏洞)CLEAN_SHOW(全部可信·无漏洞演示口径)在后端系统数据就绪后自动失效2. 管理后台(/admin,需登录)
登录(双模式,
src/stores/auth.js)POST /kc/realms/artifact-platform/protocol/openid-connect/token,token 存 localStorage 并自动续期admin / admin@321(super_admin)platform-frontend注册来源 (当前仅http://192.168.215.211:3000/*已注册;本地需加http://localhost:5173/*的 Valid Redirect URIs 与 Web Origins,否则跳转会被拒)两路 token 均为同 realm 签发,
/auth/me返回{ username, roles }驱动顶栏显示。图表架构(ECharts 6 按需引入)
原版手写 Canvas/SVG 图表全部换为 ECharts 实现,视觉按原版逐一对齐:
DonutChart.vueHBarChart.vueAreaChart.vueSupplyGraph.vueTraceChain.vuesrc/utils/echarts.js取实例(echarts/core按需注册, 图表/组件/渲染器只用到的才打包);不要直接import 'echarts'initWhenSized():容器有尺寸后再init(ECharts 6 在 0×0 容器上渲染 graph 会崩 zrender;用 setTimeout 轮询而非 rAF)D实时覆盖后各图watch自动setOption重绘,无需重建组件项目结构
开发与部署
生产部署(nginx)需要两条代理(对齐 vite dev 代理):
相对原展示版的必要适配(共 4 处 CSS + 数据源切换)
screen.css:html, body锁滚动 →.screen-mode(按路由挂摘);.theme-dark/死代码.sync-row限定#stage作用域防串页trace.css:body底部留白 →.trace-pagevulnhub.css:.trust-mini→.trust-grid(与 units.css 重名)window.SCD全局 → ES 模块;展示视图数据源SCD→D(dataset)待办(后端侧)