feat: 新增 Job Worker 系統與 API 文檔全面更新
This commit is contained in:
142
update_all_workflows.py
Normal file
142
update_all_workflows.py
Normal file
@@ -0,0 +1,142 @@
|
||||
import json
|
||||
|
||||
|
||||
def update_file(filename, new_js_code):
|
||||
with open(filename, "r", encoding="utf-8") as f:
|
||||
data = json.load(f)
|
||||
|
||||
for node in data["nodes"]:
|
||||
if "parameters" in node and "jsCode" in node["parameters"]:
|
||||
print(f"Updating jsCode in node: {node.get('name', 'unknown')}")
|
||||
node["parameters"]["jsCode"] = new_js_code
|
||||
break
|
||||
|
||||
with open(filename, "w", encoding="utf-8") as f:
|
||||
json.dump(data, f, indent=2, ensure_ascii=False)
|
||||
print(f"Updated {filename}")
|
||||
|
||||
|
||||
# New jsCode for video search (already updated)
|
||||
js_code_video_search = """const hits = $input.first().json.hits;
|
||||
|
||||
if (!hits || hits.length === 0) {
|
||||
return {
|
||||
json: {
|
||||
message: '找不到相關結果',
|
||||
query: $input.first().json.query
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const results = hits.map((hit, index) => {
|
||||
return {
|
||||
number: index + 1,
|
||||
text: hit.text,
|
||||
start: hit.start,
|
||||
end: hit.end,
|
||||
score: Math.round(hit.score * 100) + '%',
|
||||
video_title: hit.title,
|
||||
file_path: hit.file_path
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
json: {
|
||||
query: $input.first().json.query,
|
||||
count: $input.first().json.count,
|
||||
results: results
|
||||
}
|
||||
};"""
|
||||
|
||||
# New jsCode for simple workflow
|
||||
js_code_simple = """// 處理 Momentry 搜尋結果
|
||||
const data = $input.first().json;
|
||||
const hits = data.hits;
|
||||
|
||||
if (!hits || hits.length === 0) {
|
||||
return {
|
||||
json: {
|
||||
success: false,
|
||||
message: '找不到相關結果',
|
||||
query: data.query
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// 格式化結果
|
||||
const formattedResults = hits.map((hit, idx) => {
|
||||
return {
|
||||
index: idx + 1,
|
||||
id: hit.id,
|
||||
title: hit.title,
|
||||
text: hit.text,
|
||||
startTime: hit.start,
|
||||
endTime: hit.end,
|
||||
relevance: Math.round(hit.score * 100) + '%',
|
||||
file_path: hit.file_path
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
json: {
|
||||
success: true,
|
||||
query: data.query,
|
||||
totalFound: data.count,
|
||||
results: formattedResults
|
||||
}
|
||||
};"""
|
||||
|
||||
# New jsCode for RAG MCP workflow
|
||||
js_code_rag = """// Process Momentry Core search results
|
||||
const data = $input.first().json;
|
||||
const hits = data.hits || [];
|
||||
|
||||
if (hits.length === 0) {
|
||||
return {
|
||||
json: {
|
||||
success: false,
|
||||
message: 'No relevant results found',
|
||||
query: data.query,
|
||||
results: []
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Format results for RAG
|
||||
const formattedResults = hits.map((hit, idx) => {
|
||||
return {
|
||||
index: idx + 1,
|
||||
id: hit.id || hit.chunk_id,
|
||||
title: hit.title || 'Unknown Video',
|
||||
text: hit.text || hit.content || '',
|
||||
startTime: hit.start_time || hit.start || 0,
|
||||
endTime: hit.end_time || hit.end || 0,
|
||||
relevance: Math.round((hit.score || 0) * 100) + '%',
|
||||
videoUuid: hit.video_uuid || hit.uuid,
|
||||
file_path: hit.file_path || ''
|
||||
};
|
||||
});
|
||||
|
||||
// Build context for RAG
|
||||
const context = formattedResults
|
||||
.map(r => \`[\${r.index}] \${r.text} (Video: \${r.title}, Time: \${r.startTime}s-\${r.endTime}s)\`)
|
||||
.join('\\n\\n');
|
||||
|
||||
return {
|
||||
json: {
|
||||
success: true,
|
||||
query: data.query,
|
||||
totalFound: data.count || hits.length,
|
||||
context: context,
|
||||
results: formattedResults
|
||||
}
|
||||
};"""
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Update simple workflow
|
||||
update_file("docs/n8n_workflow_simple.json", js_code_simple)
|
||||
# Update RAG workflow
|
||||
update_file("docs/n8n_workflow_video_rag_mcp.json", js_code_rag)
|
||||
# Note: video search already updated, but we can re-update if needed
|
||||
# update_file('docs/n8n_workflow_video_search.json', js_code_video_search)
|
||||
print("All workflows updated.")
|
||||
Reference in New Issue
Block a user