设计一个在线投票系统,系统的设计描述如下:一、核心角色与权限 系统包含两类核心角色,且所有用户默认具备发起投票、参与投票、查阅本人参与 / 发起的投票记录的权限,无额外权限门槛: 投票发起者:可创建投票项目、配置投票规则、查看所发起投票的全量数据; 投票参与者:可参与未截止的投票、查看本人投票记录、查阅投票结果(投票成功后)。 二、投票项目创建规则(发起者视角) 投票内容自定义:发起者可自主设置投票标题、投票描述(可选)、投票选项; 选项约束:投票选项为单选模式,数量需满足「最少 2 个、最多 10 个」,且选项内容不可为空; 时间规则:发起者需设置投票截止时间,系统仅允许在截止时间前接收投票,截止后自动关闭投票通道,仅保留结果查阅权限; 数据存储:发起的每一个投票项目需完整入库,存储字段至少包含:投票 ID、发起者 ID、投票标题 / 描述、选项列表(选项 ID + 选项内容)、截止时间、创建时间、投票状态(未截止 / 已截止)。 三、投票参与规则(参与者视角) 投票有效性:仅可对「未截止」的投票项目进行投票,已截止项目无法参与; 投票唯一性:每个用户对同一投票项目仅拥有一次投票机会,提交投票后不可修改、不可重复投票,系统需校验用户 - 投票项目的唯一关联关系; 结果查阅:参与者投票提交成功后,可实时查阅该投票项目的当前累计结果(以柱状图可视化展示); 记录追溯:参与者可在个人中心查阅所有「已参与的投票项目」列表及对应投票记录(如投票时间、所选选项)。 四、投票数据存储与结果展示 投票行为数据存储:每一次有效投票需完整入库,存储字段至少包含:投票记录 ID、投票项目 ID、参与者 ID、所选选项 ID、投票时间; 结果统计与展示: 投票结果以柱状图可视化呈现,横轴为投票选项,纵轴为对应票数; 所有用户(发起者 / 参与者)均可查看投票项目的统计结果(未截止项目展示实时数据,已截止项目展示最终数据); 发起者可查看所发起投票的全量统计维度(如各选项票数、参与总人数、投票时间分布等),参与者仅可查看本人参与 / 所有公开投票的结果数据。 五、核心数据存储清单 表格 数据分类 核心存储字段 投票项目基础信息 投票 ID、发起者 ID、标题、描述、选项列表(选项 ID + 内容)、截止时间、创建时间、状态 投票行为记录 记录 ID、投票项目 ID、参与者 ID、所选选项 ID、投票时间 用户关联记录 用户 ID、关联投票项目 ID(区分「发起」/「参与」)、关联时间 总结 权限层面:明确「无门槛」核心规则,所有用户均可发起、参与投票并查阅对应记录; 规则层面:强化投票选项数量 / 类型、截止时间、投票唯一性等约束,且明确规则落地的校验逻辑; 数据层面:清晰拆分「投票项目」「投票行为」「用户关联」三类核心存储数据,明确各字段的业务价值,保障数据可追溯、可统计。
A用户发起的投票,其他用户查阅不了,也无法参与投票