45 lines
1.6 KiB
JavaScript
45 lines
1.6 KiB
JavaScript
import { connectMongo, disconnectMongo } from '../src/data/mongo.js';
|
|
import { leadTools } from '../src/tools/crm/leads.tools.js';
|
|
import { analyticsTools } from '../src/tools/crm/analytics.tools.js';
|
|
|
|
await connectMongo();
|
|
|
|
const ctx = {
|
|
configurable: {
|
|
user: { id: '000000000000000000000000', name: 'Smoke Admin', role: 'admin' },
|
|
sessionId: 'smoke', traceId: 'smoke', channel: 'crm_chat', runtime: {},
|
|
},
|
|
};
|
|
|
|
const cases = [
|
|
['search_leads', { lead_tag: 'hot', limit: 3 }],
|
|
['lead_funnel_breakdown', { group_by: 'current_stage', date_range: 'all_time' }],
|
|
['lead_trend', { date_range: 'last_30_days', bucket: 'week' }],
|
|
['find_stale_leads', { inactive_days: 30, limit: 3 }],
|
|
['business_snapshot', { date_range: 'last_30_days' }],
|
|
['conversion_funnel', { date_range: 'last_90_days' }],
|
|
['team_performance', { date_range: 'last_90_days' }],
|
|
['source_effectiveness', { date_range: 'last_90_days' }],
|
|
['activity_analytics', { date_range: 'last_7_days' }],
|
|
['enrollment_report', { date_range: 'last_90_days' }],
|
|
];
|
|
|
|
const all = [...leadTools, ...analyticsTools];
|
|
for (const [name, args] of cases) {
|
|
const t = all.find((x) => x.name === name);
|
|
if (!t) { console.log(`?? ${name} NOT FOUND`); continue; }
|
|
const started = Date.now();
|
|
try {
|
|
const out = await t.invoke(args, ctx);
|
|
const parsed = JSON.parse(out);
|
|
const ok = parsed.ok !== false;
|
|
const preview = JSON.stringify(parsed.data ?? parsed).slice(0, 220);
|
|
console.log(`${ok ? 'PASS' : 'FAIL'} ${name} (${Date.now() - started}ms) ${preview}`);
|
|
} catch (e) {
|
|
console.log(`ERR ${name}: ${e.message}`);
|
|
}
|
|
}
|
|
|
|
await disconnectMongo();
|
|
process.exit(0);
|