feat: add migrations, test scripts, and utility tools

- Add database migrations (006-028) for face recognition, identity, file_uuid
- Add test scripts for ASR, face, search, processing
- Add portal frontend (Tauri)
- Add config, benchmark, and monitoring utilities
- Add model checkpoints and pretrained model references
This commit is contained in:
Warren
2026-04-30 15:11:53 +08:00
parent 4d75b2e251
commit b54c2def30
192 changed files with 46721 additions and 0 deletions

89
fix_processor_json.py Normal file
View File

@@ -0,0 +1,89 @@
#!/usr/bin/env python3
"""
Fix JSON output structure in processor scripts to include processor_name field.
"""
import os
import re
import sys
def fix_face_processor():
"""Fix Face processor JSON output."""
filepath = "scripts/face_processor_contract_v1.py"
with open(filepath, "r") as f:
content = f.read()
# Fix success return (line ~446)
success_pattern = r'(\s+)return \{\s*"status": "success",'
success_replacement = r'\1return {\n\1 "processor_name": PROCESSOR_NAME,\n\1 "processor_version": PROCESSOR_VERSION,\n\1 "contract_version": CONTRACT_VERSION,\n\1 "status": "success",'
content = re.sub(success_pattern, success_replacement, content, flags=re.DOTALL)
# Fix error returns
error_pattern = r'(\s+)return \{\s*"status": "error",'
error_replacement = r'\1return {\n\1 "processor_name": PROCESSOR_NAME,\n\1 "processor_version": PROCESSOR_VERSION,\n\1 "contract_version": CONTRACT_VERSION,\n\1 "status": "error",'
content = re.sub(error_pattern, error_replacement, content, flags=re.DOTALL)
# Remove duplicate processor_version and contract_version fields
# after we've already added them at the beginning
content = re.sub(
r'"processor_version": PROCESSOR_VERSION,.*\n.*"contract_version": CONTRACT_VERSION,',
"",
content,
flags=re.DOTALL,
)
with open(filepath, "w") as f:
f.write(content)
print(f"Fixed {filepath}")
def fix_pose_processor():
"""Fix Pose processor JSON output."""
filepath = "scripts/pose_processor_contract_v1.py"
with open(filepath, "r") as f:
content = f.read()
# Fix success return
success_pattern = r'(\s+)return \{\s*"status": "success",'
success_replacement = r'\1return {\n\1 "processor_name": PROCESSOR_NAME,\n\1 "processor_version": PROCESSOR_VERSION,\n\1 "contract_version": CONTRACT_VERSION,\n\1 "status": "success",'
content = re.sub(success_pattern, success_replacement, content, flags=re.DOTALL)
# Fix error returns
error_pattern = r'(\s+)return \{\s*"status": "error",'
error_replacement = r'\1return {\n\1 "processor_name": PROCESSOR_NAME,\n\1 "processor_version": PROCESSOR_VERSION,\n\1 "contract_version": CONTRACT_VERSION,\n\1 "status": "error",'
content = re.sub(error_pattern, error_replacement, content, flags=re.DOTALL)
# Remove duplicate processor_version and contract_version fields
content = re.sub(
r'"processor_version": PROCESSOR_VERSION,.*\n.*"contract_version": CONTRACT_VERSION,',
"",
content,
flags=re.DOTALL,
)
with open(filepath, "w") as f:
f.write(content)
print(f"Fixed {filepath}")
def main():
"""Main function."""
print("Fixing processor JSON output structure...")
fix_face_processor()
fix_pose_processor()
print("\nDone! Run verification again to check compliance.")
if __name__ == "__main__":
main()