01
Закрытый кодERP-системы для производства
Две независимые реализации: металлоконструкции (metalstruct) и деревообработка (manufacture) — от заявки до отгрузки.
До 7 ролей с разным объёмом доступа (директор, конструктор, технолог, начальник
производства, прораб, снабженец) и многоэтапный производственный цикл спецификации
— от договора до монтажа, с учётом гарантийных возвратов. В manufacture
добавлена мультитенантность и редактирование docx/xlsx прямо в приложении через
OnlyOffice Document Server, self-hosted инфраструктура на Supabase (PostgreSQL +
PostgREST + Auth + Storage + Edge Functions).
Обе системы разработаны и введены в эксплуатацию у заказчиков — не остались пилотами.
permissions.ts — ролевой доступ (metalstruct)
export type OrgRole =
| "director" | "manager" | "head_constructor"
| "constructor" | "supply_manager" | "production_head" | "foreman";
export function hasRole(memberRoles: string[], ...required: OrgRole[]): boolean {
return required.some((r) => memberRoles.includes(r));
}
/**
* director, manager — full access
* head_constructor — все спеки на этапах проектирования
* supply_manager — все спеки (обработка закупок)
* production_head, foreman — все спеки (производство/склад)
* constructor — только назначенные спеки
*/
export function canSeeAllSpecs(roles: string[]): boolean {
return hasRole(roles, "director", "manager", "head_constructor",
"supply_manager", "production_head", "foreman");
}