fix(backend): IP в аудите, closed_at тикетов и admin_activity в статистике. Refs EventHub/EventHubBack#27 #28 #29
CI / test (push) Successful in 15m13s
Deploy stage (core) / deploy-stage-core (push) Successful in 4m57s

This commit is contained in:
2026-07-13 14:53:51 +03:00
parent 4281342416
commit ff4ab23264
12 changed files with 320 additions and 38 deletions
+13 -6
View File
@@ -1,17 +1,24 @@
#!/usr/bin/env bash
set -euo pipefail
# Rebar3 на WSL+Windows иногда оставляет symlink вместо каталога.
TEST_DIR="/home/alexc/eventhub-wsl-data/_build/test/lib/eventhub/test"
# Rebar3 на WSL+ext4 _build оставляет битые symlink unit|api (относительный путь не резолвится).
# Заменяем на полную копию из репозитория.
PROJ="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BUILD_DIR="$(readlink -f "${PROJ}/_build" 2>/dev/null || echo "${PROJ}/_build")"
TEST_DIR="${BUILD_DIR}/test/lib/eventhub/test"
mkdir -p "${TEST_DIR}"
for name in unit api; do
target="${TEST_DIR}/${name}"
if [ -L "${target}" ] || [ -f "${target}" ]; then
rm -f "${target}"
src="${PROJ}/test/${name}"
if [ ! -d "${src}" ]; then
echo "fix-rebar-unit-symlink: нет каталога ${src}" >&2
exit 1
fi
mkdir -p "${target}"
echo "Fixed: ${target}"
rm -rf "${target}"
cp -a "${src}" "${target}"
echo "Copied: ${src} -> ${target}"
ls -ld "${target}"
done
+54
View File
@@ -0,0 +1,54 @@
#!/usr/bin/env bash
# Запуск тестов только в Linux (WSL dev): asdf OTP 28 + rebar 3.27.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJ="$(cd "${SCRIPT_DIR}/.." && pwd)"
# shellcheck source=scripts/wsl-dev-env.sh
source "${SCRIPT_DIR}/wsl-dev-env.sh"
cd "${PROJ}"
bash "${SCRIPT_DIR}/wsl-ext4-dirs.sh" 2>/dev/null || true
bash "${SCRIPT_DIR}/fix-rebar-unit-symlink.sh"
echo "=== env ==="
erl -noshell -eval 'io:format("OTP ~s~n", [erlang:system_info(otp_release)]), halt().'
rebar3 --version
echo "rebar3: $(command -v rebar3)"
echo "erl: $(command -v erl)"
echo "=== compile ==="
rebar3 compile
bash "${SCRIPT_DIR}/fix-rebar-unit-symlink.sh"
echo "=== eunit: admin_utils_tests ==="
rebar3 eunit --module=admin_utils_tests --verbose
echo "=== eunit: logic_ticket_tests ==="
rebar3 eunit --module=logic_ticket_tests --verbose
bash "${SCRIPT_DIR}/fix-rebar-unit-symlink.sh"
port_busy() {
ss -tln 2>/dev/null | grep -q ":$1 "
}
run_ct() {
local case_name="$1"
echo "=== ct: ${case_name} ==="
rebar3 ct --suite=api_admins_SUITE --case="${case_name}" --verbose
}
if port_busy 8080 || port_busy 8445; then
echo "=== ct: SKIP (порты 8080/8445 заняты — остановите eventhub и повторите) ==="
ss -tln 2>/dev/null | grep -E ':8080|:8445' || true
exit 0
fi
run_ct admin_test_stats
bash "${SCRIPT_DIR}/fix-rebar-unit-symlink.sh"
run_ct admin_test_audit
echo "=== ALL PASSED ==="
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
# Linux-only WSL dev: asdf OTP 28 + rebar 3.27 (без Windows erl/rebar3 в PATH).
set -euo pipefail
ASDF_DIR="${HOME}/.asdf"
ERLANG_VER="${ERLANG_VER:-28.2}"
REBAR_VER="${REBAR_VER:-3.27.0}"
ERL_BIN="${ASDF_DIR}/installs/erlang/${ERLANG_VER}/bin"
REBAR_BIN="${ASDF_DIR}/installs/rebar/${REBAR_VER}/bin"
if [ ! -x "${ERL_BIN}/erl" ]; then
echo "wsl-dev-env: нет ${ERL_BIN}/erl (asdf install erlang ${ERLANG_VER})" >&2
exit 1
fi
if [ ! -x "${REBAR_BIN}/rebar3" ]; then
echo "wsl-dev-env: нет ${REBAR_BIN}/rebar3 (asdf install rebar ${REBAR_VER})" >&2
exit 1
fi
# Только Linux PATH — без /mnt/c/.../Erlang OTP и rebar3
export PATH="${ERL_BIN}:${REBAR_BIN}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"