This commit is contained in:
biss committed 2026-08-29 12:01:01 +08:00
1 parent 2eddb1217e
commit 6b0c4d054d
13 files changed
+209

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
# CMS 初始化与安全边界
## 运行模式
`ElectionSystem.Cms` 是独立的 Orchard Core 3.0.1 Headless CMS 主机。它仅管理公开内容、媒体、审核和发布历史,不是选举业务服务,也不能访问匿名选票、已投状态、线下计票或内部审计表。
首次启动时运行 `dotnet run --project src/ElectionSystem.Cms` 并访问 CMS 主机根路径,在初始化页面选择 **Headless** 配方和 **MySql** 提供程序,再输入连接字符串。生产环境应使用独立数据库,例如 `election_cms`;不要与 `election` 业务数据库共用表、账户或迁移历史。
请在部署前由数据库管理员创建 CMS 专用数据库及最小权限账户。Orchard Core 会验证连接后创建自己的表,但不会创建数据库;本仓库不会自动创建数据库或自动完成 CMS 初始化。
初始化完成后,在 **Configuration → Features** 启用 `ElectionSystem.Cms.PublicContent`。该模块的数据迁移会自动创建下列固定公开栏目和公共元数据字段;停用模块不会删除已有公开内容。
## 首批内容类型
在 CMS 的 Content Definition 中创建以下类型,并统一启用 Title、HTML/Markdown 正文、SEO、Taxonomy、Autoroute、Publish Later、Archive Later 和版本历史:
| 类型 | 必需字段 | 限制 |
| --- | --- | --- |
| ElectionNotice | 活动外部标识、适用受众、生效时间 | 不含选民名单或参与状态 |
| PolicyDocument | 规则版本、生效日期、附件 | 历史版本不能原地覆盖 |
| CandidateDisclosure | 活动外部标识、候选人公开资料、公示期 | 不含联系方式、内部审核意见 |
| VoterGuide | 引导类别、适用范围 | 不透露任何个体资格结果 |
| ResultAnnouncement | 结果发布版本标识、统计口径 | 只能引用 Election API 已发布结果 |
| Faq | 问题、答案、排序 | 不接收个人申诉材料 |
| DownloadAsset | 文件、版本、适用范围 | 受文件安全与下载策略控制 |
固定栏目以独立内容类型呈现,不能由编辑任意改名或删除;每项内容还带有“适用受众”和活动外部标识。后续将启用 Taxonomies 作为可扩展专题标签,但标签不能改变固定栏目或绕过发布审核。
## 发布与权限
配置 CMS 编辑、审核员、发布员、媒体管理员和选举联络员角色。发布流程必须是草稿、提交审核、退回或通过、定时/立即发布、下线/归档;回滚创建新版本并保留审计。
CMS 到公开站的集成只能是只读公开内容接口。结果、参与率和实时票数由 `ElectionSystem.Api` 根据活动公开策略裁决后提供;CMS 不得直接查询选举 MySQL 数据库。