feat: Enhance session processing and metrics

- Updated session processing commands in documentation for clarity.
- Removed transcript content fetching from session processing, allowing on-demand retrieval.
- Improved session metrics calculations and added new metrics for dashboard.
- Refactored processing scheduler to handle sessions in parallel with concurrency limits.
- Added manual trigger API for processing unprocessed sessions with admin checks.
- Implemented scripts for fetching and parsing transcripts, checking transcript content, and testing processing status.
- Updated Prisma schema to enforce default values for processed sessions.
- Added error handling and logging improvements throughout the processing workflow.
This commit is contained in:
Max Kowalski
2025-06-26 17:12:42 +02:00
parent 8f3c1e0f7c
commit 8c43a35632
20 changed files with 851 additions and 229 deletions

View File

@ -15,7 +15,7 @@ const envPath = join(__dirname, '..', '.env.local');
try {
const envFile = readFileSync(envPath, 'utf8');
const envVars = envFile.split('\n').filter(line => line.trim() && !line.startsWith('#'));
envVars.forEach(line => {
const [key, ...valueParts] = line.split('=');
if (key && valueParts.length > 0) {
@ -25,7 +25,7 @@ try {
}
}
});
console.log("✅ Environment variables loaded from .env.local");
} catch (error) {
console.warn("⚠️ Could not load .env.local file:", error.message);
@ -64,7 +64,7 @@ async function triggerProcessingScheduler() {
where: {
AND: [
{ messages: { some: {} } },
{
{
OR: [
{ processed: false },
{ processed: null }
@ -128,7 +128,7 @@ async function showProcessingStatus() {
where: { processed: true },
});
const unprocessedSessions = await prisma.session.count({
where: {
where: {
OR: [
{ processed: false },
{ processed: null }
@ -145,8 +145,8 @@ async function showProcessingStatus() {
const readyForProcessing = await prisma.session.count({
where: {
AND: [
{ messages: { some: {} } },
{
{ messages: { some: {} } },
{
OR: [
{ processed: false },
{ processed: null }
@ -168,8 +168,8 @@ async function showProcessingStatus() {
const samples = await prisma.session.findMany({
where: {
AND: [
{ messages: { some: {} } },
{
{ messages: { some: {} } },
{
OR: [
{ processed: false },
{ processed: null }