OUAREDAEK commited on
Commit
4653ae6
·
verified ·
1 Parent(s): d54fa7f

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +55 -25
app.py CHANGED
@@ -25,7 +25,6 @@ from flask import Flask, render_template, request, jsonify, send_from_directory
25
  # ⚙️ CONFIGURATION GLOBALE
26
  # --------------------------------------------------
27
  PORT = int(os.environ.get("PORT", 7860))
28
-
29
  BASE_DIR = os.path.dirname(os.path.abspath(__file__))
30
 
31
  CROSS_READING_DIR = os.path.join(BASE_DIR, "cross_reading")
@@ -33,9 +32,11 @@ TEMPLATES_DIR = os.path.join(BASE_DIR, "templates")
33
  STATIC_DIR = os.path.join(BASE_DIR, "static")
34
  DATA_DIR = os.path.join(BASE_DIR, "data")
35
 
36
- SCENARIOS_FILE = os.path.join(CROSS_READING_DIR, "scenarios.json")
37
- STATS_FILE = os.path.join(CROSS_READING_DIR, "trust_stats.json")
38
- REVIEW_FILE = os.path.join(CROSS_READING_DIR, "review.json")
 
 
39
 
40
  CROSS_HTML = "cross_readers.html"
41
  CROSS_JS = "cross_readers.js"
@@ -56,7 +57,6 @@ def index():
56
  @app.route("/cross_readers.html")
57
  @app.route("/cross_reading/cross_readers.html")
58
  def cross_readers():
59
- """Page Cross Reading"""
60
  if os.path.exists(os.path.join(CROSS_READING_DIR, CROSS_HTML)):
61
  return send_from_directory(CROSS_READING_DIR, CROSS_HTML)
62
  return "cross_readers.html introuvable", 404
@@ -65,6 +65,34 @@ def cross_readers():
65
  def cross_readers_js():
66
  return send_from_directory(CROSS_READING_DIR, CROSS_JS)
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  # --------------------------------------------------
69
  # 💾 API – TRUST (quantitatif)
70
  # --------------------------------------------------
@@ -94,30 +122,22 @@ def get_evaluations():
94
  data = json.load(f)
95
 
96
  # Normalisation métriques
 
 
 
 
 
 
 
 
97
  for e in data.get("evaluations", []):
98
  if "trust_metrics" in e:
99
- m = {}
100
- for k, v in e["trust_metrics"].items():
101
- mapping = {
102
- "RA": "AR",
103
- "EA": "AE",
104
- "RE": "ESR",
105
- "MCS": "SDM",
106
- "MS": "SM"
107
- }
108
- m[mapping.get(k, k)] = v
109
- e["trust_metrics"] = m
110
 
111
  return jsonify(data)
112
 
113
- # --------------------------------------------------
114
- # 📘 API – SCÉNARIOS
115
- # --------------------------------------------------
116
- @app.route("/api/scenarios")
117
- def get_scenarios():
118
- with open(SCENARIOS_FILE, "r", encoding="utf-8") as f:
119
- return jsonify(json.load(f))
120
-
121
  # --------------------------------------------------
122
  # 📝 API – REVIEWS (qualitatif)
123
  # --------------------------------------------------
@@ -167,8 +187,18 @@ if __name__ == "__main__":
167
  # Initialisation fichiers
168
  defaults = {
169
  SCENARIOS_FILE: {"scenarios": []},
 
170
  STATS_FILE: {"evaluations": []},
171
- REVIEW_FILE: {"reviews": []}
 
 
 
 
 
 
 
 
 
172
  }
173
 
174
  for path, content in defaults.items():
 
25
  # ⚙️ CONFIGURATION GLOBALE
26
  # --------------------------------------------------
27
  PORT = int(os.environ.get("PORT", 7860))
 
28
  BASE_DIR = os.path.dirname(os.path.abspath(__file__))
29
 
30
  CROSS_READING_DIR = os.path.join(BASE_DIR, "cross_reading")
 
32
  STATIC_DIR = os.path.join(BASE_DIR, "static")
33
  DATA_DIR = os.path.join(BASE_DIR, "data")
34
 
