Нормализовать переводы строк в LF
Решение по TD-STYLE-ANALYZERS: LF — инструменты проекта (Python/Node) пишут LF, CRLF-.sh не работают на Linux CI (sh scripts/ci.sh), большинство файлов уже были LF. Добавлен .gitattributes (* text=auto eol=lf, бинарные исключения), .editorconfig переведён на lf, 1029 файлов конвертированы, git add --renormalize. Из индекса убраны закравшиеся archive/**/__pycache__/*.pyc.
This commit is contained in:
@@ -1,57 +1,57 @@
|
||||
"""Временный boot-тест №2: шифрование, FTS, demo, check-message, recompute."""
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
# devtests/ лежит внутри backend/ — кладём в path сам backend
|
||||
tmp = tempfile.mkdtemp(prefix="leadradar_boot2_")
|
||||
os.environ["LEADRADAR_DATA"] = tmp
|
||||
os.environ["LEADRADAR_DEMO"] = "1"
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from fastapi.testclient import TestClient # noqa: E402
|
||||
|
||||
from app.main import app # noqa: E402
|
||||
from app.services import rates as R # noqa: E402
|
||||
|
||||
|
||||
def seed_lead(client):
|
||||
# ручной лид через demo-эндпоинт (не требует ИИ/телеграма)
|
||||
r = client.post("/api/demo/simulate-lead")
|
||||
assert r.status_code == 200, r.text
|
||||
return r.json()
|
||||
|
||||
|
||||
with TestClient(app) as client:
|
||||
assert client.get("/api/health").status_code == 200
|
||||
assert client.post("/api/auth/login", json={"login": "admin", "password": "admin"}).status_code == 200
|
||||
|
||||
# шифрование настроек aiConfigs (класс провайдера)
|
||||
s = client.patch("/api/settings", json={"aiConfigs": {"deepseek": {"apiKey": "sk-abcdefgh1234"}}})
|
||||
assert s.status_code == 200, s.text
|
||||
pub = client.get("/api/settings").json()
|
||||
assert pub["aiConfigs"]["deepseek"]["keySet"] is True, pub["aiConfigs"]
|
||||
|
||||
# FTS rebuild
|
||||
f = client.post("/api/admin/fts/rebuild")
|
||||
assert f.status_code == 200 and f.json()["ready"] is True, f.text
|
||||
|
||||
# демо-лид + поиск
|
||||
lead = seed_lead(client)
|
||||
assert lead.get("id"), lead
|
||||
q = client.get("/api/search", params={"q": "Python"}).json()
|
||||
assert isinstance(q["leads"], list)
|
||||
|
||||
# check-message (этап 1: стоп-фразы без ИИ)
|
||||
cm = client.post("/api/admin/check-message", json={"text": "Ищу работу на неделю, вот моё резюме и портфолио"})
|
||||
assert cm.status_code == 200 and cm.json()["passed"] is False and cm.json()["stage1"]["pass"] is False, cm.text
|
||||
|
||||
# пересчёт конверсий при смене валюты (архивные не трогаем)
|
||||
R.save_rates({"RUB": 1.0, "USD": 100.0}, "mock")
|
||||
client.patch("/api/settings", json={"targetCurrency": "RUB", "conversionOn": True})
|
||||
refreshed = client.get("/api/settings").json()
|
||||
assert refreshed["targetCurrency"] == "RUB"
|
||||
|
||||
tick = client.post("/api/admin/tick")
|
||||
assert tick.status_code == 200
|
||||
print("BOOT2 OK")
|
||||
"""Временный boot-тест №2: шифрование, FTS, demo, check-message, recompute."""
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
# devtests/ лежит внутри backend/ — кладём в path сам backend
|
||||
tmp = tempfile.mkdtemp(prefix="leadradar_boot2_")
|
||||
os.environ["LEADRADAR_DATA"] = tmp
|
||||
os.environ["LEADRADAR_DEMO"] = "1"
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from fastapi.testclient import TestClient # noqa: E402
|
||||
|
||||
from app.main import app # noqa: E402
|
||||
from app.services import rates as R # noqa: E402
|
||||
|
||||
|
||||
def seed_lead(client):
|
||||
# ручной лид через demo-эндпоинт (не требует ИИ/телеграма)
|
||||
r = client.post("/api/demo/simulate-lead")
|
||||
assert r.status_code == 200, r.text
|
||||
return r.json()
|
||||
|
||||
|
||||
with TestClient(app) as client:
|
||||
assert client.get("/api/health").status_code == 200
|
||||
assert client.post("/api/auth/login", json={"login": "admin", "password": "admin"}).status_code == 200
|
||||
|
||||
# шифрование настроек aiConfigs (класс провайдера)
|
||||
s = client.patch("/api/settings", json={"aiConfigs": {"deepseek": {"apiKey": "sk-abcdefgh1234"}}})
|
||||
assert s.status_code == 200, s.text
|
||||
pub = client.get("/api/settings").json()
|
||||
assert pub["aiConfigs"]["deepseek"]["keySet"] is True, pub["aiConfigs"]
|
||||
|
||||
# FTS rebuild
|
||||
f = client.post("/api/admin/fts/rebuild")
|
||||
assert f.status_code == 200 and f.json()["ready"] is True, f.text
|
||||
|
||||
# демо-лид + поиск
|
||||
lead = seed_lead(client)
|
||||
assert lead.get("id"), lead
|
||||
q = client.get("/api/search", params={"q": "Python"}).json()
|
||||
assert isinstance(q["leads"], list)
|
||||
|
||||
# check-message (этап 1: стоп-фразы без ИИ)
|
||||
cm = client.post("/api/admin/check-message", json={"text": "Ищу работу на неделю, вот моё резюме и портфолио"})
|
||||
assert cm.status_code == 200 and cm.json()["passed"] is False and cm.json()["stage1"]["pass"] is False, cm.text
|
||||
|
||||
# пересчёт конверсий при смене валюты (архивные не трогаем)
|
||||
R.save_rates({"RUB": 1.0, "USD": 100.0}, "mock")
|
||||
client.patch("/api/settings", json={"targetCurrency": "RUB", "conversionOn": True})
|
||||
refreshed = client.get("/api/settings").json()
|
||||
assert refreshed["targetCurrency"] == "RUB"
|
||||
|
||||
tick = client.post("/api/admin/tick")
|
||||
assert tick.status_code == 200
|
||||
print("BOOT2 OK")
|
||||
|
||||
Reference in New Issue
Block a user