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

YML

Матеріал з K2 ERP Wiki
Версія від 16:07, 14 травня 2026, створена R (обговорення | внесок) (Створена сторінка: {{DISPLAYTITLE:YML}} {{SEO |title=YML у K2 ERP — декларативний опис структур, моделей, форм і компонентів |description=YML у K2 ERP використовується для опису структур бази даних, ER-моделей, ORM-моделей, форм, меню, довідників, документів, журналів документів, компонентів і автоматич...)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)

- field: date

title: "Номер"

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

date:
type: decimal
- field: date

У класичному програмуванні людина часто формулює ідею, потім програміст вручну перекладає її в таблиці, класи, форми, меню, інтерфейси, документи й логіку. date:

type: text

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

Приклад:

equipment:

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

У другому — контрагент і складський облік. Поле через YML користувачі можуть описати межі модуля. ! version: "1.0.0" Цей SEO-опис говорить системі, що e-mail має бути у правильному форматі, кількість не здатна бути меншою за 0.001, а дата виступає як обов’язковою. Це дає можливість системі розуміти залежності між модулями. sales/ YML — це текстовий декларативний формат опису даних і налаштувань. title: "Коментар"

type: string
work_name:
 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;">
== YML як міст між людиною і системою ==
 entity: contractor
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">

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

 type: reference
<syntaxhighlight lang="yaml">
![[AI|ШІ]] формує [[YML]]-модель. Приклад [[YML]]-опису меню:

</syntaxhighlight>

Як AI і YML змінюють роль програміста

бізнес-середовище змінюється. |- | 5 | Модель акцептується.

як приклад:

Зовнішні посилання

Оскільки YML — це текстовий формат, його інтуїтивно зберігати в Git. |}

! У старому підході програміст часто вручну пише SQL-скрипти, які створюють або змінюють таблиці. priority:

Типові помилки при роботі з YML

як приклад: YML здатна містити SEO-опис ролей і прав. YML дає можливість описати модель один раз, а далі використати цей SEO-опис для автоматичного створення багатьох частин системи. платформа здатна використати цей SEO-опис для автоматичного створення списку документів з потрібними колонками. У цьому прикладі описано сутність `contractor`, яка виступає як довідником. items.amount: "items.quantity * items.price"

Програміст більше не виступає як людиною, яка вручну переносить одну й ту саму структуру з одного місця в інше. Для людини це зрозуміло як “у документі виступає як контрагент”. |- | Повторне використання | Моделі можна переносити між проєктами. Обов’язкове

title: "Назва"

YML і Git

Форма документа — це те, з чим функціонує користувач системи. Це принципово інший підхід до розробки. |- | Чому YML зручний? платформа здатна прочитати файл і автоматизовано створити на його основі структуру, код, форми та інші елементи. entity: customer_order

type: decimal

Правильний підхід інший. price: 32000

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

{| class="wikitable" style="width:100%;"
Нижче наведено спрощений приклад [[YML]]-опису довідника “Контрагенти”. Це бізнес-подія. hours:
== Див. так само ==
Журнал документів — це список документів певного типу, як приклад “Замовлення покупців”. Підхід K2 ERP з YML

як приклад, компонент “продажі та реалізація” здатна містити свої сутності, документи, меню, права та форми.</div>
<syntaxhighlight lang="yaml">
 name: "Ноутбук Lenovo"
title: "Замовлення покупця"
Ручна розробка програмного забезпечення має сенс там, де потрібна складна логіка, нестандартні алгоритми, інтеграції або спеціальні сценарії. 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:

journal:

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

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

 primary_key: true

 type: reference

* [[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]]

 type: string

* [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]]-опис здатна породити цілий набір технічних і функціональних елементів. Програміст більше не переписує одну й ту саму структуру в різних місцях, а функціонує як архітектор, який описує модель і контролює результат. '''Для AI-розробки.''' [[AI|ШІ]] здатна генерувати [[YML]]-структури за описом людини, фактично створюючи [[ER-модель]] майбутнього компонента. * поле назви;
* поле дати;
* посилання на контрагента;
* табличну частину;
* форму списку;
* форму документа;
* журнал;
* меню;
* базові CRUD-операції. menu:

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

 auto: true

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

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

</div>

title: "Заявка на ремонт обладнання"

