Skip to content
fyc09Public

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

99 Commits

Folders and files

Repository files navigation

LiveMS

LiveMS 是一个生活管理系统,包含:

  • 日程(Schedule)
  • 待办(Todo)
  • 课程(Course)
  • 文件(File)
  • 笔记(Note)

系统支持主系统(master)和子系统(slave)协作部署。

技术栈

  • 后端:FastAPI + SQLAlchemy + SQLite
  • 前端:Vue 3 + TypeScript + Vite + Vuetify
  • 认证:
    • master:密码登录
    • slave:用户名密码登录(直接读取共享主库校验)

目录结构

  • backend/:统一后端代码(master_app.py + slave_app.py,以及 master_routes/ + slave_routes/)
  • frontend/:统一前端(根据后端返回模式切换 master/slave 行为)
  • common/:主从复用的公共代码
  • ops/:部署、systemd、nginx、hook 样例

当前系统架构

1. 业务逻辑分工

  • master 是数据源和权限中心:
    • 保存所有用户、策略组、业务数据
    • 提供管理员功能(用户管理、策略管理等)
  • slave 是受限视图层:
    • 不保存业务主数据,只保存本地 session/cache
    • 与 master 在同机运行,直接读取共享数据库与文件存储
    • 不通过 HTTP 请求 master 内部 API

2. 策略与可见性(slave)

  • 用户可见范围由 master 返回的策略规则决定。
  • 规则可按 type + tags + fields 限定可见对象和字段。
  • recursive=true 时,规则命中的对象会额外放开“它引用的对象”(一层)。
  • 引用关系来自业务文本中的引用标记(schedule/todo/course/file/note 间互引)。

3. slave 认证与数据链路

  1. 用户在 slave 登录(/api/auth/login)。
  2. slave 直接读取共享主库校验用户名密码并加载用户上下文。
  3. slave 本地签发 session token(24h),后续请求都使用该 token。
  4. slave 直接从共享主库读取业务数据,并在 slave 侧做字段/对象过滤后返回前端。

说明:

  • 主从不再依赖内部 HTTP token/pre-auth 链路。

4. 子系统管理员逻辑

  • 数据库迁移会确保存在默认子系统管理员:
    • 用户名:admin
    • 初始密码:admin/admin
    • 首次登录强制改密
  • 子系统管理员登录后只进入子系统管理面板,不访问业务资源页面。

自动部署与连接通道

1. master 自动部署

本地执行:

git push server main

server 上的 bare repo hook(/opt/livems/repo.git/hooks/post-receive)会:

  1. checkout 到 /opt/livems/app
  2. 安装/更新 backend 依赖
  3. 构建前端
  4. 重启 livems.service(并可选重启 livems-slave.service)
  5. 写入部署状态到 /opt/livems/deploy/status.json

2. slave 同机运行

  • master 和 slave 在同一台服务器上以两个 systemd 服务运行。
  • 两者共用同一套环境文件(默认 /opt/livems/env/.env)。
  • 两者直接访问同一 LIVEMS_DB_PATH 和 LIVEMS_STORAGE_DIR。

开发启动(Makefile)

仓库根目录可直接使用:

make dev-master-backend
make dev-slave-backend
make dev-frontend-master
make dev-frontend-slave

说明:

  • dev-frontend-master:前端连接 master 后端(默认 http://127.0.0.1:8000)
  • dev-frontend-slave:前端连接 slave 后端(默认 http://127.0.0.1:8010)

关键环境变量

master + slave(共享)

  • LIVEMS_PASSWORD
  • LIVEMS_SECRET_KEY
  • LIVEMS_DB_PATH
  • LIVEMS_STORAGE_DIR
  • LIVEMS_PUBLIC_BASE_URL

slave(可选)

  • LIVEMS_SLAVE_FILE_CACHE_DIR
  • LIVEMS_SLAVE_FILE_CACHE_MAX_BYTES
  • LIVEMS_SLAVE_FILE_CACHE_TTL_SECONDS

运维文档

  • 主系统部署:ops/deploy.md
  • 子系统部署:ops/slave-deploy.md
  • server 实机文档:~/livems-ops.md(server)

安全注意事项

  • note.txt 不提交到 git。
  • 认证 URL、token、证书路径等敏感信息只放环境文件,不进入仓库。
  • slave 与 master 同机部署时,建议明确配置共享主库路径与共享存储路径。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages