Перейти до вмісту

YML: відмінності між версіями

Матеріал з K2 ERP Wiki
Створена сторінка: {{DISPLAYTITLE:YML}} {{SEO |title=YML у K2 ERP — декларативний опис структур, моделей, форм і компонентів |description=YML у K2 ERP використовується для опису структур бази даних, ER-моделей, ORM-моделей, форм, меню, довідників, документів, журналів документів, компонентів і автоматич...
 
Немає опису редагування
 
Рядок 1: Рядок 1:
- field: date
- row:


title: "Номер"
Тобто [[YML]] стає проміжною мовою між бізнес-задумом і технічною реалізацією. title: "ЄДРПОУ"
date:
type: decimal
  - field: date
  - field: date


У класичному програмуванні людина часто формулює ідею, потім програміст вручну перекладає її в таблиці, класи, форми, меню, інтерфейси, документи й логіку. date:
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">


  type: text
  title: "Номер"
 
Такий SEO-опис робить компонент зрозумілим для системи, розробника, партнера й [[AI|ШІ]]. active: boolean;


Приклад:
equipment:
== Місце YML в архітектурі K2 ERP ==
У другому — контрагент і складський облік. Поле
через [[YML]] користувачі можуть описати межі модуля. ! version: "1.0.0"
Цей SEO-опис говорить системі, що e-mail має бути у правильному форматі, кількість не здатна бути меншою за 0.001, а дата виступає як обов’язковою.[[Категорія:Альтернатива 1С]]
Це дає можливість системі розуміти залежності між модулями. sales/
[[Категорія:PostgreSQL]]
'''YML''' — це текстовий декларативний формат опису даних і налаштувань. title: "Коментар"
  type: string
  type: string
! Перевага
[[index.php?title=Категорія:Інструменти розробника]]


work_name:
POST /api/contractors
<syntaxhighlight lang="typescript">
генерації коду забезпечується через '''Для розробників.''' [[YML]] дає можливість описувати структуру компонента зрозуміло, читабельно, контрольовано і придатно; так само реалізовано версіонування через [[Git]] та роботи з [[AI|штучним інтелектом]]. Частина логіки застаріває. entity: contractor
title: "Номер"
type: reference
! |-
| Масштабованість
| платформа здатна рости без хаотичного дублювання структур. title: "Дата"
Але частину правил можна декларативно описати в [[YML]]. '''AI + YML.''' Людина описує задум. {| class="wikitable" style="width:100%;"
[[Категорія:Інструменти розробника]]
GET /api/contractors/{id}


<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
{{DISPLAYTITLE:YML}}
== YML як міст між людиною і системою ==
entity: contractor
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">


Потрібні поля: номер, дата, клієнт ERP, обладнання, SEO-опис проблеми,
здатна бути автоматизовано розроблена умовна [[Python]]-модель:
entity: service_work
auto: true
name:


type: reference
[[index.php?title=Категорія:K2 ERP]]
<syntaxhighlight lang="yaml">
![[AI|ШІ]] формує [[YML]]-модель. Приклад [[YML]]-опису меню:


</syntaxhighlight>
  title: "Заявка на ремонт"
 
</syntaxhighlight>
== Як AI і YML змінюють роль програміста ==
бізнес-середовище змінюється. |-
| 5
| Модель акцептується.[[Категорія:ORM]]
 
як приклад:
 
== Зовнішні посилання ==
Оскільки [[YML]] — це текстовий формат, його інтуїтивно зберігати в [[Git]]. |}
 
![[Категорія:ERP для розробників]]
У старому підході програміст часто вручну пише [[SQL]]-скрипти, які створюють або змінюють таблиці. priority:
== Типові помилки при роботі з YML ==
як приклад:
[[YML]] здатна містити SEO-опис ролей і прав. '''YML дає можливість описати модель один раз, а далі використати цей SEO-опис для автоматичного створення багатьох частин системи.'''
платформа здатна використати цей SEO-опис для автоматичного створення списку документів з потрібними колонками. У цьому прикладі описано сутність `contractor`, яка виступає як довідником. items.amount: "items.quantity * items.price"
 
Програміст більше не виступає як людиною, яка вручну переносить одну й ту саму структуру з одного місця в інше. Для людини це зрозуміло як “у документі виступає як контрагент”. |-
| Повторне використання
| Моделі можна переносити між проєктами. Обов’язкове
  title: "Назва"
== YML і Git ==
 
[[Категорія:ERP для інтеграторів]]
Форма документа — це те, з чим функціонує користувач системи. Це принципово інший підхід до розробки. |-
| Чому [[YML]] зручний? платформа здатна прочитати файл і автоматизовано створити на його основі структуру, код, форми та інші елементи. entity: customer_order
type: decimal
Правильний підхід інший. price: 32000
 
values:


* формулює задачу;
* перевіряє модель;
* уточнює структуру;
* контролює якість;
* акцептує створення компонента;
* дописує складну логіку, яка не була описана в промпті. |-
| 6
| [[K2 ERP]] автоматизовано створює компонент.</div>
<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
- row:
Коли до цього підключається [[AI|штучний інтелект]], людина здатна описати задум людською мовою, отримати [[YML]]-модель, перевірити її, уточнити промптами й акцептувати автоматичне створення компонента. entities:
Програмісту залишається важливіша робота: подумати, чи правильно побудована модель, чи не буде проблем зі зв’язками, чи відповідає структура реальному бізнесу, яку складну логіку треба дописати окремо. fields:


[[JSON]] зручний для обміну даними між системами й дуже популярний у веб-розробці, але для великих конфігурацій і багаторівневих описів не завжди такий зручний для ручного редагування. required: true
component:
== Автоматичне створення журналу документів ==
як приклад, якщо хтось додав нове поле до документа, це видно в diff:


{| class="wikitable" style="width:100%;"
  calculated: true
Нижче наведено спрощений приклад [[YML]]-опису довідника “Контрагенти”. Це бізнес-подія. hours:
== Див. так само ==
Журнал документів — це список документів певного типу, як приклад “Замовлення покупців”. Підхід K2 ERP з YML
 
як приклад, компонент “продажі та реалізація” здатна містити свої сутності, документи, меню, права та форми.</div>
<syntaxhighlight lang="yaml">
  name: "Ноутбук Lenovo"
title: "Замовлення покупця"
Ручна розробка програмного забезпечення має сенс там, де потрібна складна логіка, нестандартні алгоритми, інтеграції або спеціальні сценарії. calculate_total:


як приклад: продаж, закупівля, переміщення товару, заявка, рахунок, акт, платіж, замовлення, виробнича операційна дія. |-
calculate_total:
| Журнали документів
| автоматизовано створені журнали для роботи з документами.</div>


<syntaxhighlight lang="yaml">
Він стає архітектором, який:
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
email:


- field: warehouse_id
title: "Товари"
  id:
  id:


journal:
== YML як міст між людиною і системою ==
- crm
type: directory


[[Категорія:Штучний інтелект]]
name:


'''Реалістичний low-code.''' [[YML]] не робить складну ERP магічно простою. - warehouse
title: "Власник"
title: "Номенклатура"
 
primary_key: true
 
type: reference


* [[K2]]
* [[K2]]
Рядок 155: Рядок 84:
* [[Альтернатива BAS]]
* [[Альтернатива BAS]]


  type: string
  title: "E-mail"


* [https://erp.kyiv.ua Сайт K2 ERP]
* [https://erp.kyiv.ua Сайт K2 ERP]
Рядок 164: Рядок 93:
* [https://www.linkedin.com/company/k2erp/ LinkedIn K2]
* [https://www.linkedin.com/company/k2erp/ LinkedIn K2]


Тобто один [[YML]]-опис здатна породити цілий набір технічних і функціональних елементів. Програміст більше не переписує одну й ту саму структуру в різних місцях, а функціонує як архітектор, який описує модель і контролює результат. '''Для AI-розробки.''' [[AI|ШІ]] здатна генерувати [[YML]]-структури за описом людини, фактично створюючи [[ER-модель]] майбутнього компонента. * поле назви;
Саме це і робить [[YML]] важливим для швидкої розробки. У класичному програмуванні людина часто формулює ідею, потім програміст вручну перекладає її в таблиці, класи, форми, меню, інтерфейси, документи й логіку. entity: customer_order
* поле дати;
[[index.php?title=Категорія:Українське програмне забезпечення]]
* посилання на контрагента;
</syntaxhighlight>
* табличну частину;
type: reference
* форму списку;
* форму документа;
* журнал;
* меню;
* базові CRUD-операції. menu:


Це умовний приклад, але він показує напрям: типові правила можуть бути описані декларативно, а складна логіка — дописана програмістом. entity: equipment
title: "Активний"
Компонент має зрозумілу структуру:
як приклад:
Людина здатна написати промпт:
table_parts:


title: "Номер"
type: string
export interface Contractor {
  auto: true
  auto: true
title: "складський облік"


Частину — описувати вручну. |}
! Програміст більше не переписує одну й ту саму структуру в різних місцях, а функціонує як архітектор, який описує модель і контролює результат. entity: service_work


  title: "Сервісні заявки"
  validation:
- title: "Заявки на ремонт"
- field: contractor_id
- high
 
Форма документа — це те, з чим функціонує користувач системи. '''Правильний баланс.''' [[YML]] описує те, що можна формалізувати.</syntaxhighlight>
Типові помилки:
 
entity: equipment


</div>
{| class="wikitable" style="width:100%;"
'''YML дає можливість описати модель один раз, а далі використати цей SEO-опис для автоматичного створення багатьох частин системи.'''
Не вся бізнес-логіка здатна бути описана без зусиль через поля й типи. Програміст дописує те, що потребує складної експертної логіки. Якщо поле виступає як посиланням на іншу сутність, можна перевірити коректність зв’язку. |-
| 2
| [[AI|ШІ]] створює [[YML]]-структуру.[[YML]] дає можливість описати компонент так, щоб він не був випадковим шматком коду. |-
| 5
| Модель акцептується. Зв’язки перебудовуються. - name
- warehouse


title: "Заявка на ремонт обладнання"
У першому рядку — номер і дата. як приклад, інтегратор створив компонент “Сервісне обслуговування обладнання”. Видно, що описується товар, у якого виступає як код, назва, одиниця виміру, ціна та ознака активності. | дає можливість швидше створювати новий функції ERP і адаптувати [[ERP]] під реальні процеси. Окремо варто відзначити моделей, налаштувань, компонентів, форм, меню, довідників, документів і інших елементів системи [[K2 ERP]]. Він прибирає рутину. active:
+ title: "Дата доставки"


Або [[TypeScript]]-інтерфейс:
email: str | None = None
<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
компонент повинен бути достатньо незалежним, щоб його можна було встановити, оновити, видалити або замінити без руйнування всієї системи. |-
fields:
| Меню
type: decimal
| автоматизовано сформовані пункти меню. як приклад, якщо в [[YML]] додано нове поле:
- critical
== YML і модульність ==
 
Це один із ключових елементів сучасної архітектури, яка дає можливість переходити від ручного програмування до моделювання, автоматичної генерації та [[AI]]-асистованої розробки.<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
tax_number:
unit: "шт"
type: document
 
Але немає сенсу вручну створювати те, що повторюється в кожному модулі:
phone:
type: datetime
title: "Години"


Такий підхід спрощує підтримку. Пояснення
title: "Дата"
У [[K2 ERP]] [[YML]] дає можливість скоротити цей шлях.[[AI|ШІ]] здатна генерувати [[YML]] за описом людини, фактично створюючи [[ER-модель]] майбутнього компонента.== YML і документація ==


[[YML]] дає можливість описати компонент так, щоб він не був випадковим шматком коду. code:
</syntaxhighlight>
 
code: str
[[AI|ШІ]] здатна згенерувати [[YML]]:
contractor_id:
type: reference
set:
робота, кількість годин, ставка, сума. Поля додаються. як приклад, якщо в [[YML]] описано довідник “Контрагенти”, платформа здатна створити:
 
як приклад, якщо хтось додав нове поле до документа, це видно в diff:
title: "Керівник продажів"
Приклад:
required: true
як приклад:
Це дає можливість не без зусиль передати “набір файлів”, а передати керовану модель, яку платформа здатна встановити, оновити або перевірити. required: true
</syntaxhighlight>
entity: product
У сучасній [[ERP]]-системі критично не тільки написати код. title: "Відповідальний інженер"
Такі зв’язки можна описувати явно. Не “написати все руками”, а “описати модель так, щоб платформа сама могла створити потрібну структуру”. |}


class Contractor(BaseModel):
Він не замінює складну бізнес-логіку.== YML і low-code/no-code ==
! Але в реальності складні [[ERP]]-системи не можуть на 100% обійтися без архітекторів і програмістів. |-
| Довідники
| автоматизовано створені довідники. критично правильно описати структуру бізнесу.</syntaxhighlight>


id:
як приклад, якщо поле обов’язкове, можна перевірити, що платформа не дає можливість зберегти документ без цього поля. У бізнес-системах давно використовуються різні формати опису даних: [[XML]], [[JSON]], [[YML]] та інші. Старий підхід
як приклад, з опису довідника “Контрагенти” можна сформувати:
<syntaxhighlight lang="yaml">


</div>
sales/
default: draft
fields:
email:


- draft
permissions.yml
</syntaxhighlight>
</syntaxhighlight>


! Довідники важливі, але справжня сила [[ERP]] розкривається в документах. entity: repair_request
== YML і права доступу ==
form:
comment:
Це один із ключових елементів сучасної архітектури, яка дає можливість переходити від ручного програмування до моделювання, автоматичної генерації та [[AI|AI]]-асистованої розробки.</syntaxhighlight>
type: decimal
'''Правильний баланс.''' [[YML]] описує те, що можна формалізувати. |-
</syntaxhighlight>
| 2
| [[AI|ШІ]] створює [[YML]]-структуру. type: integer


</div>
</div>
  title: "Ціна"
  type: boolean
price:
  title: "Дата"
  title: "Товар"
 
  date:
  - closed
read: true
rules:
Це інтуїтивно для розробників, інтеграторів, тестувальників і користувачів.</div>


як приклад, з опису довідника “Контрагенти” можна сформувати:
fields:
equipment_id:
Або [[TypeScript]]-інтерфейс:
[[index.php?title=Категорія:Автоматизація бізнесу]]


[[index.php?title=Категорія:Програмування]]
total_amount: "sum(items.amount)"
  entity: equipment
  entity: equipment
  type: enum
  hours:
code:
У бізнесі виступає як товари, контрагенти, договори, документи, склади, рахунки, заявки, платежі, маршрути погодження, бізнес-процеси, файли, характеристики, звіти й ролі користувачів. |}
unit: "шт"
unique: true
type: reference


  problem_description:
  calculate_amount:


! |-
version: "1.0.0"
| [[ORM|ORM-модель]]
| автоматизовано згенерована модель для роботи з базою даних у коді. title: "Контрагент"


<syntaxhighlight lang="yaml">
== YML і Git ==
Якщо кожну таку сутність створювати вручну в коді, потім окремо описувати її в базі даних, потім окремо створювати форми, меню, довідники, журнали документів, права доступу та інтерфейси, розробка програмного забезпечення оперативно перетворюється на нескінченне дублювання. - name
equipment_id:
delete: true


== Повний приклад міні-компонента ==
type: document
type: reference
<syntaxhighlight lang="typescript">
компонент “Сервіс” здатна використовувати частину довідників із модуля “продажі та реалізація”, але мати власні документи й процеси. Він прибирає рутину й дає можливість програмісту працювати на рівні архітектури. |-
module: service
через [[YML]] користувачі можуть описати межі модуля. Правильний підхід інший. |-
| Базовий функції ERP
| Базовий функції ERP
| Початкові операції, які випливають з моделі. SEO-опис
| Початкові операції, які випливають з моделі. |-
| Код модуля
| автоматизовано створений програмний каркас компонента. Вона має поля: ідентифікатор, код, назву, ЄДРПОУ, телефон, e-mail та ознаку активності. # застосовується для для перевірки контрагента та інтеграцій із зовнішніми сервісами
entity: product


  required: true
  read: true
- field: total_amount
- field: contractor_id
|-
| 1
| Людина формулює ідею компонента. як приклад, інтегратор створив компонент “Сервісне обслуговування обладнання”. title: "Кількість годин"
title: "Дата"


- crm
Він не замінює досвід. * таблицю в базі даних;
required: true
* [[ORM|ORM-модель]];
works:
* міграцію;
id:
* пункт меню “Контрагенти”;
[[YML]] здатна описувати правила валідації. Меню — ще одна частина, яку не потрібно кожного разу створювати вручну. type: string
* список контрагентів;
Створи YML-модель для документа "Заявка на ремонт обладнання".== Що платформа здатна створити з такого YML ==
* форму картки контрагента;
create: true
* базові операції додавання, редагування, перегляду та видалення;
default: draft
* службові конфігурація компонента;
title: "Контрагенти"
* основу для API-доступу;
У [[ERP]] критично не тільки створити інформаційні дані, а й правильно обмежити доступ до них. Поля додаються. Приклад умовної моделі:
* основу для використання у звітах;
* основу для інтеграції з іншими документами. Це бізнес-подія. delete: true


</div>
компонент повинен бути достатньо незалежним, щоб його можна було встановити, оновити, видалити або замінити без руйнування всієї системи. Треба зробити так, щоб програмісти не займалися рутиною. price:


* назву;
Це умовний приклад, але він показує напрям: типові правила можуть бути описані декларативно, а складна логіка — дописана програмістом.[[YML]] здатна описувати правила валідації. |-
* версію;
| [[YML]]-структура
* залежності;
| Декларативний текстовий SEO-опис моделі, який здатна бути створений людиною, редактором або [[AI|ШІ]]. - service_work
* сутності;
unique: true
* форми;
Шапка документа містить номер, дату, контрагента, складський облік і коментар. permissions:
* меню;
* права;
* міграції;
* точки інтеграції.<syntaxhighlight lang="text">


* довідник обладнання;
<syntaxhighlight lang="text">
* довідник видів робіт;
* документ “Заявка на ремонт”;
* документ “Акт виконаних робіт”;
* журнали документів;
* форми;
* звіти;
* ролі доступу. required: true
пріоритет, відповідальний інженер, статус. Це і виступає як програмування зі швидкістю думки. Документи уточнюються. update: true


[[K2 ERP]] розвивається як модульна ERP платформа. items:
<syntaxhighlight lang="yaml">
title: "складський облік"
- service_work


[[Категорія:YAML]]
- completed


  - field: number
Таблична частина містить товари, кількість, ціну й суму. | Він читабельний, текстовий, придатний для [[Git]], автоматичної генерації та роботи з [[AI|ШІ]]. |-
| Форми документів
| автоматизовано створені форми введення й перегляду документів. type: reference
  title: "Пріоритет"


[[Категорія:No-code]]
+ delivery_date:
</syntaxhighlight>
required: true
amount:
title: "Кількість"
Приклад помилки з відступами:


  - field: contractor_id
як приклад:
</div>
[[index.php?title=Категорія:Автоматична генерація коду]]
  type: directory


робота, кількість годин, ставка, сума. Після цього людина перевіряє модель, уточнює промптами, додає або змінює поля, коригує зв’язки й акцептує автоматичне створення компонента. * можна бачити історію змін;
__TOC__
* можна порівнювати версії;
* можна робити гілки розробки;
* можна проводити code review;
* можна відкотити помилкові зміни;
* можна бачити, хто і коли змінив модель;
* можна переносити моделі між проєктами. - title: "Обладнання"


== Коротко ==
entity: contractor


Саме для цього в [[K2 ERP]] застосовується для [[YML]].[[ORM|ORM-модель]] потрібна для того, щоб програмний код міг працювати з базою даних не напряму через таблиці, а через об’єкти. type: string
- code
id:
title: "Серійний номер"
|-
| Таблиці створюються вручну
| Структура описується в [[YML]], таблиці створюються автоматизовано
|-
| Форми створюються окремо
| Форми можуть генеруватися з моделі
|-
| Меню налаштовується окремо
| Меню описується в [[YML]]
|-
| ORM пишеться вручну
| [[ORM|ORM-модель]] генерується автоматизовано
|-
| API дублює структуру вручну
| API здатна використовувати SEO-опис моделі
|-
| Зміни важко контролювати
| Зміни видно в [[Git]]
|-
| AI не має структурованого контексту
| [[AI|ШІ]] функціонує з чітким [[YML]]-описом
|-
| Розробник витрачає час на рутину
| Розробник функціонує з архітектурою і складною логікою
|}


  edrpou:
У великих системах рефакторинг неминучий.== Приклад опису документа ==
  title: "ЄДРПОУ"
Це дає можливість уникнути хаотичних ручних змін у базі даних. {| class="wikitable" style="width:100%;"


! entity: contractor
На основі такого опису платформа здатна автоматизовано створити довідник контрагентів. Приклад [[YML]]-опису журналу:
+ title: "Дата доставки"
<syntaxhighlight lang="yaml">
== Вступ ==
price: Decimal
menu:
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">


<syntaxhighlight lang="yaml">
name: "Ноутбук Lenovo"


Людина здатна написати промпт:
- contractors


[[AI|ШІ]] здатна згенерувати [[YML]]:
create: true
== Вступ ==
Не потрібно створювати один гігантський файл на всю систему. Питання


  - in_work
version: "1.0.0"
  - field: number
export interface Product {
type: reference
бізнес-середовище змінюється. З наведеного [[YML]]-опису [[K2 ERP]] здатна автоматизовано сформувати:
update: true
table_parts:
type: directory
[[YML]] здатна містити SEO-опис ролей і прав. code: "000001"
type: decimal
+ type: date


Шапка документа містить номер, дату, контрагента, складський облік і коментар. |-
- completed
| Чим [[YML]] корисний для бізнесу? |-
| Форми документів
| автоматизовано створені форми введення й перегляду документів. Якщо в [[YML]] описана сутність, платформа здатна автоматизовано створити відповідну [[ORM|ORM-модель]].== YML і low-code/no-code ==


  edrpou: str | None = None
  entity: contractor


<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
title: "Сума"


- low
<syntaxhighlight lang="yaml">


* [[YML]]-опис структур;
== YML і ER-модель ==
* [[ORM|ORM-моделі]];
* міграції;
* frontend-компоненти;
* backend-логіку;
* звіти;
* шаблони;
* конфігурація меню;
* права доступу. Видно, що описується товар, у якого виступає як код, назва, одиниця виміру, ціна та ознака активності. Зв’язки перебудовуються. title: "Дата"
type: directory
'''Формула.''' Ідея → [[AI|ШІ]] → [[YML]] → [[ER-модель]] → [[ORM]] → міграції → код модуля → меню → довідники → журнали → форми → готовий компонент. Треба зробити так, щоб програмісти не займалися рутиною. phone?: string;


  access:
  required: true
required: true
fields:


  title: "Ціна"
  min: 0.001
Приклад:
type: string
|-
| Що таке [[YML]] у [[K2 ERP]]?[[XML]] достатньо формальний і потужний, але часто виглядає занадто важким для людини. type: text
- equipment


required: true
як приклад, якщо в [[YML]] додано нове поле:


== YML і K2 Update ==
<syntaxhighlight lang="yaml">


fields:
Такий підхід спрощує підтримку. primary_key: true
== Чому саме YML ==
</syntaxhighlight>
type: decimal
entity: product
type: datetime


  entity: customer_order
  create: true


Це дає можливість уникнути хаотичних ручних змін у базі даних. Старий підхід
<syntaxhighlight lang="typescript">
required: true
title: "Статус"
type: string
price: 32000
</syntaxhighlight>
</syntaxhighlight>


Якщо поле має тип `decimal`, можна перевірити числові значення. Тип
title: "Робота"


  section: "Сервіс"
  type: text
 
== Висновок ==
 
title: "Контрагент"


fields:
Довідники важливі, але справжня сила [[ERP]] розкривається в документах. Приклад умовної моделі:
POST /api/contractors
name: string;
GET /api/contractors


entities:
<syntaxhighlight lang="python">
}
}
  - row:
<syntaxhighlight lang="yaml">
  title: "Обладнання"
У [[K2 ERP]] [[YML]] виступає як частиною загального ланцюжка автоматичного створення компонентів. title: "Номенклатура"
'''AI + YML.''' Людина описує задум.[[index.php?title=Категорія:ERP]]
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
email:


type: datetime
equipment_id:
== Висновок ==
</syntaxhighlight>
</syntaxhighlight>
 
як приклад, платформа здатна автоматизовано створити SEO-опис сутності:
! Не вся бізнес-логіка здатна бути описана без зусиль через поля й типи. fields:
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
 
== Порівняння старого і нового підходу ==
У [[K2 ERP]] ця читабельність особливо важлива, бо [[YML]] здатна використовуватися не тільки програмістами, а й архітекторами системи, інтеграторами, технічними консультантами та [[AI|штучним інтелектом]]. |-
| Для чого застосовується для [[YML]]? entity: repair_request
required: true
  values:
  values:
title: "Номер"
engineer_id:


  type: string
  title: "Назва"
id: number;
як приклад: продаж, закупівля, переміщення товару, заявка, рахунок, акт, платіж, замовлення, виробнича операційна дія. Це значно краще, ніж коли зміни зроблені десь у закритому конфігураторі й незрозуміло, хто, коли і що саме змінив. |-
як приклад, платформа здатна автоматизовано створити SEO-опис сутності:
| Повторне використання
| Моделі можна переносити між проєктами.[[index.php?title=Категорія:ORM]]


[[AI|Штучний інтелект]] особливо добре функціонує там, де виступає як зрозуміла структура. Що відбувається
<syntaxhighlight lang="yaml">
== Зовнішні посилання ==
Це дає багато переваг:


  type: integer
  title: "Менеджер з продажу"
menu:
'''Саме через [[YML]], [[ER-модель|ER-моделі]], [[ORM]], генерацію, модульність і [[AI|ШІ]] [[K2 ERP]] будує новий підхід до створення [[ERP]]-систем — швидший, легший, зрозуміліший і значно сучасніший за старі закриті технології.'''
set:


- closed
<syntaxhighlight lang="yaml">
Якщо змінюється документ “Замовлення покупця”, не потрібно відкривати файл на десять тисяч рядків. Саме тому [[YML]] виступає як одним із фундаментів програмування зі швидкістю думки.[[Low-code]] і [[No-code]] часто обіцяють, що бізнес-середовище зможе створювати додатки без програмістів. Але в реальності складні [[ERP]]-системи не можуть на 100% обійтися без архітекторів і програмістів. |-
| Чим [[YML]] корисний для партнерів? |-
| Міграції
| Автоматичне створення або зміна структури бази даних. У [[YML]] відступи мають значення. Цей фрагмент означає, що поле `contractor_id` виступає як посиланням на сутність `contractor`. '''Перевага.''' Програміст не малює форму вручну з нуля. |-
| Читабельність
| [[YML]] швидко читати людині. component:
! title: "Назва"


У контексті [[K2 ERP]] [[YML]] застосовується для для того, щоб описувати не без зусиль параметри, а цілі бізнес-структури:
Замість того щоб вручну дублювати структуру в різних частинах системи, її можна один раз описати в [[YML]]. Але частину правил можна декларативно описати в [[YML]]. * таблиці;
* моделі;
* форми;
* меню;
* журнали;
* довідники;
* API;
* базові операції;
* службові структури. Журнал документів — це список документів певного типу, як приклад “Замовлення покупців”. - equipment
depends_on:
== YML і бізнес-правила ==


З [[YML]] можна генерувати [[Python]]-моделі, схеми валідації, структури API та каркаси сервісів.== YML і Python ==
== Рекомендації щодо структури YML-файлів ==


[[Файл:K2 ERP YML.png|центр|міні|800x800пкс|YML як основа автоматичного створення компонентів у K2 ERP]]
title: "Номер"
  required: true
  required: true


  title: "Сума"
Але головна цінність [[YML]] не в самому синтаксисі. SEO-опис
  sales_director:
 
== Автоматичне створення меню ==
! '''YML''' — це текстовий декларативний формат опису даних і налаштувань. Він прибирає рутину й дає можливість програмісту працювати на рівні архітектури. |-
| Журнали документів
| автоматизовано створені журнали для роботи з документами. ! Далі — коментар. Це дає можливість frontend-розробнику працювати з типізованими даними й зменшує кількість помилок. У старому підході програміст вручну створював:


required: true
Якщо структура системи розкидана по коду, базі, формах і меню, рефакторинг стає болючим. Він має багато службових тегів, які ускладнюють читання. title: "Сервісне обслуговування"


</div>
'''Перевага.''' Програміст не малює форму вручну з нуля. |-
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
| 7
rules:
| Програміст дописує складну логіку, яка не була описана в моделі.[[index.php?title=Категорія:Python]]
|-
| [[ER-модель]]
| Архітектурний SEO-опис сутностей, зв’язків і структури майбутнього компонента. title: "Кількість"


</syntaxhighlight>
- repair_request


  entity: customer_order
  type: enum
edrpou:
when: "items.quantity or items.price changed"
problem_description:
delete: false
Такий SEO-опис здатна бути використаний для створення індексів у базі даних. Тобто [[YML]] стає проміжною мовою між бізнес-задумом і технічною реалізацією. validation:


title: "Роботи"
Тоді роль людини змінюється.== конкурентні переваги YML у K2 ERP ==


<syntaxhighlight lang="yaml">
type: string


table_parts:
id: int


Якщо поле виступає як посиланням на іншу сутність, можна перевірити коректність зв’язку. entity: contractor
type: integer


title: "Код"
== YML і PostgreSQL ==
- name: idx_product_name
validation:


У підході [[K2 ERP]] структура описується через [[YML]], а міграції можуть створюватися автоматизовано. платформа читає цей SEO-опис і розуміє, що потрібно створити. Краще розділяти описи за модулями, компонентами або сутностями. Перевага
Такий SEO-опис дає можливість централізовано визначати, хто здатна переглядати, створювати, редагувати, видаляти або погоджувати документи.</div>
type: directory
Коли людина описує ідею, [[AI|ШІ]] формує [[YML]], а [[K2 ERP]] автоматизовано створює компонент — розробка програмного забезпечення наближається до швидкості думки. type: integer
title: "Назва"


type: reference
Але базова ідея проста: якщо платформа знає структуру сутності, вона здатна створити типові API-операції автоматизовано. |}
Він стає архітектором, який:
[[Категорія:ERP для партнерів]]
title: "Заявка на ремонт"
comment:


  - completed
  title: "E-mail"
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
Це не означає, що всі зміни стають автоматизовано простими. - critical
type: directory
auto: true
name: str
! Не треба обіцяти, що програмісти зникнуть. Це дає багато переваг:


sales_director:
Це дає можливість системі розуміти залежності між модулями. Тип
як приклад, якщо в [[ER-модель|ER-моделі]] виступає як сутність “Замовлення покупця”, яка пов’язана з “Контрагентом”, “Складом” і “Товаром”, то в [[YML]] це здатна бути описано через поля типу `reference`. amount:
як приклад, компонент “продажі та реалізація” здатна містити свої сутності, документи, меню, права та форми. title: "Заявка на ремонт обладнання"
customer_id:


  type: reference
  - draft
title: "Назва"
code: string;


price: number;
{| class="wikitable" style="width:100%;"
[[YML]] якраз дає таку структуру. пріоритет, відповідальний інженер, статус. menu:


Замість того щоб вручну дублювати структуру в різних частинах системи, її можна один раз описати в [[YML]].[[TypeScript]] застосовується для для frontend-частини, компонентів інтерфейсу, типізації даних і взаємодії з API. entity: warehouse
  type: decimal
amount:
  type: journal
'''критично.''' [[YML]] у [[K2 ERP]] не замінює програміста.[[Категорія:AI]]
contractors.yml
Це значно краще, ніж коли зміни зроблені десь у закритому конфігураторі й незрозуміло, хто, коли і що саме змінив. Він дає можливість сказати системі: “Ось як має виглядати компонент”, а далі платформа сама створює необхідні частини.== YML і повторне використання компонентів ==
Це дає можливість frontend-розробнику працювати з типізованими даними й зменшує кількість помилок. items:


  validation:
  type: reference
як приклад, якщо поле обов’язкове, можна перевірити, що платформа не дає можливість зберегти документ без цього поля.[[Категорія:YML]]


  entities:
Людина здатна прочитати файл і зрозуміти, що в ньому описано. '''Ключова ідея.''' [[YML]] — це мова опису структури, а не мова ручного програмування.<syntaxhighlight lang="text">
Приклад:
title: "Товари"
  entity: warehouse


  status:
  menu:


fields:
[[index.php?title=Категорія:YAML]]
calculate_amount:
required: true
update: true
</syntaxhighlight>
products.yml
Але він прибирає величезний пласт рутини, який у старих системах забирав час, гроші, нерви й змушував програмістів вручну робити те, що давно має створюватися автоматизовано. | Він читабельний, текстовий, придатний для [[Git]], автоматичної генерації та роботи з [[AI|ШІ]]. fields:
Частину структури можна створювати візуально. Не “написати все руками”, а “описати модель так, щоб платформа сама могла створити потрібну структуру”. Якщо структура документа вже описана в [[YML]], форма здатна бути розроблена автоматизовано. як приклад, для сутності `contractor` можуть бути автоматизовано створені маршрути:


  - draft
  - field: date


export interface Contractor {
[[index.php?title=Категорія:No-code]]


* структуру таблиці;
  title: "Контрагент"
* [[ORM|ORM-модель]];
* міграцію бази даних;
* пункт меню;
* форму списку;
* форму картки;
* базові операції створення, редагування, перегляду та видалення;
* службові описи для компонента.</div>
  title: "Виконані роботи"
Частину — дописувати програмно. критично правильно описати структуру бізнесу. type: document
== Порівняння старого і нового підходу ==


works:
</syntaxhighlight>


генерації коду забезпечується через '''Для розробників.''' [[YML]] дає можливість описувати структуру компонента зрозуміло, читабельно, контрольовано і придатно; так само реалізовано версіонування через [[Git]] та роботи з [[AI|штучним інтелектом]]. | Декларативний текстовий SEO-опис структур, моделей, форм, меню, документів, довідників і компонентів.[[Категорія:ERP]]
[[index.php?title=Категорія:K2]]
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
title: "Назва"
title: "Телефон"
У цьому прикладі описано сутність `contractor`, яка виступає як довідником. |-
total_amount: "sum(items.amount)"
| Чи замінює [[YML]] програміста? |-
| [[ORM|ORM-модель]]
| автоматизовано згенерована модель для роботи з базою даних у коді. Головна цінність у тому, що [[YML]] виступає як зрозумілим і для людини, і для машини.[[XML]] достатньо формальний і потужний, але часто виглядає занадто важким для людини.</syntaxhighlight>
|-
| Читабельність
| [[YML]] швидко читати людині.[[YML]] дає можливість описувати ці зміни на рівні моделі, а не випадкових ручних правок. name: service_requests
! type: reference


Оскільки [[YML]] описує структуру компонента, з нього можна генерувати документацію. Це формалізований SEO-опис бізнес-моделі, з якого платформа здатна автоматизовано створювати структури, [[ORM|ORM-моделі]], міграції, код модуля, меню, довідники, журнали документів і форми документів. У ньому виступає як:
Основною базою даних для [[K2 ERP]] виступає як [[PostgreSQL]]. Це формалізований SEO-опис бізнес-моделі, з якого платформа здатна автоматизовано створювати структури, [[ORM|ORM-моделі]], міграції, код модуля, меню, довідники, журнали документів і форми документів. type: string


entity: contractor
  id: number;
  id:
fields:


title: "Сума"
* неправильні відступи;
{| class="wikitable" style="width:100%;"
customer_order.yml
{{SEO
|title=YML у K2 ERP — декларативний опис структур, моделей, форм і компонентів
|description=YML у K2 ERP використовується для опису структур бази даних, ER-моделей, ORM-моделей, форм, меню, довідників, документів, журналів документів, компонентів і автоматичної генерації бізнес-додатків.
|keywords=YML, YAML, K2 ERP, ER-модель, ORM, ERP, AI ERP, автоматична генерація коду, структура бази даних, Python, TypeScript, PostgreSQL, бізнес-додатки, low-code ERP, no-code ERP, українська ERP, альтернатива 1С, альтернатива BAS
|image=https://erp.kyiv.ua
}}
depends_on:
title: "SEO-опис проблеми"
primary_key: true
Тоді роль людини змінюється. * неправильні відступи;
* неузгоджені назви полів;
* неузгоджені назви полів;
* дублювання сутностей;
* дублювання сутностей;
Рядок 553: Рядок 520:
* некоректні посилання на інші сутності;
* некоректні посилання на інші сутності;
* невраховані права доступу;
* невраховані права доступу;
* неописані правила валідації. title: "Робота"
* неописані правила валідації. Підхід K2 ERP з YML
title: "E-mail"


type: directory
платформа здатна зрозуміти, що в таблицю потрібно додати нову колонку. name:
- row:
- normal
== Автоматичне створення форми документа ==


Якщо структура сутності описана в [[YML]], платформа здатна використати цю інформацію для створення API. | дає можливість швидше створювати новий функції ERP і адаптувати [[ERP]] під реальні процеси. це не без зусиль конфігураційний файл виступає ключовою рисою '''Головне.''' У [[K2 ERP]] [[YML]]. code: string;
code:


! Такі зв’язки можна описувати явно. type: string
Одна з важливих переваг [[K2 ERP]] — можливість створювати незалежні легкі компоненти, які швидко підтримувати й інтегрувати між собою. ! primary_key: true
платформа здатна зрозуміти, що в таблицю потрібно додати нову колонку. type: document
<syntaxhighlight lang="yaml">
type: datetime
</syntaxhighlight>


як приклад, якщо в [[YML]] описано довідник “Контрагенти”, платформа здатна створити:
Цей SEO-опис говорить системі, як розмістити поля на формі. id:


fields:
sales_manager:


{| class="wikitable" style="width:100%;"
DELETE /api/contractors/{id}
Щоб [[YML]]-моделі залишалися зручними, варто дотримуватися кількох принципів. repair_request:


title: "Сервісні заявки"
'''Формула.''' Ідея → [[AI|ШІ]] → [[YML]] → [[ER-модель]] → [[ORM]] → міграції → код модуля → меню → довідники → журнали → форми → готовий компонент. title: "ЄДРПОУ"


columns:
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
<syntaxhighlight lang="typescript">
product_id:
У великих системах рефакторинг неминучий. |-
| 6
| [[K2 ERP]] автоматизовано створює компонент. У [[K2 ERP]] [[YML]] застосовується для як міст між архітектурною ідеєю, [[ER-модель|ER-моделлю]], [[ORM|ORM-моделлю]], структурою бази даних, програмним кодом модуля, інтерфейсом користувача та автоматизовано створеним бізнес-додатком. ! permissions:
entity: contractor


</div>
type: directory
Правильно:
== YML і ORM ==
invoice.yml
[[YML]] у [[K2 ERP]] — це основа для такого підходу. title: "Назва"
required: true


  title: "SEO-опис проблеми"
entity: contractor
  title: "Контрагент"
як приклад, якщо в [[ER-модель|ER-моделі]] виступає як сутність “Замовлення покупця”, яка пов’язана з “Контрагентом”, “Складом” і “Товаром”, то в [[YML]] це здатна бути описано через поля типу `reference`.[[index.php?title=Категорія:Цифрова незалежність України]]
{| class="wikitable" style="width:100%;"
values:


email?: string;
fields:
Це інтуїтивно для розробників, інтеграторів, тестувальників і користувачів. Якщо структура системи розкидана по коду, базі, формах і меню, рефакторинг стає болючим. Крок
З такого опису платформа здатна автоматизовано створити довідник обладнання, документ заявки на ремонт, журнал заявок, форми, меню, ORM-моделі, міграції та базовий функції ERP. Якщо в [[YML]] описана сутність, платформа здатна автоматизовано створити відповідну [[ORM|ORM-модель]]. required: true


  title: "Години"
Після цього людина перевіряє модель, уточнює промптами, додає або змінює поля, коригує зв’язки й акцептує автоматичне створення компонента. Пояснення
  - title: "Товари"


[[YML]] у [[K2 ERP]] — це основа для такого підходу. |-
Це не означає, що складні системи з’являються магічно без контролю.<syntaxhighlight lang="python">
| Прозорість
| Архітектуру компонента можна зрозуміти з текстового опису. | Так. product:


quantity:
* назву;
+ delivery_date:
* версію;
- in_work
* залежності;
* сутності;
* форми;
* меню;
* права;
* міграції;
* точки інтеграції.== YML і Python ==


  title: "Контрагент"
  active: true


  type: decimal
  - low


Приклад [[YML]]-опису журналу:
entity: contractor


З такого опису [[K2 ERP]] здатна автоматизовано створити розділ меню “продажі та реалізація” та додати до нього потрібні пункти. Етап
[[YML]] добре підходить саме для опису структур, бо він лаконічний, читабельний і зручний для людини. - in_work
delete: false
</div>


{| class="wikitable" style="width:100%;"
  - title: "Замовлення покупців"
  title: "Замовлення покупця"
format: email
Приклад опису форми:
Якщо поле має тип `decimal`, можна перевірити числові значення. id:


title: "Сервісне обслуговування"
  columns:
  type: integer
table_parts:


<syntaxhighlight lang="yaml">
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
Якщо структура цього модуля описана в [[YML]], її можна переносити між інсталяціями, використовувати як шаблон, розвивати й публікувати через [[K2 Update]]. title: "Замовлення покупців"
бізнес-процес виглядає так:
title: "Телефон"
Потрібні поля: номер, дата, клієнт ERP, обладнання, SEO-опис проблеми,
title: "Замовлення покупця"
title: "Сума"
Не треба обіцяти, що програмісти зникнуть. |-
| Яка роль людини? Людина перевіряє цю модель, уточнює промптами й акцептує автоматичне створення компонента. contractors.yml
[[index.php?title=Категорія:PostgreSQL]]
У контексті [[K2 ERP]] [[YML]] застосовується для для того, щоб описувати не без зусиль параметри, а цілі бізнес-структури:
default: normal
fields:
date:
price: Decimal


[[Категорія:Українське програмне забезпечення]]
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
  calculated: true
  primary_key: true
  work_id:
  section: "Сервіс"
type: boolean
'''Саме через [[YML]], [[ER-модель|ER-моделі]], [[ORM]], генерацію, модульність і [[AI|ШІ]] [[K2 ERP]] будує новий підхід до створення [[ERP]]-систем — швидший, легший, зрозуміліший і значно сучасніший за старі закриті технології.'''


[[YML]]-опис здатна бути використаний для створення структур у [[PostgreSQL]]: таблиць, колонок, індексів, зв’язків, обмежень і міграцій.[[Категорія:K2]]
items.amount: "items.quantity * items.price"
default: draft
== Коментарі в YML ==
[[index.php?title=Категорія:AI]]
products.yml
== YML і повторне використання компонентів ==
== Що таке YML ==
warehouse_id:
Додай табличну частину для виконаних робіт:


type: string
<syntaxhighlight lang="yaml">
</syntaxhighlight>
</syntaxhighlight>
fields:
== Автоматичне створення журналу документів ==
- sales
<syntaxhighlight lang="python">
Цей SEO-опис говорить системі, як розмістити поля на формі. Це означає, що людина перестає витрачати час на механічне дублювання. Нижче наведено умовний спрощений приклад [[YML]]-опису міні-компонента “Сервісні заявки”. title: "Менеджер з продажу"
[[ORM|ORM-модель]] потрібна для того, щоб програмний код міг працювати з базою даних не напряму через таблиці, а через об’єкти. У ньому виступає як:
! |-
Це принципово інший підхід до розробки. auto: true
| Чи замінює [[YML]] програміста? sales_manager:


як приклад:
priority:


</syntaxhighlight>
calculated: true


<syntaxhighlight lang="python">
name:
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
це не без зусиль конфігураційний файл виступає ключовою рисою '''Головне.''' У [[K2 ERP]] [[YML]]. section: "Сервіс"
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
</div>
fields:


title: "Статус"
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
У [[K2 ERP]] [[YML]] застосовується для як міст між архітектурною ідеєю, [[ER-модель|ER-моделлю]], [[ORM|ORM-моделлю]], структурою бази даних, програмним кодом модуля, інтерфейсом користувача та автоматизовано створеним бізнес-додатком.</syntaxhighlight>
Якщо в [[YML]] сутність має тип `document`, платформа здатна автоматизовано створити журнал документів. id: number;


'''YML у K2 ERP — це мова, якою бізнес-ідея починає перетворюватися на працюючий компонент.'''
[[Python]] застосовується для для backend-логіки, бізнес-правил, API, інтеграцій, обробки даних і [[AI]]-сценаріїв. |}
== YML і AI ==
Одна з важливих переваг [[K2 ERP]] — можливість створювати незалежні легкі компоненти, які швидко підтримувати й інтегрувати між собою.[[YML]] дає можливість описувати ці зміни на рівні моделі, а не випадкових ручних правок. | дає можливість створювати переносимі компоненти, модулі, шаблони та галузеві рішення для бізнесу. title: "Власник"


  type: journal
  - field: warehouse_id
! Поле
<syntaxhighlight lang="yaml">


DELETE /api/contractors/{id}
== Коротко ==
entity: customer_order
'''YML у K2 ERP.''' Це не без зусиль “конфігурація”.== YML і валідація даних ==
title: "Замовлення покупця"
type: datetime
title: "Дата"
У другому — контрагент і складський облік. Якщо структура цього модуля описана в [[YML]], її можна переносити між інсталяціями, використовувати як шаблон, розвивати й публікувати через [[K2 Update]]. amount:


  type: decimal
  primary_key: true
Коментарі допомагають пояснити, навіщо потрібне поле або правило. Якщо змінюється документ “Замовлення покупця”, не потрібно відкривати файл на десять тисяч рядків. |-
| Чим [[YML]] корисний для партнерів? Він дає можливість сказати системі: “Ось як має виглядати компонент”, а далі платформа сама створює необхідні частини. type: text


name:
Звичайно, реальна платформа здатна мати складніші правила доступу, фільтрації, валідації й бізнес-логіки. Для людини це зрозуміло як “у документі виступає як контрагент”. як приклад, з такого [[YML]]:


'''YML у K2 ERP.''' Це не без зусиль “конфігурація”.[[Категорія:Low-code]]
Коли людина описує ідею, [[AI|ШІ]] формує [[YML]], а [[K2 ERP]] автоматизовано створює компонент — розробка програмного забезпечення наближається до швидкості думки. Документи уточнюються. |-
| 3
| Людина перевіряє модель. Це SEO-опис, з якого здатна народжуватися готовий компонент. |-
| Прозорість
| Архітектуру компонента можна зрозуміти з текстового опису. Достатньо працювати з конкретним описом. type: enum
Попри простоту, з [[YML]] потрібно працювати уважно. Що відбувається


Основною базою даних для [[K2 ERP]] виступає як [[PostgreSQL]]. indexes:
  amount:
  edrpou:
== YML і документація ==


warehouse_id:
Частину структури можна створювати візуально. - title: "Обладнання"


== YML і PostgreSQL ==
Це спрощені приклади, але вони показують суть: [[YML]] стає джерелом для генерації моделей у різних мовах програмування. |-
| Для чого застосовується для [[YML]]? access:
! Етап
layout:


  title: "Контрагент"
<syntaxhighlight lang="yaml">
depends_on:
  primary_key: true


* таблиці;
items:
* моделі;
component:
* форми;
== YML і K2 Update ==
* меню;
* журнали;
* довідники;
* API;
* базові операції;
* службові структури. |-
| Чи здатна [[AI|ШІ]] створювати [[YML]]? number:


<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
entity: contractor


  items:
  - title: "Контрагенти"


</syntaxhighlight>
</syntaxhighlight>


  rate:
  title: "Сума"


<syntaxhighlight lang="yaml">
type: string


required: true
</div>


Якщо компонент описаний через [[YML]], його легше переносити, копіювати, адаптувати й розповсюджувати. У великих [[ERP]]-системах правильні індекси можуть значно прискорювати пошук, фільтрацію, побудову звітів і роботу журналів документів. |-
Приклад [[YML]]-опису меню:
| 7
| Програміст дописує складну логіку, яка не була описана в моделі.[[Категорія:Автоматична генерація коду]]
entity: equipment
</div>


  - title: "Контрагенти"
У підході [[K2 ERP]] значна частина цього здатна створюватися автоматизовано з [[YML]]. type: directory
  type: integer


  fields:
  name:
- field: status
! class Contractor(BaseModel):


fields:
  values:
  type: string
'''YML у K2 ERP — це мова, якою бізнес-ідея починає перетворюватися на працюючий компонент.'''
== YML і рефакторинг ==
[[AI|Штучний інтелект]] особливо добре функціонує там, де виступає як зрозуміла структура. id:
|-
| Таблиці створюються вручну
| Структура описується в [[YML]], таблиці створюються автоматизовано
|-
| Форми створюються окремо
| Форми можуть генеруватися з моделі
|-
| Меню налаштовується окремо
| Меню описується в [[YML]]
|-
| ORM пишеться вручну
| [[ORM|ORM-модель]] генерується автоматизовано
|-
| API дублює структуру вручну
| API здатна використовувати SEO-опис моделі
|-
| Зміни важко контролювати
| Зміни видно в [[Git]]
|-
| AI не має структурованого контексту
| [[AI|ШІ]] функціонує з чітким [[YML]]-описом
|-
| Розробник витрачає час на рутину
| Розробник функціонує з архітектурою і складною логікою
|}


title: "Назва"
! |-
| Автоматична генерація
| З [[YML]] можна створювати [[ORM]], міграції, код, меню, форми й довідники. як приклад, якщо потрібно перейменувати поле, платформа здатна бачити, де воно застосовується для: у формі, журналі, API, звіті, правилах, правах доступу. | Перевірити структуру, уточнити промпти, акцептувати модель і дописати складну логіку, яку не було описано в промпті. rate:


- field: contractor_id
</syntaxhighlight>
</syntaxhighlight>
serial_number:
title: "Роботи"
type: integer


Це спрощені приклади, але вони показують суть: [[YML]] стає джерелом для генерації моделей у різних мовах програмування. name: service_requests
Приклад:
name: str
id:
 
Але немає сенсу вручну створювати те, що повторюється в кожному модулі:
[[Python]] застосовується для для backend-логіки, бізнес-правил, API, інтеграцій, обробки даних і [[AI|AI]]-сценаріїв.[[YML]] у такому пакеті виконує роль зрозумілого опису структури компонента. status:


tax_number:
[[JSON]] зручний для обміну даними між системами й дуже популярний у веб-розробці, але для великих конфігурацій і багаторівневих описів не завжди такий зручний для ручного редагування. Через це критично використовувати нормальні редактори, підсвічування синтаксису й перевірки. | Ні. title: "Статус"


З наведеного [[YML]]-опису [[K2 ERP]] здатна автоматизовано сформувати:
У бізнес-системі критично, щоб користувач системи не міг зберегти некоректні інформаційні дані. Потім — таблична частина “Товари”. Це і виступає як програмування зі швидкістю думки. | Декларативний текстовий SEO-опис структур, моделей, форм, меню, документів, довідників і компонентів. платформа здатна прочитати файл і автоматизовано створити на його основі структуру, код, форми та інші елементи.== YML і TypeScript ==
auto: true
== Що платформа здатна створити з такого YML ==


</div>
[[index.php?title=Категорія:Low-code]]
[[YML]]-опис здатна бути використаний для створення структур у [[PostgreSQL]]: таблиць, колонок, індексів, зв’язків, обмежень і міграцій. |-
| 4
| Людина уточнює промптами потрібні деталі.[[index.php?title=Категорія:ERP для інтеграторів]]
Якщо структура документа вже описана в [[YML]], форма здатна бути розроблена автоматизовано. Людина описує структуру в декларативному вигляді. як приклад, для сутності `contractor` можуть бути автоматизовано створені маршрути:
roles:


* таблицю в базі даних;
title: "Контрагенти"
* [[ORM|ORM-модель]];
== Місце YML в архітектурі K2 ERP ==
* міграцію;
* пункт меню “Контрагенти”;
* список контрагентів;
* форму картки контрагента;
* базові операції додавання, редагування, перегляду та видалення;
* службові конфігурація компонента;
* основу для API-доступу;
* основу для використання у звітах;
* основу для інтеграції з іншими документами.[[Категорія:Цифрова незалежність України]]
 
== конкурентні переваги YML у K2 ERP ==
title: "Пріоритет"
<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
menu.yml


</syntaxhighlight>
  contractor_id:
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
  email: str | None = None
Компонент здатна містити:
Таблична частина містить товари, кількість, ціну й суму.== YML як основа програмування зі швидкістю думки ==
 
Саме це і робить [[YML]] важливим для швидкої розробки. Через це критично використовувати нормальні редактори, підсвічування синтаксису й перевірки. title: "Кількість"
Коли підключається [[AI|ШІ]], він здатна допомогти створити сам [[YML]]. type: directory


  required: true
  required: true
active: boolean;
== YML і тестування ==
Якщо ж основа описана через [[YML]], зміни можна робити більш керовано. required: true
</syntaxhighlight>
</syntaxhighlight>
[[Категорія:Автоматизація бізнесу]]
</div>
[[Категорія:Програмування]]


set:
<syntaxhighlight lang="yaml">
title: "Обладнання"
 
title: "Робота"
  type: enum
У сучасній [[ERP]]-системі критично не тільки написати код.== Що таке YML ==
  title: "Назва"
Він не замінює складну бізнес-логіку. title: "Ставка"


  type: integer
  type: string


== Коментарі в YML ==
Тобто один [[YML]]-опис здатна породити цілий набір технічних і функціональних елементів.<syntaxhighlight lang="diff">
У бізнес-системі критично, щоб користувач системи не міг зберегти некоректні інформаційні дані. |}
! Обов’язкове
type: decimal
- row:


  name:
  date:
<syntaxhighlight lang="yaml">
entity: customer_order
У [[K2 ERP]] ця читабельність особливо важлива, бо [[YML]] здатна використовуватися не тільки програмістами, а й архітекторами системи, інтеграторами, технічними консультантами та [[AI|штучним інтелектом]]. - name: idx_product_name
type: string


export interface Product {
Оскільки [[YML]] описує структуру компонента, з нього можна генерувати документацію. Якщо структура описана в [[YML]], можна автоматизовано генерувати частину тестів.== YML і AI ==


Такий SEO-опис здатна бути використаний для створення індексів у базі даних. Окремо варто відзначити моделей, налаштувань, компонентів, форм, меню, довідників, документів і інших елементів системи [[K2 ERP]].[[Категорія:API]]
- field: warehouse_id
entity: repair_request
Саме для цього в [[K2 ERP]] застосовується для [[YML]]. phone: str | None = None


title: "Керівник продажів"
'''Фундамент ERP.''' Структура бази даних повинна змінюватися керовано. * довідник обладнання;
name:
* довідник видів робіт;
<syntaxhighlight lang="yaml">
* документ “Заявка на ремонт”;
* документ “Акт виконаних робіт”;
* журнали документів;
* форми;
* звіти;
* ролі доступу. type: decimal


name: string;
fields:
- title: "Заявки на ремонт"
section: "Сервіс"


required: true
== YML і API ==
У бізнес-системах давно використовуються різні формати опису даних: [[XML]], [[JSON]], [[YML]] та інші. type: decimal
fields:
Приклад простого опису товару в [[YML]]:
</syntaxhighlight>
</syntaxhighlight>
active: true
entity: employee
[[Категорія:K2 ERP]]
- table_part: items
як приклад, якщо потрібно перейменувати поле, платформа здатна бачити, де воно застосовується для: у формі, журналі, API, звіті, правилах, правах доступу. '''YML''' — декларативний текстовий формат опису структур. |-
| Декларативність
| Описується не “як програмувати”, а “що має бути створено”. Людина описує структуру в декларативному вигляді. У старому підході програміст вручну створював:


  type: enum
Це особливо критично для партнерів [[K2 ERP]]. title: "Сервісні заявки"
  edrpou: str | None = None


== YML і валідація даних ==
type: integer
[[YML]] дає можливість прибрати цю рутину.[[index.php?title=Категорія:API]]
access:
type: string


  - field: number
journal:
edrpou?: string;
  entity: repair_request


У журналі можуть відображатися:
* сутності;
* таблиці;
* поля;
* типи даних;
* зв’язки;
* документи;
* довідники;
* журнали документів;
* форми документів;
* меню;
* компоненти;
* права;
* службові конфігурація;
* елементи інтерфейсу;
* правила генерації. problem_description:
</syntaxhighlight>
</syntaxhighlight>
price:
Якщо структура сутності описана в [[YML]], платформа здатна використати цю інформацію для створення API. Але вони стають більш прозорими. З [[YML]] можна генерувати [[Python]]-моделі, схеми валідації, структури API та каркаси сервісів. * [[YML]]-опис структур;
* [[ORM|ORM-моделі]];
* міграції;
* frontend-компоненти;
* backend-логіку;
* звіти;
* шаблони;
* конфігурація меню;
* права доступу. required: true


customer_id:
Приклад:
type: enum
<syntaxhighlight lang="diff">


  permissions.yml
  date:
entity: contractor
required: true
type: decimal
Типові помилки:
Не потрібно створювати один гігантський файл на всю систему. У [[K2 ERP]] [[YML]] дає можливість скоротити цей шлях. '''Таким чином, YML виступає як центральним текстовим описом, через який модель перетворюється на працюючий компонент.'''
id: int


  title: "Товари"
Частину — генерувати за допомогою [[AI|ШІ]]. Краще розділяти описи за модулями, компонентами або сутностями.== Типові помилки при роботі з YML ==
Компонент має зрозумілу структуру:
type: journal
  entity: customer_order


== YML і права доступу ==
через [[YML]] платформа здатна розуміти структуру компонента, створювати [[ORM|ORM-моделі]], міграції, код, меню, довідники, журнали документів, форми документів і базовий функції ERP. платформа читає цей SEO-опис і розуміє, що потрібно створити. Він робить її керованою, структурованою і придатною для автоматичної генерації. fields:


Коментарі особливо корисні в складних галузевих модулях, де бізнес-логіка не завжди очевидна. Звичайно, реальна платформа здатна мати складніші правила доступу, фільтрації, валідації й бізнес-логіки. Людина перевіряє цю модель, уточнює промптами й акцептує автоматичне створення компонента.[[K2 ERP]] автоматизовано створює компонент. | Для автоматичного створення [[ORM|ORM-моделей]], міграцій, програмного коду, меню, довідників, журналів документів і форм. {| class="wikitable" style="width:100%;"
{| class="wikitable" style="width:100%;"
Якщо [[YML]] описує структуру сутності, то з нього можна автоматизовано створювати типи для frontend. У [[K2 ERP]] [[YML]] виступає як частиною загального ланцюжка автоматичного створення компонентів. module: service


<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
title: "Виконані роботи"


required: true
</div>


section: "продажі та реалізація"
Для системи це зрозуміло як зв’язок між таблицями, який можна використати для генерації [[ORM|ORM-моделі]], форми, довідника, API та звітів.</syntaxhighlight>


type: string
Оскільки [[YML]] — це текстовий формат, його інтуїтивно зберігати в [[Git]]. active: bool = True
[[YML]] у такому пакеті виконує роль зрозумілого опису структури компонента. email?: string;


== Простий приклад YML-опису довідника ==
read: true
Якщо в [[YML]] сутність має тип `document`, платформа здатна автоматизовано створити журнал документів.== Чому саме YML ==
required: true
<syntaxhighlight lang="yaml">
|-
| Що таке [[YML]] у [[K2 ERP]]?<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
title: "Податковий номер"
title: "Ставка"
title: "Ціна"
id:
|-
| code
| string
| Код
| Так
|-
| name
| string
| Назва
| Так
|-
| edrpou
| string
| ЄДРПОУ
| Ні
|-
| active
| boolean
| Активний
| Ні
|}


== YML і TypeScript ==
title: "Код"


  title: "E-mail"
  title: "Коментар"
+ type: date
phone: str | None = None


Приклад помилки з відступами:
  type: string
- name: idx_product_code
  quantity:
- high
[[YML]] у [[K2 ERP]] — це не без зусиль формат файлу.<syntaxhighlight lang="yaml">


  title: "Дата"
  type: string


Частину — генерувати за допомогою [[AI|ШІ]].{{DISPLAYTITLE:YML}}
[[ER-модель]] описує сутності та зв’язки між ними. Такий SEO-опис швидко прочитати навіть людині, яка не виступає як програмістом. Він описує структуру, а платформа створює форму автоматизовано. Це критично для продуктивності. У великих [[ERP]]-системах правильні індекси можуть значно прискорювати пошук, фільтрацію, побудову звітів і роботу журналів документів. number:


quantity:
</syntaxhighlight>
</syntaxhighlight>
type: string


[[Категорія:Python]]
type: reference
required: true
Ручна розробка програмного забезпечення має сенс там, де потрібна складна логіка, нестандартні алгоритми, інтеграції або спеціальні сценарії. type: string
title: "складський облік"
fields:


  repair_request:
  type: integer


  - contractors
  title: "Замовлення покупців"


* формулює задачу;
[[index.php?title=Категорія:Штучний інтелект]]
* перевіряє модель;
* уточнює структуру;
* контролює якість;
* акцептує створення компонента;
* дописує складну логіку, яка не була описана в промпті. З такого опису платформа здатна автоматизовано створити довідник обладнання, документ заявки на ремонт, журнал заявок, форми, меню, ORM-моделі, міграції та базовий функції ERP. |-
| Довідники
| автоматизовано створені довідники. як приклад, з такого [[YML]]:


  calculated: true
</div>
На основі цього [[YML]] платформа здатна автоматизовано створити не тільки таблиці, а й журнал документів, форму документа та табличну частину. Назва
  product_id:
amount:
Частину — описувати вручну. |-
- field: warehouse_id
| Меню
min: 0.001
| автоматизовано сформовані пункти меню.[[AI|ШІ]] формує [[YML]]-модель. ! type: datetime


Нижче наведено спрощений приклад [[YML]]-опису документа “Замовлення покупця”. number:
title: "SEO-опис проблеми"


title: "складський облік"
== Повний приклад міні-компонента ==


create: true
Компонент здатна містити:


default: draft
У бізнесі виступає як товари, контрагенти, договори, документи, склади, рахунки, заявки, платежі, маршрути погодження, бізнес-процеси, файли, характеристики, звіти й ролі користувачів. title: "Статус"
type: string
default: normal
  type: string
  type: string


Документ — це не без зусиль форма. здатна бути автоматизовано розроблена умовна [[Python]]-модель:
- field: total_amount
== YML і ORM ==
 
entity: product
update: true
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
table_parts:
primary_key: true
Якщо кожну таку сутність створювати вручну в коді, потім окремо описувати її в базі даних, потім окремо створювати форми, меню, довідники, журнали документів, права доступу та інтерфейси, розробка програмного забезпечення оперативно перетворюється на нескінченне дублювання. - name: idx_product_code
  format: email
  type: reference


  approve: true
  approve: true
name:
Нижче наведено умовний спрощений приклад [[YML]]-опису міні-компонента “Сервісні заявки”.[[K2 ERP]] автоматизовано створює компонент. Програміст дошліфовує складну логіку. fields:
contractor_id:


  entity: product
  required: true
== Чим YML кращий за ручну розробку однакових структур ==
version: "1.0.0"


[[YML]] дає можливість прибрати цю рутину. Але головна цінність [[YML]] не в самому синтаксисі. '''Ключова ідея.''' [[YML]] — це мова опису структури, а не мова ручного програмування. | Ні. - title: "Товари"
Частину — дописувати програмно. |-
# застосовується для для перевірки контрагента та інтеграцій із зовнішніми сервісами
| Чому [[YML]] зручний? |-
access:
| AI-сумісність
| [[AI|ШІ]] добре функціонує з текстовими структурованими описами. GET /api/contractors


Він не замінює досвід. type: string
[[Low-code]] і [[No-code]] часто обіцяють, що бізнес-середовище зможе створювати додатки без програмістів. Меню — ще одна частина, яку не потрібно кожного разу створювати вручну. type: string


Коли до цього підключається [[AI|штучний інтелект]], людина здатна описати задум людською мовою, отримати [[YML]]-модель, перевірити її, уточнити промптами й акцептувати автоматичне створення компонента.== Автоматичне створення меню ==
'''критично.''' [[YML]] у [[K2 ERP]] не замінює програміста. Крок
invoice.yml
{{SEO
|title=YML у K2 ERP — декларативний опис структур, моделей, форм і компонентів
|description=YML у K2 ERP використовується для опису структур бази даних, ER-моделей, ORM-моделей, форм, меню, довідників, документів, журналів документів, компонентів і автоматичної генерації бізнес-додатків.
|keywords=YML, YAML, K2 ERP, ER-модель, ORM, ERP, AI ERP, автоматична генерація коду, структура бази даних, Python, TypeScript, PostgreSQL, бізнес-додатки, low-code ERP, no-code ERP, українська ERP, альтернатива 1С, альтернатива BAS
|image=https://erp.kyiv.ua
}}
- sales
status:
number:
Програміст більше не виступає як людиною, яка вручну переносить одну й ту саму структуру з одного місця в інше.</syntaxhighlight>
section: "продажі та реалізація"


fields:
'''Для AI-розробки.''' [[AI|ШІ]] здатна генерувати [[YML]]-структури за описом людини, фактично створюючи [[ER-модель]] майбутнього компонента. * поле назви;
* поле дати;
* посилання на контрагента;
* табличну частину;
* форму списку;
* форму документа;
* журнал;
* меню;
* базові CRUD-операції. type: string
З такого опису [[K2 ERP]] здатна автоматизовано створити розділ меню “продажі та реалізація” та додати до нього потрібні пункти.== YML і міграції бази даних ==


  roles:
  type: decimal


PUT /api/contractors/{id}
title: "Обладнання"


== Рекомендації щодо структури YML-файлів ==
}
title: "ЄДРПОУ"
title: "Активний"
code: str
Потім — таблична частина “Товари”. |-
| AI-сумісність
| [[AI|ШІ]] добре функціонує з текстовими структурованими описами.[[YML]] якраз дає таку структуру. Він робить її керованою, структурованою і придатною для автоматичної генерації. |-
| 3
| Людина перевіряє модель.== YML і бізнес-правила ==
type: integer
</syntaxhighlight>


Це дає можливість не без зусиль передати “набір файлів”, а передати керовану модель, яку платформа здатна встановити, оновити або перевірити. |-
== YML і API ==
| 4
| Людина уточнює промптами потрібні деталі. | Перевірити структуру, уточнити промпти, акцептувати модель і дописати складну логіку, яку не було описано в промпті. active:
type: datetime
- completed


<syntaxhighlight lang="yaml">
</div>
! Він прибирає рутину. Частина логіки застаріває. Коментарі допомагають пояснити, навіщо потрібне поле або правило.<syntaxhighlight lang="yaml">


<syntaxhighlight lang="yaml">
name: string;


'''Таким чином, YML виступає як центральним текстовим описом, через який модель перетворюється на працюючий компонент.'''
equipment_id:
  title: "Сума"
  title: "Сума"
|-
| 1
| Людина формулює ідею компонента. | Так.[[TypeScript]] застосовується для для frontend-частини, компонентів інтерфейсу, типізації даних і взаємодії з API. type: journal


Він не замінює архітектора. Це SEO-опис, з якого здатна народжуватися готовий компонент. Приклад:
fields:
<syntaxhighlight lang="text">


- closed
indexes:
type: directory
fields:
values:


  menu.yml
  works:
title: "Статус"
Але базова ідея проста: якщо платформа знає структуру сутності, вона здатна створити типові API-операції автоматизовано. entity: customer_order
date:
type: datetime
У першому рядку — номер і дата. name: service_requests
У підході [[K2 ERP]] значна частина цього здатна створюватися автоматизовано з [[YML]]. Програміст дописує те, що потребує складної експертної логіки.[[YML]] добре підходить саме для опису структур, бо він лаконічний, читабельний і зручний для людини. Це не означає, що складні системи з’являються магічно без контролю.<syntaxhighlight lang="text">
Це критично для продуктивності. |}


</syntaxhighlight>
Таким чином, [[YML]] здатна бути джерелом не тільки для генерації коду, а й для перевірки якості. Документ — це не без зусиль форма. Приклад:
Якщо компонент описаний через [[YML]], його легше переносити, копіювати, адаптувати й розповсюджувати. |-
| Чим [[YML]] корисний для бізнесу? title: "Номер"


default: true
* сутності;
* таблиці;
* поля;
* типи даних;
* зв’язки;
* документи;
* довідники;
* журнали документів;
* форми документів;
* меню;
* компоненти;
* права;
* службові конфігурація;
* елементи інтерфейсу;
* правила генерації. Правильно:


Якщо структура описана в [[YML]], можна автоматизовано генерувати частину тестів. |-
[[index.php?title=Категорія:Альтернатива BAS]]
| Код модуля
| автоматизовано створений програмний каркас компонента.</syntaxhighlight>
 
entity: product
type: document


  title: "Код"
  title: "Код"
phone:
Приклад:


  id:
  - table_part: items


[[Категорія:TypeScript]]
name: string;


- field: status
== YML і рефакторинг ==


class Product(BaseModel):
== Чим YML кращий за ручну розробку однакових структур ==


type: decimal
компонент “Сервіс” здатна використовувати частину довідників із модуля “продажі та реалізація”, але мати власні документи й процеси.<syntaxhighlight lang="text">


  primary_key: true
  - in_work
edrpou?: string;
title: "Відповідальний інженер"
== YML і міграції бази даних ==


== YML і тестування ==
* структуру таблиці;
Якщо ж основа описана через [[YML]], зміни можна робити більш керовано. '''Фундамент ERP.''' Структура бази даних повинна змінюватися керовано. primary_key: true
* [[ORM|ORM-модель]];
- row:
* міграцію бази даних;
component:
* пункт меню;
бізнес-процес виглядає так:
* форму списку;
fields:
* форму картки;
  title: "Обладнання"
* базові операції створення, редагування, перегляду та видалення;
* службові описи для компонента. Приклад простого опису товару в [[YML]]:
У старому підході програміст часто вручну пише [[SQL]]-скрипти, які створюють або змінюють таблиці. fields:
form:
  title: "Дата"


[[ER-модель]] описує сутності та зв’язки між ними.</div>
У цьому прикладі описано документ із шапкою та табличною частиною. title: "Кількість годин"
work_name:
<syntaxhighlight lang="yaml">
Цей SEO-опис говорить системі, що e-mail має бути у правильному форматі, кількість не здатна бути меншою за 0.001, а дата виступає як обов’язковою. '''YML''' — декларативний текстовий формат опису структур. Створи YML-модель для документа "Заявка на ремонт обладнання". | дає можливість створювати переносимі компоненти, модулі, шаблони та галузеві рішення для бізнесу. |-
| Міграції
| Автоматичне створення або зміна структури бази даних. type: directory


type: string
type: decimal
type: decimal
  fields:
  fields:
required: true
  type: string
  type: string
|-
| code
| string
| Код
| Так
|-
| name
| string
| Назва
| Так
|-
| edrpou
| string
| ЄДРПОУ
| Ні
|-
| active
| boolean
| Активний
| Ні
|}


  type: text
<syntaxhighlight lang="yaml">
 
  type: integer
 
[[index.php?title=Категорія:TypeScript]]
 
title: "Статус"


  email:
  id: int


title: "Кількість"
  number:
  number:
phone?: string;
entity: employee


== YML і ER-модель ==
Міграції потрібні для керованої зміни структури бази даних.</div>


</syntaxhighlight>
menu:


[[Категорія:Альтернатива BAS]]
works:


type: string
У [[YML]] відступи мають значення.== Автоматичне створення форми документа ==


Приклад опису форми:
type: decimal
== Див. так само ==
У журналі можуть відображатися:
code:
  - field: comment
  - field: comment
name: service_requests
{| class="wikitable" style="width:100%;"
name:


  id: number;
  entity: equipment


Таким чином, [[YML]] здатна бути джерелом не тільки для генерації коду, а й для перевірки якості. layout:
[[YML]] виступає як текстовим представленням такої моделі. |-
через [[YML]] платформа здатна розуміти структуру компонента, створювати [[ORM|ORM-моделі]], міграції, код, меню, довідники, журнали документів, форми документів і базовий функції ERP. Але вони стають більш прозорими. Вона має поля: ідентифікатор, код, назву, ЄДРПОУ, телефон, e-mail та ознаку активності. active: bool = True
| Масштабованість
| платформа здатна рости без хаотичного дублювання структур. |-
| Версіонування
| [[YML]] інтуїтивно зберігати в [[Git]].</syntaxhighlight>
default: true
name: str
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
primary_key: true


  id: int
  required: true
title: "Товар"
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
[[index.php?title=Категорія:ERP для партнерів]]
type: document


</syntaxhighlight>
  type: text
  title: "Серійний номер"
- closed
contractor_id:
'''Реалістичний low-code.''' [[YML]] не робить складну ERP магічно простою.</div>
when: "items.quantity or items.price changed"
  title: "SEO-опис проблеми"
Додай табличну частину для виконаних робіт:
  title: "Податковий номер"


  title: "Дата"
  entities:
type: reference
</syntaxhighlight>
type: string
Людина здатна прочитати файл і зрозуміти, що в ньому описано. Достатньо працювати з конкретним описом. Міграції потрібні для керованої зміни структури бази даних. - title: "Замовлення покупців"
Такий SEO-опис швидко прочитати навіть людині, яка не виступає як програмістом. |-
| Яка роль людини? Програмісту залишається важливіша робота: подумати, чи правильно побудована модель, чи не буде проблем зі зв’язками, чи відповідає структура реальному бізнесу, яку складну логіку треба дописати окремо. Він описує структуру, а платформа створює форму автоматизовано.[[K2 Update]] здатна використовувати [[YML]] як частину механізму доставки компонентів.<syntaxhighlight lang="yaml">


  price:
  edrpou:


contractor_id:
[[K2 Update]] здатна використовувати [[YML]] як частину механізму доставки компонентів.== YML і модульність ==
== Простий приклад YML-опису довідника ==


Головна цінність у тому, що [[YML]] виступає як зрозумілим і для людини, і для машини.[[AI|ШІ]] здатна генерувати [[YML]] за описом людини, фактично створюючи [[ER-модель]] майбутнього компонента. Приклад:
name: str


required: true
</syntaxhighlight>
</syntaxhighlight>


Далі — коментар. |-
У [[ERP]] критично не тільки створити інформаційні дані, а й правильно обмежити доступ до них. hours:
| [[YML]]-структура
date:
| Декларативний текстовий SEO-опис моделі, який здатна бути створений людиною, редактором або [[AI|ШІ]]. serial_number:
 
</syntaxhighlight>
type: string
}
title: "клієнт ERP"
Попри простоту, з [[YML]] потрібно працювати уважно. |-
contractor_id:
| Версіонування
!</syntaxhighlight>
| [[YML]] інтуїтивно зберігати в [[Git]].<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
status:
Такий SEO-опис дає можливість централізовано визначати, хто здатна переглядати, створювати, редагувати, видаляти або погоджувати документи. title: "Обладнання"
[[index.php?title=Категорія:YML]]
title: "Товари"
Це не означає, що всі зміни стають автоматизовано простими. Назва
 
items:
work_id:
PUT /api/contractors/{id}
price: number;


Для системи це зрозуміло як зв’язок між таблицями, який можна використати для генерації [[ORM|ORM-моделі]], форми, довідника, API та звітів. hours:
GET /api/contractors/{id}
  type: decimal
  equipment:
when: "items.amount changed"
class Product(BaseModel):
</syntaxhighlight>
</syntaxhighlight>
Це особливо критично для партнерів [[K2 ERP]]. Відповідь


- field: number
title: "Дата"
  type: reference
  type: reference
 
[[YML]] у [[K2 ERP]] — це не без зусиль формат файлу. |-
== Приклад опису документа ==
| Чи здатна [[AI|ШІ]] створювати [[YML]]?[[index.php?title=Категорія:Альтернатива 1С]]
 
- repair_request
 
- code
У цьому прикладі описано документ із шапкою та табличною частиною. Програміст дошліфовує складну логіку. |-
| Автоматична генерація
| З [[YML]] можна створювати [[ORM|ORM]], міграції, код, меню, форми й довідники. required: true
 
primary_key: true
 
== YML і незалежні компоненти ==
== YML і незалежні компоненти ==
== YML як основа програмування зі швидкістю думки ==
title: "Сервісні заявки"
Коли підключається [[AI|ШІ]], він здатна допомогти створити сам [[YML]]. |-
| Декларативність
| Описується не “як програмувати”, а “що має бути створено”.[[index.php?title=Категорія:ERP для розробників]]
У підході [[K2 ERP]] структура описується через [[YML]], а міграції можуть створюватися автоматизовано. * можна бачити історію змін;
* можна порівнювати версії;
* можна робити гілки розробки;
* можна проводити code review;
* можна відкотити помилкові зміни;
* можна бачити, хто і коли змінив модель;
* можна переносити моделі між проєктами. | Для автоматичного створення [[ORM|ORM-моделей]], міграцій, програмного коду, меню, довідників, журналів документів і форм. платформа здатна використати цей SEO-опис для автоматичного створення списку документів з потрібними колонками. |-
| [[ER-модель]]
| Архітектурний SEO-опис сутностей, зв’язків і структури майбутнього компонента. problem_description:


  type: string
  items:


  title: "клієнт ERP"
  title: "Робота"
Нижче наведено спрощений приклад [[YML]]-опису довідника “Контрагенти”. Він не замінює архітектора. Це означає, що людина перестає витрачати час на механічне дублювання.</syntaxhighlight>
required: true
title: "Обладнання"
Такий SEO-опис робить компонент зрозумілим для системи, розробника, партнера й [[AI|ШІ]]. type: decimal
title: "Ціна"
set:
Цей фрагмент означає, що поле `contractor_id` виступає як посиланням на сутність `contractor`. title: "Назва"


type: reference
Саме тому [[YML]] виступає як одним із фундаментів програмування зі швидкістю думки. На основі цього [[YML]] платформа здатна автоматизовано створити не тільки таблиці, а й журнал документів, форму документа та табличну частину. - normal
[[YML]] виступає як текстовим представленням такої моделі. Він має багато службових тегів, які ускладнюють читання. title: "Номер"
На основі такого опису платформа здатна автоматизовано створити довідник контрагентів. title: "Сума"


table_parts:
Якщо [[YML]] описує структуру сутності, то з нього можна автоматизовано створювати типи для frontend.<syntaxhighlight lang="yaml">


</syntaxhighlight>
[[K2 ERP]] розвивається як модульна ERP платформа. customer_order.yml
Але він прибирає величезний пласт рутини, який у старих системах забирав час, гроші, нерви й змушував програмістів вручну робити те, що давно має створюватися автоматизовано.<syntaxhighlight lang="yaml">
quantity:


<syntaxhighlight lang="yaml">
Коментарі особливо корисні в складних галузевих модулях, де бізнес-логіка не завжди очевидна. product:
 
- draft


* номер документа;
* номер документа;
Рядок 1168: Рядок 1161:
* автор;
* автор;
* дата створення;
* дата створення;
* дата зміни. code: "000001"
* дата зміни.== Як AI і YML змінюють роль програміста ==


  depends_on:
  when: "items.amount changed"


read: true
Нижче наведено спрощений приклад [[YML]]-опису документа “Замовлення покупця”. Відповідь
 
  type: reference
__TOC__
Щоб [[YML]]-моделі залишалися зручними, варто дотримуватися кількох принципів. Питання
  engineer_id:

Поточна версія на 16:07, 14 травня 2026

- row:

- field: date
title: "Номер"
type: string

! Перевага index.php?title=Категорія:Інструменти розробника

POST /api/contractors генерації коду забезпечується через Для розробників. YML дає можливість описувати структуру компонента зрозуміло, читабельно, контрольовано і придатно; так само реалізовано версіонування через Git та роботи з штучним інтелектом. Частина логіки застаріває. entity: contractor


здатна бути автоматизовано розроблена умовна Python-модель:

index.php?title=Категорія:K2 ERP

title: "Заявка на ремонт"
  • формулює задачу;
  • перевіряє модель;
  • уточнює структуру;
  • контролює якість;
  • акцептує створення компонента;
  • дописує складну логіку, яка не була описана в промпті. |-

| 6

| K2 ERP автоматизовано створює компонент.
 - row:
Коли до цього підключається [[AI|штучний інтелект]], людина здатна описати задум людською мовою, отримати [[YML]]-модель, перевірити її, уточнити промптами й акцептувати автоматичне створення компонента. entities:
Програмісту залишається важливіша робота: подумати, чи правильно побудована модель, чи не буде проблем зі зв’язками, чи відповідає структура реальному бізнесу, яку складну логіку треба дописати окремо. fields:

component:

 calculated: true

 calculate_total:

Він стає архітектором, який:

 id:

== YML як міст між людиною і системою ==
 - crm
type: directory

 name:

 title: "Власник"

* [[K2]]
* [[K2 ERP]]
* [[K2 Update]]
* [[ERP]]
* [[YML]]
* [[YAML]]
* [[JSON]]
* [[XML]]
* [[ER-модель]]
* [[BP-модель]]
* [[ORM]]
* [[API]]
* [[Python]]
* [[TypeScript]]
* [[PostgreSQL]]
* [[SQLite]]
* [[MySQL]]
* [[SQL]]
* [[Git]]
* [[AI]]
* [[Штучний інтелект]]
* [[Low-code]]
* [[No-code]]
* [[RAD]]
* [[IDE]]
* [[Автоматична генерація коду]]
* [[Автоматизація бізнесу]]
* [[Українське програмне забезпечення]]
* [[Альтернатива 1С]]
* [[Альтернатива BAS]]

 title: "E-mail"

* [https://erp.kyiv.ua Сайт K2 ERP]
* [https://wiki.erp.kyiv.ua Wiki K2 ERP]
* [https://cloud.corp2.eu хмарна інфраструктура K2 ERP]
* [https://t.me/+uIdWI1W6vndkMTAy Telegram-канал K2 ERP]
* [https://t.me/+6jFwAZM6TQliNTdi Група обговорення функціоналу та пропозицій]
* [https://www.linkedin.com/company/k2erp/ LinkedIn K2]

Саме це і робить [[YML]] важливим для швидкої розробки. У класичному програмуванні людина часто формулює ідею, потім програміст вручну перекладає її в таблиці, класи, форми, меню, інтерфейси, документи й логіку. entity: customer_order
[[index.php?title=Категорія:Українське програмне забезпечення]]
type: reference
title: "Активний"

як приклад: Людина здатна написати промпт: table_parts:

title: "Номер"
type: string

export interface Contractor {

auto: true
title: "складський облік"

! Програміст більше не переписує одну й ту саму структуру в різних місцях, а функціонує як архітектор, який описує модель і контролює результат. entity: service_work

validation:
- title: "Заявки на ремонт"
- field: contractor_id
- high

Форма документа — це те, з чим функціонує користувач системи. Правильний баланс. YML описує те, що можна формалізувати.</syntaxhighlight> Типові помилки:

entity: equipment
YML дає можливість описати модель один раз, а далі використати цей SEO-опис для автоматичного створення багатьох частин системи. Не вся бізнес-логіка здатна бути описана без зусиль через поля й типи. Програміст дописує те, що потребує складної експертної логіки. Якщо поле виступає як посиланням на іншу сутність, можна перевірити коректність зв’язку. |-
2 ШІ створює YML-структуру.YML дає можливість описати компонент так, щоб він не був випадковим шматком коду. |- 5 Модель акцептується. Зв’язки перебудовуються. - name
- warehouse

У першому рядку — номер і дата. як приклад, інтегратор створив компонент “Сервісне обслуговування обладнання”. Видно, що описується товар, у якого виступає як код, назва, одиниця виміру, ціна та ознака активності. | дає можливість швидше створювати новий функції ERP і адаптувати ERP під реальні процеси. Окремо варто відзначити моделей, налаштувань, компонентів, форм, меню, довідників, документів і інших елементів системи K2 ERP. Він прибирає рутину. active: + title: "Дата доставки"

email: str | None = None
 fields:
 type: decimal
 - critical

Це один із ключових елементів сучасної архітектури, яка дає можливість переходити від ручного програмування до моделювання, автоматичної генерації та [[AI]]-асистованої розробки.<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
tax_number:
 unit: "шт"
type: document

Але немає сенсу вручну створювати те, що повторюється в кожному модулі:
 phone:
 type: datetime
 title: "Години"

 title: "Дата"
У [[K2 ERP]] [[YML]] дає можливість скоротити цей шлях.[[AI|ШІ]] здатна генерувати [[YML]] за описом людини, фактично створюючи [[ER-модель]] майбутнього компонента.== YML і документація ==
code: str

ШІ здатна згенерувати YML:

contractor_id:
type: reference
set:

робота, кількість годин, ставка, сума. Поля додаються. як приклад, якщо в YML описано довідник “Контрагенти”, платформа здатна створити:

як приклад, якщо хтось додав нове поле до документа, це видно в diff:

title: "Керівник продажів"

Приклад:

required: true

як приклад: Це дає можливість не без зусиль передати “набір файлів”, а передати керовану модель, яку платформа здатна встановити, оновити або перевірити. required: true </syntaxhighlight> entity: product У сучасній ERP-системі критично не тільки написати код. title: "Відповідальний інженер" Такі зв’язки можна описувати явно. Не “написати все руками”, а “описати модель так, щоб платформа сама могла створити потрібну структуру”. |}

Він не замінює складну бізнес-логіку.== YML і low-code/no-code ==

Але в реальності складні ERP-системи не можуть на 100% обійтися без архітекторів і програмістів. |- Довідники автоматизовано створені довідники. критично правильно описати структуру бізнесу.</syntaxhighlight>

як приклад, якщо поле обов’язкове, можна перевірити, що платформа не дає можливість зберегти документ без цього поля. У бізнес-системах давно використовуються різні формати опису даних: XML, JSON, YML та інші. Старий підхід як приклад, з опису довідника “Контрагенти” можна сформувати:

sales/
 default: draft
fields:
 email:

 - draft
 permissions.yml

YML і права доступу

comment:
type: decimal

</syntaxhighlight>

type: boolean
title: "Дата"
- closed

rules:

Це інтуїтивно для розробників, інтеграторів, тестувальників і користувачів.

fields:

equipment_id:

Або TypeScript-інтерфейс: index.php?title=Категорія:Автоматизація бізнесу

index.php?title=Категорія:Програмування

total_amount: "sum(items.amount)"
entity: equipment
hours:

У бізнесі виступає як товари, контрагенти, договори, документи, склади, рахунки, заявки, платежі, маршрути погодження, бізнес-процеси, файли, характеристики, звіти й ролі користувачів. |}

calculate_amount:
version: "1.0.0"

YML і Git

type: document

module: service
через [[YML]] користувачі можуть описати межі модуля. Правильний підхід інший. |-
| Базовий функції ERP
| Початкові операції, які випливають з моделі. |-
| Код модуля
| автоматизовано створений програмний каркас компонента. Вона має поля: ідентифікатор, код, назву, ЄДРПОУ, телефон, e-mail та ознаку активності. # застосовується для для перевірки контрагента та інтеграцій із зовнішніми сервісами
 entity: product

 read: true

Він не замінює досвід. * таблицю в базі даних;
* [[ORM|ORM-модель]];
* міграцію;
* пункт меню “Контрагенти”;
* список контрагентів;
* форму картки контрагента;
* базові операції додавання, редагування, перегляду та видалення;
* службові конфігурація компонента;
* основу для API-доступу;
* основу для використання у звітах;
* основу для інтеграції з іншими документами. Це бізнес-подія. delete: true

компонент повинен бути достатньо незалежним, щоб його можна було встановити, оновити, видалити або замінити без руйнування всієї системи. Треба зробити так, щоб програмісти не займалися рутиною. price:

Це умовний приклад, але він показує напрям: типові правила можуть бути описані декларативно, а складна логіка — дописана програмістом.[[YML]] здатна описувати правила валідації. |-
| [[YML]]-структура
| Декларативний текстовий SEO-опис моделі, який здатна бути створений людиною, редактором або [[AI|ШІ]]. - service_work
 unique: true
Шапка документа містить номер, дату, контрагента, складський облік і коментар. permissions:

<syntaxhighlight lang="text">

<syntaxhighlight lang="yaml">

 - completed

Таблична частина містить товари, кількість, ціну й суму. | Він читабельний, текстовий, придатний для [[Git]], автоматичної генерації та роботи з [[AI|ШІ]]. |-
| Форми документів
| автоматизовано створені форми введення й перегляду документів. type: reference
 title: "Пріоритет"

+ delivery_date:
required: true
amount:
title: "Кількість"

Приклад помилки з відступами:

як приклад:

index.php?title=Категорія:Автоматична генерація коду

type: directory
entity: contractor
- code
id:
title: "Серійний номер"
Таблиці створюються вручну Структура описується в YML, таблиці створюються автоматизовано
Форми створюються окремо Форми можуть генеруватися з моделі
Меню налаштовується окремо Меню описується в YML
ORM пишеться вручну ORM-модель генерується автоматизовано
API дублює структуру вручну API здатна використовувати SEO-опис моделі
Зміни важко контролювати Зміни видно в Git
AI не має структурованого контексту ШІ функціонує з чітким YML-описом
Розробник витрачає час на рутину Розробник функціонує з архітектурою і складною логікою

У великих системах рефакторинг неминучий.== Приклад опису документа ==

title: "ЄДРПОУ"

Це дає можливість уникнути хаотичних ручних змін у базі даних. {| class="wikitable" style="width:100%;"

На основі такого опису платформа здатна автоматизовано створити довідник контрагентів. Приклад YML-опису журналу:

name: "Ноутбук Lenovo"
- contractors
create: true

Вступ

Не потрібно створювати один гігантський файл на всю систему. Питання

version: "1.0.0"
- field: number

export interface Product {

type: reference

бізнес-середовище змінюється. З наведеного YML-опису K2 ERP здатна автоматизовано сформувати:

update: true

table_parts: type: directory YML здатна містити SEO-опис ролей і прав. code: "000001"

type: decimal

+ type: date

- completed
entity: contractor
title: "Сума"
== YML і ER-модель ==

 required: true
 required: true
 fields:

 min: 0.001

як приклад, якщо в [[YML]] додано нове поле:

<syntaxhighlight lang="yaml">

Такий підхід спрощує підтримку. primary_key: true
== Чому саме YML ==
type: decimal
entity: product
type: datetime
create: true
 required: true
 title: "Статус"
 type: string
 price: 32000
title: "Робота"
type: text

Висновок

title: "Контрагент"

Довідники важливі, але справжня сила ERP розкривається в документах. Приклад умовної моделі:

}

 title: "Обладнання"
У [[K2 ERP]] [[YML]] виступає як частиною загального ланцюжка автоматичного створення компонентів. title: "Номенклатура"
'''AI + YML.''' Людина описує задум.[[index.php?title=Категорія:ERP]]
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
 email:

як приклад, платформа здатна автоматизовано створити SEO-опис сутності:

Порівняння старого і нового підходу

values:
title: "Номер"
engineer_id:
title: "Назва"

як приклад: продаж, закупівля, переміщення товару, заявка, рахунок, акт, платіж, замовлення, виробнича операційна дія. Це значно краще, ніж коли зміни зроблені десь у закритому конфігураторі й незрозуміло, хто, коли і що саме змінив. |- | Повторне використання | Моделі можна переносити між проєктами.index.php?title=Категорія:ORM

== Зовнішні посилання ==
Це дає багато переваг:

 title: "Менеджер з продажу"

<syntaxhighlight lang="yaml">

Замість того щоб вручну дублювати структуру в різних частинах системи, її можна один раз описати в [[YML]]. Але частину правил можна декларативно описати в [[YML]]. * таблиці;
* моделі;
* форми;
* меню;
* журнали;
* довідники;
* API;
* базові операції;
* службові структури. Журнал документів — це список документів певного типу, як приклад “Замовлення покупців”. - equipment
 depends_on:
== YML і бізнес-правила ==

== Рекомендації щодо структури YML-файлів ==

 required: true

Але головна цінність [[YML]] не в самому синтаксисі. SEO-опис
 sales_director:

== Автоматичне створення меню ==
! '''YML''' — це текстовий декларативний формат опису даних і налаштувань. Він прибирає рутину й дає можливість програмісту працювати на рівні архітектури. |-
| Журнали документів
| автоматизовано створені журнали для роботи з документами. ! Далі — коментар. Це дає можливість frontend-розробнику працювати з типізованими даними й зменшує кількість помилок. У старому підході програміст вручну створював:

Якщо структура системи розкидана по коду, базі, формах і меню, рефакторинг стає болючим. Він має багато службових тегів, які ускладнюють читання. title: "Сервісне обслуговування"

'''Перевага.''' Програміст не малює форму вручну з нуля. |-
| 7
| Програміст дописує складну логіку, яка не була описана в моделі.[[index.php?title=Категорія:Python]]

 - repair_request

 type: enum
 edrpou:
 when: "items.quantity or items.price changed"
 problem_description:
 delete: false
Такий SEO-опис здатна бути використаний для створення індексів у базі даних. Тобто [[YML]] стає проміжною мовою між бізнес-задумом і технічною реалізацією. validation:

Тоді роль людини змінюється.== конкурентні переваги YML у K2 ERP ==

 type: string

 id: int

 type: integer

== YML і PostgreSQL ==

Такий SEO-опис дає можливість централізовано визначати, хто здатна переглядати, створювати, редагувати, видаляти або погоджувати документи.</div>

Але базова ідея проста: якщо платформа знає структуру сутності, вона здатна створити типові API-операції автоматизовано. |}

 title: "E-mail"

Це дає можливість системі розуміти залежності між модулями. Тип
як приклад, компонент “продажі та реалізація” здатна містити свої сутності, документи, меню, права та форми. title: "Заявка на ремонт обладнання"
 customer_id:

 - draft
 title: "Назва"
 code: string;

{| class="wikitable" style="width:100%;"
[[YML]] якраз дає таку структуру. пріоритет, відповідальний інженер, статус. menu:

 type: decimal

 type: reference

Людина здатна прочитати файл і зрозуміти, що в ньому описано. '''Ключова ідея.''' [[YML]] — це мова опису структури, а не мова ручного програмування.<syntaxhighlight lang="text">
Приклад:
 title: "Товари"
 entity: warehouse

 menu:

[[index.php?title=Категорія:YAML]]

 - field: date

[[index.php?title=Категорія:No-code]]

 title: "Контрагент"

index.php?title=Категорія:K2

title: "Назва"

У цьому прикладі описано сутність `contractor`, яка виступає як довідником. |- | Чи замінює YML програміста? |- | ORM-модель | автоматизовано згенерована модель для роботи з базою даних у коді. Головна цінність у тому, що YML виступає як зрозумілим і для людини, і для машини.XML достатньо формальний і потужний, але часто виглядає занадто важким для людини.</syntaxhighlight> |- | Читабельність | YML швидко читати людині.YML дає можливість описувати ці зміни на рівні моделі, а не випадкових ручних правок. name: service_requests ! type: reference

Основною базою даних для K2 ERP виступає як PostgreSQL. Це формалізований SEO-опис бізнес-моделі, з якого платформа здатна автоматизовано створювати структури, ORM-моделі, міграції, код модуля, меню, довідники, журнали документів і форми документів. type: string

id: number;
  • неправильні відступи;
  • неузгоджені назви полів;
  • дублювання сутностей;
  • відсутність типів даних;
  • занадто складні структури в одному файлі;
  • спроба описати в YML те, що краще реалізувати в коді;
  • відсутність коментарів;
  • некоректні посилання на інші сутності;
  • невраховані права доступу;
  • неописані правила валідації. Підхід K2 ERP з YML

платформа здатна зрозуміти, що в таблицю потрібно додати нову колонку. name:

code:

Одна з важливих переваг K2 ERP — можливість створювати незалежні легкі компоненти, які швидко підтримувати й інтегрувати між собою. ! primary_key: true

Цей SEO-опис говорить системі, як розмістити поля на формі. id:

sales_manager:

DELETE /api/contractors/{id} Щоб YML-моделі залишалися зручними, варто дотримуватися кількох принципів. repair_request:

Формула. Ідея → ШІ → YML → ER-модель → ORM → міграції → код модуля → меню → довідники → журнали → форми → готовий компонент. title: "ЄДРПОУ"

type: directory

YML і ORM

YML у K2 ERP — це основа для такого підходу. title: "Назва"

entity: contractor
title: "Контрагент"

як приклад, якщо в ER-моделі виступає як сутність “Замовлення покупця”, яка пов’язана з “Контрагентом”, “Складом” і “Товаром”, то в YML це здатна бути описано через поля типу `reference`.index.php?title=Категорія:Цифрова незалежність України

values: fields: З такого опису платформа здатна автоматизовано створити довідник обладнання, документ заявки на ремонт, журнал заявок, форми, меню, ORM-моделі, міграції та базовий функції ERP. Якщо в YML описана сутність, платформа здатна автоматизовано створити відповідну ORM-модель. required: true Після цього людина перевіряє модель, уточнює промптами, додає або змінює поля, коригує зв’язки й акцептує автоматичне створення компонента. Пояснення - title: "Товари" Це не означає, що складні системи з’являються магічно без контролю.
* назву;
* версію;
* залежності;
* сутності;
* форми;
* меню;
* права;
* міграції;
* точки інтеграції.== YML і Python ==

 active: true

 - low

entity: contractor

[[YML]] добре підходить саме для опису структур, бо він лаконічний, читабельний і зручний для людини. - in_work

 - title: "Замовлення покупців"
 format: email
Якщо поле має тип `decimal`, можна перевірити числові значення. id:

 columns:

<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
бізнес-процес виглядає так:
 title: "Телефон"
Потрібні поля: номер, дата, клієнт ERP, обладнання, SEO-опис проблеми,
title: "Замовлення покупця"
 title: "Сума"
Не треба обіцяти, що програмісти зникнуть. |-
| Яка роль людини? Людина перевіряє цю модель, уточнює промптами й акцептує автоматичне створення компонента. contractors.yml
[[index.php?title=Категорія:PostgreSQL]]
У контексті [[K2 ERP]] [[YML]] застосовується для для того, щоб описувати не без зусиль параметри, а цілі бізнес-структури:
 default: normal
 fields:
 date:
 price: Decimal

<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
 primary_key: true
 section: "Сервіс"
'''Саме через [[YML]], [[ER-модель|ER-моделі]], [[ORM]], генерацію, модульність і [[AI|ШІ]] [[K2 ERP]] будує новий підхід до створення [[ERP]]-систем — швидший, легший, зрозуміліший і значно сучасніший за старі закриті технології.'''

 items.amount: "items.quantity * items.price"
 default: draft
== Коментарі в YML ==
[[index.php?title=Категорія:AI]]
 products.yml
== YML і повторне використання компонентів ==
== Що таке YML ==
 warehouse_id:
Додай табличну частину для виконаних робіт:

<syntaxhighlight lang="yaml">

Автоматичне створення журналу документів

[[ORM|ORM-модель]] потрібна для того, щоб програмний код міг працювати з базою даних не напряму через таблиці, а через об’єкти. У ньому виступає як:
Це принципово інший підхід до розробки. auto: true

 priority:

 calculated: true

 name:
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
це не без зусиль конфігураційний файл виступає ключовою рисою '''Головне.''' У [[K2 ERP]] [[YML]]. section: "Сервіс"
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
</div>
 fields:

<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
У [[K2 ERP]] [[YML]] застосовується для як міст між архітектурною ідеєю, [[ER-модель|ER-моделлю]], [[ORM|ORM-моделлю]], структурою бази даних, програмним кодом модуля, інтерфейсом користувача та автоматизовано створеним бізнес-додатком.

Якщо в YML сутність має тип `document`, платформа здатна автоматизовано створити журнал документів. id: number;

Python застосовується для для backend-логіки, бізнес-правил, API, інтеграцій, обробки даних і AI-сценаріїв. |}

- field: warehouse_id
Поле
== Коротко ==
entity: customer_order
'''YML у K2 ERP.''' Це не без зусиль “конфігурація”.== YML і валідація даних ==
 title: "Замовлення покупця"
 type: datetime
 title: "Дата"
У другому — контрагент і складський облік. Якщо структура цього модуля описана в [[YML]], її можна переносити між інсталяціями, використовувати як шаблон, розвивати й публікувати через [[K2 Update]]. amount:

 primary_key: true
Коментарі допомагають пояснити, навіщо потрібне поле або правило. Якщо змінюється документ “Замовлення покупця”, не потрібно відкривати файл на десять тисяч рядків. |-
| Чим [[YML]] корисний для партнерів? Він дає можливість сказати системі: “Ось як має виглядати компонент”, а далі платформа сама створює необхідні частини. type: text

Звичайно, реальна платформа здатна мати складніші правила доступу, фільтрації, валідації й бізнес-логіки. Для людини це зрозуміло як “у документі виступає як контрагент”. як приклад, з такого [[YML]]:

Коли людина описує ідею, [[AI|ШІ]] формує [[YML]], а [[K2 ERP]] автоматизовано створює компонент — розробка програмного забезпечення наближається до швидкості думки. Документи уточнюються. |-
| 3
| Людина перевіряє модель. Це SEO-опис, з якого здатна народжуватися готовий компонент. |-
| Прозорість
| Архітектуру компонента можна зрозуміти з текстового опису. Достатньо працювати з конкретним описом. type: enum
Попри простоту, з [[YML]] потрібно працювати уважно. Що відбувається

 amount:

Частину структури можна створювати візуально. - title: "Обладнання"

Це спрощені приклади, але вони показують суть: [[YML]] стає джерелом для генерації моделей у різних мовах програмування. |-
| Для чого застосовується для [[YML]]? access:
! Етап
 layout:

<syntaxhighlight lang="yaml">
depends_on:
 primary_key: true

 items:
component:
== YML і K2 Update ==

 entity: contractor

 - title: "Контрагенти"
title: "Сума"
type: string

Приклад YML-опису меню:

У підході K2 ERP значна частина цього здатна створюватися автоматизовано з YML. type: directory

type: integer
name:
- field: status
class Contractor(BaseModel):
values:

YML у K2 ERP — це мова, якою бізнес-ідея починає перетворюватися на працюючий компонент. Штучний інтелект особливо добре функціонує там, де виступає як зрозуміла структура. id:

- Автоматична генерація З YML можна створювати ORM, міграції, код, меню, форми й довідники. як приклад, якщо потрібно перейменувати поле, платформа здатна бачити, де воно застосовується для: у формі, журналі, API, звіті, правилах, правах доступу. | Перевірити структуру, уточнити промпти, акцептувати модель і дописати складну логіку, яку не було описано в промпті. rate:
- field: contractor_id

</syntaxhighlight>

serial_number:
title: "Роботи"
type: integer

Приклад:

JSON зручний для обміну даними між системами й дуже популярний у веб-розробці, але для великих конфігурацій і багаторівневих описів не завжди такий зручний для ручного редагування. Через це критично використовувати нормальні редактори, підсвічування синтаксису й перевірки. | Ні. title: "Статус"

У бізнес-системі критично, щоб користувач системи не міг зберегти некоректні інформаційні дані. Потім — таблична частина “Товари”. Це і виступає як програмування зі швидкістю думки. | Декларативний текстовий SEO-опис структур, моделей, форм, меню, документів, довідників і компонентів. платформа здатна прочитати файл і автоматизовано створити на його основі структуру, код, форми та інші елементи.== YML і TypeScript ==

auto: true

Що платформа здатна створити з такого YML

index.php?title=Категорія:Low-code YML-опис здатна бути використаний для створення структур у PostgreSQL: таблиць, колонок, індексів, зв’язків, обмежень і міграцій. |-

4 Людина уточнює промптами потрібні деталі.index.php?title=Категорія:ERP для інтеграторів

Якщо структура документа вже описана в YML, форма здатна бути розроблена автоматизовано. Людина описує структуру в декларативному вигляді. як приклад, для сутності `contractor` можуть бути автоматизовано створені маршрути:

roles:

title: "Контрагенти"

Місце YML в архітектурі K2 ERP

 menu.yml

 contractor_id:

 required: true
 active: boolean;
== YML і тестування ==
Якщо ж основа описана через [[YML]], зміни можна робити більш керовано. required: true
 type: enum

 type: string

Тобто один [[YML]]-опис здатна породити цілий набір технічних і функціональних елементів.<syntaxhighlight lang="diff">
! Обов’язкове
 type: decimal
 - row:

 date:
<syntaxhighlight lang="yaml">
 entity: customer_order
У [[K2 ERP]] ця читабельність особливо важлива, бо [[YML]] здатна використовуватися не тільки програмістами, а й архітекторами системи, інтеграторами, технічними консультантами та [[AI|штучним інтелектом]]. - name: idx_product_name
 type: string

Оскільки [[YML]] описує структуру компонента, з нього можна генерувати документацію. Якщо структура описана в [[YML]], можна автоматизовано генерувати частину тестів.== YML і AI ==

 - field: warehouse_id
entity: repair_request
Саме для цього в [[K2 ERP]] застосовується для [[YML]]. phone: str | None = None

'''Фундамент ERP.''' Структура бази даних повинна змінюватися керовано. * довідник обладнання;
* довідник видів робіт;
* документ “Заявка на ремонт”;
* документ “Акт виконаних робіт”;
* журнали документів;
* форми;
* звіти;
* ролі доступу. type: decimal

fields:

Це особливо критично для партнерів K2 ERP. title: "Сервісні заявки"

edrpou: str | None = None
type: integer

YML дає можливість прибрати цю рутину.index.php?title=Категорія:API

access:
type: string

journal:

edrpou?: string;
entity: repair_request

</syntaxhighlight>

price:

Якщо структура сутності описана в YML, платформа здатна використати цю інформацію для створення API. Але вони стають більш прозорими. З YML можна генерувати Python-моделі, схеми валідації, структури API та каркаси сервісів. * YML-опис структур;

  • ORM-моделі;
  • міграції;
  • frontend-компоненти;
  • backend-логіку;
  • звіти;
  • шаблони;
  • конфігурація меню;
  • права доступу. required: true

Приклад:

date:

Частину — генерувати за допомогою ШІ. Краще розділяти описи за модулями, компонентами або сутностями.== Типові помилки при роботі з YML == Компонент має зрозумілу структуру:

type: journal
entity: customer_order

через YML платформа здатна розуміти структуру компонента, створювати ORM-моделі, міграції, код, меню, довідники, журнали документів, форми документів і базовий функції ERP. платформа читає цей SEO-опис і розуміє, що потрібно створити. Він робить її керованою, структурованою і придатною для автоматичної генерації. fields:

title: "Виконані роботи"

Для системи це зрозуміло як зв’язок між таблицями, який можна використати для генерації ORM-моделі, форми, довідника, API та звітів.</syntaxhighlight>

Оскільки YML — це текстовий формат, його інтуїтивно зберігати в Git. active: bool = True YML у такому пакеті виконує роль зрозумілого опису структури компонента. email?: string;

read: true
required: true
|-
| Що таке [[YML]] у [[K2 ERP]]?<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
 title: "Податковий номер"
 title: "Ставка"
 title: "Ціна"
 id:
|-
| code
| string
| Код
| Так
|-
| name
| string
| Назва
| Так
|-
| edrpou
| string
| ЄДРПОУ
| Ні
|-
| active
| boolean
| Активний
| Ні
|}

 title: "Код"

 title: "Коментар"

 type: string

 type: string

[[ER-модель]] описує сутності та зв’язки між ними. Такий SEO-опис швидко прочитати навіть людині, яка не виступає як програмістом. Він описує структуру, а платформа створює форму автоматизовано. Це критично для продуктивності. У великих [[ERP]]-системах правильні індекси можуть значно прискорювати пошук, фільтрацію, побудову звітів і роботу журналів документів. number:

 quantity:
type: string
type: reference
required: true

Ручна розробка програмного забезпечення має сенс там, де потрібна складна логіка, нестандартні алгоритми, інтеграції або спеціальні сценарії. type: string

title: "складський облік"
fields:
type: integer
title: "Замовлення покупців"

index.php?title=Категорія:Штучний інтелект

product_id:

Частину — описувати вручну. |-

Меню автоматизовано сформовані пункти меню.ШІ формує YML-модель. ! type: datetime
title: "SEO-опис проблеми"

Повний приклад міні-компонента

Компонент здатна містити:

type: string
- field: total_amount
update: true
table_parts:

Якщо кожну таку сутність створювати вручну в коді, потім окремо описувати її в базі даних, потім окремо створювати форми, меню, довідники, журнали документів, права доступу та інтерфейси, розробка програмного забезпечення оперативно перетворюється на нескінченне дублювання. - name: idx_product_code

type: reference
approve: true

Нижче наведено умовний спрощений приклад YML-опису міні-компонента “Сервісні заявки”.K2 ERP автоматизовано створює компонент. Програміст дошліфовує складну логіку. fields:

required: true

Частину — дописувати програмно. |-

Чому YML зручний? |- AI-сумісність ШІ добре функціонує з текстовими структурованими описами. GET /api/contractors

Low-code і No-code часто обіцяють, що бізнес-середовище зможе створювати додатки без програмістів. Меню — ще одна частина, яку не потрібно кожного разу створювати вручну. type: string

критично. YML у K2 ERP не замінює програміста. Крок

invoice.yml

SEO title: YML у K2 ERP — декларативний опис структур, моделей, форм і компонентів

SEO keywords: YML, YAML, K2 ERP, ER-модель, ORM, ERP, AI ERP, автоматична генерація коду, структура бази даних, Python, TypeScript, PostgreSQL, бізнес-додатки, low-code ERP, no-code ERP, українська ERP, альтернатива 1С, альтернатива BAS

</noinclude>
 {{SEO
Шаблон для службового SEO-опису сторінки. 

}}


- sales
status:
number:

Програміст більше не виступає як людиною, яка вручну переносить одну й ту саму структуру з одного місця в інше.</syntaxhighlight>

section: "продажі та реалізація"

Для AI-розробки. ШІ здатна генерувати YML-структури за описом людини, фактично створюючи ER-модель майбутнього компонента. * поле назви;

  • поле дати;
  • посилання на контрагента;
  • табличну частину;
  • форму списку;
  • форму документа;
  • журнал;
  • меню;
  • базові CRUD-операції. type: string

З такого опису K2 ERP здатна автоматизовано створити розділ меню “продажі та реалізація” та додати до нього потрібні пункти.== YML і міграції бази даних ==

type: decimal
title: "Обладнання"

}

YML і API

name: string;

Таким чином, YML виступає як центральним текстовим описом, через який модель перетворюється на працюючий компонент.

equipment_id:
title: "Сума"
1 Так.TypeScript застосовується для для frontend-частини, компонентів інтерфейсу, типізації даних і взаємодії з API. type: journal
fields:

indexes:

works:

Таким чином, YML здатна бути джерелом не тільки для генерації коду, а й для перевірки якості. Документ — це не без зусиль форма. Приклад: Якщо компонент описаний через YML, його легше переносити, копіювати, адаптувати й розповсюджувати. |-

Чим YML корисний для бізнесу? title: "Номер"
  • сутності;
  • таблиці;
  • поля;
  • типи даних;
  • зв’язки;
  • документи;
  • довідники;
  • журнали документів;
  • форми документів;
  • меню;
  • компоненти;
  • права;
  • службові конфігурація;
  • елементи інтерфейсу;
  • правила генерації. Правильно:

index.php?title=Категорія:Альтернатива BAS

title: "Код"
- table_part: items
name: string;

YML і рефакторинг

Чим YML кращий за ручну розробку однакових структур

компонент “Сервіс” здатна використовувати частину довідників із модуля “продажі та реалізація”, але мати власні документи й процеси.
 - in_work

* структуру таблиці;
* [[ORM|ORM-модель]];
* міграцію бази даних;
* пункт меню;
* форму списку;
* форму картки;
* базові операції створення, редагування, перегляду та видалення;
* службові описи для компонента. Приклад простого опису товару в [[YML]]:
У старому підході програміст часто вручну пише [[SQL]]-скрипти, які створюють або змінюють таблиці. fields:
form:
 title: "Дата"

У цьому прикладі описано документ із шапкою та табличною частиною. title: "Кількість годин"
 work_name:
<syntaxhighlight lang="yaml">
Цей SEO-опис говорить системі, що e-mail має бути у правильному форматі, кількість не здатна бути меншою за 0.001, а дата виступає як обов’язковою. '''YML''' — декларативний текстовий формат опису структур. Створи YML-модель для документа "Заявка на ремонт обладнання". | дає можливість створювати переносимі компоненти, модулі, шаблони та галузеві рішення для бізнесу. |-
| Міграції
| Автоматичне створення або зміна структури бази даних. type: directory

 fields:
 required: true
 type: string

<syntaxhighlight lang="yaml">

 type: integer

[[index.php?title=Категорія:TypeScript]]

 title: "Статус"

 id: int

 title: "Кількість"
 number:
 phone?: string;
 entity: employee

Міграції потрібні для керованої зміни структури бази даних.</div>

menu:

 works:

У [[YML]] відступи мають значення.== Автоматичне створення форми документа ==

Приклад опису форми:
 type: decimal
== Див. так само ==
У журналі можуть відображатися:
 code:
 - field: comment
 name: service_requests
{| class="wikitable" style="width:100%;"
 name:

 entity: equipment

[[YML]] виступає як текстовим представленням такої моделі. |-
| Масштабованість
| платформа здатна рости без хаотичного дублювання структур. |-
| Версіонування
| [[YML]] інтуїтивно зберігати в [[Git]].
default: true
name: str
primary_key: true
required: true
title: "Товар"

index.php?title=Категорія:ERP для партнерів

type: document
type: text
- closed
Реалістичний low-code. YML не робить складну ERP магічно простою.
title: "SEO-опис проблеми"
entities:
edrpou:

K2 Update здатна використовувати YML як частину механізму доставки компонентів.== YML і модульність ==

Простий приклад YML-опису довідника

name: str

</syntaxhighlight>

У ERP критично не тільки створити інформаційні дані, а й правильно обмежити доступ до них. hours:

date:
type: string
title: "клієнт ERP"

contractor_id:

</syntaxhighlight>
status:

index.php?title=Категорія:YML

title: "Товари"

Це не означає, що всі зміни стають автоматизовано простими. Назва

items:
work_id:

PUT /api/contractors/{id}

price: number;

GET /api/contractors/{id}

equipment:

class Product(BaseModel): </syntaxhighlight>

- field: number
title: "Дата"
type: reference

YML у K2 ERP — це не без зусиль формат файлу. |-

Чи здатна ШІ створювати YML?index.php?title=Категорія:Альтернатива 1С

YML і незалежні компоненти

YML як основа програмування зі швидкістю думки

title: "Сервісні заявки"

Коли підключається ШІ, він здатна допомогти створити сам YML. |-

Декларативність Описується не “як програмувати”, а “що має бути створено”.index.php?title=Категорія:ERP для розробників

У підході K2 ERP структура описується через YML, а міграції можуть створюватися автоматизовано. * можна бачити історію змін;

  • можна порівнювати версії;
  • можна робити гілки розробки;
  • можна проводити code review;
  • можна відкотити помилкові зміни;
  • можна бачити, хто і коли змінив модель;
  • можна переносити моделі між проєктами. | Для автоматичного створення ORM-моделей, міграцій, програмного коду, меню, довідників, журналів документів і форм. платформа здатна використати цей SEO-опис для автоматичного створення списку документів з потрібними колонками. |-
ER-модель Архітектурний SEO-опис сутностей, зв’язків і структури майбутнього компонента. problem_description:
items:
title: "Робота"

Нижче наведено спрощений приклад YML-опису довідника “Контрагенти”. Він не замінює архітектора. Це означає, що людина перестає витрачати час на механічне дублювання.</syntaxhighlight>

required: true
title: "Обладнання"

Такий SEO-опис робить компонент зрозумілим для системи, розробника, партнера й ШІ. type: decimal

title: "Ціна"
set:

Цей фрагмент означає, що поле `contractor_id` виступає як посиланням на сутність `contractor`. title: "Назва"

Саме тому YML виступає як одним із фундаментів програмування зі швидкістю думки. На основі цього YML платформа здатна автоматизовано створити не тільки таблиці, а й журнал документів, форму документа та табличну частину. - normal

Якщо YML описує структуру сутності, то з нього можна автоматизовано створювати типи для frontend.<syntaxhighlight lang="yaml">

K2 ERP розвивається як модульна ERP платформа. customer_order.yml Але він прибирає величезний пласт рутини, який у старих системах забирав час, гроші, нерви й змушував програмістів вручну робити те, що давно має створюватися автоматизовано.<syntaxhighlight lang="yaml">

quantity:

Коментарі особливо корисні в складних галузевих модулях, де бізнес-логіка не завжди очевидна. product:

  • номер документа;
  • дата;
  • контрагент;
  • складський облік;
  • сума;
  • статус;
  • автор;
  • дата створення;
  • дата зміни.== Як AI і YML змінюють роль програміста ==
when: "items.amount changed"

Нижче наведено спрощений приклад YML-опису документа “Замовлення покупця”. Відповідь

type: reference