YML: відмінності між версіями
R (обговорення | внесок) Створена сторінка: {{DISPLAYTITLE:YML}} {{SEO |title=YML у K2 ERP — декларативний опис структур, моделей, форм і компонентів |description=YML у K2 ERP використовується для опису структур бази даних, ER-моделей, ORM-моделей, форм, меню, довідників, документів, журналів документів, компонентів і автоматич... |
R (обговорення | внесок) Немає опису редагування |
||
| Рядок 1: | Рядок 1: | ||
- | - row: | ||
- field: date | - field: date | ||
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;"> | |||
title: "Номер" | |||
type: string | type: string | ||
! Перевага | |||
[[index.php?title=Категорія:Інструменти розробника]] | |||
POST /api/contractors | |||
генерації коду забезпечується через '''Для розробників.''' [[YML]] дає можливість описувати структуру компонента зрозуміло, читабельно, контрольовано і придатно; так само реалізовано версіонування через [[Git]] та роботи з [[AI|штучним інтелектом]]. Частина логіки застаріває. entity: contractor | |||
[[ | |||
{{DISPLAYTITLE:YML}} | |||
здатна бути автоматизовано розроблена умовна [[Python]]-модель: | |||
[[index.php?title=Категорія:K2 ERP]] | |||
title: "Заявка на ремонт" | |||
title: " | |||
* формулює задачу; | |||
* перевіряє модель; | |||
* уточнює структуру; | |||
* контролює якість; | |||
* акцептує створення компонента; | |||
* дописує складну логіку, яка не була описана в промпті. |- | |||
| 6 | |||
| [[K2 ERP]] автоматизовано створює компонент.</div> | |||
<syntaxhighlight lang="yaml"> | <syntaxhighlight lang="yaml"> | ||
- row: | |||
Коли до цього підключається [[AI|штучний інтелект]], людина здатна описати задум людською мовою, отримати [[YML]]-модель, перевірити її, уточнити промптами й акцептувати автоматичне створення компонента. entities: | |||
Програмісту залишається важливіша робота: подумати, чи правильно побудована модель, чи не буде проблем зі зв’язками, чи відповідає структура реальному бізнесу, яку складну логіку треба дописати окремо. fields: | |||
component: | |||
calculated: true | |||
calculate_total: | |||
Він стає архітектором, який: | |||
id: | id: | ||
== YML як міст між людиною і системою == | |||
- crm | |||
type: directory | |||
name: | |||
title: "Власник" | |||
title: " | |||
* [[K2]] | * [[K2]] | ||
| Рядок 155: | Рядок 84: | ||
* [[Альтернатива BAS]] | * [[Альтернатива BAS]] | ||
title: "E-mail" | |||
* [https://erp.kyiv.ua Сайт K2 ERP] | * [https://erp.kyiv.ua Сайт K2 ERP] | ||
| Рядок 164: | Рядок 93: | ||
* [https://www.linkedin.com/company/k2erp/ LinkedIn K2] | * [https://www.linkedin.com/company/k2erp/ LinkedIn K2] | ||
Саме це і робить [[YML]] важливим для швидкої розробки. У класичному програмуванні людина часто формулює ідею, потім програміст вручну перекладає її в таблиці, класи, форми, меню, інтерфейси, документи й логіку. entity: customer_order | |||
[[index.php?title=Категорія:Українське програмне забезпечення]] | |||
</syntaxhighlight> | |||
type: reference | |||
title: "Активний" | |||
як приклад: | |||
Людина здатна написати промпт: | |||
table_parts: | |||
title: "Номер" | |||
type: string | |||
export interface Contractor { | |||
auto: true | auto: true | ||
title: "складський облік" | |||
! Програміст більше не переписує одну й ту саму структуру в різних місцях, а функціонує як архітектор, який описує модель і контролює результат. entity: service_work | |||
title: " | validation: | ||
- title: "Заявки на ремонт" | |||
- field: contractor_id | |||
- high | |||
Форма документа — це те, з чим функціонує користувач системи. '''Правильний баланс.''' [[YML]] описує те, що можна формалізувати.</syntaxhighlight> | |||
Типові помилки: | |||
entity: equipment | |||
{| class="wikitable" style="width:100%;" | |||
'''YML дає можливість описати модель один раз, а далі використати цей SEO-опис для автоматичного створення багатьох частин системи.''' | |||
Не вся бізнес-логіка здатна бути описана без зусиль через поля й типи. Програміст дописує те, що потребує складної експертної логіки. Якщо поле виступає як посиланням на іншу сутність, можна перевірити коректність зв’язку. |- | |||
| 2 | |||
| [[AI|ШІ]] створює [[YML]]-структуру.[[YML]] дає можливість описати компонент так, щоб він не був випадковим шматком коду. |- | |||
| 5 | |||
| Модель акцептується. Зв’язки перебудовуються. - name | |||
- warehouse | |||
title: " | У першому рядку — номер і дата. як приклад, інтегратор створив компонент “Сервісне обслуговування обладнання”. Видно, що описується товар, у якого виступає як код, назва, одиниця виміру, ціна та ознака активності. | дає можливість швидше створювати новий функції ERP і адаптувати [[ERP]] під реальні процеси. Окремо варто відзначити моделей, налаштувань, компонентів, форм, меню, довідників, документів і інших елементів системи [[K2 ERP]]. Він прибирає рутину. active: | ||
+ title: "Дата доставки" | |||
email: str | None = None | |||
<syntaxhighlight lang="yaml"> | <syntaxhighlight lang="yaml"> | ||
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 і документація == | |||
[[YML]] дає можливість | </syntaxhighlight> | ||
code: str | |||
[[AI|ШІ]] здатна згенерувати [[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]] та інші. Старий підхід | |||
як приклад, з опису довідника “Контрагенти” можна сформувати: | |||
<syntaxhighlight lang="yaml"> | |||
sales/ | |||
default: draft | |||
fields: | |||
email: | |||
- draft | |||
permissions.yml | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== YML і права доступу == | |||
comment: | |||
type: decimal | |||
</syntaxhighlight> | |||
</div> | </div> | ||
type: boolean | |||
title: "Дата" | |||
title: " | |||
- closed | |||
rules: | |||
Це інтуїтивно для розробників, інтеграторів, тестувальників і користувачів.</div> | |||
fields: | |||
equipment_id: | |||
Або [[TypeScript]]-інтерфейс: | |||
[[index.php?title=Категорія:Автоматизація бізнесу]] | |||
[[index.php?title=Категорія:Програмування]] | |||
total_amount: "sum(items.amount)" | |||
entity: equipment | entity: equipment | ||
hours: | |||
У бізнесі виступає як товари, контрагенти, договори, документи, склади, рахунки, заявки, платежі, маршрути погодження, бізнес-процеси, файли, характеристики, звіти й ролі користувачів. |} | |||
calculate_amount: | |||
version: "1.0.0" | |||
== YML і Git == | |||
= | type: document | ||
<syntaxhighlight lang="typescript"> | |||
module: service | |||
через [[YML]] користувачі можуть описати межі модуля. Правильний підхід інший. |- | |||
| Базовий функції ERP | | Базовий функції 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: | |||
</syntaxhighlight> | |||
required: true | |||
amount: | |||
title: "Кількість" | |||
Приклад помилки з відступами: | |||
як приклад: | |||
</div> | |||
[[index.php?title=Категорія:Автоматична генерація коду]] | |||
type: directory | |||
__TOC__ | |||
entity: contractor | |||
- code | |||
id: | |||
title: "Серійний номер" | |||
|- | |||
| Таблиці створюються вручну | |||
| Структура описується в [[YML]], таблиці створюються автоматизовано | |||
|- | |||
| Форми створюються окремо | |||
| Форми можуть генеруватися з моделі | |||
|- | |||
| Меню налаштовується окремо | |||
| Меню описується в [[YML]] | |||
|- | |||
| ORM пишеться вручну | |||
| [[ORM|ORM-модель]] генерується автоматизовано | |||
|- | |||
| API дублює структуру вручну | |||
| API здатна використовувати SEO-опис моделі | |||
|- | |||
| Зміни важко контролювати | |||
| Зміни видно в [[Git]] | |||
|- | |||
| AI не має структурованого контексту | |||
| [[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: "Сума" | |||
<syntaxhighlight lang="yaml"> | |||
== YML і ER-модель == | |||
required: true | |||
required: true | |||
fields: | |||
min: 0.001 | |||
як приклад, якщо в [[YML]] додано нове поле: | |||
= | <syntaxhighlight lang="yaml"> | ||
Такий підхід спрощує підтримку. primary_key: true | |||
== Чому саме YML == | |||
</syntaxhighlight> | |||
type: decimal | |||
entity: product | |||
type: datetime | |||
create: true | |||
<syntaxhighlight lang="typescript"> | |||
required: true | |||
title: "Статус" | |||
type: string | |||
price: 32000 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
title: "Робота" | |||
type: text | |||
== Висновок == | |||
title: "Контрагент" | |||
Довідники важливі, але справжня сила [[ERP]] розкривається в документах. Приклад умовної моделі: | |||
} | } | ||
<syntaxhighlight lang="yaml"> | |||
title: "Обладнання" | |||
У [[K2 ERP]] [[YML]] виступає як частиною загального ланцюжка автоматичного створення компонентів. title: "Номенклатура" | |||
'''AI + YML.''' Людина описує задум.[[index.php?title=Категорія:ERP]] | |||
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;"> | |||
email: | |||
</syntaxhighlight> | </syntaxhighlight> | ||
як приклад, платформа здатна автоматизовано створити SEO-опис сутності: | |||
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;"> | |||
== Порівняння старого і нового підходу == | |||
values: | values: | ||
title: "Номер" | |||
engineer_id: | |||
title: "Назва" | |||
як приклад: продаж, закупівля, переміщення товару, заявка, рахунок, акт, платіж, замовлення, виробнича операційна дія. Це значно краще, ніж коли зміни зроблені десь у закритому конфігураторі й незрозуміло, хто, коли і що саме змінив. |- | |||
як приклад, | | Повторне використання | ||
| Моделі можна переносити між проєктами.[[index.php?title=Категорія:ORM]] | |||
<syntaxhighlight lang="yaml"> | |||
== Зовнішні посилання == | |||
Це дає багато переваг: | |||
title: "Менеджер з продажу" | |||
<syntaxhighlight lang="yaml"> | |||
Замість того щоб вручну дублювати структуру в різних частинах системи, її можна один раз описати в [[YML]]. Але частину правил можна декларативно описати в [[YML]]. * таблиці; | |||
* моделі; | |||
* форми; | |||
* меню; | |||
* журнали; | |||
* довідники; | |||
* API; | |||
* базові операції; | |||
* службові структури. Журнал документів — це список документів певного типу, як приклад “Замовлення покупців”. - equipment | |||
depends_on: | |||
== YML і бізнес-правила == | |||
== Рекомендації щодо структури YML-файлів == | |||
required: true | 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: | |||
type: reference | |||
Людина здатна прочитати файл і зрозуміти, що в ньому описано. '''Ключова ідея.''' [[YML]] — це мова опису структури, а не мова ручного програмування.<syntaxhighlight lang="text"> | |||
Приклад: | |||
title: "Товари" | |||
entity: warehouse | |||
menu: | |||
[[index.php?title=Категорія:YAML]] | |||
- | - field: date | ||
[[index.php?title=Категорія:No-code]] | |||
title: "Контрагент" | |||
title: " | |||
</syntaxhighlight> | |||
[[index.php?title=Категорія:K2]] | |||
< | title: "Назва" | ||
У цьому прикладі описано сутність `contractor`, яка виступає як довідником. |- | |||
| Чи замінює [[YML]] програміста? |- | |||
| [[ORM|ORM-модель]] | |||
| автоматизовано згенерована модель для роботи з базою даних у коді. Головна цінність у тому, що [[YML]] виступає як зрозумілим і для людини, і для машини.[[XML]] достатньо формальний і потужний, але часто виглядає занадто важким для людини.</syntaxhighlight> | |||
|- | |||
| Читабельність | |||
| [[YML]] швидко читати людині.[[YML]] дає можливість описувати ці зміни на рівні моделі, а не випадкових ручних правок. name: service_requests | |||
! type: reference | |||
Основною базою даних для [[K2 ERP]] виступає як [[PostgreSQL]]. Це формалізований SEO-опис бізнес-моделі, з якого платформа здатна автоматизовано створювати структури, [[ORM|ORM-моделі]], міграції, код модуля, меню, довідники, журнали документів і форми документів. type: string | |||
id: number; | |||
id: | |||
* неправильні відступи; | |||
* неузгоджені назви полів; | * неузгоджені назви полів; | ||
* дублювання сутностей; | * дублювання сутностей; | ||
| Рядок 553: | Рядок 520: | ||
* некоректні посилання на інші сутності; | * некоректні посилання на інші сутності; | ||
* невраховані права доступу; | * невраховані права доступу; | ||
* неописані правила валідації. | * неописані правила валідації. Підхід K2 ERP з YML | ||
платформа здатна зрозуміти, що в таблицю потрібно додати нову колонку. name: | |||
code: | |||
Одна з важливих переваг [[K2 ERP]] — можливість створювати незалежні легкі компоненти, які швидко підтримувати й інтегрувати між собою. ! primary_key: true | |||
як | Цей SEO-опис говорить системі, як розмістити поля на формі. id: | ||
sales_manager: | |||
{ | DELETE /api/contractors/{id} | ||
Щоб [[YML]]-моделі залишалися зручними, варто дотримуватися кількох принципів. repair_request: | |||
'''Формула.''' Ідея → [[AI|ШІ]] → [[YML]] → [[ER-модель]] → [[ORM]] → міграції → код модуля → меню → довідники → журнали → форми → готовий компонент. title: "ЄДРПОУ" | |||
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;"> | |||
< | |||
type: directory | |||
== YML і ORM == | |||
[[YML]] у [[K2 ERP]] — це основа для такого підходу. title: "Назва" | |||
title: " | entity: contractor | ||
title: "Контрагент" | |||
як приклад, якщо в [[ER-модель|ER-моделі]] виступає як сутність “Замовлення покупця”, яка пов’язана з “Контрагентом”, “Складом” і “Товаром”, то в [[YML]] це здатна бути описано через поля типу `reference`.[[index.php?title=Категорія:Цифрова незалежність України]] | |||
{| class="wikitable" style="width:100%;" | |||
values: | |||
fields: | |||
З такого опису платформа здатна автоматизовано створити довідник обладнання, документ заявки на ремонт, журнал заявок, форми, меню, ORM-моделі, міграції та базовий функції ERP. Якщо в [[YML]] описана сутність, платформа здатна автоматизовано створити відповідну [[ORM|ORM-модель]]. required: true | |||
title: " | Після цього людина перевіряє модель, уточнює промптами, додає або змінює поля, коригує зв’язки й акцептує автоматичне створення компонента. Пояснення | ||
- title: "Товари" | |||
Це не означає, що складні системи з’являються магічно без контролю.<syntaxhighlight lang="python"> | |||
* назву; | |||
* версію; | |||
* залежності; | |||
* сутності; | |||
* форми; | |||
* меню; | |||
* права; | |||
* міграції; | |||
* точки інтеграції.== YML і Python == | |||
active: true | |||
- low | |||
entity: contractor | |||
[[YML]] добре підходить саме для опису структур, бо він лаконічний, читабельний і зручний для людини. - in_work | |||
- title: "Замовлення покупців" | |||
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"> | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Автоматичне створення журналу документів == | |||
<syntaxhighlight lang="python"> | |||
[[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-моделлю]], структурою бази даних, програмним кодом модуля, інтерфейсом користувача та автоматизовано створеним бізнес-додатком.</syntaxhighlight> | |||
Якщо в [[YML]] сутність має тип `document`, платформа здатна автоматизовано створити журнал документів. id: number; | |||
[[Python]] застосовується для для backend-логіки, бізнес-правил, API, інтеграцій, обробки даних і [[AI]]-сценаріїв. |} | |||
- field: warehouse_id | |||
! Поле | |||
<syntaxhighlight lang="yaml"> | |||
== Коротко == | |||
entity: customer_order | |||
'''YML у K2 ERP.''' Це не без зусиль “конфігурація”.== YML і валідація даних == | |||
title: "Замовлення покупця" | |||
type: datetime | |||
title: "Дата" | |||
У другому — контрагент і складський облік. Якщо структура цього модуля описана в [[YML]], її можна переносити між інсталяціями, використовувати як шаблон, розвивати й публікувати через [[K2 Update]]. amount: | |||
type: | 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: "Контрагенти" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
title: "Сума" | |||
type: string | |||
</div> | |||
Приклад [[YML]]-опису меню: | |||
У підході [[K2 ERP]] значна частина цього здатна створюватися автоматизовано з [[YML]]. type: directory | |||
type: integer | |||
name: | |||
- field: status | |||
! class Contractor(BaseModel): | |||
values: | |||
'''YML у K2 ERP — це мова, якою бізнес-ідея починає перетворюватися на працюючий компонент.''' | |||
[[AI|Штучний інтелект]] особливо добре функціонує там, де виступає як зрозуміла структура. id: | |||
| | |||
! |- | |||
| Автоматична генерація | |||
| З [[YML]] можна створювати [[ORM]], міграції, код, меню, форми й довідники. як приклад, якщо потрібно перейменувати поле, платформа здатна бачити, де воно застосовується для: у формі, журналі, API, звіті, правилах, правах доступу. | Перевірити структуру, уточнити промпти, акцептувати модель і дописати складну логіку, яку не було описано в промпті. rate: | |||
- field: contractor_id | |||
</syntaxhighlight> | </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 == | |||
== | |||
<syntaxhighlight lang="yaml"> | <syntaxhighlight lang="yaml"> | ||
menu.yml | |||
contractor_id: | |||
required: true | required: true | ||
active: boolean; | |||
== YML і тестування == | |||
Якщо ж основа описана через [[YML]], зміни можна робити більш керовано. required: true | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</div> | |||
<syntaxhighlight lang="yaml"> | |||
type: enum | |||
type: | type: string | ||
Тобто один [[YML]]-опис здатна породити цілий набір технічних і функціональних елементів.<syntaxhighlight lang="diff"> | |||
! Обов’язкове | |||
type: decimal | |||
- row: | |||
name: | date: | ||
<syntaxhighlight lang="yaml"> | |||
entity: customer_order | |||
У [[K2 ERP]] ця читабельність особливо важлива, бо [[YML]] здатна використовуватися не тільки програмістами, а й архітекторами системи, інтеграторами, технічними консультантами та [[AI|штучним інтелектом]]. - name: idx_product_name | |||
type: string | |||
Оскільки [[YML]] описує структуру компонента, з нього можна генерувати документацію. Якщо структура описана в [[YML]], можна автоматизовано генерувати частину тестів.== YML і AI == | |||
- field: warehouse_id | |||
entity: repair_request | |||
Саме для цього в [[K2 ERP]] застосовується для [[YML]]. phone: str | None = None | |||
'''Фундамент ERP.''' Структура бази даних повинна змінюватися керовано. * довідник обладнання; | |||
* довідник видів робіт; | |||
* документ “Заявка на ремонт”; | |||
* документ “Акт виконаних робіт”; | |||
* журнали документів; | |||
* форми; | |||
* звіти; | |||
* ролі доступу. type: decimal | |||
fields: | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Це особливо критично для партнерів [[K2 ERP]]. title: "Сервісні заявки" | |||
edrpou: str | None = None | |||
type: integer | |||
[[YML]] дає можливість прибрати цю рутину.[[index.php?title=Категорія:API]] | |||
access: | |||
type: string | |||
journal: | |||
edrpou?: string; | |||
entity: repair_request | |||
</syntaxhighlight> | </syntaxhighlight> | ||
price: | |||
Якщо структура сутності описана в [[YML]], платформа здатна використати цю інформацію для створення API. Але вони стають більш прозорими. З [[YML]] можна генерувати [[Python]]-моделі, схеми валідації, структури API та каркаси сервісів. * [[YML]]-опис структур; | |||
* [[ORM|ORM-моделі]]; | |||
* міграції; | |||
* frontend-компоненти; | |||
* backend-логіку; | |||
* звіти; | |||
* шаблони; | |||
* конфігурація меню; | |||
* права доступу. required: true | |||
Приклад: | |||
date: | |||
Частину — генерувати за допомогою [[AI|ШІ]]. Краще розділяти описи за модулями, компонентами або сутностями.== Типові помилки при роботі з YML == | |||
Компонент має зрозумілу структуру: | |||
type: journal | |||
entity: customer_order | |||
через [[YML]] платформа здатна розуміти структуру компонента, створювати [[ORM|ORM-моделі]], міграції, код, меню, довідники, журнали документів, форми документів і базовий функції ERP. платформа читає цей SEO-опис і розуміє, що потрібно створити. Він робить її керованою, структурованою і придатною для автоматичної генерації. fields: | |||
{| class="wikitable" style="width:100%;" | |||
title: "Виконані роботи" | |||
</div> | |||
Для системи це зрозуміло як зв’язок між таблицями, який можна використати для генерації [[ORM|ORM-моделі]], форми, довідника, API та звітів.</syntaxhighlight> | |||
Оскільки [[YML]] — це текстовий формат, його інтуїтивно зберігати в [[Git]]. active: bool = True | |||
[[YML]] у такому пакеті виконує роль зрозумілого опису структури компонента. email?: string; | |||
= | read: true | ||
required: true | |||
<syntaxhighlight lang="yaml"> | |||
|- | |||
| Що таке [[YML]] у [[K2 ERP]]?<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;"> | |||
title: "Податковий номер" | |||
title: "Ставка" | |||
title: "Ціна" | |||
id: | |||
|- | |||
| code | |||
| string | |||
| Код | |||
| Так | |||
|- | |||
| name | |||
| string | |||
| Назва | |||
| Так | |||
|- | |||
| edrpou | |||
| string | |||
| ЄДРПОУ | |||
| Ні | |||
|- | |||
| active | |||
| boolean | |||
| Активний | |||
| Ні | |||
|} | |||
title: "Код" | |||
title: " | title: "Коментар" | ||
type: string | |||
type: string | |||
[[ER-модель]] описує сутності та зв’язки між ними. Такий SEO-опис швидко прочитати навіть людині, яка не виступає як програмістом. Він описує структуру, а платформа створює форму автоматизовано. Це критично для продуктивності. У великих [[ERP]]-системах правильні індекси можуть значно прискорювати пошук, фільтрацію, побудову звітів і роботу журналів документів. number: | |||
quantity: | |||
</syntaxhighlight> | </syntaxhighlight> | ||
type: string | |||
type: reference | |||
required: true | |||
Ручна розробка програмного забезпечення має сенс там, де потрібна складна логіка, нестандартні алгоритми, інтеграції або спеціальні сценарії. type: string | |||
title: "складський облік" | |||
fields: | |||
type: integer | |||
title: "Замовлення покупців" | |||
[[index.php?title=Категорія:Штучний інтелект]] | |||
</div> | |||
product_id: | |||
Частину — описувати вручну. |- | |||
| Меню | |||
| автоматизовано сформовані пункти меню.[[AI|ШІ]] формує [[YML]]-модель. ! type: datetime | |||
title: "SEO-опис проблеми" | |||
== Повний приклад міні-компонента == | |||
Компонент здатна містити: | |||
type: string | type: string | ||
- field: total_amount | |||
update: true | |||
table_parts: | |||
Якщо кожну таку сутність створювати вручну в коді, потім окремо описувати її в базі даних, потім окремо створювати форми, меню, довідники, журнали документів, права доступу та інтерфейси, розробка програмного забезпечення оперативно перетворюється на нескінченне дублювання. - name: idx_product_code | |||
type: reference | |||
approve: true | approve: true | ||
Нижче наведено умовний спрощений приклад [[YML]]-опису міні-компонента “Сервісні заявки”.[[K2 ERP]] автоматизовано створює компонент. Програміст дошліфовує складну логіку. fields: | |||
required: true | |||
Частину — дописувати програмно. |- | |||
| Чому [[YML]] зручний? |- | |||
| AI-сумісність | |||
| [[AI|ШІ]] добре функціонує з текстовими структурованими описами. GET /api/contractors | |||
[[Low-code]] і [[No-code]] часто обіцяють, що бізнес-середовище зможе створювати додатки без програмістів. Меню — ще одна частина, яку не потрібно кожного разу створювати вручну. type: string | |||
'''критично.''' [[YML]] у [[K2 ERP]] не замінює програміста. Крок | |||
invoice.yml | |||
{{SEO | |||
|title=YML у K2 ERP — декларативний опис структур, моделей, форм і компонентів | |||
|description=YML у K2 ERP використовується для опису структур бази даних, ER-моделей, ORM-моделей, форм, меню, довідників, документів, журналів документів, компонентів і автоматичної генерації бізнес-додатків. | |||
|keywords=YML, YAML, K2 ERP, ER-модель, ORM, ERP, AI ERP, автоматична генерація коду, структура бази даних, Python, TypeScript, PostgreSQL, бізнес-додатки, low-code ERP, no-code ERP, українська ERP, альтернатива 1С, альтернатива BAS | |||
|image=https://erp.kyiv.ua | |||
}} | |||
- sales | |||
status: | |||
number: | |||
Програміст більше не виступає як людиною, яка вручну переносить одну й ту саму структуру з одного місця в інше.</syntaxhighlight> | |||
section: "продажі та реалізація" | |||
'''Для AI-розробки.''' [[AI|ШІ]] здатна генерувати [[YML]]-структури за описом людини, фактично створюючи [[ER-модель]] майбутнього компонента. * поле назви; | |||
* поле дати; | |||
* посилання на контрагента; | |||
* табличну частину; | |||
* форму списку; | |||
* форму документа; | |||
* журнал; | |||
* меню; | |||
* базові CRUD-операції. type: string | |||
З такого опису [[K2 ERP]] здатна автоматизовано створити розділ меню “продажі та реалізація” та додати до нього потрібні пункти.== YML і міграції бази даних == | |||
type: decimal | |||
title: "Обладнання" | |||
} | |||
== YML і API == | |||
< | </div> | ||
name: string; | |||
'''Таким чином, YML виступає як центральним текстовим описом, через який модель перетворюється на працюючий компонент.''' | |||
equipment_id: | |||
title: "Сума" | title: "Сума" | ||
|- | |||
| 1 | |||
| Людина формулює ідею компонента. | Так.[[TypeScript]] застосовується для для frontend-частини, компонентів інтерфейсу, типізації даних і взаємодії з API. type: journal | |||
fields: | |||
indexes: | |||
works: | |||
Таким чином, [[YML]] здатна бути джерелом не тільки для генерації коду, а й для перевірки якості. Документ — це не без зусиль форма. Приклад: | |||
Якщо компонент описаний через [[YML]], його легше переносити, копіювати, адаптувати й розповсюджувати. |- | |||
| Чим [[YML]] корисний для бізнесу? title: "Номер" | |||
* сутності; | |||
* таблиці; | |||
* поля; | |||
* типи даних; | |||
* зв’язки; | |||
* документи; | |||
* довідники; | |||
* журнали документів; | |||
* форми документів; | |||
* меню; | |||
* компоненти; | |||
* права; | |||
* службові конфігурація; | |||
* елементи інтерфейсу; | |||
* правила генерації. Правильно: | |||
[[index.php?title=Категорія:Альтернатива BAS]] | |||
title: "Код" | title: "Код" | ||
- table_part: items | |||
name: string; | |||
== YML і рефакторинг == | |||
== Чим YML кращий за ручну розробку однакових структур == | |||
компонент “Сервіс” здатна використовувати частину довідників із модуля “продажі та реалізація”, але мати власні документи й процеси.<syntaxhighlight lang="text"> | |||
- in_work | |||
* структуру таблиці; | |||
* [[ORM|ORM-модель]]; | |||
* міграцію бази даних; | |||
* пункт меню; | |||
* форму списку; | |||
* форму картки; | |||
title: " | * базові операції створення, редагування, перегляду та видалення; | ||
* службові описи для компонента. Приклад простого опису товару в [[YML]]: | |||
У старому підході програміст часто вручну пише [[SQL]]-скрипти, які створюють або змінюють таблиці. fields: | |||
form: | |||
title: "Дата" | |||
У цьому прикладі описано документ із шапкою та табличною частиною. title: "Кількість годин" | |||
work_name: | |||
<syntaxhighlight lang="yaml"> | |||
Цей SEO-опис говорить системі, що e-mail має бути у правильному форматі, кількість не здатна бути меншою за 0.001, а дата виступає як обов’язковою. '''YML''' — декларативний текстовий формат опису структур. Створи YML-модель для документа "Заявка на ремонт обладнання". | дає можливість створювати переносимі компоненти, модулі, шаблони та галузеві рішення для бізнесу. |- | |||
| Міграції | |||
| Автоматичне створення або зміна структури бази даних. type: directory | |||
fields: | fields: | ||
required: true | |||
type: string | type: string | ||
type: | <syntaxhighlight lang="yaml"> | ||
type: integer | |||
[[index.php?title=Категорія:TypeScript]] | |||
title: "Статус" | |||
id: int | |||
title: "Кількість" | |||
number: | number: | ||
phone?: string; | |||
entity: employee | |||
Міграції потрібні для керованої зміни структури бази даних.</div> | |||
menu: | |||
works: | |||
У [[YML]] відступи мають значення.== Автоматичне створення форми документа == | |||
Приклад опису форми: | |||
type: decimal | |||
== Див. так само == | |||
У журналі можуть відображатися: | |||
code: | |||
- field: comment | - field: comment | ||
name: service_requests | |||
{| class="wikitable" style="width:100%;" | |||
name: | |||
entity: equipment | |||
[[YML]] виступає як текстовим представленням такої моделі. |- | |||
| Масштабованість | |||
| платформа здатна рости без хаотичного дублювання структур. |- | |||
| Версіонування | |||
| [[YML]] інтуїтивно зберігати в [[Git]].</syntaxhighlight> | |||
default: true | |||
name: str | |||
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;"> | |||
primary_key: true | |||
required: true | |||
title: "Товар" | |||
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;"> | |||
[[index.php?title=Категорія:ERP для партнерів]] | |||
type: document | |||
type: text | |||
- closed | |||
'''Реалістичний low-code.''' [[YML]] не робить складну ERP магічно простою.</div> | |||
title: "SEO-опис проблеми" | |||
title: " | |||
entities: | |||
edrpou: | |||
[[K2 Update]] здатна використовувати [[YML]] як частину механізму доставки компонентів.== YML і модульність == | |||
== Простий приклад YML-опису довідника == | |||
name: str | |||
</syntaxhighlight> | </syntaxhighlight> | ||
У [[ERP]] критично не тільки створити інформаційні дані, а й правильно обмежити доступ до них. hours: | |||
date: | |||
</syntaxhighlight> | 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> | </syntaxhighlight> | ||
- field: number | |||
title: "Дата" | |||
type: reference | type: reference | ||
[[YML]] у [[K2 ERP]] — це не без зусиль формат файлу. |- | |||
| Чи здатна [[AI|ШІ]] створювати [[YML]]?[[index.php?title=Категорія:Альтернатива 1С]] | |||
| | |||
== YML і незалежні компоненти == | == YML і незалежні компоненти == | ||
== YML як основа програмування зі швидкістю думки == | |||
title: "Сервісні заявки" | |||
Коли підключається [[AI|ШІ]], він здатна допомогти створити сам [[YML]]. |- | |||
| Декларативність | |||
| Описується не “як програмувати”, а “що має бути створено”.[[index.php?title=Категорія:ERP для розробників]] | |||
У підході [[K2 ERP]] структура описується через [[YML]], а міграції можуть створюватися автоматизовано. * можна бачити історію змін; | |||
* можна порівнювати версії; | |||
* можна робити гілки розробки; | |||
* можна проводити code review; | |||
* можна відкотити помилкові зміни; | |||
* можна бачити, хто і коли змінив модель; | |||
* можна переносити моделі між проєктами. | Для автоматичного створення [[ORM|ORM-моделей]], міграцій, програмного коду, меню, довідників, журналів документів і форм. платформа здатна використати цей SEO-опис для автоматичного створення списку документів з потрібними колонками. |- | |||
| [[ER-модель]] | |||
| Архітектурний SEO-опис сутностей, зв’язків і структури майбутнього компонента. problem_description: | |||
items: | |||
title: " | title: "Робота" | ||
Нижче наведено спрощений приклад [[YML]]-опису довідника “Контрагенти”. Він не замінює архітектора. Це означає, що людина перестає витрачати час на механічне дублювання.</syntaxhighlight> | |||
required: true | |||
title: "Обладнання" | |||
Такий SEO-опис робить компонент зрозумілим для системи, розробника, партнера й [[AI|ШІ]]. type: decimal | |||
title: "Ціна" | |||
set: | |||
Цей фрагмент означає, що поле `contractor_id` виступає як посиланням на сутність `contractor`. title: "Назва" | |||
Саме тому [[YML]] виступає як одним із фундаментів програмування зі швидкістю думки. На основі цього [[YML]] платформа здатна автоматизовано створити не тільки таблиці, а й журнал документів, форму документа та табличну частину. - normal | |||
[[YML]] виступає як | |||
На основі | |||
Якщо [[YML]] описує структуру сутності, то з нього можна автоматизовано створювати типи для frontend.<syntaxhighlight lang="yaml"> | |||
< | [[K2 ERP]] розвивається як модульна ERP платформа. customer_order.yml | ||
Але він прибирає величезний пласт рутини, який у старих системах забирав час, гроші, нерви й змушував програмістів вручну робити те, що давно має створюватися автоматизовано.<syntaxhighlight lang="yaml"> | |||
quantity: | |||
Коментарі особливо корисні в складних галузевих модулях, де бізнес-логіка не завжди очевидна. product: | |||
* номер документа; | * номер документа; | ||
| Рядок 1168: | Рядок 1161: | ||
* автор; | * автор; | ||
* дата створення; | * дата створення; | ||
* дата зміни. | * дата зміни.== Як AI і YML змінюють роль програміста == | ||
when: "items.amount changed" | |||
Нижче наведено спрощений приклад [[YML]]-опису документа “Замовлення покупця”. Відповідь | |||
type: reference | |||
Поточна версія на 16:07, 14 травня 2026
- row:
- field: date
title: "Номер"
type: string
! Перевага index.php?title=Категорія:Інструменти розробника
POST /api/contractors генерації коду забезпечується через Для розробників. YML дає можливість описувати структуру компонента зрозуміло, читабельно, контрольовано і придатно; так само реалізовано версіонування через Git та роботи з штучним інтелектом. Частина логіки застаріває. entity: contractor
здатна бути автоматизовано розроблена умовна Python-модель:
index.php?title=Категорія:K2 ERP
title: "Заявка на ремонт"
- формулює задачу;
- перевіряє модель;
- уточнює структуру;
- контролює якість;
- акцептує створення компонента;
- дописує складну логіку, яка не була описана в промпті. |-
| 6
| K2 ERP автоматизовано створює компонент. - row:
Коли до цього підключається [[AI|штучний інтелект]], людина здатна описати задум людською мовою, отримати [[YML]]-модель, перевірити її, уточнити промптами й акцептувати автоматичне створення компонента. entities:
Програмісту залишається важливіша робота: подумати, чи правильно побудована модель, чи не буде проблем зі зв’язками, чи відповідає структура реальному бізнесу, яку складну логіку треба дописати окремо. fields:
component:
calculated: true
calculate_total:
Він стає архітектором, який:
id:
== YML як міст між людиною і системою ==
- crm
type: directory
name:
title: "Власник"
* [[K2]]
* [[K2 ERP]]
* [[K2 Update]]
* [[ERP]]
* [[YML]]
* [[YAML]]
* [[JSON]]
* [[XML]]
* [[ER-модель]]
* [[BP-модель]]
* [[ORM]]
* [[API]]
* [[Python]]
* [[TypeScript]]
* [[PostgreSQL]]
* [[SQLite]]
* [[MySQL]]
* [[SQL]]
* [[Git]]
* [[AI]]
* [[Штучний інтелект]]
* [[Low-code]]
* [[No-code]]
* [[RAD]]
* [[IDE]]
* [[Автоматична генерація коду]]
* [[Автоматизація бізнесу]]
* [[Українське програмне забезпечення]]
* [[Альтернатива 1С]]
* [[Альтернатива BAS]]
title: "E-mail"
* [https://erp.kyiv.ua Сайт K2 ERP]
* [https://wiki.erp.kyiv.ua Wiki K2 ERP]
* [https://cloud.corp2.eu хмарна інфраструктура K2 ERP]
* [https://t.me/+uIdWI1W6vndkMTAy Telegram-канал K2 ERP]
* [https://t.me/+6jFwAZM6TQliNTdi Група обговорення функціоналу та пропозицій]
* [https://www.linkedin.com/company/k2erp/ LinkedIn K2]
Саме це і робить [[YML]] важливим для швидкої розробки. У класичному програмуванні людина часто формулює ідею, потім програміст вручну перекладає її в таблиці, класи, форми, меню, інтерфейси, документи й логіку. entity: customer_order
[[index.php?title=Категорія:Українське програмне забезпечення]]
type: reference
title: "Активний"
як приклад: Людина здатна написати промпт: table_parts:
title: "Номер" type: string
export interface Contractor {
auto: true title: "складський облік"
! Програміст більше не переписує одну й ту саму структуру в різних місцях, а функціонує як архітектор, який описує модель і контролює результат. entity: service_work
validation: - title: "Заявки на ремонт" - field: contractor_id - high
Форма документа — це те, з чим функціонує користувач системи. Правильний баланс. YML описує те, що можна формалізувати.</syntaxhighlight> Типові помилки:
entity: equipmentYML дає можливість описати модель один раз, а далі використати цей 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 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 і Gittype: 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: "Контрагент"
title: "Назва"
У цьому прикладі описано сутність `contractor`, яка виступає як довідником. |- | Чи замінює YML програміста? |- | ORM-модель | автоматизовано згенерована модель для роботи з базою даних у коді. Головна цінність у тому, що YML виступає як зрозумілим і для людини, і для машини.XML достатньо формальний і потужний, але часто виглядає занадто важким для людини.</syntaxhighlight> |- | Читабельність | YML швидко читати людині.YML дає можливість описувати ці зміни на рівні моделі, а не випадкових ручних правок. name: service_requests ! type: reference
Основною базою даних для K2 ERP виступає як PostgreSQL. Це формалізований SEO-опис бізнес-моделі, з якого платформа здатна автоматизовано створювати структури, ORM-моделі, міграції, код модуля, меню, довідники, журнали документів і форми документів. type: string
id: number;
- неправильні відступи;
- неузгоджені назви полів;
- дублювання сутностей;
- відсутність типів даних;
- занадто складні структури в одному файлі;
- спроба описати в YML те, що краще реалізувати в коді;
- відсутність коментарів;
- некоректні посилання на інші сутності;
- невраховані права доступу;
- неописані правила валідації. Підхід K2 ERP з YML
платформа здатна зрозуміти, що в таблицю потрібно додати нову колонку. name:
code:
Одна з важливих переваг K2 ERP — можливість створювати незалежні легкі компоненти, які швидко підтримувати й інтегрувати між собою. ! primary_key: true
Цей SEO-опис говорить системі, як розмістити поля на формі. id:
sales_manager:
DELETE /api/contractors/{id} Щоб YML-моделі залишалися зручними, варто дотримуватися кількох принципів. repair_request:
Формула. Ідея → ШІ → YML → ER-модель → ORM → міграції → код модуля → меню → довідники → журнали → форми → готовий компонент. title: "ЄДРПОУ"
type: directory
YML і ORM
YML у K2 ERP — це основа для такого підходу. title: "Назва"
entity: contractor title: "Контрагент"
як приклад, якщо в ER-моделі виступає як сутність “Замовлення покупця”, яка пов’язана з “Контрагентом”, “Складом” і “Товаром”, то в YML це здатна бути описано через поля типу `reference`.index.php?title=Категорія:Цифрова незалежність України
values: fields: З такого опису платформа здатна автоматизовано створити довідник обладнання, документ заявки на ремонт, журнал заявок, форми, меню, ORM-моделі, міграції та базовий функції ERP. Якщо в YML описана сутність, платформа здатна автоматизовано створити відповідну ORM-модель. required: true Після цього людина перевіряє модель, уточнює промптами, додає або змінює поля, коригує зв’язки й акцептує автоматичне створення компонента. Пояснення - title: "Товари" Це не означає, що складні системи з’являються магічно без контролю.* назву;
* версію;
* залежності;
* сутності;
* форми;
* меню;
* права;
* міграції;
* точки інтеграції.== YML і Python ==
active: true
- low
entity: contractor
[[YML]] добре підходить саме для опису структур, бо він лаконічний, читабельний і зручний для людини. - in_work
- title: "Замовлення покупців"
format: email
Якщо поле має тип `decimal`, можна перевірити числові значення. id:
columns:
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
бізнес-процес виглядає так:
title: "Телефон"
Потрібні поля: номер, дата, клієнт ERP, обладнання, SEO-опис проблеми,
title: "Замовлення покупця"
title: "Сума"
Не треба обіцяти, що програмісти зникнуть. |-
| Яка роль людини? Людина перевіряє цю модель, уточнює промптами й акцептує автоматичне створення компонента. contractors.yml
[[index.php?title=Категорія:PostgreSQL]]
У контексті [[K2 ERP]] [[YML]] застосовується для для того, щоб описувати не без зусиль параметри, а цілі бізнес-структури:
default: normal
fields:
date:
price: Decimal
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
primary_key: true
section: "Сервіс"
'''Саме через [[YML]], [[ER-модель|ER-моделі]], [[ORM]], генерацію, модульність і [[AI|ШІ]] [[K2 ERP]] будує новий підхід до створення [[ERP]]-систем — швидший, легший, зрозуміліший і значно сучасніший за старі закриті технології.'''
items.amount: "items.quantity * items.price"
default: draft
== Коментарі в YML ==
[[index.php?title=Категорія:AI]]
products.yml
== YML і повторне використання компонентів ==
== Що таке YML ==
warehouse_id:
Додай табличну частину для виконаних робіт:
<syntaxhighlight lang="yaml">
Автоматичне створення журналу документів
[[ORM|ORM-модель]] потрібна для того, щоб програмний код міг працювати з базою даних не напряму через таблиці, а через об’єкти. У ньому виступає як:
Це принципово інший підхід до розробки. auto: true
priority:
calculated: true
name:
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
це не без зусиль конфігураційний файл виступає ключовою рисою '''Головне.''' У [[K2 ERP]] [[YML]]. section: "Сервіс"
<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
</div>
fields:
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
У [[K2 ERP]] [[YML]] застосовується для як міст між архітектурною ідеєю, [[ER-модель|ER-моделлю]], [[ORM|ORM-моделлю]], структурою бази даних, програмним кодом модуля, інтерфейсом користувача та автоматизовано створеним бізнес-додатком.
Якщо в YML сутність має тип `document`, платформа здатна автоматизовано створити журнал документів. id: number;
Python застосовується для для backend-логіки, бізнес-правил, API, інтеграцій, обробки даних і AI-сценаріїв. |}
- field: warehouse_id
Поле
== Коротко ==
entity: customer_order
'''YML у K2 ERP.''' Це не без зусиль “конфігурація”.== YML і валідація даних ==
title: "Замовлення покупця"
type: datetime
title: "Дата"
У другому — контрагент і складський облік. Якщо структура цього модуля описана в [[YML]], її можна переносити між інсталяціями, використовувати як шаблон, розвивати й публікувати через [[K2 Update]]. amount:
primary_key: true
Коментарі допомагають пояснити, навіщо потрібне поле або правило. Якщо змінюється документ “Замовлення покупця”, не потрібно відкривати файл на десять тисяч рядків. |-
| Чим [[YML]] корисний для партнерів? Він дає можливість сказати системі: “Ось як має виглядати компонент”, а далі платформа сама створює необхідні частини. type: text
Звичайно, реальна платформа здатна мати складніші правила доступу, фільтрації, валідації й бізнес-логіки. Для людини це зрозуміло як “у документі виступає як контрагент”. як приклад, з такого [[YML]]:
Коли людина описує ідею, [[AI|ШІ]] формує [[YML]], а [[K2 ERP]] автоматизовано створює компонент — розробка програмного забезпечення наближається до швидкості думки. Документи уточнюються. |-
| 3
| Людина перевіряє модель. Це SEO-опис, з якого здатна народжуватися готовий компонент. |-
| Прозорість
| Архітектуру компонента можна зрозуміти з текстового опису. Достатньо працювати з конкретним описом. type: enum
Попри простоту, з [[YML]] потрібно працювати уважно. Що відбувається
amount:
Частину структури можна створювати візуально. - title: "Обладнання"
Це спрощені приклади, але вони показують суть: [[YML]] стає джерелом для генерації моделей у різних мовах програмування. |-
| Для чого застосовується для [[YML]]? access:
! Етап
layout:
<syntaxhighlight lang="yaml">
depends_on:
primary_key: true
items:
component:
== YML і K2 Update ==
entity: contractor
- title: "Контрагенти"
title: "Сума" type: string Приклад YML-опису меню: У підході K2 ERP значна частина цього здатна створюватися автоматизовано з YML. type: directory type: integer name: - field: status |
class Contractor(BaseModel):
values: YML у K2 ERP — це мова, якою бізнес-ідея починає перетворюватися на працюючий компонент. Штучний інтелект особливо добре функціонує там, де виступає як зрозуміла структура. id: |
- | Автоматична генерація | З YML можна створювати ORM, міграції, код, меню, форми й довідники. як приклад, якщо потрібно перейменувати поле, платформа здатна бачити, де воно застосовується для: у формі, журналі, API, звіті, правилах, правах доступу. | Перевірити структуру, уточнити промпти, акцептувати модель і дописати складну логіку, яку не було описано в промпті. rate:
- field: contractor_id </syntaxhighlight> serial_number: title: "Роботи" type: integer Приклад: JSON зручний для обміну даними між системами й дуже популярний у веб-розробці, але для великих конфігурацій і багаторівневих описів не завжди такий зручний для ручного редагування. Через це критично використовувати нормальні редактори, підсвічування синтаксису й перевірки. | Ні. title: "Статус" У бізнес-системі критично, щоб користувач системи не міг зберегти некоректні інформаційні дані. Потім — таблична частина “Товари”. Це і виступає як програмування зі швидкістю думки. | Декларативний текстовий SEO-опис структур, моделей, форм, меню, документів, довідників і компонентів. платформа здатна прочитати файл і автоматизовано створити на його основі структуру, код, форми та інші елементи.== YML і TypeScript == auto: true Що платформа здатна створити з такого YMLindex.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-опис структур;
Приклад: 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: Частину — описувати вручну. |-
|
|---|