Matis Codjia
Scoring app
1d8c2e0
"""
Export utilities
"""
import json
def prepare_export(items_with_positive, feedback_scores, feedback_comments=None):
"""
Prépare les données pour l'export avec identifiants uniques
Args:
items_with_positive: Liste de tuples (original_idx, item)
feedback_scores: Dict {idx: score}
feedback_comments: Dict {idx: comment} (optionnel)
Returns:
Liste de dicts prêts pour l'export
"""
export_data = []
for original_idx, item in items_with_positive:
if original_idx in feedback_scores:
export_item = {
'code': item.get('anchor', item.get('code', '')),
'positive_feedback': item.get('positive', ''),
'score': feedback_scores[original_idx],
}
# Add unique identifiers for merging
# Priority: code_id > author_id > hash of content
if 'code_id' in item:
export_item['code_id'] = item['code_id']
if 'author_id' in item:
export_item['author_id'] = item['author_id']
# Add optional fields
if 'language' in item:
export_item['language'] = item['language']
# Add comment if exists
if feedback_comments and original_idx in feedback_comments:
comment = feedback_comments[original_idx]
if comment.strip():
export_item['comment'] = comment
# Add original index for reference (local to this file)
export_item['original_index'] = original_idx
export_data.append(export_item)
return export_data
def export_to_jsonl(export_data):
"""
Convertit les données en format JSONL
Args:
export_data: Liste de dicts
Returns:
String JSONL
"""
return "\n".join(json.dumps(item, ensure_ascii=False) for item in export_data)