Andrey Epifancev f0470313c1 openspec: архив aurora-1839-cell-memo и aurora-1984-pd-standalone-projects
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 19:33:14 +04:00

9.5 KiB
Raw Blame History

form4-programs-projects Specification

Purpose

Программы и проекты на листах AHR/CAP/OPER формы 4 (FORM_4, «Проектная деятельность»): как они создаются, переименовываются и удаляются, где стоят в листе, как участвуют в итогах и выгрузке, как подписаны и как к проекту добавляется расход.

Requirements

Requirement: Проект создаётся в программе или прямо в разделе

Пользователь с правом добавлять строки в раздел листа SHALL иметь возможность создать проект как внутри программы этого раздела, так и прямо в разделе, без программы. Название SHALL быть непустым после обрезки пробелов. Права SHALL проверяться так же, как при создании программы в этом разделе.

Scenario: Проект в разделе

  • WHEN на листе CAP выделена строка раздела (или ничего не выделено) и пользователь создаёт проект «П1»
  • THEN «П1» появляется в разделе CAP без программы у всех подключённых к листу пользователей без перезагрузки
  • AND после перезагрузки страницы «П1» стоит на том же месте

Scenario: Проект в программе — как раньше

  • WHEN выделена программа «Пр» и пользователь создаёт проект
  • THEN проект создаётся внутри «Пр»

Scenario: Выделен проект или расход

  • WHEN выделен проект или строка расхода и пользователь создаёт проект
  • THEN новый проект создаётся там же, где выделенный проект: в той же программе или прямо в разделе

Scenario: Пустое название

  • WHEN пользователь вводит название из одних пробелов
  • THEN проект не создаётся

Requirement: Место самостоятельного проекта в листе

Самостоятельный проект SHALL выводиться строкой ITEM непосредственно под ROOT своего раздела, без строки GROUP над ним; его расходы — строками INPUT под ним. На уровне под ROOT программы и самостоятельные проекты SHALL идти в порядке создания (по id записи form4_project). Проекты внутри программы и их расходы SHALL выводиться как раньше.

Scenario: Вперемешку в порядке создания

  • WHEN в разделе последовательно созданы программа «А», самостоятельный проект «Б», программа «В»
  • THEN под ROOT раздела строки идут в порядке «А» (GROUP), «Б» (ITEM), «В» (GROUP)

Scenario: Пустой раздел

  • WHEN в разделе нет ни одного расхода, но есть самостоятельный проект
  • THEN проект виден в листе так же, как видна пустая программа

Requirement: Суммы самостоятельного проекта

Суммы расходов самостоятельного проекта SHALL входить в строку ITEM проекта и в ROOT раздела ровно один раз. Лист SHALL NOT содержать строку GROUP без программы (program_id пустой). Ответ на правку ячейки расхода самостоятельного проекта SHALL содержать строку расхода, ITEM проекта и ROOT раздела.

Scenario: Итог раздела

  • WHEN в разделе есть программа с расходом 100 и самостоятельный проект с расходом 50 в plan.q1
  • THEN ROOT раздела показывает 150 в plan.q1, ITEM самостоятельного проекта — 50

Scenario: Правка расхода

  • WHEN пользователь меняет plan.q1 у расхода самостоятельного проекта
  • THEN ответ содержит этот расход, ITEM проекта и ROOT раздела с пересчитанными суммами и не содержит GROUP

Requirement: Расходы самостоятельного проекта

К самостоятельному проекту SHALL можно добавлять и удалять расходы так же, как к проекту в программе.

Scenario: Добавление расхода

  • WHEN выделен самостоятельный проект и пользователь добавляет расход по статье
  • THEN расход появляется под этим проектом, суммы проекта и раздела пересчитываются

Requirement: Переименование программы и проекта

Пользователь с правом изменения SHALL иметь возможность переименовать выделенную программу или проект (в программе и самостоятельный). Окно переименования SHALL открываться с текущим названием. Пустое название и название из одних пробелов SHALL NOT сохраняться. При ошибке сервера окно SHALL оставаться открытым с введённым текстом и показывать понятное сообщение. Отмена SHALL оставлять прежнее название. Переименование SHALL NOT менять состав проектов, расходов и суммы.

Scenario: Успешное переименование

  • WHEN пользователь переименовывает программу «А» в «А2»
  • THEN у всех подключённых пользователей строка показывает «А2», после перезагрузки тоже

Scenario: Ошибка

  • WHEN сервер отказывает в переименовании (например, нет прав)
  • THEN окно остаётся открытым с введённым названием и показывает причину

Requirement: Удаление самостоятельного проекта

Пустой самостоятельный проект SHALL удаляться с подтверждением, как проект в программе (AURORA-1978). Проект с расходами SHALL NOT удаляться, пользователь видит причину.

Scenario: Удаление пустого

  • WHEN пользователь удаляет пустой самостоятельный проект и подтверждает
  • THEN проект исчезает из листа у всех подключённых, ROOT раздела пересчитывается

Requirement: Подпись типа в третьем столбце

В третьем столбце листов AHR/CAP/OPER формы 4 строка программы SHALL быть подписана «программа», строка проекта (в программе и самостоятельного) — «проект». Строки ROOT и расходов SHALL показывать код, как раньше. Подпись SHALL совпадать на экране и в выгрузке Excel.

Scenario: Подписи

  • WHEN открыт лист CAP с программой, проектом в ней и самостоятельным проектом
  • THEN напротив программы «программа», напротив обоих проектов «проект», у расходов — код статьи

Requirement: Выбор расхода для проекта

Окно выбора расхода SHALL показывать варианты в виде «<номер статьи> — <название>», упорядоченные по номеру статьи с учётом числовых частей (например, 2 раньше 10). Поиск SHALL находить вариант по номеру и по названию. Выбор SHALL добавлять расход именно по выбранной статье.

Scenario: Сортировка

  • WHEN среди статей есть номера «3.2.» и «3.10.»
  • THEN «3.2.» стоит выше «3.10.»

Scenario: Поиск по номеру

  • WHEN пользователь вводит «3.01»
  • THEN в списке остаются статьи, номер которых содержит «3.01»