const MODULES = { announcements: { key: "announcements", title: "公告", desc: "查看班级重要通知", group: "class", icon: "告" }, schedule: { key: "schedule", title: "排期", desc: "课程、活动与截止日", group: "class", icon: "日" }, directory: { key: "directory", title: "成员名录", desc: "查找同学与班委", group: "class", icon: "友" }, fund: { key: "fund", title: "班费", desc: "查看公开收支账本", group: "class", icon: "账" }, votes: { key: "votes", title: "投票", desc: "参与班级决策", group: "class", icon: "选" }, timeline: { key: "timeline", title: "班级动态", desc: "分享近况与评论互动", group: "interact", icon: "动" } }; const MINI_PROGRAM_MODULE_KEYS = Object.keys(MODULES); function enabledSet(enabledModules) { const source = Array.isArray(enabledModules) ? enabledModules : MINI_PROGRAM_MODULE_KEYS; return new Set(source.filter((key) => MINI_PROGRAM_MODULE_KEYS.includes(key))); } function isModuleEnabled(key, enabledModules) { return enabledSet(enabledModules).has(key); } function visibleModules(group, enabledModules) { const enabled = enabledSet(enabledModules); return MINI_PROGRAM_MODULE_KEYS .map((key) => MODULES[key]) .filter((item) => item.group === group && enabled.has(item.key)); } function getModule(key) { return MODULES[key] || null; } module.exports = { MODULES, MINI_PROGRAM_MODULE_KEYS, getModule, isModuleEnabled, visibleModules };