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

YML

Матеріал з K2 ERP Wiki

type: datetime

delete: false
type: reference Ключова ідея.YML — це мова опису структури, а не мова ручного програмування.;ШІ має змогу генерувати YML за описом людини, фактично створюючи ER-модель майбутнього компонента.; !; | надає можливість створювати переносимі компоненти, модулі, шаблони та галузеві рішення для бізнесу.; У контексті K2 ERPYML застосовується для того, щоб описувати не без ускладнень параметри, а цілі бізнес-структури: title: "Робота" YML — це текстовий декларативний формат опису даних і налаштувань.; Для AI-розробки.ШІ має змогу генерувати YML-структури за описом людини, фактично створюючи ER-модель майбутнього компонента.;== YML як міст між людиною і системою == serial_number: Правильно: Оскільки YML — це текстовий формат, його комфортно зберігати в Git.;== YML і модульність == </syntaxhighlight> number: У бізнес-системі істотно, щоб користувач системи не міг зберегти некоректні інформаційні дані.; type: reference Але головна цінність YML не в самому синтаксисі.;TypeScript застосовується для frontend-частини, компонентів інтерфейсу, типізації даних і взаємодії з API.; primary_key: true type: text type: reference title: "Назва"

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

table_parts:

required: true
; title: "Сума"

Приклад: + delivery_date:

required: true

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

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

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

</syntaxhighlight> Або TypeScript-інтерфейс:

- field: number

PUT /api/contractors/{id}

З YML можна генерувати Python-моделі, схеми валідації, структури API та каркаси сервісів.;K2 ERP автономно створює компонент.; - high

work_id:

У K2 ERP ця читабельність особливо важлива, бо YML має змогу використовуватися не тільки програмістами, а й архітекторами системи, інтеграторами, технічними консультантами та штучним інтелектом.; У K2 ERP YML є собою частиною загального ланцюжка автоматичного створення компонентів.; У класичному програмуванні людина часто формулює ідею, потім програміст вручну перекладає її в таблиці, класи, форми, меню, інтерфейси, документи й логіку.; title: "Контрагент"

Якщо структура цього модуля описана в YML, її можна переносити між інсталяціями, використовувати як шаблон, розвивати й публікувати через K2 Update.; Щоб YML-моделі залишалися зручними, варто дотримуватися кількох принципів.; Назва

- field: comment
primary_key: true

Одна з важливих переваг K2 ERP — можливість створювати незалежні легкі компоненти, які без зайвих зусиль підтримувати й інтегрувати між собою.; items: Це значно краще, ніж коли зміни зроблені десь у закритому конфігураторі й незрозуміло, хто, коли і що саме змінив.; type: boolean index.php?title=Категорія:K2 ERP

type: reference
title: "Робота"
# застосовується для перевірки контрагента та інтеграцій із зовнішніми сервісами
- closed

переважні аспекти YML у K2 ERP

- 2 ШІ створює YML-структуру.; type: decimal
- field: date
rate:
Людина описує структуру в декларативному вигляді.; Якщо компонент описаний через YML, його легше переносити, копіювати, адаптувати й розповсюджувати.; class Product(BaseModel): type: string </syntaxhighlight> min: 0.001 У другому — контрагент і складський облік.; * назву;
  • версію;
  • залежності;
  • сутності;
  • форми;
  • меню;
  • права;
  • міграції;
  • точки інтеграції.; |-
Прозорість Архітектуру компонента можна зрозуміти з текстового опису.; entity: warehouse
- normal

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

У старому підході програміст вручну створював:

fields:

У ERP істотно не тільки створити інформаційні дані, а й правильно обмежити доступ до них.; title: "Сума" entity: customer_order

Див.; додатково

Попри простоту, з YML потрібно працювати уважно.; Але вони стають більш прозорими.; YML — декларативний текстовий формат опису структур.; title: "Роботи"

required: true

Людина має змогу прочитати файл і зрозуміти, що в ньому описано.; Міграції потрібні для керованої зміни структури бази даних.;YML надає можливість описувати ці зміни на рівні моделі, а не випадкових ручних правок.; Якщо кожну таку сутність створювати вручну в коді, потім окремо описувати її в базі даних, потім окремо створювати форми, меню, довідники, журнали документів, права доступу та інтерфейси, розробка програмного забезпечення оперативно перетворюється на нескінченне дублювання.; Але базова ідея проста: якщо платформа знає структуру сутності, вона має змогу створити типові API-операції автономно.;index.php?title=Категорія:K2

