简体中文 | English
🧠 基于科学研究的专业性心理健康评估工具
性压抑指数计算器是一个基于多个经过验证的心理测量量表的专业评估工具,帮助用户科学地了解自己的性心理特征,促进性健康和亲密关系的发展。
- 🔬 科学可靠: 基于SIS/SES、Mosher性内疚、KISS-9、SOS等国际认可量表
- ⚡ 双版本支持: 快测版(39题,8-15分钟) + 完整版(117题,25-40分钟)
- 📊 专业分析: 四维度分析 + SRI指数(0-100) + 个性化建议
- 🔒 隐私保护: 100%本地数据处理,无服务器传输
- 📱 现代化UI: 响应式设计,支持所有设备
- 💾 数据管理: 历史记录、数据导出、自动保存
- 🔗 社交分享: 多平台分享、智能文案、二维码生成
- Node.js >= 22.0.0
- 现代浏览器支持
# 克隆项目
git clone [project-url]
cd Sexual-Repression-Calculator
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 构建生产版本
npm run build
# 启动生产服务器
npm start
docker run -p 8000:8000 appe233/sexual-repression-calculator
- 开发环境: http://localhost:3000
- 生产环境: 根据部署配置
☁️ Cloudflare Pages 部署
该项目已针对 Cloudflare Pages 进行优化,可以轻松部署。
- 构建命令:
npm run cf:deploy - 输出目录:
dist
- 将代码推送到 GitHub 仓库
- 在 Cloudflare Dashboard 中创建 Pages 应用
- 连接 GitHub 仓库
- 配置构建设置:
- 构建命令:
npm run cf:deploy - 输出目录:
dist
- 构建命令:
- 点击部署
为了防止项目被恶意倒卖,本项目提供了两种防滥用机制:
-
跳转页面机制(推荐用于完全阻止访问):
- 在 Cloudflare Pages 项目设置中添加环境变量:
ABUSE_REDIRECT_ENABLED=true
- 当该环境变量设置为
true时,所有访问都会跳转到防滥用说明页面 - 该页面会倒计时5秒后自动跳转到 GitHub 原始项目地址
- 用户也可以手动点击按钮立即跳转
- 在 Cloudflare Pages 项目设置中添加环境变量:
-
弹窗提醒机制(用于提醒用户):
- 在 Cloudflare Pages 项目设置中添加环境变量:
SHOW_ABUSE_POPUP=true
- 当该环境变量设置为
true时,用户访问网站时会看到防滥用提醒弹窗 - 用户关闭弹窗后可以正常使用网站
- 在 Cloudflare Pages 项目设置中添加环境变量:
你可以根据需要选择其中一种或两种机制同时使用。
不使用时建议将functions改名disabled,并注释掉rsbuild.config.cloudflare.ts里面的
{ from: "./functions/_middleware.js", to: "_middleware.js" },,避免cloudflare每日请求消耗过高
- 此应用是纯静态的 React 应用,所有数据处理都在客户端进行
- 不需要服务器端 API,所有功能都可以在浏览器中完成
- 应用使用 localStorage 存储用户数据,数据不会上传到服务器
- 使用
--legacy-peer-deps参数解决依赖冲突问题
▲ Vercel 部署
该项目也支持部署到 Vercel 平台。
- 构建命令:
npm run build:vercel - 输出目录:
dist
- 将代码推送到 GitHub 仓库
- 在 Vercel Dashboard 中导入项目
- 配置构建设置:
- 构建命令:
npm run build:vercel - 输出目录:
dist
- 构建命令:
- 点击部署
Vercel 部署不需要特殊的环境变量配置,但如果你想启用防滥用功能,可以添加以下环境变量:
1. 弹窗提醒机制:
- 添加环境变量:SHOW_ABUSE_POPUP = true
注意:由于 Vercel 的架构限制,跳转页面机制可能无法正常工作,建议使用弹窗提醒机制。
🎩 帽子云 部署
该项目也支持部署到帽子云平台。
- 构建命令:
npm run build - 输出目录:
dist/web
- 将代码推送到 GitHub 仓库
- 在帽子云平台中创建应用
- 连接 GitHub 仓库
- 选择
main分支 - 配置构建设置:
- 构建命令:
npm run build - 输出目录:
dist/web
- 构建命令:
- 点击部署
- 帽子云平台部署时需要特别注意输出目录应设置为
dist/web而不是默认的dist - 如果遇到 404 错误,请检查平台的输出目录配置是否正确设置为
dist/web
- 时长: 8-15分钟
- 题目: 39题
- 量表: SIS/SES-SF(14) + Mosher性内疚(10) + KISS-9(9) + SOS筛查(5)
- 适用: 初次使用、快速了解
- 时长: 25-40分钟
- 题目: 117题
- 量表: 完整版SIS/SES(45) + 完整Mosher(28) + KISS-9(9) + 完整SOS(21) + BSAS(23)
- 适用: 深入分析、专业咨询
SRI = Σ(标准化维度分数) → 0-100映射
四维度: SOS反向 + 性内疚 + 性羞耻 + SIS优势
- 很低 (0-20): 较少压抑
- 偏低 (20-40): 轻度压抑
- 中等 (40-60): 中度压抑
- 偏高 (60-80): 较高压抑
- 很高 (80-100): 高度压抑
- 框架: React 19 + TypeScript
- 路由: React Router v7
- 样式: Tailwind CSS + shadcn/ui
- 状态管理: React Query + React Hooks
- 图表: Recharts
- 表单: React Hook Form + Zod
- 图标: Lucide React
- 运行时: Deno Edge Function
- 框架: Hono.js + zValidator
- 数据验证: Zod
- 构建工具: Rsbuild
用户数据流:
知情同意 → 人口学信息 → 问卷评估 → 结果计算 → 本地存储
↓
历史记录 ← 数据导出
src/
├── components/ # React组件
│ ├── assessment/ # 评估相关组件
│ ├── common/ # 通用组件
│ └── ui/ # shadcn/ui组件
├── pages/ # 页面组件
├── lib/ # 工具库
│ ├── scales/ # 量表定义
│ ├── calculator/ # 计算引擎
│ └── storage/ # 存储管理
├── types/ # TypeScript类型
├── server/ # 服务端代码
└── styles/ # 样式文件
- ✅ 本地处理: 所有数据在客户端处理,不上传服务器
- ✅ 匿名化: 导出数据完全匿名化处理
- ✅ 用户控制: 用户拥有完全的数据控制权
- ✅ 安全清理: 提供安全的数据删除功能
- ✅ 透明度: 开源代码,完全透明
- 位置: 浏览器 localStorage
- 内容: 评估回答、结果分析、人口学信息
- 加密: 客户端存储,无需加密传输
- 清理: 用户可随时完全删除
- SIS/SES: Janssen等人的双控制模型量表
- Mosher性内疚: 经典性内疚测量工具
- KISS-9: Kyle等人的性羞耻量表
- SOS: Fisher等人的性观感调查
- BSAS: Hendrick等人的性态度量表
- 所有量表均经过严格的心理测量学验证
- 具有良好的内部一致性和重测信度
- 在多个文化背景下得到验证
- TypeScript严格模式
- ESLint + Prettier格式化
- 组件化设计原则
- 函数式编程优先
- Fork项目
- 创建特性分支
- 提交更改
- 发起Pull Request
# 类型检查
npm run type-check
# 代码检查
npm run lint
# 构建测试
npm run build
- 访问主页选择评估版本
- 仔细阅读知情同意书
- 填写基本人口学信息
- 按照指引完成问卷
- 查看详细结果分析
- SRI指数: 综合性压抑程度(0-100)
- 四维度分析: 具体问题领域识别
- 个性化建议: 基于结果的改善建议
- 非诊断性: 仅供自我了解,不替代专业诊断
- 本工具仅供教育和自我了解使用
- 不能替代专业心理健康服务
- 如有严重心理健康问题,请寻求专业帮助
- 评估结果不构成医学诊断
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
如果您觉得这个项目有帮助,请给我们一个 ⭐️
性压抑指数计算器 - 让科学研究服务于个人成长和性健康发展