everydaycats commited on
Commit
871ab98
·
verified ·
1 Parent(s): 0ec557a

Update apps/aura_measure.js

Browse files
Files changed (1) hide show
  1. apps/aura_measure.js +29 -11
apps/aura_measure.js CHANGED
@@ -1,4 +1,3 @@
1
- // apps/aura_measure.js
2
  import express from 'express';
3
  import { generateCompletion } from '../ai_engine.js';
4
  import { supabase } from '../config/supabaseClient.js';
@@ -31,22 +30,31 @@ RULES:
31
  // ── LEADERBOARD CACHE ──
32
  let leaderboardCache = null;
33
  let lastCacheUpdate = 0;
34
- const CACHE_DURATION = 2 * 60 * 1000; // 2 minutes
35
 
36
  router.post('/analyze', async (req, res) => {
37
  try {
38
  const { media_base64, context } = req.body;
39
  if (!media_base64) throw new Error("No media provided.");
 
 
40
  const aiResult = await generateCompletion({
41
  model: "qwen",
42
  prompt: context || "Analyze this image and calculate my Aura. Return JSON.",
43
  system_prompt: AURA_SYSTEM_PROMPT,
44
  images: [media_base64]
45
  });
 
46
  if (!aiResult.success) throw new Error(aiResult.error);
47
  const parsedData = JSON.parse(aiResult.data);
48
- res.json({ success: true, score: parsedData.score, analysis: parsedData.analysis_markdown });
 
 
 
 
 
49
  } catch (err) {
 
50
  res.status(500).json({ success: false, error: err.message });
51
  }
52
  });
@@ -55,10 +63,10 @@ router.get('/leaderboard', async (req, res) => {
55
  try {
56
  const now = Date.now();
57
  if (leaderboardCache && (now - lastCacheUpdate < CACHE_DURATION)) {
58
- return res.json({ success: true, data: leaderboardCache });
59
  }
60
  const { data, error } = await supabase
61
- .from('aura_leaderboard')
62
  .select('username, avatar, total_score')
63
  .order('total_score', { ascending: false })
64
  .limit(50);
@@ -66,19 +74,29 @@ router.get('/leaderboard', async (req, res) => {
66
  leaderboardCache = data;
67
  lastCacheUpdate = now;
68
  res.json({ success: true, data });
69
- } catch (err) { res.status(500).json({ success: false, error: err.message }); }
 
 
70
  });
71
 
72
  router.post('/sync', async (req, res) => {
73
  try {
74
  const { device_id, username, avatar, total_score } = req.body;
75
- const { error } = await supabase.from('aura_leaderboard').upsert({
76
- device_id, username, avatar, total_score, updated_at: new Date()
77
- }, { onConflict: 'device_id' });
 
 
 
 
 
 
78
  if (error) throw error;
79
- lastCacheUpdate = 0; // Invalidate cache
80
  res.json({ success: true });
81
- } catch (err) { res.status(500).json({ success: false, error: err.message }); }
 
 
82
  });
83
 
84
  export default router;
 
 
1
  import express from 'express';
2
  import { generateCompletion } from '../ai_engine.js';
3
  import { supabase } from '../config/supabaseClient.js';
 
30
  // ── LEADERBOARD CACHE ──
31
  let leaderboardCache = null;
32
  let lastCacheUpdate = 0;
33
+ const CACHE_DURATION = 120000; // 2 Minutes
34
 
35
  router.post('/analyze', async (req, res) => {
36
  try {
37
  const { media_base64, context } = req.body;
38
  if (!media_base64) throw new Error("No media provided.");
39
+ console.log(`[AURA MEASURE] Analyzing vibe...`);
40
+
41
  const aiResult = await generateCompletion({
42
  model: "qwen",
43
  prompt: context || "Analyze this image and calculate my Aura. Return JSON.",
44
  system_prompt: AURA_SYSTEM_PROMPT,
45
  images: [media_base64]
46
  });
47
+
48
  if (!aiResult.success) throw new Error(aiResult.error);
49
  const parsedData = JSON.parse(aiResult.data);
50
+
51
+ res.json({
52
+ success: true,
53
+ score: parsedData.score,
54
+ analysis: parsedData.analysis_markdown
55
+ });
56
  } catch (err) {
57
+ console.error("[AURA ERROR]", err.message);
58
  res.status(500).json({ success: false, error: err.message });
59
  }
60
  });
 
63
  try {
64
  const now = Date.now();
65
  if (leaderboardCache && (now - lastCacheUpdate < CACHE_DURATION)) {
66
+ return res.json({ success: true, data: leaderboardCache, cached: true });
67
  }
68
  const { data, error } = await supabase
69
+ .from('auragrade_leaderboard')
70
  .select('username, avatar, total_score')
71
  .order('total_score', { ascending: false })
72
  .limit(50);
 
74
  leaderboardCache = data;
75
  lastCacheUpdate = now;
76
  res.json({ success: true, data });
77
+ } catch (err) {
78
+ res.status(500).json({ success: false, error: err.message });
79
+ }
80
  });
81
 
82
  router.post('/sync', async (req, res) => {
83
  try {
84
  const { device_id, username, avatar, total_score } = req.body;
85
+ const { error } = await supabase
86
+ .from('auragrade_leaderboard')
87
+ .upsert({
88
+ device_id,
89
+ username,
90
+ avatar: avatar || '👤',
91
+ total_score,
92
+ updated_at: new Date().toISOString()
93
+ }, { onConflict: 'device_id' });
94
  if (error) throw error;
95
+ lastCacheUpdate = 0; // Reset cache so next fetch gets fresh data
96
  res.json({ success: true });
97
+ } catch (err) {
98
+ res.status(500).json({ success: false, error: err.message });
99
+ }
100
  });
101
 
102
  export default router;