信息公开前端

This commit is contained in:
biss committed 2026-08-29 17:08:07 +08:00
1 parent 1f7603923e
commit eebc5518c5
14 files changed
+176 -100

No files matched your search

+2
View File
@@ -62,6 +62,8 @@
- 列表接口必须分页;导出必须遵守同一范围授权,不得绕过筛选或泄露跨组织数据。 - 列表接口必须分页;导出必须遵守同一范围授权,不得绕过筛选或泄露跨组织数据。
- 前端提示不代替后端校验。对异常状态应提供可理解的错误码和可恢复指引。 - 前端提示不代替后端校验。对异常状态应提供可理解的错误码和可恢复指引。
- 公共看板的数据最小化:只返回活动公开策略允许的数据,并明确标注数据更新时间与统计口径。 - 公共看板的数据最小化:只返回活动公开策略允许的数据,并明确标注数据更新时间与统计口径。
- 公开 CMS 当前固定八类内容:选举公告、规则与政策、候选人公示、选民指南、结果公告、常见问题、资料下载、历史归档。变更内容类型时,必须同步更新 CMS 定义、`PublicContentSections`、首页展示和主菜单入口,不能只新增后台类型或只展示其中三类。
- 公开端采用中性政务信息风格(白底、政务蓝、冷灰、清晰分隔),以任务和已发布信息为中心;不加载外部字体或追踪脚本,不用装饰性配色掩盖信息层级。八个公开栏目必须有直接可访问的菜单入口,且不得显示未发布内容、未确认计票数据或个人投票信息。
## 测试与验证 ## 测试与验证
+3 -1
View File
@@ -12,7 +12,7 @@
- 身份认证:OpenIddict 或 Keycloak,采用 OpenID Connect / OAuth 2.0 - 身份认证:OpenIddict 或 Keycloak,采用 OpenID Connect / OAuth 2.0
- 实时与任务:SignalR、Hangfire、Redis - 实时与任务:SignalR、Hangfire、Redis
- 文件:MinIO 或 S3 兼容对象存储 - 文件:MinIO 或 S3 兼容对象存储
- 管理端:Vue 3 + Element Plus;公开站点:Nuxt 3(优先) - 管理端:Vue 3 + Element Plus;公开站点:Nuxt 3(优先;当前基础实现为 Razor Pages 服务端渲染)
- 编辑与可视化:CKEditor 5 或 TinyMCE、ECharts、ClosedXML - 编辑与可视化:CKEditor 5 或 TinyMCE、ECharts、ClosedXML
- 可观测性:Serilog + Seq 或 OpenSearch - 可观测性:Serilog + Seq 或 OpenSearch
@@ -73,6 +73,8 @@
- [ ] SignalR 推送公开看板数据,断线后使用受控轮询兜底。 - [ ] SignalR 推送公开看板数据,断线后使用受控轮询兜底。
- [ ] 公开看板显示活动状态、参与人数、参与率、数据更新时间和公开规则说明。 - [ ] 公开看板显示活动状态、参与人数、参与率、数据更新时间和公开规则说明。
- [ ] 候选人实时票数、排名和图表只在活动明确开启后公开;不得公开未确认线下结果。 - [ ] 候选人实时票数、排名和图表只在活动明确开启后公开;不得公开未确认线下结果。
- [x] CMS 公开信息基础:建立八类固定内容定义(选举公告、规则与政策、候选人公示、选民指南、结果公告、常见问题、资料下载、历史归档)及只读公开内容契约。
- [x] 公开信息前端:提供八类内容的首页最新发布区、直接栏目菜单入口、目录/详情页、发布内容空状态与服务不可用提示;采用响应式中性政务信息风格。
- [ ] CMS:栏目、文章、公告、政策、操作指南、候选人公示、结果公告、媒体库与附件。 - [ ] CMS:栏目、文章、公告、政策、操作指南、候选人公示、结果公告、媒体库与附件。
- [ ] CMS 支持草稿、审核、发布、下线、定时发布、版本历史、回滚、分类、标签、SEO。 - [ ] CMS 支持草稿、审核、发布、下线、定时发布、版本历史、回滚、分类、标签、SEO。
- [ ] 建立 CMS 内容与选举活动、公开看板、结果公告之间的关联。 - [ ] 建立 CMS 内容与选举活动、公开看板、结果公告之间的关联。
+1 -1
View File
@@ -38,7 +38,7 @@ try {
$notice = Invoke-WebRequest -Uri 'http://127.0.0.1:5055/content/notice' -UseBasicParsing -TimeoutSec 5 $notice = Invoke-WebRequest -Uri 'http://127.0.0.1:5055/content/notice' -UseBasicParsing -TimeoutSec 5
$interactive = Invoke-WebRequest -Uri 'http://127.0.0.1:5055/ballot-preview' -UseBasicParsing -TimeoutSec 5 $interactive = Invoke-WebRequest -Uri 'http://127.0.0.1:5055/ballot-preview' -UseBasicParsing -TimeoutSec 5
if ($homeResponse.Content -notmatch '公开内容以服务端渲染快速交付') { throw 'Home page content check failed.' } if ($homeResponse.Content -notmatch '每一项正式信息') { throw 'Home page content check failed.' }
if ($notice.Content -notmatch '公开公告模板') { throw 'Notice page content check failed.' } if ($notice.Content -notmatch '公开公告模板') { throw 'Notice page content check failed.' }
if ($interactive.Content -notmatch '投票交互预览') { throw 'Interactive component content check failed.' } if ($interactive.Content -notmatch '投票交互预览') { throw 'Interactive component content check failed.' }
Loaded 3 of 14 files, more files were not shown because too many files have changed in this diff. Show more