{% extends "base.html" %} {% block title %}考评字典{% endblock %} {% block content %}
DICTIONARY · {{ year.name if year else '' }}

考评字典

手动维护,或让 AI 按模板生成 JSON 后一次导入。

手动配置 {% if dictionary and dictionary['categories'] %}导出考评字典(备份 / 分享){% endif %} 下载空白模板 下载完整示例 字段说明
CURRENT DICTIONARY

当前指标结构

{% if dictionary and dictionary['categories'] %}导出 JSON{% endif %}
{% if dictionary and dictionary['categories'] %} {% for category in dictionary['categories'] %}
{{ category['name'] }}{{ category['items']|length }} 项 · 上限 {{ category['max_score'] if category['max_score'] is not none else '未设' }}
{% for item in category['items'] %} {% set rule = item['scoring_rule'] %}{% set tracking = item['secondary_tracking'] %} {% set type_labels = {'manual_score':'直接给分','fixed_score':'固定分','tiered_score':'分档计分','count_score':'次数加分','count_deduction':'次数扣分','range_score':'区间计分','matrix_score':'级别×奖次','tenure_score':'年限分档','fixed_bonus':'固定加分'} %} {% set source_labels = {'teacher':'教师填报','admin':'管理员录入','excel':'外部导入'} %}
{{ item['name'] }}{{ item['code'] }} {{ source_labels.get(item['data_source'], item['data_source']) }}{{ type_labels.get(item['scoring_type'], item['scoring_type']) }}查看规则

{{ item['description'] or '暂无指标说明。' }}

分数组{{ {'base':'基础分','bonus':'加分','deduction':'扣分'}.get(item['score_group'], item['score_group']) }} 多条记录{{ '允许' if item['allow_multiple_records'] else '不允许' }} 证明材料{{ '必须上传' if item['requires_evidence'] else '不要求' }} AI 识别{{ '已启用' if item['ai_enabled'] else '未启用' }}
SCORING RULE

具体计算方式

{% if item['scoring_type'] == 'manual_score' %}

管理员直接给分,允许范围:{{ rule.get('min_score', 0) }}—{{ rule.get('max_score', '未设') }} 分

{% elif item['scoring_type'] in ['fixed_score','fixed_bonus'] %}

符合条件计 {{ rule.get('score', 0) }} 分,不符合计 0 分。

{% elif item['scoring_type'] == 'tiered_score' %}
{% for option in rule.get('options', []) %}{{ option.get('label', option.get('value')) }}{{ option.get('score', 0) }} 分{% endfor %}
{% elif item['scoring_type'] == 'count_score' %}

数量 × {{ rule.get('score_per_count', 0) }} 分;最低 {{ rule.get('min_score', 0) }} 分{% if rule.get('max_score') is not none %},最高 {{ rule.get('max_score') }} 分{% endif %}。

{% elif item['scoring_type'] == 'count_deduction' %}

从 {{ rule.get('initial_score', 0) }} 分起,每次扣 {{ rule.get('score_per_count', 0) }} 分{% if rule.get('max_deduction') is not none %},最多扣 {{ rule.get('max_deduction') }} 分{% endif %};最低 {{ rule.get('min_score', 0) }} 分。

{% elif item['scoring_type'] == 'range_score' %}
{% for range in rule.get('ranges', []) %}{{ range.get('min') if range.get('min') is not none else '不限' }} ~ {{ range.get('max') if range.get('max') is not none else '不限' }}{{ range.get('score', 0) }} 分{% endfor %}
{% elif item['scoring_type'] == 'matrix_score' %}
{% for score in rule.get('scores', []) %}{% endfor %}
级别奖次分数
{{ score.get('level_label', score.get('level')) }}{{ score.get('rank_label', score.get('rank')) }}{{ score.get('score', 0) }} 分
{% elif item['scoring_type'] == 'tenure_score' %}
{% for tier in rule.get('tiers', []) %}满 {{ tier.get('min_years', 0) }} 年{{ tier.get('score', 0) }} 分{% endfor %}
{% else %}

请展开原始规则 JSON 核对。

{% endif %}
{% if tracking.get('enabled') %}
二级跟踪字段:{{ tracking.get('label', '补充字段') }}{{ '必填' if tracking.get('required') else '选填' }} · {{ '下拉选择' if tracking.get('input_type') == 'select' else '文本填写' }}
{% endif %}
查看原始规则 JSON
{{ rule|tojson(indent=2) }}
{% endfor %}
{% endfor %} {% else %}

还没有考评字典

下载模板,结合学校方案让 AI 生成 JSON,然后在右侧校验导入。

{% endif %}
{% endblock %} {% block scripts %}{% endblock %}