phone:

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

Це надає можливість frontend-розробнику працювати з типізованими даними й зменшує кількість помилок.; Через це істотно використовувати нормальні редактори, підсвічування синтаксису й перевірки.; engineer_id:

Приклад:

name: "Ноутбук Lenovo"

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

primary_key: true

entities: завдяки наявності YML користувачі можуть описати межі модуля.; edrpou:

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

Частину структури можна створювати візуально.; {| class="wikitable" style="width:100%;" component:

; Далі — коментар.;</syntaxhighlight>
- field: contractor_id
section: "Сервіс"
access:
edrpou?: string;
version: "1.0.0"
hours:

YML має змогу описувати правила валідації.; Тип

title: "Дата"

YML і low-code/no-code

depends_on:
calculate_total:

Якщо змінюється документ “Замовлення покупця”, не потрібно відкривати файл на десять тисяч рядків.;YML у такому пакеті виконує роль зрозумілого опису структури компонента.; Це формалізований характеристика бізнес-моделі, з якого платформа має змогу автономно створювати структури, ORM-моделі, міграції, код модуля, меню, довідники, журнали документів і форми документів.; quantity:

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

entity: employee
required: true

як ілюстрація:

price: number;
type: string

Формула. Ідея → ШІYMLER-модельORM → міграції → код модуля → меню → довідники → журнали → форми → готовий компонент.; Якщо структура сутності описана в YML, платформа має змогу використати цю інформацію для створення API.; У ньому є собою:

type: decimal

Такі зв’язки можна описувати явно.; permissions.yml

Таблична частина містить товари, кількість, ціну й суму.; required: true

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

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

YML і K2 Update

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

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

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

title: "Назва"
code: string;
code: "000001"
- name: idx_product_name
fields:

</syntaxhighlight>

active: boolean;
title: "Податковий номер"

Цей характеристика говорить системі, як розмістити поля на формі.; Він надає можливість сказати системі: “Ось як має виглядати компонент”, а далі платформа сама створює необхідні частини.; Зв’язки перебудовуються.; entity: contractor

Меню — ще одна частина, яку не потрібно кожного разу створювати вручну.; Компонент має зрозумілу структуру:

title: "Сума"
type: string

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

  • довідник обладнання;
  • довідник видів робіт;
  • документ “Заявка на ремонт”;
  • документ “Акт виконаних робіт”;
  • журнали документів;
  • форми;
  • звіти;
  • ролі доступу.; Він прибирає рутину й надає можливість програмісту працювати на рівні архітектури.; |-
5 - Міграції Автоматичне створення або зміна структури бази даних.; entity: repair_request
 title: "складський облік"

 create: true
 entity: equipment
}

== YML і валідація даних ==
rules:
__TOC__
 quantity:
Це не означає, що складні системи з’являються магічно без контролю.; validation:

 id:

 update: true

 sales_manager:
</div>
 title: "Ставка"

Нижче наведено спрощений приклад [[YML]]-опису документа “Замовлення покупця”.; Він описує структуру, а платформа створює форму автономно.; + type: date

 calculate_amount:

module: service

 version: "1.0.0"

[[YML]] якраз дає таку структуру.; Довідники важливі, але справжня сила [[ERP]] розкривається в документах.; |}

 works:

У бізнес-системах давно використовуються різні формати опису даних: [[XML]], [[JSON]], [[YML]] та інші.;[[AI|ШІ]] формує [[YML]]-модель.; Такий характеристика має змогу бути використаний для створення індексів у базі даних.; |-
| Для чого застосовується [[YML]]?; - draft

<syntaxhighlight lang="python">

 email:

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

'''Правильний баланс.''' [[YML]] описує те, що можна формалізувати.; Він має багато службових тегів, які ускладнюють читання.; type: datetime

<syntaxhighlight lang="text">

 type: string

 type: string

fields:

== YML і тестування ==
 required: true
 required: true
 default: normal
class Contractor(BaseModel):
== Що платформа має змогу створити з такого YML ==
 - field: number
type: document

<syntaxhighlight lang="yaml">

 entity: contractor

 items.amount: "items.quantity * items.price"

 id:

</div>

 price:

