hasTable($tableName)) { $table = $schema->getTable($tableName); // Progress percentage (0-100) if (!$table->hasColumn('progress')) { $table->addColumn('progress', Types::INTEGER, [ 'notnull' => false, 'default' => 0, 'unsigned' => true, ]); } // Current item being processed if (!$table->hasColumn('progress_current')) { $table->addColumn('progress_current', Types::INTEGER, [ 'notnull' => false, 'default' => 0, 'unsigned' => true, ]); } // Total items to process if (!$table->hasColumn('progress_total')) { $table->addColumn('progress_total', Types::INTEGER, [ 'notnull' => false, 'default' => 0, 'unsigned' => true, ]); } // Current processing stage: collecting, extracting, chunking, embedding, storing if (!$table->hasColumn('progress_stage')) { $table->addColumn('progress_stage', Types::STRING, [ 'notnull' => false, 'length' => 50, ]); } return $schema; } return null; } }