Або [[TypeScript]]-інтерфейс:
<syntaxhighlight lang="yaml">
компонент повинен бути достатньо незалежним, щоб його можна було встановити, оновити, видалити або замінити без руйнування всієї системи. |-
| Меню
| автоматизовано сформовані пункти меню. як приклад, якщо в [[YML]] додано нове поле:
== YML і модульність ==

Такий підхід спрощує підтримку. Пояснення

[[YML]] дає можливість описати компонент так, щоб він не був випадковим шматком коду. code:

class Contractor(BaseModel):

 id:

</div>

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

title: "Ціна"
price:
title: "Товар"
date:
read: true

як приклад, з опису довідника “Контрагенти” можна сформувати:

entity: equipment
type: enum
code:
unit: "шт"
unique: true
type: reference
problem_description:

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

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

== Повний приклад міні-компонента ==
 type: reference
компонент “Сервіс” здатна використовувати частину довідників із модуля “продажі та реалізація”, але мати власні документи й процеси. Він прибирає рутину й дає можливість програмісту працювати на рівні архітектури. |-
| Базовий функції ERP
| Початкові операції, які випливають з моделі. SEO-опис

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

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

</div>

* назву;
* версію;
* залежності;
* сутності;
* форми;
* меню;
* права;
* міграції;
* точки інтеграції.<syntaxhighlight lang="text">

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

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

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

 - field: number

[[Категорія:No-code]]

 - field: contractor_id

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

== Коротко ==

Саме для цього в [[K2 ERP]] застосовується для [[YML]].[[ORM|ORM-модель]] потрібна для того, щоб програмний код міг працювати з базою даних не напряму через таблиці, а через об’єкти. type: string

 edrpou:

! entity: contractor
+ title: "Дата доставки"
<syntaxhighlight lang="yaml">
== Вступ ==
 price: Decimal
menu:
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">

<syntaxhighlight lang="yaml">

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

[[AI|ШІ]] здатна згенерувати [[YML]]:

 - in_work

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

 edrpou: str | None = None

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

 - low

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

 access:

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

 required: true

== YML і K2 Update ==

fields:

 entity: customer_order

Це дає можливість уникнути хаотичних ручних змін у базі даних. Старий підхід

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

section: "Сервіс"
fields:

POST /api/contractors

name: string;

GET /api/contractors

entities:

}
 - row:

 type: datetime
 equipment_id:
== Висновок ==

! Не вся бізнес-логіка здатна бути описана без зусиль через поля й типи. fields:

У K2 ERP ця читабельність особливо важлива, бо YML здатна використовуватися не тільки програмістами, а й архітекторами системи, інтеграторами, технічними консультантами та штучним інтелектом. |- | Для чого застосовується для YML? entity: repair_request

required: true
values:
type: string
id: number;

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

Штучний інтелект особливо добре функціонує там, де виступає як зрозуміла структура. Що відбувається

type: integer

menu: Саме через YML, ER-моделі, ORM, генерацію, модульність і ШІ K2 ERP будує новий підхід до створення ERP-систем — швидший, легший, зрозуміліший і значно сучасніший за старі закриті технології.

set:
- closed

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

У контексті K2 ERP YML застосовується для для того, щоб описувати не без зусиль параметри, а цілі бізнес-структури:

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

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

rules: |- | ER-модель | Архітектурний SEO-опис сутностей, зв’язків і структури майбутнього компонента. title: "Кількість"

</syntaxhighlight>

entity: customer_order
title: "Роботи"
table_parts:

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

 title: "Код"
 - name: idx_product_name
 validation:

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

 type: reference
Він стає архітектором, який:
[[Категорія:ERP для партнерів]]
 title: "Заявка на ремонт"
 comment:

 - completed
<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:

 type: reference

 price: number;

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

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

 entities:

 status:

fields:
 calculate_amount:
 required: true
 update: true
products.yml

Але він прибирає величезний пласт рутини, який у старих системах забирав час, гроші, нерви й змушував програмістів вручну робити те, що давно має створюватися автоматизовано. | Він читабельний, текстовий, придатний для Git, автоматичної генерації та роботи з ШІ. fields: Частину структури можна створювати візуально. Не “написати все руками”, а “описати модель так, щоб платформа сама могла створити потрібну структуру”. Якщо структура документа вже описана в YML, форма здатна бути розроблена автоматизовано. як приклад, для сутності `contractor` можуть бути автоматизовано створені маршрути:

- draft

export interface Contractor {