{| class="wikitable" style="width:100%;"

* структуру таблиці;
* [[ORM|ORM-модель]];
* міграцію бази даних;
* пункт меню;
* форму списку;
* форму картки;
* базові операції створення, редагування, перегляду та видалення;
* службові описи для компонента.; - draft
 format: email

fields:
<syntaxhighlight lang="yaml">
 - title: "Замовлення покупців"
 type: string

 approve: true
Це істотно для продуктивності.; | Так.; works:

Такий характеристика без зайвих зусиль прочитати навіть людині, яка не є собою програмістом.; |-
| AI-сумісність
| [[AI|ШІ]] добре функціонує з текстовими структурованими описами.; type: reference
== YML і повторне використання компонентів ==

</div>
 type: string
 - warehouse
Приклад:

 - completed
 entity: contractor
== YML і TypeScript ==
 primary_key: true

}
 title: "Назва"
На основі цього [[YML]] платформа має змогу автономно створити не тільки таблиці, а й журнал документів, форму документа та табличну частину.; name:
 id:

== Коментарі в YML ==
 required: true
== Автоматичне створення форми документа ==
як ілюстрація:
[[index.php?title=Категорія:Українське програмне забезпечення]]

!;== Типові помилки при роботі з YML ==
Замість того щоб вручну дублювати структуру в різних частинах системи, її можна один раз описати в [[YML]].; title: "Замовлення покупця"
title: "Дата"
product_id:
invoice.yml

</syntaxhighlight> index.php?title=Категорія:YAML

active: true

Якщо поле є собою посиланням на іншу сутність, можна перевірити коректність зв’язку.; |-

Масштабованість платформа має змогу рости без хаотичного дублювання структур.; Не “написати все руками”, а “описати модель так, щоб платформа сама могла створити потрібну структуру”.; Але він прибирає величезний пласт рутини, який у старих системах забирав час, гроші, нерви й змушував програмістів вручну робити те, що давно має створюватися автономно.; type: directory
entity: service_work
K2 Update має змогу використовувати YML як частину механізму доставки компонентів.; Програміст дошліфовує складну логіку.;ШІ має змогу згенерувати YML: title: "Код" table_parts: default: draft </syntaxhighlight> Приклад: repair_request: customer_id: - row: title: "Відповідальний інженер" menu: Не треба обіцяти, що програмісти зникнуть.; - crm fields: index.php?title=Категорія:Low-codeORM-модель потрібна для того, щоб програмний код міг працювати з базою даних не напряму через таблиці, а через об’єкти.;
email?: string;
columns:
- title: "Заявки на ремонт"

робота, кількість годин, ставка, сума.; Документи уточнюються.; - field: warehouse_id

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

Це надає можливість не без ускладнень передати “набір файлів”, а передати керовану модель, яку платформа має змогу встановити, оновити або перевірити.;index.php?title=Категорія:PostgreSQL

YML і документація

phone?: string;
type: string

компонент повинен бути достатньо незалежним, щоб його можна було встановити, оновити, видалити або замінити без руйнування всієї системи.; title: "E-mail"

calculated: true

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

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

Висновок

id:
title: "Ціна"
required: true

Створи YML-модель для документа "Заявка на ремонт обладнання".; type: integer

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

 title: "замовник"

</div>
як ілюстрація, партнерська сторона створив компонент “Сервісне обслуговування обладнання”.;[[index.php?title=Категорія:Альтернатива BAS]]

Саме з цієї причини YML є собою одним із фундаментів програмування зі швидкістю думки.;== YML і Git ==

price: 32000

Коротко

YML і Python

fields:

YML надає можливість описати компонент так, щоб він не був випадковим шматком коду.; |-

Журнали документів автономно створені журнали для роботи з документами.; Перевага
when: "items.quantity or items.price changed"

Оскільки YML описує структуру компонента, з нього можна генерувати документацію.; !; name: str

type: string

YML і ER-модель

Він не замінює досвід.; | Перевірити структуру, уточнити промпти, акцептувати модель і дописати складну логіку, яку не було описано в промпті.; name: string;

!; * поле назви;
* поле дати;
* посилання на контрагента;
* табличну частину;
* форму списку;
* форму документа;
* журнал;
* меню;
* базові CRUD-операції.;<syntaxhighlight lang="text">
 id: number;

 title: "Дата"
 title: "Дата"
 type: string

 - name: idx_product_code
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">

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

