|
|
|
|
@@ -30,6 +30,50 @@ a { color: #0066cc; }
|
|
|
|
|
<!-- depends: 01_auth -->
|
|
|
|
|
|
|
|
|
|
<h2>Pipeline</h2>
|
|
|
|
|
<h3>Dependency Graph</h3>
|
|
|
|
|
<div class="codehilite"><pre><span></span><code><span class="n">flowchart</span><span class="w"> </span><span class="n">TB</span>
|
|
|
|
|
<span class="w"> </span><span class="n">subgraph</span><span class="w"> </span><span class="n">Processors</span><span class="p">[</span><span class="s">"10 Processors"</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Cut</span><span class="p">[</span><span class="n">Cut</span><span class="p">]</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">ASR</span><span class="p">[</span><span class="n">ASR</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">ASR</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">ASRX</span><span class="p">[</span><span class="n">ASRX</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">ASRX</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Story</span><span class="p">[</span><span class="n">Story</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Cut</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Story</span>
|
|
|
|
|
<span class="w"> </span><span class="n">YOLO</span><span class="p">[</span><span class="n">YOLO</span><span class="p">]</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">VisualChunk</span><span class="p">[</span><span class="n">VisualChunk</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">VisualChunk</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Story</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Face</span><span class="p">[</span><span class="n">Face</span><span class="p">]</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Story</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Story</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">FiveW1H</span><span class="p">[</span><span class="mi">5</span><span class="n">W1H</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">OCR</span><span class="p">[</span><span class="n">OCR</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Pose</span><span class="p">[</span><span class="n">Pose</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">end</span>
|
|
|
|
|
|
|
|
|
|
<span class="w"> </span><span class="n">subgraph</span><span class="w"> </span><span class="n">Ingestion</span><span class="p">[</span><span class="s">"入庫 (Post-Processing)"</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">ASR</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Rule1</span><span class="p">[</span><span class="n">Rule</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">Sentence</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">ASRX</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Rule1</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Rule1</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Vectorize</span><span class="p">[</span><span class="n">Auto</span><span class="o">-</span><span class="n">Vectorize</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Rule1</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Phase1</span><span class="p">[</span><span class="n">Phase</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="n">Pack</span><span class="p">]</span>
|
|
|
|
|
|
|
|
|
|
<span class="w"> </span><span class="n">Cut</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Rule3</span><span class="p">[</span><span class="n">Rule</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="n">Scene</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">ASR</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Rule3</span>
|
|
|
|
|
|
|
|
|
|
<span class="w"> </span><span class="n">Face</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Trace</span><span class="p">[</span><span class="n">Face</span><span class="w"> </span><span class="n">Trace</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Trace</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Qdrant</span><span class="p">[</span><span class="n">Qdrant</span><span class="w"> </span><span class="n">Sync</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Trace</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">TraceChunks</span><span class="p">[</span><span class="n">Trace</span><span class="w"> </span><span class="n">Chunks</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Trace</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">TKG</span><span class="p">[</span><span class="n">TKG</span><span class="w"> </span><span class="n">Builder</span><span class="p">]</span>
|
|
|
|
|
|
|
|
|
|
<span class="w"> </span><span class="n">Face</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">TMDbMatch</span><span class="p">[</span><span class="n">TMDb</span><span class="w"> </span><span class="n">Match</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Face</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">SceneMeta</span><span class="p">[</span><span class="n">Scene</span><span class="w"> </span><span class="n">Metadata</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">YOLO</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">SceneMeta</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Face</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">IdentityAgent</span><span class="p">[</span><span class="n">Identity</span><span class="w"> </span><span class="n">Agent</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">ASRX</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">IdentityAgent</span>
|
|
|
|
|
|
|
|
|
|
<span class="w"> </span><span class="n">Cut</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Agent5W1H</span><span class="p">[</span><span class="mi">5</span><span class="n">W1H</span><span class="w"> </span><span class="n">Agent</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">ASR</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Agent5W1H</span>
|
|
|
|
|
<span class="w"> </span><span class="n">Agent5W1H</span><span class="w"> </span><span class="o">--></span><span class="w"> </span><span class="n">Phase2</span><span class="p">[</span><span class="n">Phase</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="n">Pack</span><span class="p">]</span>
|
|
|
|
|
<span class="w"> </span><span class="n">end</span>
|
|
|
|
|
|
|
|
|
|
<span class="w"> </span><span class="n">style</span><span class="w"> </span><span class="n">Processors</span><span class="w"> </span><span class="n">fill</span><span class="o">:</span><span class="err">#</span><span class="mi">1</span><span class="n">a1a2e</span><span class="p">,</span><span class="n">stroke</span><span class="o">:</span><span class="err">#</span><span class="n">e94560</span>
|
|
|
|
|
<span class="w"> </span><span class="n">style</span><span class="w"> </span><span class="n">Ingestion</span><span class="w"> </span><span class="n">fill</span><span class="o">:</span><span class="err">#</span><span class="mi">16213</span><span class="n">e</span><span class="p">,</span><span class="n">stroke</span><span class="o">:</span><span class="err">#</span><span class="mf">0f</span><span class="mi">3460</span>
|
|
|
|
|
</code></pre></div>
|
|
|
|
|
|
|
|
|
|
<h3>10 Processor Stages</h3>
|
|
|
|
|
<table class="table">
|
|
|
|
|
<thead>
|
|
|
|
|
@@ -92,7 +136,7 @@ a { color: #0066cc; }
|
|
|
|
|
<tr>
|
|
|
|
|
<td>9</td>
|
|
|
|
|
<td><code>Story</code></td>
|
|
|
|
|
<td>ASRX + Cut</td>
|
|
|
|
|
<td>ASRX + Cut + YOLO + Face</td>
|
|
|
|
|
<td>Narrative scene summarization (LLM, with embedding)</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
@@ -129,60 +173,66 @@ a { color: #0066cc; }
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>3</td>
|
|
|
|
|
<td><strong>Phase 1 Pack</strong></td>
|
|
|
|
|
<td>Rule 1</td>
|
|
|
|
|
<td><code>release_pack.py --phase 1</code></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>4</td>
|
|
|
|
|
<td><strong>Rule 3 Scene Chunking</strong></td>
|
|
|
|
|
<td>Cut + ASR</td>
|
|
|
|
|
<td><code>chunk</code> table, <code>chunk_type = 'cut'</code></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>4</td>
|
|
|
|
|
<td><strong>Face Trace + DB Store</strong></td>
|
|
|
|
|
<td>5</td>
|
|
|
|
|
<td><strong>Face Trace</strong></td>
|
|
|
|
|
<td>Face</td>
|
|
|
|
|
<td><code>face_detections.trace_id</code> IS NOT NULL</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>5</td>
|
|
|
|
|
<td>6</td>
|
|
|
|
|
<td><strong>Qdrant Face Sync</strong></td>
|
|
|
|
|
<td>Face Trace</td>
|
|
|
|
|
<td>Qdrant collection (face embeddings)</td>
|
|
|
|
|
<td>Qdrant face_embedding collection</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>6</td>
|
|
|
|
|
<td>7</td>
|
|
|
|
|
<td><strong>Trace Chunks</strong></td>
|
|
|
|
|
<td>Face Trace</td>
|
|
|
|
|
<td><code>chunk</code> table, <code>chunk_type = 'trace'</code></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>7</td>
|
|
|
|
|
<td>8</td>
|
|
|
|
|
<td><strong>TKG Builder</strong></td>
|
|
|
|
|
<td>Face Trace</td>
|
|
|
|
|
<td><code>tkg_nodes</code> + <code>tkg_edges</code> tables</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>8</td>
|
|
|
|
|
<td>9</td>
|
|
|
|
|
<td><strong>TMDb Face Matching</strong></td>
|
|
|
|
|
<td>Face + TMDb enabled</td>
|
|
|
|
|
<td><code>face_detections.identity_id</code> IS NOT NULL</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>9</td>
|
|
|
|
|
<td>10</td>
|
|
|
|
|
<td><strong>Heuristic Scene Metadata</strong></td>
|
|
|
|
|
<td>Face + YOLO</td>
|
|
|
|
|
<td><code>{file_uuid}.scene_meta.json</code> on disk</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>10</td>
|
|
|
|
|
<td>11</td>
|
|
|
|
|
<td><strong>Identity Agent</strong></td>
|
|
|
|
|
<td>Face + ASRX</td>
|
|
|
|
|
<td><code>identities</code> with <code>source = 'identity_agent'</code></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>11</td>
|
|
|
|
|
<td>12</td>
|
|
|
|
|
<td><strong>5W1H Agent</strong></td>
|
|
|
|
|
<td>Cut + ASR</td>
|
|
|
|
|
<td><code>chunk.summary_text</code> IS NOT NULL (chunk_type = 'cut')</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td>12</td>
|
|
|
|
|
<td>13</td>
|
|
|
|
|
<td><strong>Release Pack</strong></td>
|
|
|
|
|
<td>5W1H Agent</td>
|
|
|
|
|
<td><code>release_pack.py --phase 2</code> output</td>
|
|
|
|
|
|