Files
election-system/docs/architecture.md
T
biss 2eddb1217e 升级并完成 Razor Pages + Blazor Web App 骨架。
- 项目现为 net10.0,使用本机 .NET SDK 10.0.400 / runtime 10.0.11。
- MySQL 驱动当前最新兼容版本是 Pomelo 9.0,因此 EF Core 保持在 9.0.11;迁移已可正常读取。
- Razor Pages 静态 SSR:
  - [公开首页](E:\\election system\\src\\ElectionSystem.Api\\Pages\\Index.cshtml)
  - [公开公告示例](E:\\election system\\src\\ElectionSystem.Api\\Pages\\Content\\Notice.cshtml)
- Blazor Interactive Server:
  - [投票交互预览](E:\\election system\\src\\ElectionSystem.Api\\Components\\Pages\\BallotPreview.razor),仅演示交互,不提交或保存选票。
- 已加入 Blazor 所需的反伪造中间件,架构说明同步更新:[architecture.md](E:\\election system\\docs\\architecture.md)。
2026-08-29 11:31:28 +08:00

24 lines
1.4 KiB
Markdown

# 第一阶段架构说明
## 模块边界
`Identity` 仅维护本地用户与未来外部身份提供商的映射;`Organization` 维护组织树和成员范围;`Election`、`Voting`、`OfflineCounting`、`Cms`、`PublicBoard` 和 `Audit` 预留为独立业务模块。
公开内容采用 Razor Pages 的静态服务端渲染;需要即时校验和状态更新的区域采用 Blazor Web App 的 Interactive Server 渲染。交互组件不能承担投票防重、资格或计票规则,这些规则仍必须由服务端事务和数据库约束执行。
线上投票实现时,资格/已投状态与匿名选票将使用不同实体和数据库约束,禁止常规查询将选民反向关联到选票内容。本阶段没有创建选票表,因此不会产生该关联。
## MySQL 配置
开发环境只提交不含密码的连接字符串模板。设置本机密码:
```powershell
dotnet user-secrets set "ConnectionStrings:ElectionDatabase" "Server=localhost;Port=3306;Database=election;User ID=election;Password=<password>;" --project src/ElectionSystem.Api
```
生产环境请以 `ConnectionStrings__ElectionDatabase` 环境变量注入。迁移由运维明确执行,不在应用启动时自动运行。
## 当前数据库对象
初始迁移仅创建 `identity_users`、`organization_units` 和 `audit_entries`。审计元数据只记录受影响的字段名,不能用于保存线上匿名选票内容或关联信息。