fields:

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

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

journal:

Нижче наведено спрощений приклад [[YML]]-опису довідника “Контрагенти”.; Поля додаються.;<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">

 problem_description:
 type: decimal
 title: "Пріоритет"
У цьому прикладі описано документ із шапкою та табличною частиною.; платформа має змогу прочитати файл і автономно створити на його основі структуру, код, форми та інші елементи.; |-
| Автоматична генерація
| З [[YML]] можна створювати [[ORM]], міграції, код, меню, форми й довідники.;</div>

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

 read: true
Потім — таблична частина “Товари”.; Краще розділяти описи за модулями, компонентами або сутностями.; Етап

<syntaxhighlight lang="yaml">

 - code

 - title: "Товари"

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

{{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
}}

 type: string

 phone: str | None = None

* номер документа;
* дата;
* контрагент;
* складський облік;
* сума;
* статус;
* автор;
* дата створення;
* дата зміни.;== Чому саме YML ==

 products.yml

 when: "items.amount changed"

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

* формулює задачу;
* перевіряє модель;
* уточнює структуру;
* контролює якість;
* акцептує створення компонента;
* дописує складну логіку, яка не була описана в промпті.; Відповідь

 status:

 roles:
 required: true
[[index.php?title=Категорія:Штучний інтелект]]
 entity: customer_order
[[index.php?title=Категорія:API]]
 type: datetime
== YML і бізнес-правила ==

 entity: customer_order

Шапка документа містить номер, дату, контрагента, складський облік і коментар.; title: "Менеджер з продажу"

Але частину правил можна декларативно описати в [[YML]].; amount:

 menu.yml

компонент “Сервіс” має змогу використовувати частину довідників із модуля “продажі та реалізація”, але мати власні документи й процеси.; required: true
export interface Product {
 - row:
<syntaxhighlight lang="typescript">

<syntaxhighlight lang="python">
 read: true
 - name
пріоритет, відповідальний інженер, статус.;
title: "Коментар"

платформа має змогу використати цей характеристика для автоматичного створення списку документів з потрібними колонками.; Програмісту залишається важливіша робота: подумати, чи правильно побудована модель, чи не буде проблем зі зв’язками, чи відповідає структура реальному бізнесу, яку складну логіку треба дописати окремо.; !; Фундамент ERP. Структура бази даних повинна змінюватися керовано.; required: true

type: string

Це особливо істотно для партнерів K2 ERP.; - field: status index.php?title=Категорія:ERP для партнерів

comment:
items:

</syntaxhighlight>

YML у K2 ERP. Це не без ускладнень “конфігурація”.; Не вся бізнес-логіка має змогу бути описана без ускладнень через поля й типи.; завдяки наявності YML платформа має змогу розуміти структуру компонента, створювати ORM-моделі, міграції, код, меню, довідники, журнали документів, форми документів і базовий функціональні можливості.; Це характеристика, з якого має змогу народжуватися готовий компонент.; |-

Чому YML зручний?; |- 4 Людина уточнює промптами потрібні деталі.;== YML і незалежні компоненти ==

У першому рядку — номер і дата.; Видно, що описується товар, у якого є собою код, назва, одиниця виміру, ціна та ознака активності.; |-

Чим YML корисний для партнерів?; Людина перевіряє цю модель, уточнює промптами й акцептує автоматичне створення компонента.; title: "Дата"
name: service_requests

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

type: directory

type: decimal
type: datetime
- critical
title: "Заявка на ремонт обладнання"
має змогу бути автономно розроблена умовна [[Python]]-модель:

GET /api/contractors
 title: "Заявка на ремонт"
[[YML]] добре підходить саме для опису структур, бо він лаконічний, читабельний і зручний для людини.; type: directory

<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
 type: string
'''AI + YML.''' Людина описує задум.; платформа читає цей характеристика і розуміє, що потрібно створити.; Нижче наведено умовний спрощений приклад [[YML]]-опису міні-компонента “Сервісні заявки”.; type: integer

 - field: contractor_id

 type: journal

fields:

 edrpou:
 - equipment
Це надає можливість системі розуміти залежності між модулями.; required: true

 name:
== YML і рефакторинг ==
 type: integer
|-
| Читабельність
| [[YML]] без зайвих зусиль читати людині.; type: directory
 required: true

