删除全部 Node.js 后端、.mjs 测试、辅助脚本、package*.json、node_modules 和迁移对照工具。 浏览器前端保留并迁入 [Eis.Web/wwwroot](C:/Users/BI/Documents/EIS-dotnet/src/Eis.Web/wwwroot/index.html),统一改为 .js 模块。 修复一个隐藏遗漏:.NET 仍依赖 schema.mjs,且 MySQL 结构解析可能被转义反引号截断。现已改为原生 [SQLite SQL](C:/Users/BI/Documents/EIS-dotnet/src/Eis.Infrastructure/Data/Schema.sqlite.sql) 和 [MySQL SQL](C:/Users/BI/Documents/EIS-dotnet/src/Eis.Infrastructure/Data/Schema.mysql.sql) 资源。 更新了 [DatabaseInitializer.cs](C:/Users/BI/Documents/EIS-dotnet/src/Eis.Infrastructure/Data/DatabaseInitializer.cs)、项目配置、README 和迁移文档。 data 目录和现有数据库未修改;测试仅使用系统临时 SQLite 数据库。
55 lines
3.1 KiB
Markdown
55 lines
3.1 KiB
Markdown
# ASP.NET Core 10 迁移
|
||
|
||
系统业务 API、认证、管理后台、审批流、考务编排、招生录取、Excel、文书和缓存均已迁移到 ASP.NET Core 10。生产宿主和容器只运行 .NET;旧 Node.js 服务端源码、依赖、测试和迁移对照工具已从仓库移除。
|
||
|
||
## 完成情况
|
||
|
||
- [x] ASP.NET Core 10 分层解决方案与前端静态资源托管
|
||
- [x] 公开首页、公告、招生公示和 HMAC 文书验真
|
||
- [x] 登录、自主注册、Session、TOTP 和考生中心
|
||
- [x] 管理后台、审批流、考务编排和成绩管理
|
||
- [x] 指标资格、招生账户、志愿、计划、投档、录取、报到和退档
|
||
- [x] ClosedXML 文件导入导出、文书模板和 Redis/本机缓存
|
||
- [x] SQLite / MySQL 自动建库和基础配置初始化
|
||
- [x] SQLite / MySQL 结构改为 .NET 内嵌原生 SQL 资源
|
||
- [x] 可发布的 .NET 数据库重建与 1200 人演示数据导入工具
|
||
- [x] 容器入口切换及 Node.js 后端运行依赖移除
|
||
- [x] 浏览器静态资源归档到 `src/Eis.Web/wwwroot`
|
||
- [x] Node.js 源码、依赖和测试清理
|
||
|
||
## 本地运行
|
||
|
||
需要 .NET 10 SDK:
|
||
|
||
```powershell
|
||
dotnet restore .\Eis.slnx
|
||
dotnet run --project .\src\Eis.Web\Eis.Web.csproj
|
||
```
|
||
|
||
浏览器访问 <http://127.0.0.1:4173>。首次启动空库时,系统会建立 v20 结构、基础规则、默认审批流程和初始超级管理员。
|
||
|
||
- `GET /health/live`:ASP.NET Core 宿主存活检查。
|
||
- `GET /health/migration`:原生功能、认证状态后端和缓存状态;`legacyApiRemoved` 固定为 `true`。
|
||
- 未注册的 `/api/*` 返回原生 `404`,不再转发旧服务。
|
||
|
||
`appsettings.json` 已默认启用全部原生域,无需再设置 `AUTH_NATIVE_ENABLED`、`CANDIDATE_NATIVE_ENABLED` 或 `ADMIN_NATIVE_*` 迁移开关。Redis 为可选项;单实例使用进程内会话和有界本机缓存,多实例部署应配置 Redis 共享会话。
|
||
|
||
## 已迁移的文件与文书能力
|
||
|
||
- ClosedXML 处理班级、管理员、报名号、考生、缴费、考点考场、成绩、志愿、录取、报到和正式录取名册工作簿。
|
||
- 成绩导入先预检再确认,报到导入按招生学校和可维护批次限定范围。
|
||
- 录取通知书模板由原生接口保存;成绩单、准考证和录取通知书的数据及防伪验真均由 ASP.NET Core 提供。
|
||
- CKEditor 和全部浏览器资源均位于 `src/Eis.Web/wwwroot`,发布时由 Web SDK 自动收集。
|
||
|
||
## 验证
|
||
|
||
```powershell
|
||
dotnet test .\Eis.slnx
|
||
pwsh.exe -NoLogo -NoProfile -NonInteractive -File .\scripts\publish.ps1
|
||
dotnet .\artifacts\publish\tools\Eis.Tools.dll database seed --sqlite --path .\artifacts\demo.sqlite --dry-run
|
||
pwsh.exe -NoLogo -NoProfile -NonInteractive -File .\scripts\smoke-dotnet-native.ps1
|
||
docker compose up --build --detach
|
||
```
|
||
|
||
`Eis.Tools.dll` 提供 `database init/reset/seed`;破坏性命令要求 `--confirm-target`,SQLite 自动保留原库备份,MySQL 拒绝系统库和未显式强制覆盖的非演示业务数据。`scripts/smoke-dotnet-native.ps1` 会发布并启动纯 .NET 产物,在操作系统临时目录创建一次性 SQLite 数据库,检查健康状态、首页、CKEditor、原生登录和未知 API 404 后清理。
|