chore(fixtures): enrichit les vaults de test (frontmatter complet, types fichiers pour vues/aper/us, dossiers avec accents+espaces, scripts dupliques, images/logs) + purge residus e2e-diagram
CI / lint (push) Successful in 1m55s
CI / security (push) Successful in 1m20s
CI / test (push) Successful in 3m43s
CI / build (push) Successful in 1m16s
CI / e2e (push) Successful in 11m44s

This commit is contained in:
2026-09-22 13:42:49 -04:00
parent ab7c227b97
commit 6f0a6f7fd8
39 changed files with 1583 additions and 1955 deletions
+54
View File
@@ -0,0 +1,54 @@
#!/bin/bash
# PostgreSQL backup script for HabitForge
set -e
# Configuration
BACKUP_DIR="/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="${BACKUP_DIR}/habitforge_backup_${TIMESTAMP}.sql.gz"
RETENTION_DAYS=7
# Database settings (from environment)
DB_HOST="${POSTGRES_HOST:-db}"
DB_PORT="${POSTGRES_PORT:-5432}"
DB_NAME="${POSTGRES_DB:-habitforge}"
DB_USER="${POSTGRES_USER:-habitforge}"
# Create backup directory if it doesn't exist
mkdir -p "${BACKUP_DIR}"
echo "Starting backup at $(date)"
# Perform backup
PGPASSWORD="${POSTGRES_PASSWORD}" pg_dump \
-h "${DB_HOST}" \
-p "${DB_PORT}" \
-U "${DB_USER}" \
-d "${DB_NAME}" \
--format=plain \
--no-owner \
--no-acl | gzip > "${BACKUP_FILE}"
# Check if backup was successful
if [ $? -eq 0 ]; then
echo "Backup completed successfully: ${BACKUP_FILE}"
# Get file size
SIZE=$(du -h "${BACKUP_FILE}" | cut -f1)
echo "Backup size: ${SIZE}"
# Remove old backups (older than RETENTION_DAYS)
echo "Removing backups older than ${RETENTION_DAYS} days..."
find "${BACKUP_DIR}" -name "habitforge_backup_*.sql.gz" -type f -mtime +${RETENTION_DAYS} -delete
# List remaining backups
echo "Current backups:"
ls -lh "${BACKUP_DIR}"/habitforge_backup_*.sql.gz 2>/dev/null || echo "No backups found"
else
echo "Backup failed!"
exit 1
fi
echo "Backup finished at $(date)"
@@ -0,0 +1,37 @@
#!/usr/bin/env python3
"""
Script to import Zepp health data from export-zepp directory into HabitForge database.
Usage: python scripts/import_zepp_data.py [--user-id USER_ID]
"""
import sys
import os
import argparse
# Add parent directory to path to import backend modules
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from backend.integrations.import_zepp import main as import_main, USER_ID as DEFAULT_USER_ID
from backend.integrations import import_zepp
def run_import(user_id: int = None):
"""Run the Zepp data import."""
if user_id:
# Override the default user ID
import_zepp.USER_ID = user_id
print(f"Importing data for user ID: {user_id}")
else:
print(f"Importing data for default user ID: {DEFAULT_USER_ID}")
import_main()
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Import Zepp health data into HabitForge")
parser.add_argument(
"--user-id",
type=int,
help="User ID to import data for (default: 1)",
default=None
)
args = parser.parse_args()
run_import(args.user_id)