37 lines
1.8 KiB
Bash
Executable File
37 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
AUDIT="$1"
|
|
KG=$(grep "^GEMINI_KEY=" /etc/weval/secrets.env | cut -d= -f2- | tr -d '"')
|
|
REVIEWS=()
|
|
for IMG in "$AUDIT"/shots/*.png; do
|
|
NAME=$(basename "$IMG" .png)
|
|
B64=$(base64 -w0 < "$IMG" | head -c 400000)
|
|
PROMPT='Evalue UX de cette page web WEVAL 1440x900. Note 1-10 sur: coherence_design, hierarchy_visuelle, lisibilite, polish_premium. JSON strict sans markdown: {"page":"'"$NAME"'","coherence":N,"hierarchy":N,"lisibilite":N,"polish":N,"global":N,"improvements":"court"}'
|
|
PAYLOAD=$(python3 -c "
|
|
import json, sys
|
|
print(json.dumps({'contents':[{'parts':[{'text':sys.argv[1]},{'inline_data':{'mime_type':'image/png','data':sys.argv[2]}}]}],'generationConfig':{'temperature':0.2,'maxOutputTokens':300}}))
|
|
" "$PROMPT" "$B64")
|
|
RESP=$(curl -sk -m 30 -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=$KG" -H "Content-Type: application/json" -d "$PAYLOAD")
|
|
CONTENT=$(echo "$RESP" | python3 -c "
|
|
import sys, json, re
|
|
try:
|
|
d = json.loads(sys.stdin.read())
|
|
t = d['candidates'][0]['content']['parts'][0]['text']
|
|
t = re.sub(r'\`\`\`[a-z]*', '', t).strip()
|
|
m = re.search(r'\{.*?\}', t, re.DOTALL)
|
|
if m:
|
|
try: print(json.dumps(json.loads(m.group(0))))
|
|
except: print(json.dumps({'raw':t[:250]}))
|
|
else: print(json.dumps({'raw':t[:250]}))
|
|
except Exception as e: print(json.dumps({'err':str(e)[:100]}))")
|
|
REVIEWS+=("{\"page\":\"$NAME\",\"review\":$CONTENT}")
|
|
sleep 1
|
|
done
|
|
REPORT="$AUDIT/gemini-quality-review.json"
|
|
{
|
|
echo -n "{\"doctrine\":\"185\",\"ts\":\"$(date -Iseconds)\",\"agent\":\"gemini-2.5-flash\",\"reviewed\":${#REVIEWS[@]},\"reviews\":["
|
|
F=1
|
|
for r in "${REVIEWS[@]}"; do [ $F = 1 ] && F=0 || echo -n ","; echo -n "$r"; done
|
|
echo "]}"
|
|
} > "$REPORT"
|
|
echo "{\"ok\":true,\"report\":\"${REPORT#/var/www/html}\"}"
|