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

YML

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

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

Формула. Ідея → ШІYMLER-модель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