# Ydsz Micro **Repository Path**: lemontech/ydsz-micro ## Basic Information - **Project Name**: Ydsz Micro - **Description**: Ydsz Micro 即云顶数字-快速开发框架的前端微应用代码仓库。您的⭐️ Star ⭐️是我们迭代的动力! - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: main - **Homepage**: https://njydsz.com - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 50 - **Created**: 2026-09-04 - **Last Updated**: 2026-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

YDSZ Micro

基于 Vue 3 · TypeScript · Micro-kernel 的企业级微应用开发平台

Vue 3 TypeScript Vite pnpm Turbo License

--- ## YDSZ 前端微应用 Monorepo 基于自研 **micro-kernel** 微前端运行时,采用 Vue 3 + Element Plus + TypeScript 技术栈。每个后端微服务对应一个独立的前端微应用,实现「独立开发」「独立测试」「独立部署」。 ## 关联仓库 | 平台 | 后端仓库 | | ---- | -------- | | Gitee | https://gitee.com/njydsz/ydsz-cloud | | GitHub | https://github.com/njydsz/ydsz-cloud | --- ## 核心特性 | 特性 | 说明 | | -------------- | -------------------------------------------------------------------------------------------------------- | | **微前端架构** | micro-kernel ESM 直引隔离 + 按需预加载(hover/idle/route/frequency 四策略)+ 全局状态通信(globalState) | | **多级沙箱** | 快照沙箱(默认)/ Proxy 沙箱 / iframe 沙箱可选,按子应用配置切换 | | **版本与灰度** | 子应用构建产出 `version.json` / manifest,支持版本管理、按 userId 灰度分流(canary) | | **资源调度** | keep-alive + LRU 淘汰 + TTL + 内存压力释放 + 可见性自动释放 | | **错误降级** | 分级降级 + 自动重试 + fallback 渲染(error-boundary) | | **路由预测** | v4.0 基于马尔可夫链的转移概率预测,配合 link-hints(preconnect/modulepreload)与 speculation-rules 预热 | | **公共认证包** | `@ydsz/shared-auth` 统一 RequestClient + Auth API + Auth Store,消除多份重复代码 | | **前端监控** | `@ydsz/monitor` 错误捕获(Vue/window/Promise/资源)+ Web Vitals(LCP/FID/CLS/INP/FCP/TTFB) | | **主题切换** | auto/light/dark 暗黑模式 + Element Plus 主题适配 + 系统偏好跟随 | | **API 对齐** | 统一 `/api/v1/*` 路径 + `successCode="A00000"` + LoginVO 类型 + refreshToken 自动刷新 | | **构建优化** | Vite manualChunks 分割(vue-vendor/element-vendor/vxe-vendor)+ chunk hash 缓存 | | **国际化** | 8 子应用 × zh-CN/en-US 双语 + 业务字段翻译 + Element Plus/dayjs 语言包 | | **调试工具** | 配套 Chrome MV3 DevTools 扩展(chrome/),实时查看内核连接、沙箱状态、事件日志 | ## 技术栈 | 类别 | 技术 | | ----------- | -------------------------------------------------------------------------------------- | | 框架 | Vue 3 + TypeScript | | 构建工具 | Vite 6 | | 包管理 | pnpm 10 + Turbo (Monorepo) | | 微前端 | micro-kernel(自研 ESM 原生微前端运行时)+ micro-runtime(接口层) | | UI 组件库 | Element Plus 2.10 | | 状态管理 | Pinia 3 + pinia-plugin-persistedstate | | 路由 | Vue Router 4 | | 样式 | Tailwind CSS 3 + SCSS | | HTTP 客户端 | Axios | | 表单验证 | Vee-validate + Zod | | 图表 | ECharts 5 | | 表格组件 | VXE Table 4 | | 国际化 | Vue I18n 11 | | Mock 服务 | Nitro | | 测试 | 按云顶编码规范 15.10 本仓库不包含测试代码;质量由 lint / stylelint / type-check / vsh 门禁保障 | | 代码规范 | ESLint 9 + Prettier + Stylelint + Commitlint + Lefthook(git hooks) | ## 架构设计 ``` ┌──────────────────────────────────────────────────────────────┐ │ main-web(主应用/宿主) │ │ 端口 5600 │ 认证/布局/全局状态/路由分发/micro-kernel Host │ │ ┌──────────┐ ┌───────────┐ ┌──────────────────────────┐ │ │ │ lite- │ │ Vue Router │ │ 全局 Store / 偏好 / i18n │ │ │ │ kernel │ │ (主路由) │ │ │ │ │ │ Host │ │ │ │ │ │ │ └────┬─────┘ └─────┬─────┘ └──────────────────────────┘ │ │ ┌────▼───────────────▼───────────────────────────────────┐ │ │ │ 子应用挂载容器 (#subapp-container) │ │ │ └────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────┘ │ │ │ │ │ │ │ │ ┌──▼──┐ ┌──▼──┐ ┌──▼───┐ ┌──▼───┐ ┌──▼───┐ ┌──▼───┐ ┌──▼───┐ ┌──▼───┐ │user │ │sys │ │msg │ │cron │ │flow │ │wiki │ │rule │ │agent │ │center│ │admin│ │center│ │job │ │design│ │drive │ │engine│ │assist│ │5601 │ │5602 │ │5604 │ │5605 │ │5606 │ │5607 │ │5608 │ │5610 │ └─────┘ └─────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │ │ │ │ │ │ │ │ ┌──▼──┐ ┌──▼──┐ ┌──▼───┐ ┌──▼───┐ ┌──▼───┐ ┌──▼───┐ ┌──▼───┐ ┌──▼───┐ │:9002│ │:9001│ │:9004 │ │:9006 │ │:9005 │ │:9003 │ │:9007 │ │:9008 │ └─────┘ └─────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ ``` ### 微前端运行时 `comm/effects/micro-kernel`(`@ydsz/micro-kernel`)为自研 ESM 原生运行时,面向「同团队、统一构建链的同源子应用集群」,完整链路为: ``` ESM loader → 生命周期 → 沙箱 → keep-alive → 错误降级 → 路由同步 → 全局通信 ``` 核心能力:三种沙箱(`sandbox` 快照 / `proxy-sandbox` / `iframe-sandbox`,支持矩阵与 experimental 边界见 [ADR-007](docs/decisions/adr-007-sandbox-matrix.md))、vite-plugin-manifest(子应用产物清单、版本与 sha256 完整性清单)、远程 registry 注册表 + 缓存、版本管理与灰度分流、资源调度器(keep-alive / LRU / TTL / 内存压力 / 可见性释放,内存优先标准 `performance.measureMemory()`)、分级错误降级、消息总线(sendMessage / sendRequest 请求-响应)、四种预加载策略、路由马尔可夫预测(含 `minSampleSize` 冷启动门槛)与预加载命中率指标回环(`preload-metrics`,数据驱动策略调优)。调试请使用 [chrome/](chrome/) 下的 DevTools 扩展。 ## 应用清单 | 应用 | 包名 | 前端端口 | 后端服务 | 后端端口 | 路由前缀 | 职责 | | ---------------- | -------------------- | -------- | ------------- | -------- | ---------- | --------------------------------------- | | **main-web** | `@ydsz/main-web` | 5600 | YDSZ-gateway | 9000 | / | 微前端宿主,认证/布局/全局状态/路由分发 | | **userinfo-web** | `@ydsz/userinfo-web` | 5601 | YDSZ-userinfo | 9002 | /YDSZ-user | 用户/部门/角色/菜单/岗位/OAuth2 | | **system-web** | `@ydsz/system-web` | 5602 | YDSZ-system | 9001 | /YDSZ-sys | 系统配置/字典/变量/应用注册 | | **message-web** | `@ydsz/message-web` | 5604 | YDSZ-message | 9004 | /YDSZ-msg | 消息/模板/通知/路由/灰度/追踪 | | **cronjob-web** | `@ydsz/cronjob-web` | 5605 | YDSZ-cronjob | 9006 | /YDSZ-cron | 任务/DAG/日志/告警/拓扑 | | **workflow-web** | `@ydsz/workflow-web` | 5606 | YDSZ-workflow | 9005 | /YDSZ-flow | 流程模板/设计器/实例/待办/SLA | | **nextwiki-web** | `@ydsz/nextwiki-web` | 5607 | YDSZ-nextwiki | 9003 | /YDSZ-wiki | 文件/预览/搜索/分享/锁定 | | **literule-web** | `@ydsz/literule-web` | 5608 | YDSZ-literule | 9007 | /YDSZ-rule | 规则/DSL/变量/CEP/断点 | | **agent-web** | `@ydsz/agent-web` | 5610 | YDSZ-agent | 9008 | /YDSZ-ai | 对话/Agent/RAG/DAG/审批 | > 注:`project-web` 已在仓库整合中移除(见提交 `c08336552`),其能力并入主应用相关模块;如仍需项目管理界面,请以 Git 历史或独立分支为准。 ## 目录结构 ``` ydsz-micro/ ├── main/ # 主应用(微前端宿主 @ydsz/main-web) │ ├── src/ │ │ ├── 注册表 MICRO_APPS # micro-kernel 子应用注册配置 │ │ ├── adapter/ # Element Plus 组件适配器 │ │ ├── api/ # 核心 API(auth/user/menu) │ │ ├── layouts/ # 布局(basic + auth) │ │ ├── router/ # 主路由 + 守卫 + 子应用路由 │ │ ├── store/ # 全局 Store(auth) │ │ ├── views/ # 全局页面(dashboard/login/404/subapp 容器) │ │ ├── locales/ # 国际化 │ │ └── preferences.ts # 偏好覆盖 │ └── ... ├── apps/ # 8 个业务子应用 │ ├── userinfo-web/ # 用户中心 → YDSZ-userinfo:9002 │ ├── system-web/ # 系统管理 → YDSZ-system:9001 │ ├── message-web/ # 消息中心 → YDSZ-message:9004 │ ├── cronjob-web/ # 定时任务 → YDSZ-cronjob:9006 │ ├── workflow-web/ # 工作流引擎 → YDSZ-workflow:9005 │ ├── nextwiki-web/ # 网盘知识库 → YDSZ-nextwiki:9003 │ ├── literule-web/ # 规则引擎 → YDSZ-literule:9007 │ └── agent-web/ # AI 助手 → YDSZ-agent:9008 ├── comm/ # 公共共享包(workspace 包) │ ├── @core/ # 核心 SDK(base/composables/preferences/ui-kit/feature-flags) │ ├── effects/ # 副作用(access/common-ui/hooks/layouts/plugins/request/ │ │ # shared-auth/monitor/micro-kernel/micro-runtime/shared-business) │ ├── constants/ # 常量定义 │ ├── icons/ # 图标配置 │ ├── locales/ # 国际化基础包 │ ├── stores/ # 全局状态管理 │ ├── styles/ # 全局样式 │ ├── types/ # 类型定义 │ └── utils/ # 工具函数 ├── conf/ # 工程配置(共享构建/风格/TS 配置) │ ├── vite-config/ # Vite 共享构建配置 │ ├── tailwind-config/ # Tailwind CSS 共享配置 │ ├── tsconfig/ # TypeScript 共享配置 │ ├── lint-configs/ # ESLint + Prettier + Stylelint + Commitlint │ └── node-utils/ # Node.js 工具 ├── bash/ # 脚本工具 │ ├── deploy/ # Docker 多阶段构建 + nginx 部署 │ ├── turbo-run/ # Turbo 并行运行 │ └── vsh/ # 项目运维工具(lint/check-dep/check-circular…) ├── chrome/ # micro-kernel DevTools(Manifest V3 扩展) ├── docs/ # 决策记录(ADR)等 ├── pnpm-workspace.yaml ├── turbo.json └── package.json ``` ## 快速开始 ### 环境要求 | 依赖 | 版本 | | ------- | ------------------------------------ | | Node.js | >= 22.6.0(vsh 依赖 `--experimental-strip-types`,CI 已固定 Node 22) | | pnpm | >= 9.12.0(推荐通过 corepack 管理) | ### 安装与启动 ```bash # 1. 启用 corepack(如未启用) npm i -g corepack # 2. 安装依赖(仓库强制 pnpm,preinstall 会拦截其他包管理器) pnpm install # 3. 启动所有应用(主应用 + 所有子应用) pnpm dev # 启动单个应用 pnpm dev:main # 主应用(端口 5600) pnpm dev:userinfo # 用户中心(端口 5601) pnpm dev:system # 系统管理(端口 5602) pnpm dev:message # 消息中心(端口 5604) pnpm dev:cronjob # 定时任务(端口 5605) pnpm dev:workflow # 工作流引擎(端口 5606) pnpm dev:nextwiki # 网盘知识库(端口 5607) pnpm dev:literule # 规则引擎(端口 5608) pnpm dev:agent # AI 助手(端口 5610) ``` ### 构建 ```bash pnpm build # 打包所有应用 pnpm build:main # 主应用 pnpm build:userinfo # 用户中心 pnpm build:system # 系统管理 pnpm build:message # 消息中心 pnpm build:cronjob # 定时任务 pnpm build:workflow # 工作流引擎 pnpm build:nextwiki # 网盘知识库 pnpm build:literule # 规则引擎 pnpm build:agent # AI 助手 pnpm preview # 本地预览构建产物 pnpm build:analyze # 产物体积分析(rollup-plugin-visualizer) ``` ### 代码生成 ```bash pnpm gen:api # 由 OpenAPI 契约生成 API 客户端(--check 校验漂移) pnpm gen:app # 脚手架生成新子应用 pnpm gen:nginx # 生成 nginx 子应用路由配置(--check 校验) pnpm gen:registry # 由 MICRO_APPS 注册表生成 micro-kernel registry.json ``` ### 常用运维脚本 ```bash pnpm sync:shared-deps # 同步共享依赖版本 pnpm update:deps # 交互式升级依赖(taze) pnpm upload:sourcemaps # 上传 sourcemap(生产排障) pnpm reinstall # 清空 lock 后重装 pnpm clean # 清理产物 ``` ## 路由规则 主应用通过路径前缀匹配激活对应的子应用: | 路径前缀 | 子应用 | | -------------- | ------------ | | `/YDSZ-user/*` | userinfo-web | | `/YDSZ-sys/*` | system-web | | `/YDSZ-msg/*` | message-web | | `/YDSZ-cron/*` | cronjob-web | | `/YDSZ-flow/*` | workflow-web | | `/YDSZ-wiki/*` | nextwiki-web | | `/YDSZ-rule/*` | literule-web | | `/ydsz-ai/*` | agent-web | ## API 代理与对齐 开发环境通过 Vite proxy 统一代理到 Gateway 9000 端口: ```typescript // vite.config.mts server: { proxy: { '/api': { target: 'http://localhost:9000', // Gateway changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, ''), ws: true, }, }, } ``` 全仓 API 契约统一对齐: - 路径统一为 `/api/v1/{service}/{resource}`(kebab-case),成功码统一为 `successCode = "A00000"` - 登录响应统一为 `LoginVO` 类型,`refreshToken` 自动刷新与重放 - **契约门禁**(CI 防漂移): - `pnpm gen:contract`:从 `ydsz-cloud` 源码静态提取 8 个服务全部端点,生成 `apps/*/src/api/` 下的类型化 API 封装(`models.ts` 含全部 DTO/VO 类型)与 `sdk/openapi.json` 契约基线,产物扁平落于 `api/` 根目录(遵循云顶编码规范 6.2) - `pnpm gen:contract:check`:校验后端接口变更是否已同步(有漂移则退出码非 0),建议挂入 CI - `pnpm gen:api` / `gen:api:check`:后端运行后从 `/v3/api-docs` 拉取运行时契约生成 SDK,可无缝替换静态基线 - 业务代码按模块 import 真实契约 API,如 `import { list as listRules } from '#/api/ruleAdmin'`;`#/api` 聚合导出仅保留 `core`(认证/菜单/用户)与 `models`,避免多 Controller 重名函数(get/stats/validate)的导出歧义 - **流式接口**:agent `chat/stream`、`execute/stream` 等 SSE 场景使用 `streamRequest`(`@ydsz/shared-auth`,fetch + ReadableStream 解析,Token 自动注入、支持 AbortSignal 取消) ## 工程规范 | 检查项 | 命令 | 说明 | | ---------- | ----------------------------- | --------------------------------------------- | | Lint | `pnpm lint` / `pnpm lint:fix` | ESLint + Stylelint(含 Stylelint 自动修复) | | 类型检查 | `pnpm type-check` | turbo 编排(✅ v4.4.1 基础设施包已接线:micro-kernel / micro-runtime / monitor / constants,存量 108 处类型错误已清零;业务包按包清零后逐包接线) | | 循环依赖 | `pnpm vsh:check-circular` | `vsh check-circular`(零循环依赖守护) | | 依赖合法性 | `pnpm vsh:check-dep` | `vsh check-dep`(依赖合规) | | 产物依赖 | `pnpm vsh:check-bundle` | 共享依赖外置证据检测(防 importmap 依赖被误打包致双实例,v4.4.0) | | 产物体积 | `pnpm check:size` | 构建产物 gzip 预算断言(主应用 512KB / 子应用 384KB,v4.4.0) | | i18n 校验 | `pnpm check:i18n` | 全仓 zh-CN / en-US key 集合一致性校验(v4.4.0) | | importmap | `pnpm sync:shared-deps:check` | 版本锁(`bash/importmap.lock.json`)与 vendor 产物一致性校验(v4.4.0 机制,v4.4.1 首次执行生成锁文件并修复 Windows `*` 路径与 axios esm.sh 解析问题) | | 契约校验 | `pnpm gen:contract:check` | 静态契约基线漂移检查;`pnpm gen:api:check` 为运行时契约(后端运行后) | | 发布校验 | `pnpm vsh:publint` | 共享包发布规范校验 | | 格式化 | `pnpm format` / `pnpm format:check` | Prettier 全仓格式化(v4.4.1 接入,`--cache` 加速) | | 拼写检查 | `pnpm check:cspell` | cspell 全仓拼写检查(v4.4.1 接入,词库见 `cspell.json`) | Git hooks(Lefthook):`pre-commit` 并行执行 Prettier/ESLint/Stylelint 及 JSON 格式化;`pre-push` 全量执行类型检查、vsh 三件套(check-dep / check-arch / check-circular)与契约/错误码漂移校验;`commit-msg` 执行 Commitlint;`post-merge` 自动 `pnpm install`。 CI(GitHub Actions):`verify` job(lint / stylelint / type-check / check-circular / check-dep / check:i18n / sync:shared-deps:check)PR 必跑;`contract` job(`gen-contract.py --check`,经 `YDSZ_CLOUD_ROOT` 检出后端)push main 必跑;另有依赖安全审计与密钥扫描 job。 ## 测试体系 > 按云顶编码规范 §15.10,本仓库**禁止包含测试代码**(单元/E2E/视觉回归等均不落地)。 > 原 Vitest / Playwright / Lighthouse CI 相关脚本与配置已全量移除,质量保障由 > 「ESLint + Stylelint + type-check + vsh 三件套 + 契约/错误码漂移校验」五类静态门禁承担: | 门禁 | 命令 | 覆盖范围 | 状态 | | ------------ | ----------------------------- | ---------------------------------------------------------------------------- | ---- | | 代码规范 | `pnpm lint` / `pnpm stylelint` | ESLint + Stylelint 零告警 | ✅ 已落地 | | 类型检查 | `pnpm type-check` | 全仓 TypeScript 类型检查(含 SFC 声明生成链) | ✅ 已落地 | | 架构守护 | `pnpm vsh:check-arch` 等 | 依赖合规 / 循环依赖 / 产物预算(vsh 三件套) | ✅ 已落地 | | 契约对齐 | `pnpm gen:contract:check` | API 契约对齐(静态提取基线 `--check` 校验漂移) | ✅ 已落地 | | 国际化一致性 | `pnpm check:i18n` | i18n key 一致性校验 | ✅ 已落地 | ## 性能预算 > 产物级预算由 `pnpm check:size` 与构建期 bundle-budget 插件兜底(原 Lighthouse CI > 运行时性能采样已随 §15.10 移除)。预算目标如下: - **错误级**:Accessibility ≥ 0.9 - **警告级**:Performance ≥ 0.9;FCP ≤ 2000ms、LCP ≤ 2500ms、TTI ≤ 3800ms、TBT ≤ 300ms、CLS ≤ 0.1、SI ≤ 3400ms - **资源预算**:JS ≤ 50 个 / 512KB,CSS ≤ 10 个 / 128KB,图片 ≤ 1MB,第三方 ≤ 256KB,DOM 节点 ≤ 1500 ## 浏览器支持 支持现代常青浏览器(Chrome 80+ / Edge / Firefox / Safari),不支持 IE。 ## Git 规范 提交信息遵循 [Conventional Commits](https://www.conventionalcommits.org/zh-hans/)(Commitlint 强制校验): - `feat` 增加新功能 - `fix` 修复问题/BUG - `style` 代码风格相关无影响运行结果的 - `perf` 优化/性能提升 - `refactor` 重构 - `revert` 撤销修改 - `test` 测试相关 - `docs` 文档/注释 - `chore` 依赖更新/脚手架配置修改等 - `ci` 持续集成 > 提交时建议使用 `pnpm commit`(czg 交互式引导)。 ## 文档与决策记录 - [docs/v4.0-优化设施说明.md](docs/v4.0-优化设施说明.md) — 微应用框架优化设施说明(v4.0-v4.4) - [docs/decisions/](docs/decisions/README.md) — 架构决策记录(ADR 索引): - [ADR-001: 微前端运行时选型](docs/decisions/adr-001-micro-kernel-vs-qiankun.md)(自研 ESM 内核 vs qiankun) - [ADR-002: Monorepo 工具链](docs/decisions/adr-002-monorepo-toolchain.md)(pnpm + turbo + vsh) - [ADR-003: SSR / Pre-rendering 评估](docs/decisions/adr-003-ssr-pre-rendering.md) - [ADR-005: 可访问性基线](docs/decisions/adr-005-accessibility.md) - [ADR-006: 可观测性体系](docs/decisions/adr-006-observability.md)(错误/性能/预加载指标) - [ADR-007: 三沙箱支持矩阵](docs/decisions/adr-007-sandbox-matrix.md)(iframe 沙箱为 experimental) ## 竞品对标 YDSZ 微前端中后台底座的对标竞品均为 Gitee 上的 Java/Spring 系中后台框架,可作为产品定位、能力补齐与差异化分析的参考: | 竞品 | 定位 | Gitee 地址 | | ---- | ---- | ---------- | | **RuoYi** | 基于 Spring Boot 的轻量级权限管理 / 快速开发框架 | https://gitee.com/y_project/RuoYi | | **pig** | 基于 Spring Cloud、OAuth2 的 RBAC 企业级快速开发平台(微服务 / 单体双模) | https://gitee.com/log4j/pig | | **maku-boot** | 企业级低代码平台(前后端分离,信创适配) | https://gitee.com/makunet/maku-boot | | **SpringBlade** | 商业级微服务 SaaS(Vue/React 双前端) | https://gitee.com/smallc/SpringBlade | | **JeecgBoot** | 企业级 AI 低代码平台(低代码 + 零代码双模式) | https://gitee.com/jeecg/JeecgBoot | **差异化要点**:上述竞品普遍为「后端全家桶 + 单体/微服务」形态,YDSZ 的核心差异在 **Vue 3 微前端架构**(`micro-kernel` + 8 个独立部署子应用)、**agent-web AI Agent 原生**、**可观测性**(火焰图 / 时间线 / 内存趋势,ADR-006)与 **可访问性**(可访问性基线,ADR-005);**信创适配**(国密、达梦 / 人大金仓等国产库)为对标中普遍具备、YDSZ 尚待补齐的能力。 ## Roadmap - [ ] 接入 CI/CD 流水线(~~已完成主链路~~ v4.4.0:GitHub Actions `verify` / `contract` 已落地,`e2e-smoke` 手动触发;待办:e2e 放开至 PR 必跑、cspell 接入) - [x] 补齐 Changesets 发布配置(v4.4.0:`.changeset/` 已初始化) - [x] 补全 ADR 决策记录(v4.4.0:ADR-001/002/003/005/006/007 已归档,004 编号跳过) - [ ] 共享依赖版本锁推广:`pnpm sync:shared-deps` 生成 `bash/importmap.lock.json` 后提交,各应用 vendor 产物对齐(v4.4.0 机制已落地,待首次执行) - [ ] manifest 签名验签升级:当前 strictIntegrity 为 sha256 清单比对(可选模式),后续评估 HMAC/ed25519 签名与 Service Worker 校验 - [x] 移除 `project-web` 相关残留引用(package.json 脚本 / 部署配置 / e2e 用例) ## 开源许可 [MIT](LICENSE) © 2026 Marvin Lee