1.6 KiB
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。审计元数据只记录受影响的字段名,不能用于保存线上匿名选票内容或关联信息。