Commit Graph

29 Commits

Author SHA1 Message Date
Dai0814 07b8321d18 feat(portal): 移除教程模块(导航入口、教程中心页、三项目教程视频页)
mirror-to-gitee / mirror (push) Successful in 4s
按要求删除导航栏「教程」及整个教程模块。

删除内容
- 导航项「教程」(/guide/videos) 及其 activeMatch
- 侧边栏「教程中心」条目
- pages/guide/videos.md(教程中心页,76 行)
- pages/projects/{iotlcm,xiu-dtu,xiu-admin}/guide/tutorial.md(三份教程视频页,共 251 行)
- data/projects.ts 里三个项目的「教程视频」子页面登记

同步清理的引用(避免 404)
- pages/projects/iotlcm/index.md:“下一步”表格里的教程视频行
- pages/projects/iotlcm/guide/quickstart.md:“下一步”里的教程链接
- 4 个审计脚本里的教程路径:
  audit-band-offset.mjs / audit-layout.mjs / audit-sidebar-footer.mjs / render-check.mjs
- 注释里「教程等」的措辞

保留的内容(与本次无关,未动)
- DemoVideo.vue 及其 data/demo.ts 里的 demoVideos:
  那是「系统演示」页里的 BV 号外链卡片,不是教程栏目
- compare.md 里「录屏教程」对比维度:属于竞品对比表的正常描述

验证
- 导航实测 8 项:首页/系统演示/产品功能/核心能力/界面预览/项目/官方文档/联系我们,无「教程」
- 侧边栏实测仅「门户部署」
- 干净副本构建成功,产物中无 tutorial/videos 文件
- 断链检查:失效项里无一条与教程相关
- check-registry 与 check-nav-brand 通过
2026-11-06 11:56:25 +08:00
Dai0814 fefad82e78 fix(nav): 修左上角品牌名与副标题挤成一行,并加上防误改校验
mirror-to-gitee / mirror (push) Successful in 6s
现象:导航左上角显示成「雪羊科技物联网卡与设备管理平台」挤在一行,
副标题没有换行,还压到了 logo 上。

根因
siteTitle 里的副标题是 <span class="site-subtitle">,经 v-html 插入后,
其父级是 VitePress 自己的**裸 <span>(无 class)**,而不是 .title-text。
原样式写的是 `.VPNavBarTitle .title-text .site-subtitle`,
选择器永远匹配不上,display:block 从未生效,副标题只能行内跟随。

改动
- 选择器改为 .VPNavBarTitle .site-subtitle(去掉不存在的 .title-text)
- 品牌名与副标题的容器改为 flex 纵向 + 垂直居中,
  整体在导航高度内居中
- 副标题 11px / 0.03em 字距 / var(--p-ink-3) 弱化;
  品牌名与副标题间距 3px
- 响应式:≤860px 副标题缩到 10.5px;≤480px 隐藏副标题只留品牌名
- 新增 scripts/check-nav-brand.mjs 并接入 npm run check(prebuild/predev 自动跑):
  校验 siteTitle 的**品牌主体**必须是「雪羊科技」(允许带副标题 span),
  且 logo 配置与文件都存在。
  反例全部验证:改成「雪羊开源」→ 拦;只留「雪羊科技」→ 通过;
  改成「雪羊科技开源」→ 拦;删掉 siteTitle → 拦

验证
- 干净副本构建后实测三档宽度:
  1440/860 → 「雪羊科技 ⏎ 物联网卡与设备管理平台」,display:block
  390     → 只显示「雪羊科技」,副标题 display:none
- 品牌区截图确认两行居中、不压 logo
2026-11-06 09:52:06 +08:00
Dai0814 502dc35a9b feat(portal): 补入界面预览实拍图,替换达量断网为空表的旧图
mirror-to-gitee / mirror (push) Successful in 4s
原先 previewShots 全部是空 file(占位框),截图文件本身也从未提交过,
所以线上界面预览区块一直是占位状态。

