leewatson commited on
Commit
cacce32
ยท
verified ยท
1 Parent(s): d445415

Upload report_generator.py

Browse files
Files changed (1) hide show
  1. report/report_generator.py +43 -0
report/report_generator.py ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # report/report_generator.py
2
+ import json
3
+
4
+ def generate_text_report(conflict_initiator, spikes_by_speaker, per_utt_log, future_alerts):
5
+ """
6
+ ํ…์ŠคํŠธ ๋ฆฌํฌํŠธ ์ƒ์„ฑ (์ฝ˜์†”/Gradio ํ…์ŠคํŠธ ์ถœ๋ ฅ์šฉ)
7
+ """
8
+ lines = []
9
+ lines.append("๐Ÿงพ ๊ฐˆ๋“ฑ ๋ถ„์„ ๋ฆฌํฌํŠธ")
10
+ lines.append("-" * 40)
11
+ lines.append(f"๊ฐˆ๋“ฑ ์œ ๋ฐœ์ž(์ถ”์ •): {conflict_initiator or 'ํŒ๋‹จ ๋ถˆ๊ฐ€'}")
12
+ lines.append("")
13
+
14
+ lines.append("๐Ÿ“Š ๊ฐ์ • ๊ธ‰๋ณ€ ์š”์•ฝ(Z-score):")
15
+ if not spikes_by_speaker:
16
+ lines.append(" (๊ธ‰๋ณ€ ์‹œ์  ์—†์Œ)")
17
+ else:
18
+ for speaker, spikes in spikes_by_speaker.items():
19
+ lines.append(f" - {speaker}:")
20
+ for idx, score, z in spikes:
21
+ lines.append(f" โ€ข {idx+1}๋ฒˆ์งธ ๋ฐœํ™”์—์„œ ๊ธ‰๋ณ€ ๊ฐ์ง€ | ์ ์ˆ˜={score:.1f}, z={z}")
22
+
23
+ lines.append("")
24
+ lines.append("๐Ÿ”ฎ ์˜ˆ์ธก ๊ธฐ๋ฐ˜ ๊ฒฝ๊ณ :")
25
+ if not future_alerts:
26
+ lines.append(" (๊ฒฝ๊ณ  ์—†์Œ)")
27
+ else:
28
+ for speaker, alerts in future_alerts.items():
29
+ lines.append(f" - {speaker}:")
30
+ for item in alerts:
31
+ lines.append(f" โ€ข {item}")
32
+
33
+ lines.append("")
34
+ lines.append("๐Ÿง  ๋ฐœํ™”๋ณ„ ๊ฐ์ •(๋ถ€์ •) ๋กœ๊ทธ:")
35
+ for row in per_utt_log:
36
+ lines.append(f" {row['utterance_idx']+1}. {row['speaker']}: {row['text']}")
37
+ lines.append(f" ๊ฐ์ •: {json.dumps(row['negative_emotions'], ensure_ascii=False)}")
38
+ lines.append("")
39
+ lines.append("โš ๏ธ ์œค๋ฆฌ ๊ณ ์ง€:")
40
+ lines.append(" ๋ณธ ์‹œ์Šคํ…œ์€ ๋Œ€ํ™” ๋‚ด ๊ฐ์ • ํ๋ฆ„๊ณผ ํ†ต๊ณ„์  ๊ธ‰๋ณ€ ํŒจํ„ด์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐˆ๋“ฑ ์œ ๋ฐœ ๊ฐ€๋Šฅ์„ฑ์„ ์ถ”์ •ํ•˜๋Š” ์ฐธ๊ณ ์šฉ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.")
41
+ lines.append(" ๋ฒ•์  ์ฑ…์ž„ ํŒ๋‹จ์˜ ๊ทผ๊ฑฐ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ ํŽธํ–ฅ/๋งฅ๋ฝ ์˜คํ•ด๋กœ ์ธํ•ด ์˜คํŒ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.")
42
+ lines.append(" (์ฐธ๊ณ : EU AI Act, IEEE Ethically Aligned Design)")
43
+ return "\n".join(lines)