 date:
<syntaxhighlight lang="typescript">

як ілюстрація, з такого [[YML]]:
== Вступ ==

depends_on:
 fields:

Якщо ж основа описана через [[YML]], зміни можна робити більш керовано.; |-
| Чим [[YML]] корисний для бізнесу?; - low

[[YML]] у [[K2 ERP]] — це не без ускладнень формат файлу.; equipment_id:
 type: enum
== YML і PostgreSQL ==

 calculated: true

 - field: warehouse_id
 title: "Товари"
платформа має змогу зрозуміти, що в таблицю потрібно додати нову колонку.; Програміст більше не переписує одну й ту саму структуру в різних місцях, а функціонує як архітектор, який описує модель і контролює результат.; Якщо в [[YML]] описана сутність, платформа має змогу автономно створити відповідну [[ORM|ORM-модель]].; Він робить її керованою, структурованою і придатною для автоматичної генерації.; У сучасній [[ERP]]-системі істотно не тільки написати код.; Ручна розробка програмного забезпечення має сенс там, де потрібна складна логіка, нестандартні алгоритми, інтеграції або спеціальні сценарії.; type: enum
 title: "Статус"
Правильний підхід інший.; * таблицю в базі даних;
* [[ORM|ORM-модель]];
* міграцію;
* пункт меню “Контрагенти”;
* список контрагентів;
* форму картки контрагента;
* базові операції додавання, редагування, перегляду та видалення;
* службові конфігурація компонента;
* основу для API-доступу;
* основу для використання у звітах;
* основу для інтеграції з іншими документами.; |-
| Чи має змогу [[AI|ШІ]] створювати [[YML]]?; |}

Це комфортно для розробників, інтеграторів, тестувальників і користувачів.; title: "характеристика проблеми"
Приклад:
== Повний приклад міні-компонента ==
як ілюстрація, з опису довідника “Контрагенти” можна сформувати:
як ілюстрація, для сутності `contractor` можуть бути автономно створені маршрути:

 - repair_request
Журнал документів — це список документів певного типу, як ілюстрація “Замовлення покупців”.; Що відбувається
warehouse_id:
У підході K2 ERP структура описується через YML, а міграції можуть створюватися автономно.;
 date:
як ілюстрація, якщо в [[ER-модель|ER-моделі]] є собою сутність “Замовлення покупця”, яка пов’язана з “Контрагентом”, “Складом” і “Товаром”, то в [[YML]] це має змогу бути описано через поля типу `reference`.; auto: true
 title: "ЄДРПОУ"
component:
 title: "Телефон"

 - table_part: items
Частину — дописувати програмно.; Частину — описувати вручну.; Він прибирає рутину.;<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
 fields:

 title: "Обладнання"
[[index.php?title=Категорія:ERP для інтеграторів]]
<syntaxhighlight lang="yaml">
== Автоматичне створення меню ==

entity: repair_request
 type: decimal
 title: "Години"

 type: text
 type: integer
Він не замінює архітектора.; priority:

 edrpou: str | None = None

 validation:

У великих системах рефакторинг неминучий.; type: reference

[[ER-модель]] описує сутності та зв’язки між ними.; |-
| [[YML]]-структура
| Декларативний текстовий характеристика моделі, який має змогу бути створений людиною, редактором або [[AI|ШІ]].;
- service_work

Якщо YML описує структуру сутності, то з нього можна автономно створювати типи для frontend.; Крок

type: integer

contractor_id:

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

  • таблиці;
  • моделі;
  • форми;
  • меню;
  • журнали;
  • довідники;
  • API;
  • базові операції;
  • службові структури.; |-
Декларативність Описується не “як програмувати”, а “що має бути створено”.;</syntaxhighlight>

POST /api/contractors

create: true
'''Реалістичний low-code.''' [[YML]] не робить складну ERP магічно простою.; |-
| Меню
| автономно сформовані пункти меню.; fields:

 values:

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

!; |-
| Базовий функціональні можливості
| Початкові операції, які випливають з моделі.; Основною базою даних для [[K2 ERP]] є собою [[PostgreSQL]].; |-
| 3
| Людина перевіряє модель.; number:

 id: number;

 fields:

<syntaxhighlight lang="yaml">

Приклад умовної моделі:

