Files
EIS-dotnet/MIGRATION.md
T
biss f3ffc18aae 新增 [Eis.Tools (line 1)](C:/Users/BI/Documents/EIS-dotnet/src/Eis.Tools/Program.cs:1),支持 database init/reset/seed。
数据库维护、安全校验和事务逻辑位于 [DatabaseMaintenanceService.cs (line 1)](C:/Users/BI/Documents/EIS-dotnet/src/Eis.Infrastructure/Data/DatabaseMaintenanceService.cs:1)。
内置完整演示数据:1200 名考生、10800 条成绩、2404 条招生记录。
删除旧 import-test-data.mjs 和 reset-dev-database.mjs 运行入口。
Docker 镜像同时包含 Web 和 /app/tools/Eis.Tools.dll。
[package.json (line 11)](C:/Users/BI/Documents/EIS-dotnet/package.json:11) 原数据库命令已改为调用 .NET。
新增统一发布脚本:[publish.ps1 (line 1)](C:/Users/BI/Documents/EIS-dotnet/scripts/publish.ps1:1)。
2026-07-23 16:25:40 +08:00

52 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ASP.NET Core 10 迁移
系统业务 API、认证、管理后台、审批流、考务编排、招生录取、Excel、文书和缓存均已迁移到 ASP.NET Core 10。生产宿主和容器不再启动或转发到 Node.js;旧 `.mjs` 服务端源码仅保留作历史行为对照。
## 完成情况
- [x] ASP.NET Core 10 分层解决方案与前端静态资源托管
- [x] 公开首页、公告、招生公示和 HMAC 文书验真
- [x] 登录、自主注册、Session、TOTP 和考生中心
- [x] 管理后台、审批流、考务编排和成绩管理
- [x] 指标资格、招生账户、志愿、计划、投档、录取、报到和退档
- [x] ClosedXML 文件导入导出、文书模板和 Redis/本机缓存
- [x] SQLite / MySQL 自动建库和基础配置初始化
- [x] 可发布的 .NET 数据库重建与 1200 人演示数据导入工具
- [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 浏览器资源已随 Web 项目发布,不依赖 `node_modules`
## 验证
```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 后清理。`scripts/smoke-dotnet-migration.ps1` 保留为迁移期 Node/.NET 行为对照工具,不属于生产启动链路。