Add personal notes, DeepSearch history, backup offload, and gateway auth throttling
DevPlace CI / test (push) Failing after 28m20s

Also streamline the top navigation: drop the Tools dropdown, make Quizzes
and Battles icon-only entries, and remove the Workspace, Containers and
Editor entry points from the project detail page.
This commit is contained in:
2026-09-12 20:32:31 +02:00
parent c4f7d01b2d
commit cae139ead9
158 changed files with 6156 additions and 377 deletions
+84
View File
@@ -190,3 +190,87 @@ def test_cli_reset_quota_all(local_db):
_seed_ledger("user", user_id, 0.5, n=1)
cmd_devii_reset_quota(SimpleNamespace(username=None, guests=False, all=True))
assert get_table(LEDGER).count() == 0
def _quota_warnings(uid):
from devplacepy.services.devii.service import QUOTA_WARNING_NOTIFICATION_TYPE
return list(
get_table("notifications").find(
user_uid=uid, type=QUOTA_WARNING_NOTIFICATION_TYPE
)
)
def test_quota_warning_fires_once_past_80_percent(local_db):
svc = _ensure_devii()
set_setting("devii_user_daily_usd", "1.0")
try:
uid, _ = _make_user_devii_quota()
_seed_ledger("user", uid, 0.85)
svc.maybe_warn_quota_threshold("user", uid, False)
assert len(_quota_warnings(uid)) == 1
finally:
set_setting("devii_user_daily_usd", "1.0")
def test_quota_warning_not_refired_within_same_window(local_db):
svc = _ensure_devii()
set_setting("devii_user_daily_usd", "1.0")
try:
uid, _ = _make_user_devii_quota()
_seed_ledger("user", uid, 0.85)
svc.maybe_warn_quota_threshold("user", uid, False)
_seed_ledger("user", uid, 0.05)
svc.maybe_warn_quota_threshold("user", uid, False)
assert len(_quota_warnings(uid)) == 1
finally:
set_setting("devii_user_daily_usd", "1.0")
def test_quota_warning_skips_below_threshold(local_db):
svc = _ensure_devii()
set_setting("devii_user_daily_usd", "1.0")
try:
uid, _ = _make_user_devii_quota()
_seed_ledger("user", uid, 0.5)
svc.maybe_warn_quota_threshold("user", uid, False)
assert _quota_warnings(uid) == []
finally:
set_setting("devii_user_daily_usd", "1.0")
def test_quota_warning_skips_admin(local_db):
svc = _ensure_devii()
set_setting("devii_admin_daily_usd", "1.0")
try:
uid, _ = _make_user_devii_quota(role="Admin")
_seed_ledger("user", uid, 0.95)
svc.maybe_warn_quota_threshold("user", uid, True)
assert _quota_warnings(uid) == []
finally:
set_setting("devii_admin_daily_usd", "0.0")
def test_quota_warning_skips_unlimited_cap(local_db):
svc = _ensure_devii()
set_setting("devii_user_daily_usd", "0")
try:
uid, _ = _make_user_devii_quota()
_seed_ledger("user", uid, 50.0)
svc.maybe_warn_quota_threshold("user", uid, False)
assert _quota_warnings(uid) == []
finally:
set_setting("devii_user_daily_usd", "1.0")
def test_quota_warning_skips_guests(local_db):
svc = _ensure_devii()
set_setting("devii_guest_daily_usd", "0.10")
try:
guest_id = f"guest-{generate_uid()[:8]}"
_seed_ledger("guest", guest_id, 0.09)
svc.maybe_warn_quota_threshold("guest", guest_id, False)
assert get_table("notifications").find_one(user_uid=guest_id) is None
finally:
set_setting("devii_guest_daily_usd", "0.05")