Якщо структура документа вже описана в [[YML]], форма має змогу бути розроблена автономно.; Такий підхід спрощує підтримку.; items:
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">

'''Головне.''' У [[K2 ERP]] [[YML]] — це не без ускладнень конфігураційний файл.; title: "Сервісне обслуговування"
 code:
Коментарі особливо корисні в складних галузевих модулях, де бізнес-логіка не завжди очевидна.; fields:
[[YML]] має змогу містити характеристика ролей і прав.; hours:
 contractor_id:
 title: "Сервісні заявки"
 price: Decimal

Для людини це зрозуміло як “у документі є собою контрагент”.; Вона має поля: ідентифікатор, код, назву, ЄДРПОУ, телефон, e-mail та ознаку активності.;<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">

!;[[index.php?title=Категорія:Цифрова незалежність України]]
[[Python]] застосовується для backend-логіки, бізнес-правил, API, інтеграцій, обробки даних і [[AI]]-сценаріїв.; Частина логіки застаріває.; | Для автоматичного створення [[ORM|ORM-моделей]], міграцій, програмного коду, меню, довідників, журналів документів і форм.; id:
 entity: contractor
{| class="wikitable" style="width:100%;"
 id: int
menu:
як ілюстрація, компонент “продажі та реалізація” має змогу містити свої сутності, документи, меню, права та форми.; |}

 customer_order.yml
Приклад простого опису товару в [[YML]]:
 id:

 type: enum

!; як ілюстрація, якщо потрібно перейменувати поле, платформа має змогу бачити, де воно застосовується: у формі, журналі, API, звіті, правилах, правах доступу.; | Він читабельний, текстовий, придатний для [[Git]], автоматичної генерації та роботи з [[AI|ШІ]].; |-
| Версіонування
| [[YML]] комфортно зберігати в [[Git]].;== YML і AI ==
 title: "Номер"
 contractor_id:

Якщо структура описана в [[YML]], можна автономно генерувати частину тестів.;[[index.php?title=Категорія:YML]]
як ілюстрація, якщо в [[YML]] додано нове поле:
Після цього людина перевіряє модель, уточнює промптами, додає або змінює поля, коригує зв’язки й акцептує автоматичне створення компонента.; title: "Замовлення покупців"

Форма документа — це те, з чим функціонує користувач системи.; Старий підхід
Він не замінює складну бізнес-логіку.; У підході [[K2 ERP]] значна частина цього має змогу створюватися автономно з [[YML]].; У великих [[ERP]]-системах правильні індекси можуть значно прискорювати пошук, фільтрацію, побудову звітів і роботу журналів документів.; code:

== Що таке YML ==
 title: "Сервісні заявки"
 title: "Товари"

Перевага. Програміст не малює форму вручну з нуля.; Достатньо працювати з конкретним описом.; істотно. YML у K2 ERP не замінює програміста.; |-

Код модуля автономно створений програмний каркас компонента.; Тоді роль людини змінюється.; title: "Товар"
Що таке YML у K2 ERP?; entity: customer_order ; * можна бачити історію змін;
  • можна порівнювати версії;
  • можна робити гілки розробки;
  • можна проводити code review;
  • можна відкотити помилкові зміни;
  • можна бачити, хто і коли змінив модель;
  • можна переносити моделі між проєктами.; type: string
title: "Номер"

Штучний інтелект особливо добре функціонує там, де є собою зрозуміла структура.;== Автоматичне створення журналу документів ==

sales/ index.php?title=Категорія:ERP для розробників

type: decimal
title: "Статус"
primary_key: true

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

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

title: "Власник"

JSON зручний для обміну даними між системами й дуже популярний у веб-розробці, але для великих конфігурацій і багаторівневих описів не завжди такий зручний для ручного редагування.; sales_director:

title: "Номенклатура"

</syntaxhighlight>

type: journal
active: bool = True

Такий характеристика робить компонент зрозумілим для системи, розробника, партнера й ШІ.; title: "Обладнання"

; YML у K2 ERP — це мова, якою бізнес-ідея починає перетворюватися на працюючий компонент.
* [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]

 name: string;
Саме для цього в [[K2 ERP]] застосовується [[YML]].; Питання
 price:
|-
| [[ER-модель]]
| Архітектурний характеристика сутностей, зв’язків і структури майбутнього компонента.; default: true
Тобто [[YML]] стає проміжною мовою між бізнес-задумом і технічною реалізацією.; - contractors
title: "Назва"

