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

删除内容
- 导航项「教程」(/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

91 lines
3.4 KiB
TypeScript

/**
* 开源项目注册表 —— 门户的唯一项目清单来源。
*
* 新增一个项目只需两步:
* 1) 在这里加一条记录
* 2) 写 pages/projects/<id>/index.md 详情页,并在 sections 里登记它的子页面
* 首页卡片、项目列表、侧边栏、导航都会自动带上,不需要改任何其它文件。
* 校验:npm run check(构建前自动执行,详情页与注册表不一致会直接报错)
*/
export type ProjectStatus = '已发布' | '公测中' | '开发中'
export interface ProjectSection {
text: string
link: string
}
export interface Project {
/** 目录名与 URL 片段,一经发布不再改动(改名会断链) */
id: string
name: string
/** 一句话定位,展示在卡片标题下 */
tagline: string
/** 两三句说明,展示在卡片正文 */
summary: string
/** 开源代码仓 */
repo: string
/** 许可证标识 */
license: string
/** 技术栈标签 */
tech: string[]
status: ProjectStatus
/** 门户内的详情页路径 */
page: string
/** 详情页下的子页面(快速开始、部署、方案对比等) */
sections: ProjectSection[]
}
export const projects: Project[] = [
{
id: 'iotlcm',
name: 'iotLCM',
tagline: '物联网卡全生命周期管理平台',
summary:
'卡片从运营商渠道入库 → 划拨给代理商 → 激活 / 续费 / 停机 → 流量与状态同步 → 销户,一个平台覆盖 SIM 卡管理全程。内置中国移动 OneLink、中国电信 5G CMP、中国联通 10646 协议适配,并支持以共享 Token 模式接入多家三方渠道商。',
repo: 'https://gitee.com/snowgoat/iotlcm',
license: 'Apache-2.0',
tech: ['GoFrame v2', 'Vue 3', 'MySQL', 'RabbitMQ', 'TDengine', 'Docker Compose'],
status: '已发布',
page: '/projects/iotlcm/',
sections: [
{ text: '快速开始', link: '/projects/iotlcm/guide/quickstart' },
{ text: '部署与运维', link: '/projects/iotlcm/guide/deploy' },
{ text: '方案对比', link: '/projects/iotlcm/compare' },
],
},
{
id: 'xiu-dtu',
name: '秀杰 DTU 管理平台',
tagline: 'DTU 设备全生命周期管理平台',
summary:
'面向 DTU(数据传输单元)设备,覆盖设备生产、出厂、代理商划拨、终端客户绑定、配置下发、固件 OTA 升级、指令下发与运行监控的完整闭环,HTTP / TCP 双通道接入。',
repo: 'https://gitee.com/snowgoat/xiu-dtu',
license: 'Apache-2.0',
tech: ['GoFrame v2', 'Vue 3 + Vben Admin', 'MySQL', 'Redis', 'asynq', 'VitePress'],
status: '已发布',
page: '/projects/xiu-dtu/',
sections: [
],
},
{
id: 'xiu-admin',
name: 'XiuAdmin',
tagline: 'GoFrame + Vue3 的全栖中后台框架',
summary:
'高生产率、可扩展、应用化 / 模块化 / 插件化的中后台开发框架。租户、用户、部门、菜单、角色、代码生成、定时任务、消息队列、通知公告等 22 项内置功能开箱可用。',
repo: 'https://gitee.com/snowgoat/xiu-admin',
license: 'Apache-2.0',
tech: ['GoFrame v2', 'Vue 3 + Vben Admin', 'Ant Design Vue', 'asynq'],
status: '已发布',
page: '/projects/xiu-admin/',
sections: [
],
},
]
/** 按 id 取项目,找不到返回 undefined */
export function projectById(id: string): Project | undefined {
return projects.find((p) => p.id === id)
}