| | | 1 | | using OzonDomains; |
| | | 2 | | |
| | | 3 | | namespace Services.AiAssistant; |
| | | 4 | | |
| | | 5 | | /// <summary> |
| | | 6 | | /// Справочник типов транзакций Studio2 — что делает каждая с заказом. |
| | | 7 | | /// </summary> |
| | | 8 | | public static class AiTransactionTypeGlossary |
| | | 9 | | { |
| | | 10 | | public static string FormatForPrompt() => |
| | 38 | 11 | | """ |
| | 38 | 12 | | ═══════════════════════════════════════ |
| | 38 | 13 | | ТИПЫ ТРАНЗАКЦИЙ (TransactionType) — ЧТО ДЕЛАЮТ С ЗАКАЗОМ |
| | 38 | 14 | | ═══════════════════════════════════════ |
| | 38 | 15 | | Транзакция — операция менеджера: меняет AppStatus заказа, пишет запись в Transaction и orders_history. |
| | 38 | 16 | | |
| | 38 | 17 | | • Заказан поставщику (OrderedToSupplier) — размещён заказ у поставщика; статус → «Заказан поставщику». Первый ша |
| | 38 | 18 | | • Отгружен поставщиком (ShippedBySupplier) — поставщик отправил товар; статус → «Отгружен поставщиком». Создаёт |
| | 38 | 19 | | • Принят на складе (AcceptedToWarehouse) — товар принят на склад Studio2; статус → «Принят на складе». |
| | 38 | 20 | | • Отгружен клиенту (ShippedToClient) — передан в доставку покупателю; статус → «Отгружен клиенту» (финальный). |
| | 38 | 21 | | • Заказан реализатору (OrderedToSeller) — заказ у перепродавца/реализатора; статус → «Заказан реализатору». Треб |
| | 38 | 22 | | • Отгружен реализатором (ShippedToSeller) — отгрузка через реализатора. |
| | 38 | 23 | | • Отгружен комиссионеру (ShippedToCommissioner) — отправка на склад Ozon (FBO). |
| | 38 | 24 | | • Утерян реализатором (LostByCommissioner) — утеря на стороне реализатора. |
| | 38 | 25 | | • К отмене (ToCancellation) — заказ помечен на отмену. |
| | 38 | 26 | | • Отменен (Cancelled) — заказ отменён (финальный). |
| | 38 | 27 | | • Возврат покупателя (CustomerReturn) — покупатель вернул товар. |
| | 38 | 28 | | • Возвращено поставщику (ReturnToSupplier) — возврат поставщику. |
| | 38 | 29 | | • Возврат на склад (ReturnToWarehouse) — товар возвращён на склад. |
| | 38 | 30 | | • Перемещение между складами (WarehouseTransfer) — внутреннее перемещение между складами Studio2. |
| | 38 | 31 | | • Изменение склада (WarehouseChange) — смена склада отгрузки заказа. |
| | 38 | 32 | | • Перемещение (ReturnTransfer) — внутренний перенос/перемещение. |
| | 38 | 33 | | • Проценён (Percentage) — рассчитана процентная наценка/маржа. |
| | 38 | 34 | | • Приходная накладная (ReceiptNote) — служебная запись прихода в 1С. |
| | 38 | 35 | | |
| | 38 | 36 | | При проведении транзакции в orders_history появляются записи (ChangedBy = пользователь, поля статуса, цены, пост |
| | 38 | 37 | | TransactionId в истории заказа связывает изменение с конкретной транзакцией. |
| | 38 | 38 | | """; |
| | | 39 | | |
| | | 40 | | public static string FormatCompactReference() => |
| | 22 | 41 | | string.Join("\n", TransactionTypeExtensions.GetTransactionTypes() |
| | 418 | 42 | | .Select(t => $" • {t.GetDisplayName()} ({t})")); |
| | | 43 | | |
| | | 44 | | /// <summary>Полная таблица переходов — для раздела «Режим записи» системного промпта.</summary> |
| | | 45 | | public static string FormatTransitionTable() => |
| | 50 | 46 | | """ |
| | 50 | 47 | | ═══════════════════════════════════════ |
| | 50 | 48 | | РЕЖИМ ЗАПИСИ: УПРАВЛЕНИЕ ЗАКАЗАМИ |
| | 50 | 49 | | ═══════════════════════════════════════ |
| | 50 | 50 | | Ты можешь выполнять два типа действий с заказами (только по явному запросу пользователя): |
| | 50 | 51 | | |
| | 50 | 52 | | ┌─ РЕДАКТИРОВАНИЕ ПОЛЕЙ ЗАКАЗА ───────────────────────────────────────────── |
| | 50 | 53 | | │ Изменяемые поля (СТРОГО только эти, больше ничего): |
| | 50 | 54 | | │ • Статус (AppStatus) — из справочника статусов системы |
| | 50 | 55 | | │ • Поставщик — по названию из справочника |
| | 50 | 56 | | │ • Склад отгрузки — по названию из справочника |
| | 50 | 57 | | │ • Цена закупки (PurchasePrice) — число в рублях |
| | 50 | 58 | | │ • Количество (Quantity) — целое число |
| | 50 | 59 | | │ • Номер заказа поставщику (OrderNumberToSupplier) — строка |
| | 50 | 60 | | │ |
| | 50 | 61 | | │ Правила при запросе редактирования: |
| | 50 | 62 | | │ 1. Если заказ не указан — спроси пользователя (номер отправления или #ID) |
| | 50 | 63 | | │ 2. Если новое значение не указано — спроси конкретное значение |
| | 50 | 64 | | │ 3. Поставщик/склад/статус ищи по названию; если не найден — сообщи |
| | 50 | 65 | | │ 4. После уточнений — предложи карточку подтверждения с итогом изменений |
| | 50 | 66 | | └─────────────────────────────────────────────────────────────────────────── |
| | 50 | 67 | | |
| | 50 | 68 | | ┌─ ТРАНЗАКЦИИ (18 типов) ──────────────────────────────────────────────────── |
| | 50 | 69 | | │ Транзакция меняет AppStatus заказа и создаёт запись в таблице Transaction. |
| | 50 | 70 | | │ Транзакции с 1С выполняются через страницу ручного проведения (ссылка даётся). |
| | 50 | 71 | | │ |
| | 50 | 72 | | │ Тип транзакции │ Статус ДО │ Статус ПОСЛЕ │ Нужны склады │ 1С |
| | 50 | 73 | | │ ───────────────────────────────────────────────────────────────────────────────────────── |
| | 50 | 74 | | │ Заказан поставщику │ Не указан/Заказан │ Заказан поставщику │ — │ нет |
| | 50 | 75 | | │ Заказан реализатору │ Не указан/Заказан │ Заказан реализатору│ — │ нет |
| | 50 | 76 | | │ Отгружен поставщиком │ Заказан поставщику │ Отгружен поставщ. │ —, нужен ИНН │ опц. (приходная) |
| | 50 | 77 | | │ Отгружен реализатором │ Заказан реализатору │ Отгружен реализат. │ — │ опц. (перемещение) |
| | 50 | 78 | | │ Принят на склад │ Заказан пост./Не указ│ ПринятНаСкладе │ отпр.+получ. │ обяз. (перемещение) |
| | 50 | 79 | | │ Отгружен клиенту │ Заказан реализатору │ Отгружен клиенту │ — │ опц. (переместить+расход |
| | 50 | 80 | | │ К отмене │ Заказан пост./реал. │ К отмене │ — │ нет |
| | 50 | 81 | | │ Отменен │ Заказан поставщику │ Отменен │ — │ нет |
| | 50 | 82 | | │ Возврат покупателя │ Отгружен клиенту │ Возврат покупателя │ отпр.+получ. │ опц. (перемещение) |
| | 50 | 83 | | │ Изменение склада │ любой │ не меняет │ — │ нет |
| | 50 | 84 | | │ Возвращено поставщику │ Заказан/Принят/Возврат│ Возвращено пост. │ отпр.+получ. │ опц. (перемещение) |
| | 50 | 85 | | │ Возврат на склад │ Принят/Отгружен пост.│ Возвращен на склад│ отпр.+получ. │ обяз. (перемещение) |
| | 50 | 86 | | │ Перемещение между складами│ любой │ Перемещен │ отпр.+получ. │ опц. (перемещение) |
| | 50 | 87 | | │ Отгружен комиссионеру │ любой │ Отгружен комиссион.│ — │ опц. (перемещение) |
| | 50 | 88 | | │ Перемещение │ Возврат покупателя │ Перемещение │ — │ нет |
| | 50 | 89 | | │ Утерян реализатором │ любой │ Утерян реализатором│ — │ опц. (перемещение) |
| | 50 | 90 | | │ |
| | 50 | 91 | | │ Правила при запросе транзакции: |
| | 50 | 92 | | │ 1. Если заказ не указан — спроси пользователя |
| | 50 | 93 | | │ 2. Проверь текущий статус (из загруженных данных заказа) |
| | 50 | 94 | | │ 3. Если текущий статус не в списке «Статус ДО» — объясни и предложи доступные транзакции |
| | 50 | 95 | | │ 4. Для транзакций с колонкой «Нужны склады» — спроси склад-отправитель и склад-получатель |
| | 50 | 96 | | │ 5. Предложи карточку подтверждения; для транзакций с 1С — дай ссылку «Провести в 1С» |
| | 50 | 97 | | │ 6. После подтверждения агент создаёт запись транзакции; 1С-проводку пользователь делает вручную |
| | 50 | 98 | | └─────────────────────────────────────────────────────────────────────────── |
| | 50 | 99 | | |
| | 50 | 100 | | Ключевые слова для распознавания типа транзакции: |
| | 50 | 101 | | «заказан поставщику» → OrderedToSupplier |
| | 50 | 102 | | «заказан реализатору» / «закажи у реализатора» → OrderedToSeller |
| | 50 | 103 | | «принят на склад» → AcceptedToWarehouse |
| | 50 | 104 | | «отгружен поставщиком» → ShippedBySupplier |
| | 50 | 105 | | «отгружен клиенту» / «отгрузить клиенту» → ShippedToClient |
| | 50 | 106 | | «к отмене» / «пометить к отмене» → ToCancellation |
| | 50 | 107 | | «отменить» / «отмена заказа» → Cancelled |
| | 50 | 108 | | «возврат покупателя» → CustomerReturn |
| | 50 | 109 | | «вернуть поставщику» → ReturnToSupplier |
| | 50 | 110 | | «возврат на склад» → ReturnToWarehouse |
| | 50 | 111 | | «перемести» / «перемещение между складами» → WarehouseTransfer |
| | 50 | 112 | | «изменить склад» / «смени склад» → WarehouseChange |
| | 50 | 113 | | """; |
| | | 114 | | } |