完整完成主体功能
基于 Python + Flask + Oracle 的电脑端剧本杀评分、心测匹配与拼车组局平台。
本项目是一个面向剧本杀玩家的综合性 Web 平台,提供剧本评分评论、个性化推荐、心理测试匹配(心测)、拼车组局等功能。系统区分普通用户与管理员权限,数据存放在 Oracle 数据库中。
jubensha_rating/ ├── app.py # 🚀 Flask Web 服务入口(主程序) ├── config.py # ⚙️ Oracle 数据库连接配置 ├── requirements.txt # 📦 Python 依赖列表 ├── install_deps.bat # 🔧 环境一键安装脚本 ├── 启动.bat # 🚀 系统一键启动脚本 │ ├── db/ # 数据库脚本 │ ├── schema.sql # 主建表脚本(用户/剧本/评分/讨论等) │ ├── psy_test_schema.sql # 心测模块建表脚本(角色/心测/拼车) │ └── connection.py # Oracle 连接池管理 │ ├── dao/ # 数据访问层(DAO) │ ├── user_dao.py # 用户(注册/登录/角色管理) │ ├── script_dao.py # 剧本(增删改查/推荐/搜索) │ ├── rating_dao.py # 评分评论 │ ├── category_dao.py # 标签分类 / 用户兴趣 │ ├── discussion_dao.py # 讨论区 │ └── psy_test_dao.py # 心测 + 拼车车队 │ ├── models/ │ └── models.py # 数据模型(dataclass) │ ├── utils/ │ └── security.py # 密码哈希工具 │ ├── static/ │ └── index.html # 🎨 前端 SPA 页面 │ ├── scripts/ # 数据脚本 │ ├── auto_setup_db.py # 自动执行主建表脚本 │ ├── seed_data.py # 填充测试数据(12 剧本 + 8 用户) │ └── setup_psy_test.py # 心测建表 + 种子题目 │ ├── tools/ # 辅助工具 │ ├── set_admin.py # 管理员权限管理(命令行) │ ├── set_admin.bat # 管理员权限管理(双击运行) │ ├── db_diagnose.py # 数据库连接诊断 │ └── 诊断数据库.bat # 数据库诊断(双击运行) │ ├── ui/ # PyQt5 桌面版界面(旧版,已弃用) │ ├── main_window.py │ ├── auth_view.py │ ├── home_view.py │ └── ... (其他视图) │ └── main.py # PyQt5 桌面版入口(旧版,已弃用)
注意:ui/ 目录和 main.py 是早期的 PyQt5 桌面版代码,当前使用 Web 版(app.py + static/index.html),桌面版保留但不再维护。
ui/
main.py
app.py
static/index.html
双击运行 install_deps.bat,自动创建虚拟环境并安装所有依赖。
install_deps.bat
编辑 config.py,填入你的 Oracle 连接信息:
config.py
ORACLE_CONFIG = { "user": "system", # 数据库用户名 "password": "你的密码", # 数据库密码 "dsn": "localhost:1521/orcl", # 主机:端口/服务名 }
⚠️ 服务名需要与 lsnrctl status 输出中注册的服务名一致,常见的有 orcl、XE、ORCLPDB1 等。
lsnrctl status
orcl
XE
ORCLPDB1
在命令行执行(任选其一):
# 方式一:自动建表 + 填充测试数据(推荐) python scripts/auto_setup_db.py # 主表 python scripts/seed_data.py # 测试数据(12 剧本 + 8 用户) python scripts/setup_psy_test.py # 心测表 + 种子题目 # 方式二:用 SQL*Plus 手动执行 sqlplus system/密码@localhost:1521/orcl @db/schema.sql sqlplus system/密码@localhost:1521/orcl @db/psy_test_schema.sql
双击运行 启动.bat,浏览器自动打开 http://localhost:5000。
启动.bat
http://localhost:5000
填充测试数据后,可用以下账号登录(密码统一为 123456):
123456
剧本达人
推理大师
情感玩家
恐怖爱好者
users
scripts
tags
script_tags
user_interests
ratings
clicks
discussions
replies
script_roles
role_questions
role_options
role_test_results
global_questions
global_options
user_profiles
carpools
carpool_members
首页推荐综合分 = 近 7 天点击量 × 0.5 + 平均评分 × 5 全局心测推荐分 = 偏好标签命中数 × 20 - 雷点标签命中数 × 30 + 平均评分 × 3
trg_rating_after_insert / update
scripts.avg_rating
rating_count
trg_click_after_insert
scripts.total_clicks
/api/user/register
/api/user/login
/api/user/<id>
/api/admin/users
/api/admin/users/<id>/role
/api/scripts/recommendations
/api/scripts/search?keyword=
/api/scripts/<id>
/api/scripts
/api/scripts/category/<tag_id>
/api/scripts/all
/api/ratings
/api/ratings/script/<id>
/api/tags
/api/user/interests/<user_id>
/api/discussions
/api/discussions/<id>/replies
/api/psytest/roles/<script_id>
/api/psytest/role-questions/<script_id>
/api/psytest/role-test/<script_id>/<user_id>
/api/psytest/global-questions
/api/psytest/global-test/<user_id>
/api/psytest/profile/<user_id>
/api/carpools
/api/carpools/<id>
/api/carpools/<id>/join
/api/carpools/<id>/leave
/api/carpools/<id>/close
/api/carpools/<id>/assign
提供三种方式赋予管理员权限:
tools/set_admin.bat
python tools/set_admin.py # 查看所有用户 python tools/set_admin.py 用户名 admin # 设为管理员 python tools/set_admin.py 用户名 user # 降为普通用户
tools/诊断数据库.bat
services.msc
OracleService*
dsn
Running on http://127.0.0.1:5000
scripts/auto_setup_db.py
AL32UTF8
MIT License
一个面向剧本杀玩家的无剧透测评、标签筛选与组队选本平台
🎭 剧本杀评分系统
📖 项目简介
本项目是一个面向剧本杀玩家的综合性 Web 平台,提供剧本评分评论、个性化推荐、心理测试匹配(心测)、拼车组局等功能。系统区分普通用户与管理员权限,数据存放在 Oracle 数据库中。
核心功能
🛠️ 技术栈
📁 项目结构
🚀 快速开始
前置条件
三步启动
第 1 步:安装环境
双击运行
install_deps.bat,自动创建虚拟环境并安装所有依赖。第 2 步:配置数据库
编辑
config.py,填入你的 Oracle 连接信息:第 3 步:建表 + 填充数据
在命令行执行(任选其一):
第 4 步:启动系统
双击运行
启动.bat,浏览器自动打开http://localhost:5000。🔑 测试账号
填充测试数据后,可用以下账号登录(密码统一为
123456):剧本达人推理大师/情感玩家/恐怖爱好者等📊 数据库设计
主表(9 张)
usersscriptstagsscript_tagsuser_interestsratingsclicksdiscussions/replies心测模块表(9 张)
script_rolesrole_questions/role_optionsrole_test_resultsglobal_questions/global_optionsuser_profilescarpools/carpool_members推荐算法
触发器
trg_rating_after_insert / update:评分变动时自动更新scripts.avg_rating和rating_counttrg_click_after_insert:点击时自动累加scripts.total_clicks🔗 API 接口一览
用户模块
/api/user/register/api/user/login/api/user/<id>/api/admin/users/api/admin/users/<id>/role剧本模块
/api/scripts/recommendations/api/scripts/search?keyword=/api/scripts/<id>/api/scripts/api/scripts/<id>/api/scripts/category/<tag_id>/api/scripts/all评分 / 标签 / 讨论区
/api/ratings/api/ratings/script/<id>/api/tags/api/user/interests/<user_id>/api/discussions/api/discussions/<id>/replies心测模块
/api/psytest/roles/<script_id>/api/psytest/role-questions/<script_id>/api/psytest/role-test/<script_id>/<user_id>/api/psytest/global-questions/api/psytest/global-test/<user_id>/api/psytest/profile/<user_id>拼车车队
/api/carpools/api/carpools/api/carpools/<id>/api/carpools/<id>/join/api/carpools/<id>/leave/api/carpools/<id>/close/api/carpools/<id>/assign🛠️ 管理员权限管理
提供三种方式赋予管理员权限:
tools/set_admin.bat,或运行:🔧 常见问题
连接数据库失败?
tools/诊断数据库.bat自动尝试多种 DSN 格式services.msc中OracleService*)lsnrctl status确认监听器注册的服务名config.py中的dsn与监听器服务名一致启动后页面空白?
Running on http://127.0.0.1:5000)scripts/auto_setup_db.py)管理员看不到「剧本管理」?
tools/set_admin.bat将自己设为管理员中文乱码?
AL32UTF8📝 开发说明
📄 许可证
MIT License