index.php?title=Категорія:ERP З такого опису платформа має змогу автономно створити довідник обладнання, документ заявки на ремонт, журнал заявок, форми, меню, ORM-моделі, міграції та базовий функціональні можливості.; Поле </syntaxhighlight>

- field: total_amount
auto: true
entity: equipment

Тобто один YML-опис має змогу породити цілий набір технічних і функціональних елементів.; title: "E-mail"

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

title: "Контрагент"
entities:
name: service_requests

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

7 Декларативний текстовий характеристика структур, моделей, форм, меню, документів, довідників і компонентів.; |- Яка роль людини?; Документ — це не без ускладнень форма.; default: draft

form: YML надає можливість прибрати цю рутину.; | Ні.; id: int

Цей характеристика говорить системі, що e-mail має бути у правильному форматі, кількість не має змогу бути меншою за 0.001, а дата є собою обов’язковою.; У YML відступи мають значення.; Треба зробити так, щоб програмісти не займалися рутиною.;
name:

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

Приклад опису форми: Це надає можливість уникнути хаотичних ручних змін у базі даних.; amount:

title: "Кількість годин"
title: "Назва"
required: true

як ілюстрація, якщо поле обов’язкове, можна перевірити, що платформа не надає можливість зберегти документ без цього поля.; як ілюстрація: продаж, закупівля, переміщення товару, заявка, рахунок, акт, платіж, замовлення, виробнича операційна дія.;YML у K2 ERP — це основа для такого підходу.; tax_number:

Цей фрагмент означає, що поле `contractor_id` є собою посиланням на сутність `contractor`.; Це і є собою програмування зі швидкістю думки.;</syntaxhighlight>

title: "Активний"

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

 title: "Номер"

 title: "Номер"

 update: true

table_parts:

 primary_key: true
title: "Статус"
problem_description:
type: reference

export interface Contractor {

<syntaxhighlight lang="yaml">

як ілюстрація:
Для системи це зрозуміло як зв’язок між таблицями, який можна використати для генерації [[ORM|ORM-моделі]], форми, довідника, API та звітів.; |-
| Форми документів
| автономно створені форми введення й перегляду документів.;[[Low-code]] і [[No-code]] часто обіцяють, що бізнес-середовище зможе створювати додатки без програмістів.; |-
| [[ORM|ORM-модель]]
| автономно згенерована модель для роботи з базою даних у коді.; code: str

<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">

 title: "Ціна"

 title: "Кількість"

type: document

