feat(documents): папки шаблонов, маппинги и поле document_template; fix(batch): атомарное создание задач, idempotency и массовое удаление в реестре

This commit is contained in:
2026-07-08 13:33:14 +03:00
parent fc8e85832c
commit 6826d82850
34 changed files with 3770 additions and 467 deletions

View File

@@ -27,7 +27,7 @@ if [[ "$1" == "--with-ollama" ]]; then
fi
echo "=== Starting CRM dev dependencies (project: ${PROJECT_NAME}) ==="
docker compose -f "${COMPOSE_FILE}" -p "${PROJECT_NAME}" "${EXTRA_PROFILES[@]}" up -d
docker compose --env-file "${PROJECT_ROOT}/.env.local" -f "${COMPOSE_FILE}" -p "${PROJECT_NAME}" "${EXTRA_PROFILES[@]}" up -d
echo ""
echo "Dependencies are starting up:"

38
scripts/dev/start-dev.ps1 Normal file
View File

@@ -0,0 +1,38 @@
# Start the CRM app in native development mode on Windows.
# Dependencies must already be running (see start-deps.sh / docker-compose.deps.yml).
# Usage: .\scripts\dev\start-dev.ps1
$ErrorActionPreference = "Stop"
$ProjectRoot = Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Path)
Set-Location $ProjectRoot
if (-not (Test-Path ".env.local")) {
Write-Error "ERROR: .env.local not found."
exit 1
}
# Load environment variables from .env.local
Get-Content ".env.local" | ForEach-Object {
$line = $_.Trim()
if ($line -and -not $line.StartsWith("#")) {
$idx = $line.IndexOf("=")
if ($idx -gt 0) {
$key = $line.Substring(0, $idx).Trim()
$value = $line.Substring($idx + 1).Trim()
# Remove surrounding quotes if present
if ($value.StartsWith('"') -and $value.EndsWith('"')) {
$value = $value.Substring(1, $value.Length - 2)
}
[Environment]::SetEnvironmentVariable($key, $value, "Process")
}
}
}
$env:NODE_ENV = "development"
Write-Host "=== Starting CRM dev server ==="
Write-Host "Make sure dependencies are running: docker compose --env-file .env.local -f docker-compose.deps.yml -p crm-local up -d"
Write-Host ""
& .\node_modules\.bin\tsx server\index.ts

View File

@@ -10,4 +10,4 @@ PROJECT_NAME="crm-local"
COMPOSE_FILE="${PROJECT_ROOT}/docker-compose.deps.yml"
echo "=== Stopping CRM dev dependencies (project: ${PROJECT_NAME}) ==="
docker compose -f "${COMPOSE_FILE}" -p "${PROJECT_NAME}" down
docker compose --env-file "${PROJECT_ROOT}/.env.local" -f "${COMPOSE_FILE}" -p "${PROJECT_NAME}" down

View File

@@ -51,10 +51,10 @@ ssh -o IdentitiesOnly=yes -i "${SSH_KEY}" "${SSH_HOST}" \
echo "Dump saved to: ${DUMP_FILE}"
echo "=== 3. Stopping and recreating local database ==="
docker compose -f "${COMPOSE_FILE}" -p "${PROJECT_NAME}" stop db
docker compose -f "${COMPOSE_FILE}" -p "${PROJECT_NAME}" rm -f db
docker compose --env-file "${PROJECT_ROOT}/.env.local" -f "${COMPOSE_FILE}" -p "${PROJECT_NAME}" stop db
docker compose --env-file "${PROJECT_ROOT}/.env.local" -f "${COMPOSE_FILE}" -p "${PROJECT_NAME}" rm -f db
docker volume rm "${PROJECT_NAME}_postgres_data" >/dev/null 2>&1 || true
docker compose -f "${COMPOSE_FILE}" -p "${PROJECT_NAME}" up -d db
docker compose --env-file "${PROJECT_ROOT}/.env.local" -f "${COMPOSE_FILE}" -p "${PROJECT_NAME}" up -d db
echo "=== 4. Waiting for local database ==="
for i in {1..30}; do