optimize auto reload uvicornserver load new vector libs if changed by py
This commit is contained in:
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Tag;
|
||||
|
||||
use App\Index\IndexMetaManager;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
final class TagVectorIndexBuilder
|
||||
@@ -16,6 +17,7 @@ final class TagVectorIndexBuilder
|
||||
private readonly string $embeddingModel,
|
||||
private readonly int $timeoutSeconds,
|
||||
private readonly LoggerInterface $agentLogger,
|
||||
private readonly IndexMetaManager $metaManager, // ✅ NEU
|
||||
) {}
|
||||
|
||||
public function build(): void
|
||||
@@ -34,18 +36,14 @@ final class TagVectorIndexBuilder
|
||||
$finalIndex = $this->vectorTagsIndexPath;
|
||||
$finalMeta = $finalIndex . '.meta.json';
|
||||
|
||||
// Ensure output dir exists
|
||||
$dir = \dirname($finalIndex);
|
||||
if (!\is_dir($dir)) {
|
||||
@\mkdir($dir, 0775, true);
|
||||
}
|
||||
|
||||
// Clean tmp leftovers
|
||||
@\unlink($tmpIndex);
|
||||
@\unlink($tmpMeta);
|
||||
|
||||
// Positional args:
|
||||
// python vector_ingest_tags.py <tags.ndjson> <out.tmp> <model>
|
||||
$cmd = sprintf(
|
||||
'%s %s %s %s %s 2>&1',
|
||||
escapeshellarg($this->pythonBin),
|
||||
@@ -73,20 +71,22 @@ final class TagVectorIndexBuilder
|
||||
throw new \RuntimeException('Tag vector ingest failed (exit=' . $exit . ')');
|
||||
}
|
||||
|
||||
// If no tags -> python may remove outputs and exit 0
|
||||
if (!is_file($tmpIndex) || !is_file($tmpMeta)) {
|
||||
// treat as "no index" rather than hard error
|
||||
@\unlink($tmpIndex);
|
||||
@\unlink($tmpMeta);
|
||||
$this->agentLogger->warning('[tags] no tag index produced (maybe 0 tags).');
|
||||
return;
|
||||
}
|
||||
|
||||
// Atomic switch
|
||||
$this->atomicReplace($tmpIndex, $finalIndex);
|
||||
$this->atomicReplace($tmpMeta, $finalMeta);
|
||||
|
||||
$this->agentLogger->info('[tags] tag vector index build completed', [
|
||||
// ✅ ENTERPRISE COMMIT MARKER
|
||||
$this->metaManager->touchRuntime([
|
||||
'last_tags_rebuild_at' => (new \DateTimeImmutable())->format(DATE_ATOM),
|
||||
]);
|
||||
|
||||
$this->agentLogger->info('[tags] tag vector index build completed + runtime committed', [
|
||||
'index' => $finalIndex,
|
||||
'meta' => $finalMeta,
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user