 unit: "шт"
З наведеного [[YML]]-опису [[K2 ERP]] має змогу автономно сформувати:
<syntaxhighlight lang="yaml">
<syntaxhighlight lang="yaml">
Він стає архітектором, який:
+ title: "Дата доставки"
auto: true
YML-опис має змогу бути використаний для створення структур у PostgreSQL: таблиць, колонок, індексів, зв’язків, обмежень і міграцій.; Якщо в YML сутність має тип `document`, платформа має змогу автономно створити журнал документів.; З такого опису K2 ERP має змогу автономно створити розділ меню “продажі та реалізація” та додати до нього потрібні пункти.;
type: string

Компонент має змогу містити:

equipment_id:
values:

index.php?title=Категорія:AI Типові помилки: У бізнесі є собою товари, контрагенти, договори, документи, склади, рахунки, заявки, платежі, маршрути погодження, бізнес-процеси, файли, характеристики, звіти й ролі користувачів.;== YML як основа програмування зі швидкістю думки ==

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

</syntaxhighlight>

type: reference
title: "Код"

</syntaxhighlight>

GET /api/contractors/{id}

- title: "Контрагенти"
type: reference
title: "Керівник продажів"
delete: true
1 Людина формулює ідею компонента.; type: reference

type: directory

- in_work

K2 ERP розвивається як компонентна платформа.; - in_work

type: string

У старому підході програміст часто вручну пише SQL-скрипти, які створюють або змінюють таблиці.; DELETE /api/contractors/{id} Головна цінність у з цієї причини, що YML є собою зрозумілим і для людини, і для машини.; |-

Повторне використання Моделі можна переносити між проєктами.;
type: document
type: decimal

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

name: str
type: directory

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

unique: true

У K2 ERP YML надає можливість скоротити цей шлях.; істотно правильно описати структуру бізнесу.;== YML і ORM ==

</syntaxhighlight> entity: contractor

type: text

index.php?title=Категорія:Python Але в реальності складні ERP-системи не можуть в цілому обійтися без архітекторів і програмістів.; Коли людина описує ідею, ШІ формує YML, а K2 ERP автономно створює компонент — розробка програмного забезпечення наближається до швидкості думки.; type: integer

- title: "Обладнання"

Таким чином, YML має змогу бути джерелом не тільки для генерації коду, а й для перевірки якості.; Коли підключається ШІ, він має змогу допомогти створити сам YML.; email: Окремо варто відзначити моделей, налаштувань, компонентів, форм, меню, довідників, документів і інших елементів системи K2 ERP.; Звичайно, реальна платформа має змогу мати складніші правила доступу, фільтрації, валідації й бізнес-логіки.; Це означає, що людина перестає витрачати час на механічне дублювання.; type: decimal

title: "характеристика проблеми"

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

entity: product
set:
status:
Таблиці створюються вручну Структура описується в YML, таблиці створюються автономно
Форми створюються окремо Форми можуть генеруватися з моделі
Меню налаштовується окремо Меню описується в YML
ORM пишеться вручну ORM-модель генерується автономно
API дублює структуру вручну API має змогу використовувати характеристика моделі
Зміни важко контролювати Зміни видно в Git
AI не має структурованого контексту ШІ функціонує з чітким YML-описом
Розробник витрачає час на рутину Розробник функціонує з архітектурою і складною логікою

</syntaxhighlight>

total_amount: "sum(items.amount)"

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

Чи замінює YML програміста?; Програміст дописує те, що потребує складної експертної логіки.; Обов’язкове

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

active:
date:
required: true

YML і API

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

email: str | None = None
code string Код Так
name string Назва Так
edrpou string ЄДРПОУ Ні
active boolean Активний Ні

як ілюстрація, платформа має змогу автономно створити характеристика сутності:

XML достатньо формальний і потужний, але часто виглядає занадто важким для людини.;
 menu:

 type: decimal

Саме це і робить [[YML]] важливим для швидкої розробки.; характеристика
Людина має змогу написати промпт:
<syntaxhighlight lang="yaml">

У [[K2 ERP]] [[YML]] застосовують, коли потрібно як міст між архітектурною ідеєю, [[ER-модель|ER-моделлю]], [[ORM|ORM-моделлю]], структурою бази даних, програмним кодом модуля, інтерфейсом користувача та автономно створеним бізнес-додатком.;{{DISPLAYTITLE:YML}}

 - sales

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

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

entity: product

 date:

У цьому прикладі описано сутність `contractor`, яка є собою довідником.; Підхід K2 ERP з YML
Це принципово інший підхід до розробки.; |-
| 6
| [[K2 ERP]] автономно створює компонент.; layout:
 title: "Кількість"
Потрібні поля: номер, дата, замовник, обладнання, характеристика проблеми,
[[YML]] є собою текстовим представленням такої моделі.; * неправильні відступи;
* неузгоджені назви полів;
* дублювання сутностей;
* відсутність типів даних;
* занадто складні структури в одному файлі;
* спроба описати в [[YML]] те, що краще реалізувати в коді;
* відсутність коментарів;
* некоректні посилання на інші сутності;
* невраховані права доступу;
* неописані правила валідації.; Пояснення

бізнес-середовище змінюється.; * [[YML]]-опис структур;
* [[ORM|ORM-моделі]];
* міграції;
* frontend-компоненти;
* backend-логіку;
* звіти;
* шаблони;
* конфігурація меню;
* права доступу.; work_name:

!; |-
| Довідники
| автономно створені довідники.; type: decimal
 access:
 values:
На основі такого опису платформа має змогу автономно створити довідник контрагентів.; Це бізнес-подія.; section: "Сервіс"

 - completed
<syntaxhighlight lang="yaml">
Це дає багато переваг:
 entity: contractor
== Приклад опису документа ==
Це один із ключових елементів сучасної архітектури, яка надає можливість переходити від ручного програмування до моделювання, автоматичної генерації та [[AI]]-асистованої розробки.;
- row:

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

title: "ЄДРПОУ"

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

type: string

</syntaxhighlight>

contractors.yml

</syntaxhighlight>

required: true
- field: date

permissions: