Files
election-system/docs/architecture.md
T
2026-08-29 12:01:01 +08:00

1.6 KiB

第一阶段架构说明

模块边界

Identity 仅维护本地用户与未来外部身份提供商的映射;Organization 维护组织树和成员范围;Election、Voting、OfflineCounting、Cms、PublicBoard 和 Audit 预留为独立业务模块。

公开内容采用 Razor Pages 的静态服务端渲染;需要即时校验和状态更新的区域采用 Blazor Web App 的 Interactive Server 渲染。交互组件不能承担投票防重、资格或计票规则,这些规则仍必须由服务端事务和数据库约束执行。

线上投票实现时,资格/已投状态与匿名选票将使用不同实体和数据库约束,禁止常规查询将选民反向关联到选票内容。本阶段没有创建选票表,因此不会产生该关联。

MySQL 配置

开发环境只提交不含密码的连接字符串模板。设置本机密码:

dotnet user-secrets set "ConnectionStrings:ElectionDatabase" "Server=localhost;Port=3306;Database=election;User ID=election;Password=<password>;" --project src/ElectionSystem.Api

生产环境请以 ConnectionStrings__ElectionDatabase 环境变量注入。迁移由运维明确执行,不在应用启动时自动运行。

CMS 使用独立的 ElectionSystem.Cms Orchard Core 主机及数据库;具体初始化和内容模型见 cms-setup.md。

当前数据库对象

初始迁移仅创建 identity_users、organization_units 和 audit_entries。审计元数据只记录受影响的字段名,不能用于保存线上匿名选票内容或关联信息。