reviewer(ET): auto-commit from reviewer run_id=242
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
type: review
|
||||
work_item_id: ET-013
|
||||
verdict: APPROVED
|
||||
version: 17
|
||||
version: 18
|
||||
created_at: 2026-06-04
|
||||
updated_at: 2026-06-06
|
||||
updated_at: 2026-06-07
|
||||
authors:
|
||||
- "agent:reviewer"
|
||||
related:
|
||||
@@ -14,17 +14,20 @@ related:
|
||||
- "ET-013:test-report"
|
||||
---
|
||||
|
||||
# Review ET-013 — Перепады высот на z9-z11 (re-run #17)
|
||||
# Review ET-013 — Перепады высот на z9-z11 (re-run #18)
|
||||
|
||||
> **Re-run #17 (независимая сверка.)** Перечитаны TRZ (`02-trz.md`),
|
||||
> **Re-run #18 (независимая сверка.)** Перечитаны TRZ (`02-trz.md`),
|
||||
> AC (`03-acceptance-criteria.md`), ADR-017, CLAUDE.md. Построчно сверена
|
||||
> реализация в рабочем дереве с REQ-F-01..F-19 и решениями ADR-017.
|
||||
> реализация в рабочем дереве с REQ-F-01..F-21 и решениями ADR-017.
|
||||
> Unit-тесты исполнены локально.
|
||||
>
|
||||
> Состояние ветки: фича ET-013 уже смержена в `main` и задеплоена.
|
||||
> `git diff main...HEAD` затрагивает только docs (`12-review.md`,
|
||||
> `13-test-report.md`) — кодовая часть в рабочем дереве идентична
|
||||
> merged/deployed-состоянию. Нового кода для ревью нет; повторно
|
||||
> подтверждаю корректность merged-кода непосредственным чтением файлов.
|
||||
> merged/deployed-состоянию (commits `5be81f9` feat + `099669d`
|
||||
> whitelist-fix). Нового кода для ревью нет; повторно подтверждаю
|
||||
> корректность merged-кода непосредственным чтением файлов и прогоном
|
||||
> unit-тестов.
|
||||
|
||||
## TL;DR
|
||||
|
||||
@@ -39,7 +42,7 @@ related:
|
||||
|
||||
| REQ | Требование | Статус |
|
||||
|---|---|---|
|
||||
| F-01/11 | `updateHillshadeAvailability`: `zoom < 9` (app.js:3425) | ✅ старый `< 10` отсутствует |
|
||||
| F-01/11 | `updateHillshadeAvailability`: `zoom < 9` (app.js:3425) | ✅ старый `< 10` отсутствует в теле функции |
|
||||
| F-02 | hillshade minzoom=9, paint=HILLSHADE_PAINT (app.js:2825) | ✅ |
|
||||
| F-03 | TRI minzoom=5/maxzoom=15, paint=TRI_PAINT (app.js:2826) | ✅ minzoom не тронут |
|
||||
| F-04 | `applyTerrainLayer(opacityOrPaint)` (app.js:3371-3414) | ✅ number→legacy(linear) / object as-is, `paint: paint` в addLayer |
|
||||
@@ -47,9 +50,9 @@ related:
|
||||
| F-08/09 | TRI_PAINT opacity z5:0.55,z7:0.65,**z8:0.70 (регрессия)**,z9:0.80,пик z10-z11:0.85,z12:0.75,z15:0.70; `nearest` (app.js:2755-2768) | ✅ stops точно |
|
||||
| F-10 | hint «Зум 9+» (index.html:60) | ✅ |
|
||||
| F-12 | контракт `onTerrainCheckbox`, persistence `localStorage`, `.active` | ✅ без изменений сигнатуры/логики |
|
||||
| F-13/14 | unit-тесты (Вариант B, Python-парсер) + регрессии | ✅ 17 тестов, **17/17 PASS локально (0.03 s)** |
|
||||
| F-13/14 | unit-тесты (Вариант B, Python-парсер) + регрессии | ✅ **17/17 PASS локально (0.03 s)** |
|
||||
| F-15 | integration smoke z9 (`test_terrain_z9_tiles.py`) с `skipif` | ✅ присутствует, whitelist/404-регрессии работают без данных |
|
||||
| F-18 | API контракт `/terrain/{layer}/{z}/{x}/{y}.png`, `Cache-Control: public, max-age=31536000, immutable` (main.py:1252-1264) | ✅ сохранён |
|
||||
| F-18 | API контракт `/terrain/{layer}/{z}/{x}/{y}.png`, `Cache-Control: public, max-age=31536000, immutable` (main.py:1252-1264) | ✅ контракт сохранён |
|
||||
| F-19 | style.json/style-dark.json/app.css/config не тронуты | ✅ |
|
||||
|
||||
## Соответствие ADR-017
|
||||
@@ -68,13 +71,13 @@ related:
|
||||
|
||||
| # | Severity | Файл | Описание | Статус |
|
||||
|---|---|---|---|---|
|
||||
| N-1 | P3 (info) | `src/api/main.py:1252` | TRZ §2 декларировал backend «без изменений», но в whitelist добавлен `tri` (`("hypso","hillshade","tri")`). Это необходимый багфикс: в dev-режиме (FastAPI без nginx) запросы `/terrain/tri/...` иначе возвращали бы 404. Контракт endpoint'а (URL-шаблон, коды ответа, `Cache-Control: immutable`, новых query/headers нет) не нарушен → REQ-F-18 соблюдён. Покрыто integration-регрессией `test_known_terrain_layer_accepted_by_whitelist`. Не дефект. | Принято. |
|
||||
| N-1 | P3 (info) | `src/api/main.py:1252` | TRZ §2 декларировал backend «без изменений», но в whitelist добавлен `tri` (`("hypso","hillshade","tri")`, commit `099669d`). Это необходимый багфикс: в dev-режиме (FastAPI без nginx) запросы `/terrain/tri/...` иначе возвращали бы 404 «Unknown layer». Контракт endpoint'а (URL-шаблон, коды ответа, `Cache-Control: immutable`, отсутствие новых query/headers) не нарушен → REQ-F-18 соблюдён. Покрыто integration-регрессией `test_known_terrain_layer_accepted_by_whitelist` (parametrize по hypso/hillshade/tri) + парным `test_unknown_terrain_layer_returns_404`. Документировано в docstring endpoint'а. Не дефект. | Принято. |
|
||||
|
||||
## Качество кода
|
||||
|
||||
- `applyTerrainLayer` расширен обратно-совместимо; ветвление
|
||||
`typeof opacityOrPaint === 'number'` собирает legacy-paint
|
||||
(`raster-opacity` + `linear`) либо пробрасывает object as-is. JSDoc на месте.
|
||||
(`raster-opacity` + `linear`) либо пробрасывает object as-is. JSDoc/коммент на месте.
|
||||
- `HILLSHADE_PAINT`/`TRI_PAINT` вынесены рядом с `TERRAIN_BASE_URL` с
|
||||
пояснением логики stops; конфигурируемость через env/config справедливо
|
||||
отвергнута (калибровка живёт в коде, ADR-017 M-A).
|
||||
@@ -82,17 +85,16 @@ related:
|
||||
|
||||
## Качество тестов
|
||||
|
||||
- **Unit (17):** opacity/contrast stops, монотонность, `nearest`,
|
||||
- **Unit (17):** opacity/contrast stops + монотонность, `nearest`,
|
||||
регрессия z8=0.70, пик z9-z11≥0.80, обратная совместимость
|
||||
`applyTerrainLayer`, порог `zoom < 9`, текст hint, число call-site,
|
||||
привязка paint-константы и minzoom к каждому слою. **17/17 PASS локально.**
|
||||
`applyTerrainLayer` (number→linear legacy / object as-is), порог
|
||||
`zoom < 9` (+ отсутствие `zoom < 10`), текст hint «Зум 9+», число
|
||||
call-site, привязка paint-константы и minzoom к каждому слою.
|
||||
Парсер устойчив к пробелам/переносам. **17/17 PASS локально.**
|
||||
- **Integration:** TestClient против `src.api.main:app`; тайло-зависимые
|
||||
кейсы параметризованы по слоям (hillshade/tri) и зумам (9/10/11),
|
||||
`skipped` при отсутствии PH-6 данных; whitelist/404/Cache-Control —
|
||||
регрессии работают всегда. Сбой коллекции в окружении ревью вызван
|
||||
отсутствием `shapely` (зависимость API) — это инфра-вопрос окружения,
|
||||
не дефект тестов/кода; в CI с установленными зависимостями импорт
|
||||
проходит.
|
||||
регрессии работают всегда (без локальных PNG). Адекватно.
|
||||
|
||||
## Замечание по статусу тестирования (вне content-review)
|
||||
|
||||
@@ -106,4 +108,4 @@ Test Report фиксирует blocker на AC-19/REQ-F-20 §1: на test-сре
|
||||
## Вердикт
|
||||
|
||||
Нет P0/P1. Реализация полностью соответствует TRZ и ADR-017, тесты
|
||||
адекватны и зелёные. **APPROVED.**
|
||||
адекватны и зелёные (17/17). **APPROVED.**
|
||||
|
||||
Reference in New Issue
Block a user