150 lines
4.6 KiB
Python
150 lines
4.6 KiB
Python
import os
|
||
from pathlib import Path
|
||
|
||
API_KEY = os.environ.get("GEMINI_API_KEY")
|
||
|
||
EXPORT_DIR = Path("Export")
|
||
IMPORT_DIR = Path("Import")
|
||
|
||
# Espace ajouté à gauche des réponses annotées, en pixels à 200 dpi.
|
||
ANNOTATION_MARGIN_LEFT = 300
|
||
# (Marge mesurée en mm, espace ajouté en pixels à 200 dpi).
|
||
# Interpolation linéaire entre les points ; valeurs constantes aux extrémités.
|
||
ANNOTATION_MARGIN_POINTS = [(10, 450), (20, 400), (35, 300)]
|
||
|
||
# Hauteur maximale des documents Bnot et des groupes BGnot, en pixels.
|
||
# Les blocs d'élèves trop grands sont séparés entre deux réponses.
|
||
ANNOTATION_MAX_HEIGHT_PX = 33000
|
||
|
||
# Surface maximale : largeur maximale du document × hauteur totale, en pixels.
|
||
# Sur DS02VA, les quatre groupes dépassant 2**26 pixels deviennent flous dans
|
||
# Squid Android. Cela correspond à 256 Mio pour un bitmap à 4 octets/pixel.
|
||
# Seuil déduit des observations, pas une limite documentée par Squid.
|
||
ANNOTATION_MAX_PIXELS = 67_108_864
|
||
|
||
# Fichiers à inclure dans A Rendre (les sources d'annotations sont conservées).
|
||
RETURN_JPEG_ENABLED = True
|
||
RETURN_PDF_ENABLED = True
|
||
RETURN_ANSWERS_ENABLED = False
|
||
RETURN_ANSWERS_CONTEXT = False
|
||
RETURN_ANSWERS_QUESTION = True
|
||
RETURN_ANSWERS_SOLUTION = False
|
||
|
||
# Les étapes gestion_classe, ODS et publication sont masquées par défaut.
|
||
SHOW_PERSONAL_STEPS = False
|
||
|
||
# Lance automatiquement les deux étapes facultatives de rognage dans le GUI.
|
||
ALWAYS_CROP = False
|
||
|
||
# Chemins utilisés uniquement par les étapes personnelles.
|
||
CURRENT_SCORE_ODS_PATH = Path("current_eval.ods")
|
||
FINAL_SCORE_ODS_PATH = Path("simple_eval.ods")
|
||
FINAL_SCORE_OUTPUT_DIR = Path("Server") / "copies"
|
||
FINAL_SCORE_HISTOGRAM_PATH = Path("histogramme.pdf")
|
||
FINAL_SCORE_FONT_PATH = None
|
||
|
||
# Niveaux de réflexion : "minimal", "low", "medium", "high", ou None
|
||
# pour utiliser le défaut du modèle. Choisir un niveau supporté par le modèle
|
||
# (Gemini 3.8 Flash ne supporte pas "minimal" ; Gemini 2.5 : utiliser None).
|
||
|
||
# Modèle pour des choses très légères
|
||
# Le modèle 3.5-flash-lite est un peu moins bon pour la duplication de contexte pour des questions, dans l'analyse de l'énoncé.
|
||
# MODEL_LITE_ID = "gemini-3.5-flash-lite"
|
||
MODEL_LITE_ID = "gemini-3.8-flash"
|
||
THINKING_LEVEL_LITE = "low"
|
||
|
||
# Modèle pour identifier visuellement les labels
|
||
# MODEL_FOR_LABEL_ID = "gemini-3.5-flash-lite" # 3.5 flash lite marche plutôt mal, il insiste pour mettre les labels dans l'ordre, sans considérer ce qu'il y a écrit
|
||
MODEL_FOR_LABEL_ID = "gemini-3.8-flash"
|
||
THINKING_LEVEL_FOR_LABEL = "low"
|
||
|
||
# Modèle pour reconnaître les noms sur les grilles de premières pages.
|
||
MODEL_FOR_NAME_ID = "gemini-3.8-flash"
|
||
THINKING_LEVEL_FOR_NAME = "low"
|
||
|
||
|
||
# Modèle pour des choses normales
|
||
MODEL_FLASH_ID = "gemini-3.8-flash"
|
||
THINKING_LEVEL_FLASH = "medium"
|
||
|
||
# Modèle pour des choses dures
|
||
MODEL_PRO_ID = "gemini-3.8-flash"
|
||
THINKING_LEVEL_PRO = "medium"
|
||
# THINKING_LEVEL_PRO = "high"
|
||
# MODEL_PRO_ID = "gemini-3.1-pro-preview"
|
||
|
||
PAGE_SPLITTER_KB = {
|
||
"add_secondary_splitter": "<Insert>", # Current page only; arrows move newest
|
||
"delete_secondary_splitter": "<Delete>", # Remove newest secondary splitter
|
||
"move_left": "<Left>",
|
||
"move_right": "<Right>",
|
||
"rotate_page": "r",
|
||
"rotate_all_pages": "R",
|
||
"rotate_all_files": ",",
|
||
"keep_left": "q",
|
||
"keep_right": "d",
|
||
"keep_as_is": "f",
|
||
"next_page": "s",
|
||
"discard_page": "z",
|
||
"send_end": "a", # Send this page to the end
|
||
"reverse_pages": "i", # Reverse page order and restart at the new first page
|
||
"restart_file": "T",
|
||
"arranger": "A", # Call `pdf arranger` software, if available
|
||
"prev_file": "P",
|
||
}
|
||
|
||
|
||
PLOTTING_KB = {
|
||
"OK": "<Return>",
|
||
"previous": "p",
|
||
"edit": "e",
|
||
"open pdf": "o",
|
||
"open original pdf": "O",
|
||
"open eval": "i",
|
||
}
|
||
|
||
### Latex templates
|
||
|
||
### Pour la génération d'énoncés
|
||
|
||
LATEX_BEFORE = r"""\documentclass[varwidth=24.8cm,margin=0.4cm]{standalone}
|
||
\usepackage[utf8]{inputenc}
|
||
\usepackage[T1]{fontenc}
|
||
\usepackage{lmodern}
|
||
\usepackage{amsmath, amssymb}
|
||
\usepackage{minted}
|
||
\usepackage{graphicx}
|
||
\usepackage{enumitem}
|
||
\usepackage{multicol}
|
||
\begin{document}
|
||
\begin{minipage}{24.8cm}
|
||
"""
|
||
|
||
LATEX_AFTER = r"""
|
||
\end{minipage}
|
||
\end{document}
|
||
"""
|
||
|
||
|
||
### Pour les annotations sur copies
|
||
|
||
|
||
from string import Template
|
||
|
||
LATEX_ANOT_BEFORE = Template(
|
||
r"""\documentclass[varwidth=${width_in}in,margin=0.2cm]{standalone}
|
||
\usepackage[utf8]{inputenc}
|
||
\usepackage[T1]{fontenc}
|
||
\usepackage{lmodern} % Enables arbitrary font scaling
|
||
\usepackage{amsmath, amssymb}
|
||
\usepackage{mathabx} % larger inline operators.
|
||
%\usepackage{anyfontsize} % replaced by lmodern
|
||
\begin{document}
|
||
\fontsize{${fontsize}}{${line_spacing}}\selectfont
|
||
"""
|
||
)
|
||
|
||
LATEX_ANOT_AFTER = r"""
|
||
\end{document}
|
||
"""
|