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. 环境依赖

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