Files in the top-level directory from the latest check-in
- .dockerignore
- .env.example
- .fossil-settings
- config
- deploy
- migrations
- patches
- scripts
- src
- test
- Dockerfile
- gleam.toml
- manifest.toml
- README.md
MemberVault
企业内部人员名录与知识库协作平台。基于 Gleam 与 SQLite 构建,采用纯服务端渲染(SSR)架构,零外部前端运行时依赖。
核心功能
- 组织架构与部门管理:支持多级部门树状层级、部门主管与岗位编制配置,内置循环层级依赖检测。
- 人员名录与档案:支持拼音首字母与全文检索,提供在职/归档/失效状态流转,支持卡片与列表双视图切换。
- 自定义字段引擎:支持按需定义单行文本、多行文本、单选、日期、数值等字段类型,支持敏感字段标记与列表显隐控制。
- 同行评价与内容审核:提供员工匿名同行评价与多维度评分机制,支持管理员对违规内容进行遮蔽、恢复或删除。
- 企业知识库与相册:支持多级文件夹及可见范围(全员/部门/指定人员/私密)继承与覆盖,提供 PDF/图片/纯文本在线预览与 Office 格式下载回退;支持团队相册瀑布流展示与大图预览。
- 内部动态与互动:支持企业动态发布、评论互动、置顶与多模块内容个人收藏夹。
- 首页仪表盘与系统通知:汇总在职人员、部门、文档、相册等核心统计数据,提供未读通知红点提示与一键已读。
- 权限管理与安全审计:预设超级管理员与管理员两级角色,全站覆盖 CSRF 校验、Argon2id 密码加密、Session Digest 与全量操作审计日志。
技术选型
- 开发语言:Gleam 1.18.1
- 运行时环境:Erlang / OTP 27+
- Web 框架:glimr 1.0.0 / wisp / mist
- 数据存储:SQLite 3(WAL 模式 + Busy Timeout 5000ms + 外键级联约束 + 单写连接池)
- UI 架构:纯服务端渲染 HTML/CSS,无外部前端框架依赖
项目结构
.
├── src/member_vault/
│ ├── domain/ # 业务实体、值对象与权限定义
│ ├── infrastructure/ # SQLite 连接池、配置加载与本地文件存储
│ ├── security/ # 密码加密、会话管理、CSRF 与审计日志
│ ├── service/ # 核心业务服务层(人员、组织、文档、相册等)
│ └── web/ # 路由分发、中间件守卫与 HTML 页面视图
├── migrations/ # 数据库版本迁移脚本(0001 ~ 0012)
├── scripts/ # 本地开发与生产备份/恢复脚本
├── deploy/ # Systemd 守护进程与 Nginx 反向代理配置样例
├── test/ # 自动化单元测试与端到端回归测试套件
└── docs/ # 项目需求、软件设计与开发计划文档
快速开始
1. 环境依赖
- 安装 Erlang/OTP (>= 27)
- 安装 Gleam (>= 1.18.0)
- 安装 SQLite 3
2. 本地配置
复制环境变量样例文件:
cp .env.example .env
根据实际环境调整 .env 中的端口号、数据库路径和密钥配置。
3. 运行服务
启动应用(首次运行将自动执行数据库迁移并创建初始超级管理员):
gleam run
默认访问地址:https://trilobite.1kt.dev
默认初始账号:admin / correct horse battery staple(请在生产环境中修改)
4. 运行测试
执行全量自动化测试套件:
gleam test
检查代码格式化:
gleam format --check src test
生产部署与运维
1. Systemd 守护进程
将 deploy/member-vault.service 复制至 /etc/systemd/system/ 并启动服务:
sudo cp deploy/member-vault.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now member-vault
2. Nginx 反向代理
参考 deploy/nginx.conf 配置域名、SSL 证书及 60MB 上传限制:
sudo cp deploy/nginx.conf /etc/nginx/conf.d/member-vault.conf
sudo nginx -t && sudo systemctl reload nginx
3. 数据备份与恢复
- 在线热备份(执行 SQLite
VACUUM INTO快照 + 存储文件打包归档,默认保留最近 14 天):bash scripts/backup.sh - 数据恢复:
bash scripts/restore.sh /path/to/member_vault_backup_YYYYMMDD_HHMMSS.tar.gz