From 5ff4218071d96067f9c4c7a8fb50ee9a6ca3cd58 Mon Sep 17 00:00:00 2001 From: Dastan Medetbekov Date: Sat, 4 Apr 2026 12:30:08 +0600 Subject: [PATCH 1/3] Dastan --- quick_test_ollama.sh | 17 +++++++++++++-- scripts/start.sh | 51 +++++++++++++++++++++++++++++--------------- test_ollama.sh | 21 ++++++++++++++---- 3 files changed, 66 insertions(+), 23 deletions(-) diff --git a/quick_test_ollama.sh b/quick_test_ollama.sh index 08578ad..006b6c5 100755 --- a/quick_test_ollama.sh +++ b/quick_test_ollama.sh @@ -3,6 +3,19 @@ set -e +compose_exec() { + if docker compose version >/dev/null 2>&1; then + docker compose exec -T python_backend "$@" + return + fi + if command -v docker-compose >/dev/null 2>&1; then + docker-compose exec -T python_backend "$@" + return + fi + echo " ❌ Docker Compose not found" + exit 1 +} + echo "╔════════════════════════════════════════════════════════╗" echo "║ ПРОВЕРКА ИНТЕГРАЦИИ OLLAMA С RAG ║" echo "╚════════════════════════════════════════════════════════╝" @@ -35,12 +48,12 @@ check # 4. Конфигурация echo "4️⃣ Проверка конфигурации backend..." -docker exec hackathon_python env | grep -q "RAG_LLM_PROVIDER=ollama" +compose_exec env | grep -q "RAG_LLM_PROVIDER=ollama" check # 5. RAG модули echo "5️⃣ Проверка RAG модулей..." -docker exec hackathon_python python3 -c "from rag_engine import _build_llm, _build_embeddings; _build_llm(); _build_embeddings()" 2>&1 | grep -v "Warning" | grep -v "FutureWarning" | grep -v "Deprecation" > /dev/null +compose_exec python3 -c "from rag_engine import _build_llm, _build_embeddings; _build_llm(); _build_embeddings()" 2>&1 | grep -v "Warning" | grep -v "FutureWarning" | grep -v "Deprecation" > /dev/null check echo "" diff --git a/scripts/start.sh b/scripts/start.sh index 2d45049..446e405 100644 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -6,6 +6,7 @@ cd "$REPO_ROOT" APT_UPDATED=0 ENV_CREATED=0 +AUTO_INSTALL_DEPS="${AUTO_INSTALL_DEPS:-1}" log() { printf "[%s] %s\n" "$(date '+%Y-%m-%d %H:%M:%S')" "$*" @@ -19,14 +20,11 @@ require_cmd() { } as_root() { - if [[ "${EUID}" -eq 0 ]]; then - "$@" - elif command -v sudo >/dev/null 2>&1; then - sudo "$@" - else - log "Need root privileges. Run as root or install sudo." + if [[ "${EUID}" -ne 0 ]]; then + log "Run this script as root: sudo bash scripts/start.sh" exit 1 fi + "$@" } apt_update_once() { @@ -60,6 +58,13 @@ ensure_compose_available() { return fi + if [[ "$AUTO_INSTALL_DEPS" != "1" ]]; then + log "Docker Compose not found." + log "Install Docker Compose plugin (recommended) and rerun:" + log " sudo apt-get install -y docker-compose-plugin" + exit 1 + fi + if try_install_package docker-compose-plugin; then return fi @@ -77,9 +82,21 @@ ensure_compose_available() { } ensure_prerequisites() { + if command -v docker >/dev/null 2>&1; then + ensure_compose_available + return + fi + + if [[ "$AUTO_INSTALL_DEPS" != "1" ]]; then + log "Docker is not installed or unavailable for this user." + log "Install Docker manually, add user to docker group, then rerun." + log "Or run with AUTO_INSTALL_DEPS=1 on Debian/Ubuntu to auto-install." + exit 1 + fi + if [[ ! -f /etc/debian_version ]]; then log "Auto-install is supported for Debian/Ubuntu only. Install Docker manually." - return + exit 1 fi ensure_package ca-certificates @@ -353,16 +370,16 @@ ensure_ollama_on_11434() { curl -fsSL https://ollama.com/install.sh | sh fi - if command -v systemctl >/dev/null 2>&1; then - as_root systemctl enable ollama >/dev/null 2>&1 || true - as_root systemctl restart ollama >/dev/null 2>&1 || as_root systemctl start ollama >/dev/null 2>&1 || true - fi + log "Configuring Ollama systemd service on 0.0.0.0:11434" + mkdir -p /etc/systemd/system/ollama.service.d + cat > /etc/systemd/system/ollama.service.d/override.conf <<'EOF' +[Service] +Environment="OLLAMA_HOST=0.0.0.0:11434" +EOF - if ! curl -fsS http://127.0.0.1:11434/api/tags >/dev/null 2>&1; then - log "Starting ollama serve in background" - pkill -f "ollama serve" >/dev/null 2>&1 || true - nohup ollama serve >/tmp/ollama.log 2>&1 & - fi + systemctl daemon-reload + systemctl enable ollama >/dev/null 2>&1 || true + systemctl restart ollama log "Waiting for Ollama API on 127.0.0.1:11434" local i @@ -376,7 +393,7 @@ ensure_ollama_on_11434() { if ! curl -fsS http://127.0.0.1:11434/api/tags >/dev/null 2>&1; then log "Ollama API did not become ready on 127.0.0.1:11434" - log "Check logs: sudo journalctl -u ollama -n 120 --no-pager or tail -n 120 /tmp/ollama.log" + log "Check logs: journalctl -u ollama -n 120 --no-pager" exit 1 fi diff --git a/test_ollama.sh b/test_ollama.sh index eefbd3d..64cde38 100755 --- a/test_ollama.sh +++ b/test_ollama.sh @@ -3,6 +3,19 @@ set -e +compose_exec() { + if docker compose version >/dev/null 2>&1; then + docker compose exec -T python_backend "$@" + return + fi + if command -v docker-compose >/dev/null 2>&1; then + docker-compose exec -T python_backend "$@" + return + fi + echo " ✗ Docker Compose not found" + exit 1 +} + echo "=== Testing Ollama Integration ===" echo "" @@ -29,19 +42,19 @@ fi # 3. Test Python backend configuration echo "" echo "3. Checking Python backend configuration..." -docker exec hackathon_python env | grep -E "RAG_LLM_PROVIDER=ollama" > /dev/null +compose_exec env | grep -E "RAG_LLM_PROVIDER=ollama" > /dev/null echo " ✓ RAG_LLM_PROVIDER=ollama" -docker exec hackathon_python env | grep -E "RAG_EMBEDDING_PROVIDER=ollama" > /dev/null +compose_exec env | grep -E "RAG_EMBEDDING_PROVIDER=ollama" > /dev/null echo " ✓ RAG_EMBEDDING_PROVIDER=ollama" -docker exec hackathon_python env | grep -E "OLLAMA_BASE_URL" > /dev/null +compose_exec env | grep -E "OLLAMA_BASE_URL" > /dev/null echo " ✓ OLLAMA_BASE_URL is set" # 4. Test simple generation from container echo "" echo "4. Testing Ollama generation from Docker container..." -docker exec hackathon_python curl -s http://host.docker.internal:11434/api/generate -d '{ +compose_exec curl -s http://host.docker.internal:11434/api/generate -d '{ "model": "llama3:8b", "prompt": "Hello, world!", "stream": false From fc9afe822737c1921bfda537992b5f2097a8888b Mon Sep 17 00:00:00 2001 From: Dastan Medetbekov Date: Sat, 4 Apr 2026 12:38:19 +0600 Subject: [PATCH 2/3] Ollrmrm --- .env.example | 2 +- backend_python/rag_engine.py | 2 +- scripts/deploy.sh | 97 +++++++++++++++++++++++------------- 3 files changed, 63 insertions(+), 38 deletions(-) diff --git a/.env.example b/.env.example index 685de50..060713d 100644 --- a/.env.example +++ b/.env.example @@ -15,7 +15,7 @@ OPENAI_API_KEY= RAG_OPENAI_EMBEDDING_MODEL=text-embedding-3-large # Ollama configuration (local LLM server) -OLLAMA_BASE_URL=http://localhost:11434 +OLLAMA_BASE_URL=http://host.docker.internal:11434 RAG_OLLAMA_MODEL=llama3:8b # Optional diff --git a/backend_python/rag_engine.py b/backend_python/rag_engine.py index ec4d1fe..89d3bfe 100644 --- a/backend_python/rag_engine.py +++ b/backend_python/rag_engine.py @@ -16,7 +16,7 @@ RAG_CLAUDE_MODEL = os.getenv("RAG_CLAUDE_MODEL", "claude-3-5-sonnet-20240620") RAG_GEMINI_EMBEDDING_MODEL = os.getenv("RAG_GEMINI_EMBEDDING_MODEL", "models/embedding-001") RAG_OPENAI_EMBEDDING_MODEL = os.getenv("RAG_OPENAI_EMBEDDING_MODEL", "text-embedding-3-large") -OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://172.17.0.1:11434") +OLLAMA_BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://host.docker.internal:11434") RAG_OLLAMA_MODEL = os.getenv("RAG_OLLAMA_MODEL", "llama3:8b") CHROMA_PATH = os.getenv("CHROMA_PATH", "/app/chroma_db") CHROMA_HOST = os.getenv("CHROMA_HOST", "") diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 83391f4..7a6c02d 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -18,19 +18,35 @@ echo "║ 🚀 ДЕПЛОЙ HACKATHON ПРОЕКТА С OLLAMA echo "╚═══════════════════════════════════════════════════════════╝" echo -e "${NC}" -# Проверка, что скрипт запущен не от root -if [ "$EUID" -eq 0 ]; then - echo -e "${RED}❌ Не запускайте этот скрипт от root!${NC}" - echo "Запустите от обычного пользователя с sudo правами:" - echo " curl -fsSL https://raw.githubusercontent.com/DikiePercy/hackathon/biber-core/scripts/deploy.sh | bash" - exit 1 +# Режим прав: root или sudo +if [ "$EUID" -eq 0 ]; then + SUDO="" + RUN_USER="${SUDO_USER:-root}" + RUN_GROUP="${SUDO_USER:-root}" + echo -e "${YELLOW}ℹ️ Запуск от root: поддерживается${NC}" +else + if ! command -v sudo >/dev/null 2>&1 || ! sudo -v; then + echo -e "${RED}❌ У пользователя нет sudo прав${NC}" + exit 1 + fi + SUDO="sudo" + RUN_USER="$USER" + RUN_GROUP="$(id -gn "$USER")" fi -# Проверка наличия sudo -if ! sudo -v; then - echo -e "${RED}❌ У пользователя нет sudo прав${NC}" +# Docker Compose helper +compose_cmd() { + if $SUDO docker compose version >/dev/null 2>&1; then + $SUDO docker compose "$@" + return + fi + if command -v docker-compose >/dev/null 2>&1; then + $SUDO docker-compose "$@" + return + fi + echo -e "${RED}❌ Docker Compose не найден${NC}" exit 1 -fi +} # Проверка системы echo -e "${YELLOW}📋 Проверка системы...${NC}" @@ -54,16 +70,16 @@ fi # 1. Установка зависимостей echo -e "${YELLOW}📦 Установка зависимостей...${NC}" -sudo apt update -sudo apt install -y git curl wget +$SUDO apt update +$SUDO apt install -y git curl wget # Установка Docker if ! command -v docker &> /dev/null; then echo -e "${YELLOW}🐳 Установка Docker...${NC}" - sudo apt install -y docker.io docker-compose-v2 - sudo systemctl enable docker - sudo systemctl start docker - sudo usermod -aG docker $USER + $SUDO apt install -y docker.io docker-compose-v2 + $SUDO systemctl enable docker + $SUDO systemctl start docker + $SUDO usermod -aG "$RUN_USER" echo -e "${GREEN}✅ Docker установлен${NC}" else echo -e "${GREEN}✅ Docker уже установлен${NC}" @@ -80,17 +96,17 @@ fi # 3. Настройка Ollama echo -e "${YELLOW}⚙️ Настройка Ollama...${NC}" -sudo mkdir -p /etc/systemd/system/ollama.service.d/ -sudo tee /etc/systemd/system/ollama.service.d/override.conf > /dev/null << 'EOF' +$SUDO mkdir -p /etc/systemd/system/ollama.service.d/ +$SUDO tee /etc/systemd/system/ollama.service.d/override.conf > /dev/null << 'EOF' [Service] Environment="OLLAMA_HOST=0.0.0.0:11434" Environment="OLLAMA_NUM_PARALLEL=2" Environment="OLLAMA_MAX_LOADED_MODELS=1" EOF -sudo systemctl daemon-reload -sudo systemctl enable ollama -sudo systemctl restart ollama +$SUDO systemctl daemon-reload +$SUDO systemctl enable ollama +$SUDO systemctl restart ollama # Ждём запуска Ollama sleep 3 @@ -131,7 +147,7 @@ if [ -d "$INSTALL_DIR" ]; then read -p "Удалить и клонировать заново? (y/n) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then - sudo rm -rf "$INSTALL_DIR" + $SUDO rm -rf "$INSTALL_DIR" else echo "Используем существующую директорию" cd "$INSTALL_DIR" @@ -140,19 +156,19 @@ if [ -d "$INSTALL_DIR" ]; then fi if [ ! -d "$INSTALL_DIR" ]; then - sudo git clone https://github.com/DikiePercy/hackathon.git "$INSTALL_DIR" + $SUDO git clone https://github.com/DikiePercy/hackathon.git "$INSTALL_DIR" fi cd "$INSTALL_DIR" -sudo chown -R $USER:$USER "$INSTALL_DIR" +$SUDO chown -R "$RUN_USER:$RUN_GROUP" "$INSTALL_DIR" git checkout biber-core echo -e "${GREEN}✅ Проект клонирован${NC}" # 6. Создание директорий для данных echo -e "${YELLOW}📁 Создание директорий для данных...${NC}" -sudo mkdir -p /srv/hackathon-data/{postgres,chroma,app} -sudo chown -R $USER:$USER /srv/hackathon-data +$SUDO mkdir -p /srv/hackathon-data/{postgres,chroma,app} +$SUDO chown -R "$RUN_USER:$RUN_GROUP" /srv/hackathon-data echo -e "${GREEN}✅ Директории созданы${NC}" # 7. Настройка .env @@ -169,6 +185,11 @@ if [ ! -f .env ]; then sed -i "s/RAG_LLM_PROVIDER=.*/RAG_LLM_PROVIDER=ollama/" .env sed -i "s/RAG_EMBEDDING_PROVIDER=.*/RAG_EMBEDDING_PROVIDER=ollama/" .env sed -i "s/RAG_OLLAMA_MODEL=.*/RAG_OLLAMA_MODEL=$OLLAMA_MODEL/" .env + if grep -q '^OLLAMA_BASE_URL=' .env; then + sed -i 's|^OLLAMA_BASE_URL=.*$|OLLAMA_BASE_URL=http://host.docker.internal:11434|' .env + else + echo "OLLAMA_BASE_URL=http://host.docker.internal:11434" >> .env + fi # Production настройки sed -i "s/COOKIE_SECURE=.*/COOKIE_SECURE=false/" .env # Поменяйте на true если есть SSL @@ -186,16 +207,20 @@ else echo -e "${YELLOW}⚠️ .env уже существует, не изменяем${NC}" fi +# Нормализуем OLLAMA_BASE_URL и в уже существующем .env, +# чтобы backend в Docker не ходил на localhost контейнера. +if grep -q '^OLLAMA_BASE_URL=' .env; then + sed -i 's|^OLLAMA_BASE_URL=.*$|OLLAMA_BASE_URL=http://host.docker.internal:11434|' .env +else + echo "OLLAMA_BASE_URL=http://host.docker.internal:11434" >> .env +fi + # 8. Запуск Docker контейнеров echo -e "${YELLOW}🐳 Сборка и запуск Docker контейнеров...${NC}" echo "Это займёт несколько минут..." -# Из-за того что мы добавили пользователя в группу docker, -# нужно перелогиниться. Используем newgrp для этой сессии. -newgrp docker << EOFGRP -docker-compose build -docker-compose up -d -EOFGRP +compose_cmd build +compose_cmd up -d echo -e "${GREEN}✅ Контейнеры запущены${NC}" @@ -207,11 +232,11 @@ sleep 30 echo -e "${YELLOW}🔍 Проверка работы...${NC}" # Проверка контейнеров -if docker-compose ps | grep -q "Up"; then +if compose_cmd ps | grep -q "Up"; then echo -e "${GREEN}✅ Контейнеры запущены${NC}" else echo -e "${RED}❌ Не все контейнеры запущены${NC}" - docker-compose ps + compose_cmd ps exit 1 fi @@ -221,7 +246,7 @@ if curl -s http://localhost:8000/health | grep -q "ok"; then curl -s http://localhost:8000/health else echo -e "${RED}❌ Backend не отвечает${NC}" - echo "Проверьте логи: docker-compose logs python_backend" + echo "Проверьте логи: docker compose logs python_backend" exit 1 fi @@ -241,7 +266,7 @@ echo "" echo "1. Измените пароль администратора:" echo " cd $INSTALL_DIR" echo " nano .env # Найдите ADMIN_PASSWORD и измените" -echo " docker-compose restart python_backend" +echo " docker compose restart python_backend" echo "" echo "2. Проверьте работу:" echo " curl http://localhost:8000/health" From 40166e0bfd2212f1d54add1c9a3c0e607d8f7c6f Mon Sep 17 00:00:00 2001 From: sherlocked-inn Date: Sat, 4 Apr 2026 12:45:33 +0600 Subject: [PATCH 3/3] translate added --- front/about.html | 3 +++ front/admin.html | 2 +- front/chat.html | 2 +- front/contacts.html | 2 +- front/i18n.js | 48 +++++++++++++++++++++--------------------- front/index.html | 8 +++---- front/list.html | 2 +- front/suggestions.html | 2 +- 8 files changed, 36 insertions(+), 33 deletions(-) diff --git a/front/about.html b/front/about.html index 5584a74..ac6d736 100644 --- a/front/about.html +++ b/front/about.html @@ -64,6 +64,9 @@