  • структуру таблиці;
  • ORM-модель;
  • міграцію бази даних;
  • пункт меню;
  • форму списку;
  • форму картки;
  • базові операції створення, редагування, перегляду та видалення;
  • службові описи для компонента.
title: "Виконані роботи"

Частину — дописувати програмно. критично правильно описати структуру бізнесу. type: document

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

works:

генерації коду забезпечується через Для розробників. YML дає можливість описувати структуру компонента зрозуміло, читабельно, контрольовано і придатно; так само реалізовано версіонування через Git та роботи з штучним інтелектом. | Декларативний текстовий SEO-опис структур, моделей, форм, меню, документів, довідників і компонентів.

title: "Телефон"
total_amount: "sum(items.amount)"

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

entity: contractor
id:

fields:

title: "Сума"
customer_order.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-опису сторінки. 

}}


depends_on:

title: "SEO-опис проблеми"
primary_key: true

Тоді роль людини змінюється. * неправильні відступи;

  • неузгоджені назви полів;
  • дублювання сутностей;
  • відсутність типів даних;
  • занадто складні структури в одному файлі;
  • спроба описати в YML те, що краще реалізувати в коді;
  • відсутність коментарів;
  • некоректні посилання на інші сутності;
  • невраховані права доступу;
  • неописані правила валідації. title: "Робота"
title: "E-mail"
type: directory
- row:
- normal

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

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

Такі зв’язки можна описувати явно. type: string

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

 type: datetime

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

fields:

title: "Сервісні заявки" columns:
 product_id:
У великих системах рефакторинг неминучий. |-
| 6
| [[K2 ERP]] автоматизовано створює компонент. У [[K2 ERP]] [[YML]] застосовується для як міст між архітектурною ідеєю, [[ER-модель|ER-моделлю]], [[ORM|ORM-моделлю]], структурою бази даних, програмним кодом модуля, інтерфейсом користувача та автоматизовано створеним бізнес-додатком. ! permissions:
entity: contractor

</div>
Правильно:
 invoice.yml
 required: true

 title: "SEO-опис проблеми"

 email?: string;
Це інтуїтивно для розробників, інтеграторів, тестувальників і користувачів. Якщо структура системи розкидана по коду, базі, формах і меню, рефакторинг стає болючим. Крок

 title: "Години"

[[YML]] у [[K2 ERP]] — це основа для такого підходу. |-
| Прозорість
| Архітектуру компонента можна зрозуміти з текстового опису. | Так. product:

 quantity:
+ delivery_date:
 - in_work

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

 type: decimal

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

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

{| class="wikitable" style="width:100%;"
 title: "Замовлення покупця"
Приклад опису форми:

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

<syntaxhighlight lang="yaml">
Якщо структура цього модуля описана в [[YML]], її можна переносити між інсталяціями, використовувати як шаблон, розвивати й публікувати через [[K2 Update]]. title: "Замовлення покупців"

[[Категорія:Українське програмне забезпечення]]
 calculated: true
 work_id:
 type: boolean

[[YML]]-опис здатна бути використаний для створення структур у [[PostgreSQL]]: таблиць, колонок, індексів, зв’язків, обмежень і міграцій.[[Категорія:K2]]

 type: string
fields:
- sales

Цей SEO-опис говорить системі, як розмістити поля на формі. Це означає, що людина перестає витрачати час на механічне дублювання. Нижче наведено умовний спрощений приклад YML-опису міні-компонента “Сервісні заявки”. title: "Менеджер з продажу"

- Чи замінює YML програміста? sales_manager:

як приклад:

</syntaxhighlight>

 title: "Статус"

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

 type: journal

DELETE /api/contractors/{id}

 type: decimal

 name:

'''YML у K2 ERP.''' Це не без зусиль “конфігурація”.[[Категорія:Low-code]]

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

 warehouse_id:

== YML і PostgreSQL ==

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

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

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

 items:
rate:
 required: true

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

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

 fields:

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

 title: "Назва"

Це спрощені приклади, але вони показують суть: YML стає джерелом для генерації моделей у різних мовах програмування. name: service_requests

name: str
id:

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

tax_number:

З наведеного YML-опису K2 ERP здатна автоматизовано сформувати:

  • таблицю в базі даних;
  • ORM-модель;
  • міграцію;
  • пункт меню “Контрагенти”;
  • список контрагентів;
  • форму картки контрагента;
  • базові операції додавання, редагування, перегляду та видалення;
  • службові конфігурація компонента;
  • основу для API-доступу;
  • основу для використання у звітах;
  • основу для інтеграції з іншими документами.

конкурентні переваги YML у K2 ERP

title: "Пріоритет"
email: str | None = None

Компонент здатна містити: Таблична частина містить товари, кількість, ціну й суму.== YML як основа програмування зі швидкістю думки ==

Саме це і робить YML важливим для швидкої розробки. Через це критично використовувати нормальні редактори, підсвічування синтаксису й перевірки. title: "Кількість" Коли підключається ШІ, він здатна допомогти створити сам YML. type: directory

required: true

</syntaxhighlight>

set:
title: "Обладнання"
title: "Робота"

У сучасній ERP-системі критично не тільки написати код.== Що таке YML ==

title: "Назва"

Він не замінює складну бізнес-логіку. title: "Ставка"

type: integer

Коментарі в YML

У бізнес-системі критично, щоб користувач системи не міг зберегти некоректні інформаційні дані. |}

