logika: pula konta (PRE-29) także w osi czasu, prompcie i horoskopie
/chart/report przekazywał pulę do warstwy danych, ale /chart/timeline (interpret=true) i /chart/prompt — a przez niego /chart/horoscope i /chart/horoscope/stream — budowały DataClient() bez puli, czyli szukały w całym udziale. TimelineRequest miał pole tenant i je gubił; PromptRequest nie miał go wcale. PromptRequest dostaje tenant (HoroscopeRequest dziedziczy), a wszystkie trzy miejsca budują DataClient(tenant=req.tenant). Testy wołają trasy przez TestClient z prawdziwym silnikiem i szpiegiem w miejscu DataClient: pula ma dotrzeć do każdego klienta, który naprawdę pytał bazę, a bez puli — zostać pusta (pełna aplikacja). Na kodzie sprzed poprawki pada dokładnie 7 tras, które gubiły pulę; report przechodzi. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -294,6 +294,10 @@ class PromptRequest(BaseModel):
|
||||
from_date: str | None = None
|
||||
to_date: str | None = None
|
||||
techniques: list[str] | None = None
|
||||
# Pula konta (PRE-29) — puste = cały udział. Warstwa logiczna niczego tu nie
|
||||
# rozstrzyga, tylko przenosi: kto do jakiej puli ma prawo, wie warstwa
|
||||
# prezentacji, bo to ona zna konta. HoroscopeRequest dziedziczy to pole.
|
||||
tenant: str = ""
|
||||
|
||||
|
||||
@app.post("/chart/prompt")
|
||||
@@ -336,7 +340,7 @@ def chart_prompt(req: PromptRequest) -> dict:
|
||||
report: dict = {"objects": []}
|
||||
try:
|
||||
report = build_report(
|
||||
chart["positions"], DataClient(),
|
||||
chart["positions"], DataClient(tenant=req.tenant),
|
||||
aspects=chart.get("aspects"), parallels=chart.get("parallels"),
|
||||
per_object_limit=req.limit,
|
||||
)
|
||||
@@ -358,7 +362,7 @@ def chart_prompt(req: PromptRequest) -> dict:
|
||||
events = build_timeline(engine, moment, points, req.from_date, req.to_date,
|
||||
req.techniques)
|
||||
try:
|
||||
interpret_events(events, DataClient())
|
||||
interpret_events(events, DataClient(tenant=req.tenant))
|
||||
except httpx.HTTPError as e:
|
||||
data_error = f"Warstwa danych niedostępna: {e}" # oś czasu zostaje
|
||||
out = build_period_prompt(chart, events, req.from_date, req.to_date,
|
||||
@@ -627,7 +631,7 @@ def chart_timeline(req: TimelineRequest) -> dict:
|
||||
if req.interpret:
|
||||
from app.significators import interpret_events
|
||||
try:
|
||||
interpret_events(events, DataClient())
|
||||
interpret_events(events, DataClient(tenant=req.tenant))
|
||||
except httpx.HTTPError as e:
|
||||
out["data_error"] = f"Warstwa danych niedostępna: {e}"
|
||||
out.update(count=len(events), events=events)
|
||||
|
||||
Reference in New Issue
Block a user