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