ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: стабилизация контуров, досок и Voice Tasker
This commit is contained in:
@@ -252,12 +252,15 @@ MVP-правило:
|
||||
|
||||
Система:
|
||||
|
||||
1. берет последние voice-действия пользователя в текущем workspace;
|
||||
2. находит последную созданную/обновленную voice-задачу;
|
||||
3. показывает preview изменения, если confidence низкий;
|
||||
4. меняет `Issue.target_date`;
|
||||
5. сохраняет `due_time` в description note / parsed JSON;
|
||||
6. пишет новое действие в session-backed memory.
|
||||
1. берет последние только реально примененные voice-действия пользователя в текущем workspace;
|
||||
2. игнорирует parsed-сессии без `created_task`/`updated_task`, чтобы модель не цеплялась за старые неудачные черновики;
|
||||
3. если transcript явно задает исходный проект ("из Бухгалтерии", "последнюю добавленную в Бухгалтерию"), сначала ищет последнюю voice-задачу в этом проекте;
|
||||
4. если исходный проект не назван, сначала ищет последнюю voice-задачу в текущем открытом проекте;
|
||||
5. затем использует последнюю примененную voice-задачу workspace как общий fallback;
|
||||
6. показывает preview изменения, если confidence низкий;
|
||||
7. меняет `Issue.target_date`;
|
||||
8. сохраняет `due_time` в description note / parsed JSON;
|
||||
9. пишет новое действие в session-backed memory.
|
||||
|
||||
Если пользователь говорит "переложи последнюю задачу в проект X", это остается `update_task`, но backend должен:
|
||||
|
||||
@@ -882,6 +885,7 @@ Return JSON only.
|
||||
6. если confidence низкий - preview с ручным выбором;
|
||||
7. если transcript содержит явную маршрутизацию проекта, но model `project_hint` указывает на проект, которого нет в transcript, auto-commit блокируется;
|
||||
8. при наличии source/destination фразы выбирать destination project: "из Бухгалтерии в Менеджмент" -> target `Менеджмент`, "из Менеджмента в Бухгалтерию" -> target `Бухгалтерия`.
|
||||
9. глагол "перенеси/перенести" рядом со сроком/датой считается date update, а не project routing, если нет project/контур-маркера или явного project destination.
|
||||
|
||||
Не зашивать термин "контур" как обязательный. Для NODE DC это важный UX-термин, но технически это обычный `Project`.
|
||||
|
||||
@@ -947,11 +951,28 @@ MVP:
|
||||
- `N` дней/недель/месяцев/лет назад;
|
||||
- сложные интервалы: "два месяца и две недели";
|
||||
- числительные цифрами и частые русские словоформы: "2 недели", "две недели", "пару дней";
|
||||
- абсолютные русские даты: "1 мая 2026 года", "30 апреля";
|
||||
- числовые даты: "01.05.2026", "1/05/26";
|
||||
- защита от ложных матчей внутри слов: "последней" не считается как "дней";
|
||||
- защита от трактовки года абсолютной даты как относительного интервала: "2026 года" не считается как "+2026 лет";
|
||||
- конкретная дата;
|
||||
- конкретное время как `due_time` note.
|
||||
|
||||
Date resolver обязан работать после OpenAI parser как deterministic fallback. Если модель уже вернула валидный `due_date`, backend его не переписывает.
|
||||
Date resolver обязан работать после OpenAI parser как deterministic слой. Сначала резолвятся абсолютные даты из transcript; они могут переписать ошибочный `due_date` от модели. Затем обрабатываются относительные сдвиги вида "подвинь на 3 дня вперед" / "передвинь назад на 3 дня": backend может переписать `due_date`, даже если модель уже вернула дату, а база расчета берется из текущего `Issue.target_date`, а не из сегодняшней даты. Для фраз вида "через 3 дня" без маркера сдвига база остается текущей датой.
|
||||
|
||||
### 10.4.1. Memory resolver
|
||||
|
||||
`recent_voice_memory` для parser содержит только примененные voice-сессии, у которых есть доступная `target_task`.
|
||||
|
||||
При backend commit:
|
||||
|
||||
1. explicit issue key/issue id остается самым сильным указанием цели;
|
||||
2. `target_memory_ref` на voice-сессию используется только если эта сессия реально связана с доступной задачей;
|
||||
3. если transcript содержит общее указание "последняя/предыдущая/эта", backend не доверяет model-selected voice session ref и выбирает цель deterministic fallback-ом;
|
||||
4. если ref ведет в parsed/no-op сессию, resolver переходит к deterministic fallback;
|
||||
5. fallback сначала учитывает явно названный source project;
|
||||
6. затем текущий project из `client_context.current_project_id`;
|
||||
7. затем последнюю примененную voice-задачу workspace.
|
||||
|
||||
### 10.5. Voice task representation in Issue
|
||||
|
||||
@@ -1201,6 +1222,7 @@ voice_task.error
|
||||
23. Относительная дата "на две недели вперед" меняет `Issue.target_date` без ручного ввода ISO-даты.
|
||||
24. Перенос "из Бухгалтерии в Менеджмент" и "из Менеджмента в Бухгалтерию" реально меняет `Issue.project_id` и `task_key`.
|
||||
25. Voice-created task имеет `external_source=voice_tasker` и хранит исходный transcript в description.
|
||||
26. Preview modal показывает transcript/description полностью без внутреннего scroll внутри текстовых блоков.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user