完善了样例量表,增加了描述中数学公式的支持。

This commit is contained in:
mxr612 2025-03-05 11:49:52 +00:00
parent 9356c13339
commit 22c222813b
7 changed files with 57 additions and 19 deletions

View File

@ -1,16 +1,16 @@
# 心尺 PsychoScales (Org)
# 心尺 PsychoScales Org
## 什么是PsychoScales
## 关于PsychoScales
PsychoScales网站是一个专业的心理学资源平台旨在为用户提供全面的心理学测量工具和评估资源。我们汇集了各种心理测量工具涵盖了情绪、人格、认知能力、心理健康等多个领域帮助用户更好地了解自己的心理特点和状况。
作为PsychoScales网站的用户您可以通过简单的在线测试快速获取关于自己心理特征的详细报告和分析。这些测量工具基于权威的心理学理论和研究确保了测试结果的准确性和可靠性。
[心尺主站](https://psygscales.com/)
[PsychoScales主站](https://psygscales.com/)
## 什么是PsychoScales Org
## 关于PsychoScales Org
这个一个开源的量表框架基于Python搭建。
本项目的量表加载完全基于json不使用任何数据库。同时也可以通过易于编辑的txt文件制作可以加载的json
本项目的量表加载完全基于YAML不使用任何数据库。在易于编辑和易于加载中间达到了平衡
[开源地址](https://git.mxr612.io/PsychoScales/PsychoScales)

14
app.py
View File

@ -17,10 +17,15 @@ def load_all_scales():
scales = {}
for filename in os.listdir(scale_folder):
if filename.endswith(('.yaml', '.yml')):
with open(os.path.join(scale_folder, filename), 'r', encoding='utf-8') as f:
scale = yaml.safe_load(f)
scale_id = os.path.splitext(filename)[0] # 使用文件名作为标识
scales[scale_id] = scale
try:
with open(os.path.join(scale_folder, filename), 'r', encoding='utf-8') as f:
scale = yaml.safe_load(f)
scale['instructions']=markdown.markdown(scale['instructions'], extensions=['fenced_code','tables','mdx_math'])
scale['descriptions']=markdown.markdown(scale['descriptions'], extensions=['fenced_code','tables','mdx_math'])
scale_id = os.path.splitext(filename)[0] # 使用文件名作为标识
scales[scale_id] = scale
except Exception as e:
print(f"Error loading scale {filename}: {e}")
return scales
@app.get("/", response_class=HTMLResponse)
@ -64,7 +69,6 @@ async def result(request: Request, scale_id: str):
responses[subscale] = 0
ranges[subscale] = [len(scale['range'][0]*qids),len(scale['range'][1]*qids)]
for qid in qids:
print(qid)
if qid<0:
responses[subscale] += scale['range'][0] + scale['range'][1] - int(form_data[str(-qid)])
else:

Binary file not shown.

View File

@ -1,12 +1,21 @@
title: 中国大五人格问卷(简式版)
instruction: 下面是一些描述人们性格特点的句子请根据每个句子与您性格相符程度选择相应的数字。1-6分别代表完全不符合、大部分不符合、有点不符合、有点符合、大部分符合、完全符合。
description: ""
instructions: 下面是一些描述人们性格特点的句子请根据每个句子与您性格相符程度选择相应的数字。1-6分别代表完全不符合、大部分不符合、有点不符合、有点符合、大部分符合、完全符合。
descriptions: |
中国大五人格问卷CBF-PI是由王孟成和戴晓阳等编制的中国拥有其知识产权的人格问卷相比NEO-PI。此处是基于其简化的问卷与完整版问卷的各项相关系数的$r$神经质最小的$0.886$、宜人性最大的$0.922$。
本量表选自戴晓阳《常用心理评估量表(修订版)》,各项描述及常模:
- 开放性O个体对待新事物、新观念和新异刺激的态度和行为差异。男$32.60\pm6.74$女$31.97\pm6.18$
- 严谨性C个体按照社会规范的要求控制冲动的倾向、以任务和目的为导向、延迟满足以及遵守规范和纪律等方面上的个体差异。男$32.90\pm6.64$女$33.29\pm6.52$
- 外向性E个体神经系统的强弱和动力特征。男$31.09\pm7.27$女$30.76\pm6.94$
- 宜人性A个体对人性及及他人遭遇表现出的同情心和人文关怀。男$36.29\pm6.30$女$37.71\pm5.65$
- 神经质N个体情绪稳定性和体验负性情绪上的个体差异。男$24.97\pm7.06$女$26.91\pm7.47$
subscales:
神经质: [1,6,11,16,21,26,31,-36]
严谨性: [2,7,12,17,22,27,-32,37]
宜人性: [3,-8,-13,-18,23,28,33,38]
开放性: [4,9,14,19,24,29,34,39]
严谨性: [2,7,12,17,22,27,-32,37]
外向性: [-5,10,-15,20,25,30,35,40]
宜人性: [3,-8,-13,-18,23,28,33,38]
神经质: [1,6,11,16,21,26,31,-36]
range: [1,6]
questions:
1: 我常感到害怕

View File

@ -1,6 +1,13 @@
title: 中庸实践思维量表
instruction:
description: 中庸实践思维量表
instructions: |
以下题目是对个人思维方式的描述,不需要过多考虑,请根据你平时的真实想法,或者假设遇到所说的情形时,内心里自动出现的想法进行选择,根据符合度进行打分,答案并无对错之分。
如“我习惯从多方面的角度来思考同一件事情”如果您认为非常符合您的情况请请选择第四个选项“3”表示打3分如果这非常不符合您的情况请选择第一个选项“0”表示打0分0--非常不符合 1--基本不符合 2--基本符合 3--非常符合)。
请选填,资料将被严格保密且仅用于研究,无需顾虑。感谢您的支持!
descriptions: |
中庸实践思维量表参考戴晓阳《常用心理评估量表修订版推荐的临界值是32分小者异常这一数值是基于普通人与抑郁、强迫患者的对比。
中庸实践思维是由杨中芳及其团队在如家“中庸”哲学思想基础上建构的一个具有“中国特色”的心理学理论。
subscales:
恰如其分/不走极端: [-3,-6,-13,-15,-16,-17,-18]
内外和谐: [-2,-4,-7,-9,-11,-14]

View File

@ -6,6 +6,13 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{scale_title}}</title>
<link rel="stylesheet" href="/static/styles.css">
<!-- 添加KaTeX支持 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body, {delimiters: [
{left: '$$', right: '$$', display: true},
{left: '$', right: '$', display: false}]});">
</script>
</head>
<body>
@ -15,7 +22,9 @@
<li>{{ key }}: 在 {{ranges[key][0]}} 到 {{ranges[key][1]}} 的量表中得分 {{ value }}</li>
{% endfor %}
</ul>
<p>{{scale.description}}</p>
<div>
{{scale.descriptions|safe}}
</div>
</body>
</html>

View File

@ -6,11 +6,20 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ scale.title }}</title>
<link rel="stylesheet" href="/static/styles.css">
<!-- 添加KaTeX支持 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body, {delimiters: [
{left: '$$', right: '$$', display: true},
{left: '$', right: '$', display: false}]});">
</script>
</head>
<body>
<h1>{{ scale.title }}</h1>
<p>{{ scale.instructions }}</p>
<div>
{{ scale.instructions|safe }}
</div>
<form action="/result/{{ scale_id }}" method="post">
{% for id, question in scale.questions.items() %}
<label for="{{ id }}">{{ id }}. {{ question }}</label>