Files
contracts-flask/History/2026-08-26-full-replace-fix.md

1.7 KiB
Raw Permalink Blame History

full_replace: фикс дублирования строк спецификации (v2.0.16)

Проблема

mode="full_replace" (LLM возвращает полную новую редакцию — все ADD) применялся поверх существующей spec_current без очистки.

reset(contract_id) срабатывает только один раз на старте пайплайна, а full_replace происходит ПОСЛЕ — строки новой редакции плюсовались к старым → дубли в spec_current.

Фикс

  1. site/db/spec_events.py — добавлена clear_current(contract_id): очищает ТОЛЬКО spec_current (история spec_events сохраняется).

  2. site/services/process.py — перед apply_ops():

    if mode == "full_replace":
        spec_events.clear_current(contract_id)
    

Почему не reset()

reset() чистит и spec_events, и spec_current — потеряли бы историю операций текущей редакции. Для full_replace нужна только очистка текущего состояния, журнал ADDs должен остаться.

Сопутствующее

  • Скорректировано архитектурное описание → /home/naeel/nubes/contracts/DOC/architecture-contracts-flask.md. Исправлена неточность: ZIP раскрывается на клиенте (expandZipClientwindow.listZipFiles), а не серверным /unzip-upload (legacy).
  • Версия: 2.0.15 → 2.0.16.