本次
- 替换达量断网截图为有数据的版本:原图是空表(显示"暂无数据"),
  与图注「状态查询与批量导出」不符;新图含 5 条记录 1859×890
- 新图实为 PNG,初版按原 .jpg 后缀保存会导致 Content-Type 错标,
  已改为 web-cutoff.png 并同步引用
- 一并提交其余 6 张已被 previewShots 引用的实拍图
  (工作台 / 业务受理 / 卡信息列表 / 智能诊断 / 执行日志 / 我的),
  否则引用会 404
- 重写 screenshots/README.md:原命名约定与实际文件完全不符,
  改为列出当前实际使用清单 + 格式自检脚本

如实标注的缺口
- 小程序端只有「我的」1 张实拍图,其余 4 条(首页 / 卡片详情 /
  业务办理 / 智能诊断)保持空占位。原先 5 条全部复用 app-profile.jpg,
  会让图注与图片不符,已改回占位等补图

验证
- 浏览器实测:6 个缩略图图注正确,主图 naturalWidth=1859、complete=true
- 切换小程序端正常显示「我的」页,其余 4 条显示占位框
- 全部图片格式与后缀一致(PNG/JPG 逐一校验)
2026-11-06 09:28:26 +08:00
技小云 8b4ba9bb7c docs(tutorial): V2 使用教程分镜按后台真实菜单重写,补单支视频录制要点
mirror-to-gitee / mirror (push) Successful in 3s
2026-11-05 13:05:00 +08:00
技小云 a6eb3ffc98 feat: 教程中心页与三项目教程视频清单(8 支视频含分镜)
mirror-to-gitee / mirror (push) Successful in 6s
2026-11-05 11:54:21 +08:00
Dai0814 6944652966 fix(portal): 官方文档导航直接跳文档站,不再停在本站锚点
mirror-to-gitee / mirror (push) Successful in 3s
原先导航「官方文档」指向 /#docs(首页内的文档区块),
用户期望点它直接进 http://open.5iot.com:5051/docs/。

改动
- 导航项改为外链 http://open.5iot.com:5051/docs/,
  带 target=_blank 与 rel=noopener,新开标签页不打断阅读
- 首页 hero 的「官方文档」按钮同样改为外链直跳
- 文档站地址收敛为单一来源:data/content.ts 导出 DOCS_BASE / DOCS_HOME,
  可用环境变量 DOCS_BASE 覆盖;config.mts 与 HomePage.vue 都引用它,
  消除原先三处硬编码
- 首页的「官方文档」区块(#docs)保留,仍是各手册入口的聚合卡片

验证
- 导航渲染实测:href=http://open.5iot.com:5051/docs/, target=_blank
- 点击实测:新开标签页到目标地址,原页面 URL 不变
- 锚点项高亮不受影响(点「产品功能」仍正常变蓝)
- 构建 13 页 262 引用 0 失效
2026-11-04 15:36:04 +08:00
Dai0814 39209ef591 fix(portal): 导航栏锚点项点击后正确高亮
mirror-to-gitee / mirror (push) Successful in 3s
问题:点「产品功能 / 核心能力 / 界面预览 / 官方文档」跳转后图标不变蓝。
根因:VitePress 的 isActive() 只比较 path,不看 hash。nav 里
「首页 /」「产品功能 /#features」「核心能力 /#core」的路径部分都是 `/`,
默认逻辑要么把首页和当前锚点同时点亮,要么只亮首页。

改动
- 新增 .vitepress/theme/nav-anchor.ts 接管首页内锚点项的激活判定:
  用 data-anchor-active 属性标记,规则为
  在首页且有 hash → 只有 hash 匹配项亮;在首页无 hash → 只有「首页」亮;
  不在首页 → 清标记交回 VitePress 默认逻辑
- 样式侧用 html.portal-nav-home 限定压制默认 active 的作用域,
  只影响首页,不影响 /projects/ 与 /about 的正常高亮
- 导航「项目」加 activeMatch: '^/projects/',
  使 /projects/iotlcm/ 等详情页也保持高亮
- MutationObserver 监听导航 DOM 变化(SPA 切换、主题切换会重建)

踩的坑
- Layout 是函数式组件,onMounted 在其中无效(Vue 报"no active component
  instance"),改用 nextTick 调度
- 初版用 hashOf(a) 判空来识别「首页」,但 /projects/ 与 /about 也没有 hash,
  被误判成首页项一起点亮;改为判断 href 解析后是否为 '/'
- 抑制规则最初没加作用域,导致非首页页面的正常 active 也被压成黑字

验证(8 个场景逐个实测)
首页顶部→首页 / 四个锚点→各自高亮 / 项目页→项目 /
关于页→关于 / iotLCM 详情→项目;构建 13 页 274 引用 0 失效
2026-11-04 15:23:37 +08:00
Dai0814 9955e830ce refactor(portal): 对齐 facms.cn 架构,区块顺序归位并撤掉深色块
mirror-to-gitee / mirror (push) Successful in 4s
对比 https://www.facms.cn 后调整三处结构性差异:

1. 顺序归位
   参考站是「产品功能 → 核心能力」,先讲做什么再讲凭什么。
   上一版我把核心能力提到前面并染成深色,属于人为制造差异。
   现在改回:项目 → 产品功能 → 核心能力 → 界面预览。

2. 撤掉深色块
   参考站全程浅色,靠留白与间距分段,没有深色区块打断。
   移除 .p-section--deep 的使用,核心能力回归 p-section--alt 浅灰,
   与前后白底交替,和整站色阶统一。
   (样式定义保留,后续需要强调区块时可用。)

3. 核心能力改标签切换
   参考站核心能力是一条「通用特性」+ 9 个产品分组的标签切换。
   新增 abilityGroups:通用底座 / iotLCM / 秀杰 DTU / XiuAdmin 四组,
   每组 6 项,复用 CapabilityTabs(加 source="home" 与 cols 参数)。
   替代原先 8 张平铺卡片。

4. 产品功能密度对齐
   参考站产品功能 9 张卡各带 6 项功能点。原先我们只有 3 张卡
   (每条产品线一张),信息密度偏低。
   拆成 9 张:卡与库存 / 通道与上游 / 资费与计费 / 组织与账号 /
   生产与研发 / 代理与客户 / 设备接入 / 中后台底座 / 开发效率。

验证
- 构建 13 页,274 条引用 0 失效
- 浏览器实测区块顺序:hero → projects → features → core → preview
  → foundation → how → docs → cta,无 .p-section--deep 残留
- 产品功能 9 卡、核心能力 4 标签每标签 6 卡
- 移动端 390px 无横向溢出
2026-11-04 14:42:35 +08:00
Dai0814 ea47bab100 style(portal): 核心能力改为深色强调区块,并前移到产品功能之前
mirror-to-gitee / mirror (push) Successful in 4s
用户反馈"上方没有核心能力重点突出"。原因是原实现里
核心能力用的是 p-section--alt(浅灰底),而它相邻的产品功能是白底、
项目列表也是浅灰底,三者色阶接近,深色上没有形成视觉断点,
区块在页面里读起来和普通段落没有区别。

改动
- 新增 .p-section--deep 变体:浅色主题下用 #0d1220 近黑底 +
  顶部靛蓝径向光晕 + 一道渐变高光线,卡片改半透明白
- 核心能力改用该变体,并从产品功能之后移到之前:
  项目 → 核心能力(深色)→ 产品功能 → 界面预览
  深色块夹在项目列表与产品功能之间,形成明显的节奏断点
- 产品功能改用 p-section--alt,与前后白底交替
- 暗色主题下强调区不能用"压深"(页面底已是 #0c0f16),
  改用 #161b2c 冷灰蓝 + 更强光晕,靠提亮形成层次

验证
- 构建 13 页,256 条引用 0 失效
- 浏览器实测区块顺序:hero → projects → core → features → preview
  → foundation → howtheyfit → docs → cta
- 浅色 / 暗色两套主题均截图核对,强调区都能跳出来
2026-11-04 14:34:53 +08:00
Dai0814 ccb3f5e39a feat(portal): 首页补齐产品功能、核心能力、界面预览、官方文档四个区块
mirror-to-gitee / mirror (push) Successful in 4s
用户反馈首页缺产品功能、核心能力与界面预览,且没有官方文档入口。

新增区块
- 产品功能:三条产品线(iotLCM / 秀杰 DTU / XiuAdmin),
  每条列 6 项能力,卡片底部直达详情页
- 核心能力:8 张带标签的卡片,讲工程层面的硬指标
  (部署、接入、开放、治理、韧性、交付、数据、维护),
  与"产品功能"区分开:前者是做什么,后者是凭什么能用住
- 界面预览:ScreenshotPreview 组件,Web 管理端 / 小程序端两组标签切换,
  首屏大图 + 缩略图条,带浏览器窗口装饰
- 官方文档:6 个入口卡片(文档中心、Web 手册、小程序手册、部署手册、
  OpenAPI 合同、门户部署说明),外链自动加 target=_blank

界面预览的占位机制
- previewShots 里 file 留空时渲染带图注的占位框,不报错、不影响构建
- 补图只改 file 字段,组件无需改动
- 新增 pages/public/screenshots/README.md 写清命名、尺寸、脱敏要求

导航
- 增加产品功能、核心能力、界面预览、官方文档四个锚点项
- 窄屏(≤860px)隐藏中间三个锚点项,避免挤压

验证
- 构建 13 页,208 条引用 0 失效
- 浏览器实测:7 个导航项、5 个 section 锚点齐全
- 移动端 390px 无横向溢出
- 文档站 5 个外链地址均实测 200 可达
2026-11-04 14:27:48 +08:00
Dai0814 ac1354da9e style(portal): 重做整站排版,改为落地页式布局
mirror-to-gitee / mirror (push) Successful in 5s
排版语言
- 引入独立视觉系统 .vitepress/theme/styles/portal.css:
  中性底色 + 单一强调色(#4f46e5),正文靠留白与层级取胜,
  不使用大面积彩色底、渐变铺满或装饰性图形
- CSS 变量定义在 :root(原先挂在 .portal 下,导致内容页拿不到值)
- 完整支持暗色模式,变量在 html.dark 下整体替换

首页(pages/index.md → HomePage.vue)
- hero:居中大标题(强调色渐变仅作用于一个词组)、双按钮、四格数据条
- 项目区:三栏卡片,标题 + 状态徽标 + 定位 + 说明 + 技术栈标签
- 通用能力:六格编号卡片
- 组合方式:三栏场景步骤卡,每张带一条可复制命令
- 底部 CTA 区块
- 页面改用 layout: page,通过 Layout 包装层去掉默认窄栏

项目详情页
- iotLCM / DTU:能力矩阵改为标签切换(CapabilityTabs),
  每个业务域一屏,点击切换,替代原先的大宽表
- XiuAdmin:22 项内置功能按用途归为四组标签墙(FeatureGrid)
- 内容页二级标题加短强调线,表格首列不换行,属性表不再竖排

数据
- 新增 data/content.ts 承载首页文案、能力分组、长期事实统计,
  与 projects.ts 并列;文案口径取自各项目 README/详情页,无凭空数字
- 修正 scripts/check-registry.mjs:原先扫描 data/ 下所有 .ts 的 id,
  新增 content.ts 后把业务分组 id 误判为项目;改为只读 projects.ts

验证
- 构建通过,12 个页面,193 条引用 0 失效
- HTTP 实测 12 个路径全 200,不存在路径 404
- 暗色模式与移动端(390px)已截图核对,无横向溢出
2026-11-04 14:13:50 +08:00
技小云 1d67fc7082 fix: BASE_REGISTRY 统一补结尾斜杠,代理源路径不再拼错
mirror-to-gitee / mirror (push) Successful in 11s
2026-11-04 13:16:39 +08:00
技小云 41a9f72412 fix: 基础镜像源参数化(BASE_REGISTRY),解决内网机器拉不动 docker.io
mirror-to-gitee / mirror (push) Successful in 7s
2026-11-04 13:15:34 +08:00
技小云 4d87ffa954 chore: 补 .dockerignore,收敛门户镜像构建上下文
mirror-to-gitee / mirror (push) Successful in 9s
2026-11-04 13:13:29 +08:00
技小云 fafc743387 fix: 并入旧骨架独有价值内容,修 favicon 落地路径与过渡形态绑定
mirror-to-gitee / mirror (push) Successful in 21s
- 旧骨架的方案对比页移到 projects/iotlcm/compare.md,站内链接与侧边栏同步
- 旧骨架的功能矩阵与边界段并入 iotlcm 详情页;社区页独有内容并入 about.md
- favicon 移到 pages/public/(vitepress 的 publicDir 相对 srcDir 解析,原位置不落地)
- compose 绑定地址参数化:默认 127.0.0.1,NAT 转发需 PORTAL_BIND_ADDR=0.0.0.0
- 两种形态构建产物站内链接自检均无死链
2026-11-04 12:11:29 +08:00
技小云 be73b4b16a chore: 移除临时探测工作流,可见性校正改为尽力而为并给出人工路径
mirror-to-gitee / mirror (push) Successful in 3s
2026-11-04 11:29:29 +08:00
技小云 d14fd37842 chore: 试建仓可见性字段与删仓权限(临时)
mirror-to-gitee / mirror (push) Successful in 4s
2026-11-04 11:28:00 +08:00
技小云 f8709e481d chore: 抓建仓原始错误响应(临时)
mirror-to-gitee / mirror (push) Successful in 3s
2026-11-04 11:26:39 +08:00
技小云 f88645d00c chore: 探测建仓可见性请求体(临时)
mirror-to-gitee / mirror (push) Successful in 3s
2026-11-04 11:25:19 +08:00
技小云 93fced52b9 chore: 探测建仓可见性参数与删仓权限(临时)
mirror-to-gitee / mirror (push) Successful in 5s
2026-11-04 11:24:04 +08:00
技小云 4200e0fc53 chore: 探测建仓可见性参数与删仓权限(临时)
mirror-to-gitee / mirror (push) Successful in 4s
2026-11-04 11:22:30 +08:00
技小云 d28be419b5 chore: 探测可见性字段(临时)
mirror-to-gitee / mirror (push) Successful in 2s
2026-11-04 11:21:20 +08:00
技小云 6b02f2a275 chore: 临时探测 Gitee 仓库可见性端点(排查用,随后删除)
mirror-to-gitee / mirror (push) Successful in 3s
2026-11-04 11:20:07 +08:00
技小云 aecd2ad658 fix: 可见性校正补 name 字段(Gitee 端点要求)
mirror-to-gitee / mirror (push) Successful in 3s
2026-11-04 11:18:44 +08:00
技小云 fb2d82095d fix: 可见性校正改用 Gitee 仓库更新端点(企业仓端点无效)
mirror-to-gitee / mirror (push) Successful in 4s
2026-11-04 11:17:26 +08:00
技小云 84130087c4 fix: 修镜像工作流的假失败(无 tag 仓校验中断)并把目标仓可见性校正为公开
mirror-to-gitee / mirror (push) Successful in 3s
2026-11-04 11:14:47 +08:00
技小云 896120d50c ci: 修正镜像到 Gitee 时的仓库描述
mirror-to-gitee / mirror (push) Failing after 3s
2026-11-04 11:11:29 +08:00
技小云 510a7e9c2f ci: 增加到 Gitee 企业仓的镜像同步工作流
mirror-to-gitee / mirror (push) Failing after 6s
2026-11-04 11:11:11 +08:00
技小云 fe63dacae2 feat: 开源项目门户站首版(iotLCM / 秀杰 DTU / XiuAdmin 三项目,注册表驱动) 2026-11-04 11:08:47 +08:00