Ресурсы

+
+

© 2026 Архив Памяти. Открытая энциклопедия жертв политических репрессий.

+
diff --git a/front/admin.html b/front/admin.html index f8b0c27..cb85a6e 100644 --- a/front/admin.html +++ b/front/admin.html @@ -140,7 +140,7 @@

Модерация предложений
-

© 2024 Архив Памяти

+

© 2026 Архив Памяти

diff --git a/front/chat.html b/front/chat.html index cda1323..5d8e914 100644 --- a/front/chat.html +++ b/front/chat.html @@ -79,7 +79,7 @@

Статистика

-

© 2024 Архив Памяти

+

© 2026 Архив Памяти

diff --git a/front/contacts.html b/front/contacts.html index fb6594f..29e7086 100644 --- a/front/contacts.html +++ b/front/contacts.html @@ -36,7 +36,7 @@

Контакты

-

© 2024 Архив Памяти

+

© 2026 Архив Памяти

diff --git a/front/i18n.js b/front/i18n.js index 0e5103a..f05eda3 100644 --- a/front/i18n.js +++ b/front/i18n.js @@ -10,14 +10,14 @@ const translations = { site_title: "АРХИВ ПАМЯТИ", search_placeholder: "Поиск по имени, фамилии, году...", search_btn: "Найти", - hero_find: "Найти человека", + hero_find: "Спросить у ИИ-ассистента", hero_find_desc: "Введите имя или фамилию в строку поиска, чтобы найти информацию о жертве репрессий.", hero_add: "Добавить сведения", hero_add_desc: "Помогите дополнить архив — загрузите документы и воспоминания о ваших родственниках.", hero_help: "Помочь проекту", hero_help_desc: "Станьте волонтёром или поддержите проект. Каждый вклад помогает сохранить память.", - footer_text: "© 2024 Архив Памяти. Открытая энциклопедия жертв политических репрессий.", - footer_short: "© 2024 Архив Памяти", + footer_text: "© 2026 Архив Памяти. Открытая энциклопедия жертв политических репрессий.", + footer_short: "© 2026 Архив Памяти", btn_register: "Регистрация", btn_login: "Войти", btn_logout: "Выйти", @@ -158,11 +158,11 @@ const translations = { admin_no_suggestions: "Предложений нет", common_approve: "Одобрить", common_reject: "Отклонить", - about_partner_1: "Государственный архив РФ", + about_partner_1: "Государственный архив КР", about_partner_2: "Мемориал", - about_partner_3: "Сахаровский центр", + about_partner_3: "КТМУ", about_partner_4: "РГАСПИ", - about_partner_5: "Яд Вашем", + about_partner_5: "БГУ", about_partner_6: "Национальный архив РК", about_stats_records: "Записей в базе", about_stats_documents: "Документов в базе", @@ -199,14 +199,14 @@ const translations = { site_title: "ЭС КУРЖУНУ", search_placeholder: "Аты-жөнү, жыл боюнча издөө...", search_btn: "Издөө", - hero_find: "Адамды табуу", + hero_find: "ЖИке суроо", hero_find_desc: "Репрессия курмандыгы жөнүндө маалымат табуу үчүн издөө тилкесине аты-жөнүн киргизиңиз.", hero_add: "Маалымат кошуу", hero_add_desc: "Архивди толуктоого жардам бериңиз — туугандарыңыз тууралуу документтерди жана эскерүүлөрдү жүктөңүз.", hero_help: "Долбоорго жардам", hero_help_desc: "Ыктыярчы болуңуз же долбоорду колдоңуз. Ар бир салым эс-тутумду сактоого жардам берет.", - footer_text: "© 2024 Эс Куржуну. Саясий репрессия курмандыктарынын ачык энциклопедиясы.", - footer_short: "© 2024 Эс Куржуну", + footer_text: "© 2026 Эс Куржуну. Саясий репрессия курмандыктарынын ачык энциклопедиясы.", + footer_short: "© 2026 Эс Куржуну", btn_register: "Катталуу", btn_login: "Кирүү", btn_logout: "Чыгуу", @@ -347,11 +347,11 @@ const translations = { admin_no_suggestions: "Сунуштар жок", common_approve: "Бекитүү", common_reject: "Четке кагуу", - about_partner_1: "РФ мамлекеттик архиви", + about_partner_1: "КР мамлекеттик архиви", about_partner_2: "Мемориал", - about_partner_3: "Сахаров борбору", + about_partner_3: "КТМУ", about_partner_4: "РГАСПИ", - about_partner_5: "Яд Вашем", + about_partner_5: "БГУ", about_partner_6: "КР Улуттук архиви", about_stats_records: "Базадагы жазуулар", about_stats_documents: "Базадагы документтер", @@ -388,14 +388,14 @@ const translations = { site_title: "MEMORY ARCHIVE", search_placeholder: "Search by name, surname, year...", search_btn: "Search", - hero_find: "Find a Person", + hero_find: "Ask AI-assistant", hero_find_desc: "Enter a name or surname in the search bar to find information about victims of repression.", hero_add: "Add Information", hero_add_desc: "Help expand the archive by uploading documents and memories about your relatives.", hero_help: "Support the Project", hero_help_desc: "Become a volunteer or support the project. Every contribution helps preserve memory.", - footer_text: "© 2024 Memory Archive. Open encyclopedia of political repression victims.", - footer_short: "© 2024 Memory Archive", + footer_text: "© 2026 Memory Archive. Open encyclopedia of political repression victims.", + footer_short: "© 2026 Memory Archive", btn_register: "Register", btn_login: "Login", btn_logout: "Logout", @@ -536,11 +536,11 @@ const translations = { admin_no_suggestions: "No suggestions", common_approve: "Approve", common_reject: "Reject", - about_partner_1: "State Archive of the Russian Federation", + about_partner_1: "State Archive of the Kyrgyz Republic", about_partner_2: "Memorial", - about_partner_3: "Sakharov Center", + about_partner_3: "KTMU", about_partner_4: "RGASPI", - about_partner_5: "Yad Vashem", + about_partner_5: "BSU", about_partner_6: "National Archive of the Kyrgyz Republic", about_stats_records: "Records in database", about_stats_documents: "Documents in database", @@ -577,14 +577,14 @@ const translations = { site_title: "HAFIZA ARŞİVİ", search_placeholder: "Ad, soyad, yıl ile ara...", search_btn: "Ara", - hero_find: "Kişi Bul", + hero_find: "Yapay zekaya sorun", hero_find_desc: "Baskı mağdurları hakkında bilgi bulmak için arama çubuğuna ad veya soyad girin.", hero_add: "Bilgi Ekle", hero_add_desc: "Arşivi büyütmeye yardımcı olun; yakınlarınızla ilgili belgeleri ve anıları yükleyin.", hero_help: "Projeyi Destekle", hero_help_desc: "Gönüllü olun veya projeyi destekleyin. Her katkı hafızayı korumaya yardımcı olur.", - footer_text: "© 2024 Hafıza Arşivi. Siyasi baskı mağdurlarının açık ansiklopedisi.", - footer_short: "© 2024 Hafıza Arşivi", + footer_text: "© 2026 Hafıza Arşivi. Siyasi baskı mağdurlarının açık ansiklopedisi.", + footer_short: "© 2026 Hafıza Arşivi", btn_register: "Kayıt Ol", btn_login: "Giriş Yap", btn_logout: "Çıkış Yap", @@ -725,11 +725,11 @@ const translations = { admin_no_suggestions: "Öneri yok", common_approve: "Onayla", common_reject: "Reddet", - about_partner_1: "Rusya Federasyonu Devlet Arşivi", + about_partner_1: "Kırgızistan Cumhuriyeti Devlet Arşivleri", about_partner_2: "Memorial", - about_partner_3: "Sakharov Merkezi", + about_partner_3: "KTMÜ", about_partner_4: "RGASPI", - about_partner_5: "Yad Vashem", + about_partner_5: "Bişkek Devlet Üniversitesi", about_partner_6: "Kırgız Cumhuriyeti Ulusal Arşivi", about_stats_records: "Veritabanındaki kayıtlar", about_stats_documents: "Veritabanındaki belgeler", diff --git a/front/index.html b/front/index.html index a4fd869..bcdaa6e 100644 --- a/front/index.html +++ b/front/index.html @@ -33,9 +33,9 @@
-
-
🔍
-

Найти человека

+
+
🤖
+

Спросить у ИИ-ассистента

Введите имя или фамилию в строку поиска, чтобы найти информацию о жертве репрессий.

@@ -107,7 +107,7 @@

Статистика

-

© 2024 Архив Памяти. Открытая энциклопедия жертв политических репрессий.

+

© 2026 Архив Памяти. Открытая энциклопедия жертв политических репрессий.

diff --git a/front/list.html b/front/list.html index aad6be8..59819b6 100644 --- a/front/list.html +++ b/front/list.html @@ -85,7 +85,7 @@

Статистика

-

© 2024 Архив Памяти. Открытая энциклопедия жертв политических репрессий.

+

© 2026 Архив Памяти. Открытая энциклопедия жертв политических репрессий.

diff --git a/front/suggestions.html b/front/suggestions.html index 206c675..4d63100 100644 --- a/front/suggestions.html +++ b/front/suggestions.html @@ -83,7 +83,7 @@

Мои предложения

-

© 2024 Архив Памяти

+

© 2026 Архив Памяти