name:

export interface Product {

Такий SEO-опис здатна бути використаний для створення індексів у базі даних. Окремо варто відзначити моделей, налаштувань, компонентів, форм, меню, довідників, документів і інших елементів системи K2 ERP.

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

 required: true
== YML і API ==
У бізнес-системах давно використовуються різні формати опису даних: [[XML]], [[JSON]], [[YML]] та інші. type: decimal
 fields:
Приклад простого опису товару в [[YML]]:
active: true
entity: employee
- table_part: items

як приклад, якщо потрібно перейменувати поле, платформа здатна бачити, де воно застосовується для: у формі, журналі, API, звіті, правилах, правах доступу. YML — декларативний текстовий формат опису структур. |-

Декларативність Описується не “як програмувати”, а “що має бути створено”. Людина описує структуру в декларативному вигляді. У старому підході програміст вручну створював:
type: enum

YML і валідація даних

- field: number

У журналі можуть відображатися:

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

</syntaxhighlight>

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

 title: "Товари"

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

Коментарі особливо корисні в складних галузевих модулях, де бізнес-логіка не завжди очевидна. Звичайно, реальна платформа здатна мати складніші правила доступу, фільтрації, валідації й бізнес-логіки. Людина перевіряє цю модель, уточнює промптами й акцептує автоматичне створення компонента.[[K2 ERP]] автоматизовано створює компонент. | Для автоматичного створення [[ORM|ORM-моделей]], міграцій, програмного коду, меню, довідників, журналів документів і форм. {| 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;">

 required: true

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

 type: string

== Простий приклад YML-опису довідника ==
Якщо в [[YML]] сутність має тип `document`, платформа здатна автоматизовано створити журнал документів.== Чому саме YML ==

== YML і TypeScript ==

 title: "E-mail"
+ type: date
 phone: str | None = None

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

 title: "Дата"

Частину — генерувати за допомогою [[AI|ШІ]].{{DISPLAYTITLE:YML}}
repair_request:
- contractors
  • формулює задачу;
  • перевіряє модель;
  • уточнює структуру;
  • контролює якість;
  • акцептує створення компонента;
  • дописує складну логіку, яка не була описана в промпті. З такого опису платформа здатна автоматизовано створити довідник обладнання, документ заявки на ремонт, журнал заявок, форми, меню, ORM-моделі, міграції та базовий функції ERP. |-
Довідники автоматизовано створені довідники. як приклад, з такого YML:
calculated: true

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

amount:
- field: warehouse_id
min: 0.001

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

title: "складський облік"
create: true
default: draft

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

type: string
default: normal
type: string

Документ — це не без зусиль форма. здатна бути автоматизовано розроблена умовна Python-модель:

YML і ORM

entity: product

primary_key: true
format: email
approve: true
name:
contractor_id:
entity: product

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

version: "1.0.0"

YML дає можливість прибрати цю рутину. Але головна цінність YML не в самому синтаксисі. Ключова ідея. YML — це мова опису структури, а не мова ручного програмування. | Ні. - title: "Товари"

# застосовується для для перевірки контрагента та інтеграцій із зовнішніми сервісами
access:

Він не замінює досвід. type: string

Коли до цього підключається штучний інтелект, людина здатна описати задум людською мовою, отримати YML-модель, перевірити її, уточнити промптами й акцептувати автоматичне створення компонента.== Автоматичне створення меню ==

fields:
roles:

PUT /api/contractors/{id}

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

title: "ЄДРПОУ"
title: "Активний"
code: str

Потім — таблична частина “Товари”. |-

AI-сумісність ШІ добре функціонує з текстовими структурованими описами.YML якраз дає таку структуру. Він робить її керованою, структурованою і придатною для автоматичної генерації. |- 3 Людина перевіряє модель.== YML і бізнес-правила ==
type: integer

</syntaxhighlight>

Це дає можливість не без зусиль передати “набір файлів”, а передати керовану модель, яку платформа здатна встановити, оновити або перевірити. |-

4 Перевірити структуру, уточнити промпти, акцептувати модель і дописати складну логіку, яку не було описано в промпті. active:
type: datetime
- completed
! Він прибирає рутину. Частина логіки застаріває. Коментарі допомагають пояснити, навіщо потрібне поле або правило.<syntaxhighlight lang="yaml">

<syntaxhighlight lang="yaml">

 title: "Сума"

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

 - closed
type: directory
fields:
 values:

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

Якщо структура описана в YML, можна автоматизовано генерувати частину тестів. |-

Код модуля автоматизовано створений програмний каркас компонента.</syntaxhighlight>
entity: product
type: document
title: "Код"
phone:

Приклад:

id:
- field: status

class Product(BaseModel):

type: decimal
primary_key: true
edrpou?: string;
title: "Відповідальний інженер"

YML і міграції бази даних

YML і тестування

Якщо ж основа описана через YML, зміни можна робити більш керовано. Фундамент ERP. Структура бази даних повинна змінюватися керовано. primary_key: true

- row:

component: бізнес-процес виглядає так: fields:

title: "Обладнання"
ER-модель описує сутності та зв’язки між ними.
type: string
type: decimal
type: decimal
fields:
type: string
code string Код Так
name string Назва Так
edrpou string ЄДРПОУ Ні
active boolean Активний Ні
type: text
email:
number:

YML і ER-модель

</syntaxhighlight>

type: string
- field: comment
id: number;

Таким чином, YML здатна бути джерелом не тільки для генерації коду, а й для перевірки якості. layout: через YML платформа здатна розуміти структуру компонента, створювати ORM-моделі, міграції, код, меню, довідники, журнали документів, форми документів і базовий функції ERP. Але вони стають більш прозорими. Вона має поля: ідентифікатор, код, назву, ЄДРПОУ, телефон, e-mail та ознаку активності. active: bool = True

id: int

</syntaxhighlight>

title: "Серійний номер"

contractor_id:

when: "items.quantity or items.price changed"

Додай табличну частину для виконаних робіт:

title: "Податковий номер"
title: "Дата"
type: reference

</syntaxhighlight>

type: string

Людина здатна прочитати файл і зрозуміти, що в ньому описано. Достатньо працювати з конкретним описом. Міграції потрібні для керованої зміни структури бази даних. - title: "Замовлення покупців" Такий SEO-опис швидко прочитати навіть людині, яка не виступає як програмістом. |-

Яка роль людини? Програмісту залишається важливіша робота: подумати, чи правильно побудована модель, чи не буде проблем зі зв’язками, чи відповідає структура реальному бізнесу, яку складну логіку треба дописати окремо. Він описує структуру, а платформа створює форму автоматизовано.K2 Update здатна використовувати YML як частину механізму доставки компонентів.
 price:

 contractor_id:

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

 required: true

Далі — коментар. |-

YML-структура Декларативний текстовий SEO-опис моделі, який здатна бути створений людиною, редактором або ШІ. serial_number:

</syntaxhighlight> } Попри простоту, з YML потрібно працювати уважно. |-

Версіонування YML інтуїтивно зберігати в Git.

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

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

type: decimal
when: "items.amount changed"

</syntaxhighlight> Це особливо критично для партнерів K2 ERP. Відповідь

type: reference

Приклад опису документа

- repair_request
- code

У цьому прикладі описано документ із шапкою та табличною частиною. Програміст дошліфовує складну логіку. |-

Автоматична генерація З YML можна створювати ORM, міграції, код, меню, форми й довідники. required: true
primary_key: true

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

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

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

table_parts:

</syntaxhighlight>

<syntaxhighlight lang="yaml">

- draft
  • номер документа;
  • дата;
  • контрагент;
  • складський облік;
  • сума;
  • статус;
  • автор;
  • дата створення;
  • дата зміни. code: "000001"
depends_on:
read: true

Щоб YML-моделі залишалися зручними, варто дотримуватися кількох принципів. Питання

engineer_id: