# rdfz-md **Repository Path**: htmlpan/rdfz-md ## Basic Information - **Project Name**: rdfz-md - **Description**: 沙盒网旨在为校园及 Minecraft 社区用户提供一个集内容创作、图片分享、活动组织、论坛讨论与服务器信息展示于一体的综合平台。系统需支持多角色协作、内容审核、互动参与与安全访问控制,保证良好的可扩展性与维护性 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-10-20 - **Last Updated**: 2025-10-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rdfz-md (Sandbox Campus & Minecraft Community Platform) Content creation · Image gallery · Events · Forum · Server status · Unified permissions & moderation ## 1. Overview 本项目旨在为校园与 Minecraft 社区提供一个统一门户:文章发布、图集分享、活动组织、论坛讨论、服务器监控与互动统一在一个可扩展平台中。支持角色分级 (member / moderator / admin)、内容审核、统一错误与分页规范、软删除与审计日志。 ## 2. Core Features - User & Auth: 注册 / 登录 / JWT / 刷新令牌(可选) / 角色权限 / 审计日志 - Posts: 分类、标签、全文索引、草稿/发布、评论、点赞、浏览量统计 - Gallery: 图片分类/标签、状态审核 (pending/approved/rejected)、精选、评论、点赞 - Events: 活动创建、报名、状态流转(upcoming/ongoing/ended/cancelled)、统计 - Forum: 分类、主题、回复、置顶、锁定、浏览统计 - Server Monitor: 服务器基础信息、在线玩家快照、历史统计 - Interaction: 统一多态点赞 (post/image/topic/event) - Observability & Safety: 审计日志、软删除、统一错误响应、字段一致命名策略 - Extensibility: 预留通知、版本历史、国际化、多语言分类 - **Frontend Cache Management**: 自动版本控制,智能缓存破坏,无需用户手动清除缓存 ## 3. Documentation | 文档 | 描述 | |------|------| | `../需求文档.md` | 系统需求规格(SRS) | | `../API接口协议.md` | REST API 规范与示例 | | `../数据库结构.md` | MySQL 表结构与 DDL | ## 4. Tech & Conventions - Backend: (待实现) 推荐 Node.js / TypeScript / NestJS 或 Spring Boot(未在此仓库) - DB: MySQL 8.x,UTF8MB4,InnoDB,统一时间戳字段 (`created_at`/`updated_at`/`deleted_at`) - Auth: JWT(访问令牌 + 刷新令牌)+ BCrypt 密码哈希 - API 统一:分页 `{ data, pagination{ page, limit, total, totalPages } }`;错误 `{ code, message, details, traceId }` - 命名:API camelCase;DB snake_case;多态类型字段受控枚举 ## 5. Database Entities (Excerpt) 主要表(详见 `../数据库结构.md`): `users`, `refresh_tokens`, `audit_logs`, `posts`, `post_categories`, `post_tags`, `post_tag_map`, `post_comments`, `images`, `image_categories`, `image_tags`, `image_tag_map`, `image_comments`, `events`, `event_categories`, `event_participants`, `forum_categories`, `forum_topics`, `forum_replies`, `content_likes`, `servers`, `server_stats`, `server_players`。 ## 6. Directory (Current Repo) ```text ./ ├── 需求文档.md ├── API接口协议.md ├── 数据库结构.md ├── img/ │ ├── image1.jpg │ ├── image2.jpg │ ├── image3.jpeg │ └── image4.jpeg ├── rdfz-md/ │ └── README.en.md (当前文件) └── logo.png ``` ## 7. 快速开始(FastAPI 后端 + 静态前端) ```bash # 1. 克隆仓库 git clone cd rdfz-md # 2. 创建并启用虚拟环境 python3 -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # 3. 安装依赖 pip install -r requirements.txt # 4. 启动开发服务(默认使用 SQLite) uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` 启动后: - 后端 API 根路径: - Swagger 文档: - 静态前端入口: 静态目录 `static/` 中的页面会自动通过 FastAPI 提供: | 路径 | 说明 | |------|------| | `/rdfz-md-server/` | 首页(`static/index.html`) | | `/rdfz-md-server/login.html` | 登录页 | | `/rdfz-md-server/register.html` | 注册页 | | `/rdfz-md-server/users.html` | 用户列表 | | `/rdfz-md-server/activities.html` | 活动页 | | `/rdfz-md-server/gallery.html` | 图库管理与展示 | | `/rdfz-md-server/profile.html` | 个人中心 | 若部署到其他域名 / 端口,只需保持服务器 `root_path='/rdfz-md-server'` 或相应调整 `static/js/config.js` 中的 API 基址。 ### Gallery 前端一览 `static/gallery.html` + `static/js/gallery.js` 提供完整的图库前端体验: - **筛选与搜索**:按状态、分类、标签、关键词、精选、创建者过滤,排序支持时间/浏览/点赞/评论。 - **上传与编辑**:登录用户可上传图片(支持分类、标签、描述、启用评论);管理员可直接修改状态。 - **审核与精选**:管理员可在列表中快速审核、驳回、设为精选并添加备注。 - **互动**:内置点赞、评论抽屉(支持删除自己的评论),统计实时刷新。 - **响应式布局**:桌面三列、移动单列,配合浮动上传按钮与导航一致主题。 - **URL 状态同步**:筛选条件写入地址栏,刷新或分享链接保留当前视图。 ## 8. API Conventions Summary | 项目 | 约定 | |------|------| | 认证 | Bearer Token (Authorization 头) | | 分页请求 | `?page=1&limit=20` | | 分页响应 | `data[] + pagination` 对象 | | 错误格式 | `{ code, message, details, traceId }` | | 软删除 | `deleted_at IS NULL` 过滤 | | 点赞唯一 | `(user_id, content_type, content_id)` 唯一约束 | | 时间 | 统一 `TIMESTAMP`(UTC 或指定时区) | ## 9. Contribution Guide 欢迎贡献: 1. Fork & Clone 2. 创建分支:`feat/` / `fix/` 3. 提交信息遵循 Conventional Commits(示例:`feat(post): add post search index`) 4. 提交 PR(描述变更 / 关联 issue / 截图如有 UI) ## 10. Roadmap (Snapshot) - [ ] 用户体系后端实现 - [ ] 文章 & 图库接口实现 + 测试 - [ ] 活动与论坛模块落地 - [ ] 服务器监控采集任务 - [ ] 通知与 WebSocket 实时消息 - [ ] 国际化多语言支持 ## 11. 认证与刷新机制 (当前实现摘要) 后端 FastAPI 已实现用户注册 / 登录 / 刷新 / 登出 / 软删除。 ### Token 字段 返回统一驼峰: - accessToken (短期访问令牌) - refreshToken (长期刷新令牌,7 天有效,刷新时轮换) - tokenType (bearer) ### 登录 & 注册 `POST /auth/login` 与 `POST /auth/register` 均返回 accessToken + refreshToken + user。 ### 刷新 `POST /auth/refresh` 传 `{ "refreshToken": "..." }`: - 校验与数据库 token_hash 比对; - 成功后删除旧记录并颁发新对(一次性使用策略); - 失败 / 过期返回 401。 ### 登出 `POST /auth/logout` 传 refreshToken,若存在即删除,返回 204(幂等且避免信息泄露)。 ### 前端自动刷新策略 `index.html` 内封装 `makeRequest`:接口 401 且本地存在 refreshToken 时自动调用 `/auth/refresh`,成功后重试一次原请求。 ### 建议后续强化 - 限制每用户 refresh token 最大数量 (设备多端控制) - 定时清理过期 refresh token - 注销账号时批量失效其全部 refresh token - 记录 refresh token 的 UA / IP / 最后使用时间,提供安全面板 - 高敏操作二次验证(Re-auth / OTP) ## 11. Frontend Cache Management(前端缓存管理)🆕 为解决前端更新后用户需要手动清除缓存的问题,项目已实现**自动缓存破坏(Cache Busting)**方案。 ### 特性 - ✅ 自动为静态资源(CSS/JS)添加版本号 - ✅ 用户无需手动清除缓存 - ✅ 浏览器自动加载最新版本 - ✅ 充分利用浏览器缓存提升性能 - ✅ 一键发布工具 ### 快速使用 ```bash # 方法一:一键发布(推荐) ./scripts/release.sh # macOS/Linux scripts\release.bat # Windows # 方法二:手动更新版本号 python scripts/add_cache_buster.py # 验证配置 python scripts/verify_cache_buster.py ``` ### 工作原理 脚本自动将: ```html ``` 转换为: ```html