diff --git a/DOCS/ARCHITECTURE.md b/DOCS/ARCHITECTURE.md index 4e9008b..d91ab97 100644 --- a/DOCS/ARCHITECTURE.md +++ b/DOCS/ARCHITECTURE.md @@ -1,6 +1,6 @@ # Архитектура app-autotest — полный документ -v1.0.64, 27.07.2026 +v1.0.65, 27.07.2026 --- @@ -353,6 +353,7 @@ def detect_endpoint(token): | 20 | v1.0.63 | Дубли и чужие инстансы | Принадлежность определялась не по namespace | `autotest-` prefix + уникализация `displayName` при CREATE | | 21 | v1.0.64 | Версия не показывалась в шапке | `load_config()` затирал VERSION | `config["VERSION"] = current_app.config["VERSION"]` | | 22 | v1.0.64 | displayName был editable value, а не placeholder | CREATE подставлял имя в value | Placeholder `autotest-...`, значение вводит пользователь | +| 23 | v1.0.65 | `creating` из-за недочитанной страницы | `get_instances()` доверял `total` и мог не перейти на следующую страницу | Остановка по `len(batch) < pageSize` | ### ✅ Закрыто в v1.0.56 diff --git a/DOCS/HISTORY.md b/DOCS/HISTORY.md index b0df14a..b1f5ba2 100644 --- a/DOCS/HISTORY.md +++ b/DOCS/HISTORY.md @@ -1,5 +1,15 @@ # История разработки app-autotest +## v1.0.65 (27.07.2026) — cloud list pagination fix + +### Что изменилось +- В `site/operations/get_instances.py` пагинация списка инстансов теперь останавливается по размеру страницы, а не по `total`. +- Это убирает ситуацию, когда инстанс уже создан в облаке, но приложение не дочитало следующую страницу и показывает `creating`. +- В `DOCS/ARCHITECTURE.md` и `site/app.py` синхронизирована версия `1.0.65`. + +### Что это чинит +- Ложный `creating` для уже существующего инстанса, если он попал не на первую страницу `/instances`. + ## v1.0.64 (27.07.2026) — header version + editable displayName placeholder ### Что изменилось diff --git a/site/app.py b/site/app.py index 39d7d74..32ca3ff 100644 --- a/site/app.py +++ b/site/app.py @@ -6,7 +6,7 @@ from routes.main import bp as main_bp from routes.api import bp as api_bp from routes.api_test import bp as api_test_bp -VERSION = "1.0.64" +VERSION = "1.0.65" app = Flask(__name__, template_folder="templates", static_folder="static") app.config["NUBES_API_ENDPOINT"] = os.getenv("NUBES_API_ENDPOINT", "https://lk-api-gateway-dev.ngcloud.ru/api/v1/svc") diff --git a/site/operations/get_instances.py b/site/operations/get_instances.py index ad3f70f..4837ab9 100644 --- a/site/operations/get_instances.py +++ b/site/operations/get_instances.py @@ -4,10 +4,13 @@ from api.http_client import HttpClient def get_instances(client): results = [] page = 1 + page_size = 200 while True: - data = client.get("/instances", params={"pageSize": 200, "page": page}) - results.extend(data.get("results", [])) - if len(results) >= data.get("total", 0): + data = client.get("/instances", params={"pageSize": page_size, "page": page}) + batch = data.get("results", []) or [] + results.extend(batch) + # Не доверяем total: если страница вернула меньше pageSize, значит данные закончились. + if len(batch) < page_size: break page += 1 return results