35
+ SCENARIOS_FILE = os.path.join(CROSS_READING_DIR, "scenarios.json")
36
+ SCENARIOS_LIST_FILE = os.path.join(CROSS_READING_DIR, "scenarios_list.json")
37
+ STATS_FILE = os.path.join(CROSS_READING_DIR, "trust_stats.json")
38
+ REVIEW_FILE = os.path.join(CROSS_READING_DIR, "review.json")
39
+ CALIBRATION_FILE = os.path.join(CROSS_READING_DIR, "calibration-trust.json")
40
 
41
  CROSS_HTML = "cross_readers.html"
42
  CROSS_JS = "cross_readers.js"
 
57
  @app.route("/cross_readers.html")
58
  @app.route("/cross_reading/cross_readers.html")
59
  def cross_readers():
 
60
  if os.path.exists(os.path.join(CROSS_READING_DIR, CROSS_HTML)):
61
  return send_from_directory(CROSS_READING_DIR, CROSS_HTML)
62
  return "cross_readers.html introuvable", 404
 
65
  def cross_readers_js():
66
  return send_from_directory(CROSS_READING_DIR, CROSS_JS)
67
 
68
+ # --------------------------------------------------
69
+ # 📘 API – SCÉNARIOS
70
+ # --------------------------------------------------
71
+ @app.route("/api/scenarios")
72
+ def get_scenarios():
73
+ with open(SCENARIOS_FILE, "r", encoding="utf-8") as f:
74
+ return jsonify(json.load(f))
75
+
76
+ @app.route("/api/scenarios_list")
77
+ def get_scenarios_list():
78
+ with open(SCENARIOS_LIST_FILE, "r", encoding="utf-8") as f:
79
+ return jsonify(json.load(f))
80
+
81
+ # --------------------------------------------------
82
+ # 🔧 API – TRUST CALIBRATION
83
+ # --------------------------------------------------
84
+ @app.route("/api/trust/calibration")
85
+ def get_trust_calibration():
86
+ with open(CALIBRATION_FILE, "r", encoding="utf-8") as f:
87
+ return jsonify(json.load(f))
88
+
89
+ @app.route("/api/trust/calibration", methods=["POST"])
90
+ def save_trust_calibration():
91
+ data = request.json
92
+ with open(CALIBRATION_FILE, "w", encoding="utf-8") as f:
93
+ json.dump(data, f, indent=2, ensure_ascii=False)
94
+ return jsonify({"status": "ok"})
95
+
96
  # --------------------------------------------------
97
  # 💾 API – TRUST (quantitatif)
98
  # --------------------------------------------------
 
122
  data = json.load(f)
123
 
124
  # Normalisation métriques
125
+ mapping = {
126
+ "RA": "AR",
127
+ "EA": "AE",
128
+ "RE": "ESR",
129
+ "MCS": "SDM",
130
+ "MS": "SM"
131
+ }
132
+
133
  for e in data.get("evaluations", []):
134
  if "trust_metrics" in e:
135
+ e["trust_metrics"] = {
136
+ mapping.get(k, k): v for k, v in e["trust_metrics"].items()
137
+ }
 
 
 
 
 
 
 
 
138
 
139
  return jsonify(data)
140
 
 
 
 
 
 
 
 
 
141
  # --------------------------------------------------
142
  # 📝 API – REVIEWS (qualitatif)
143
  # --------------------------------------------------
 
187
  # Initialisation fichiers
188
  defaults = {
189
  SCENARIOS_FILE: {"scenarios": []},
190
+ SCENARIOS_LIST_FILE: {"scenarios": []},
191
  STATS_FILE: {"evaluations": []},
192
+ REVIEW_FILE: {"reviews": []},
193
+ CALIBRATION_FILE: {
194
+ "metrics": {
195
+ "AR": {"min": 0, "max": 5, "weight": 1},
196
+ "AE": {"min": 0, "max": 5, "weight": 1},
197
+ "ESR": {"min": 0, "max": 5, "weight": 1},
198
+ "SDM": {"min": 0, "max": 5, "weight": 1},
199
+ "SM": {"min": 0, "max": 5, "weight": 1}
200
+ }
201
+ }
202
  }
203
 
204
  for path, content in defaults.items():