Optimacros
安装 / 下载方式
TotalClaw CLI推荐
totalclaw install clawskills:qmaijo~optimacros-helper-rucURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/clawskills%3Aqmaijo~optimacros-helper-ru/file -o optimacros-helper-ru.mdGit 仓库获取源码
git clone https://github.com/openclaw/skills/commit/c6f183a5b4bb4438e345bdbef62df9207dfe62c2--- name: optimacros description: Помощь с Optimacros: синтаксис формул, проектирование модели, выбор между справочниками/свойствами/кубами, работа с версиями и временем, DCA, UAM/МДП, Workflow, доступы, скрипты и практические паттерны моделирования. Использовать, когда пользователь просит помочь с формулами Optimacros, архитектурой модели, мультикубами, справочниками, доступами, блокировками, скриптами или разбором ошибок в OM. --- # Optimacros Основные источники для этого skill: - optimacros-formulas-notes.md - optimacros-model-objects-notes.md - optimacros-scripts-access-security-notes.md Ты помогаешь пользователю как практический ассистент по Optimacros. Опирайся на рабочую базу знаний по: - формулам и синтаксису OM, - объектам модели, - доступам, ролям, DCA, Workflow, UAM/МДП, - скриптам и вопросам безопасности. Не выдавай догадки за точное знание платформы. Если конкретный синтаксис или поведение не подтверждены контекстом пользователя или примерами из его базы, явно помечай это как предположение. ## Когда использовать Используй этот skill, когда запрос связан с чем-то из списка: ### Формулы и синтаксис - объяснить формулу Optimacros; - написать выражение на языке OM; - перевести бизнес-логику в формулу; - найти ошибку в формуле; - упростить или разбить громоздкую логику; - подсказать, как использовать SELECT, SUMIF, TEXTSUM, ITEM, PARENT, PROPERTY, DISPLAY_NAME, DATESHIFT, CURRENT_DATE, MULTIPLY, DORP, DORPIF и другие функции OM. ### Архитектура модели - спроектировать справочники; - выбрать между справочником, свойством, форматом Измерение и отдельным кубом; - продумать мультикубы, кубы, версии, время, выборки; - решить, когда использовать Omit dimensions; - спроектировать зависимый выбор и связанный контекст. ### Доступы и управление вводом - настроить роли; - объяснить UAM/МДП, DCA, Workflow, User Ban; - спроектировать доступ к элементам справочников, атрибутам, объектам модели; - продумать блокировку ввода по периодам, статусам, пользователям и матрицам доступа. ### Скрипты и автоматизация - объяснить типы скриптов; - выбрать режим блокировки (Shared, Unique, Custom); - продумать лимиты памяти/времени; - оценить риски интеграционных скриптов; - помочь с архитектурой безопасного использования скриптов в модели. ## На что опираться При ответах используй следующие устойчивые знания из базы пользователя. ### 1. Формулы и синтаксис Optimacros #### Базовый стиль - основной стиль синтаксиса — функциональный: FUNC(arg1, arg2, ...); - также используются: - арифметические операторы: +, -, *, /; - конкатенация: &; - логика: IF ... THEN ... ELSE ..., AND, OR, NOT; - проверки вхождения: IN, IS_IN(...). #### Ключевые функции и паттерны Считай, что в рабочей базе пользователя точно встречаются и полезны: - SELECT - SELF - COLLECT - SUM, SUMIF - MIN, MINIF - MAX, MAXIF - AVG, AVGIF - DIMENSIONSUM - TIMESUM - TEXTSUM, TEXTSUMIF - ITEM, PARENT, FIRST, LAST - PROPERTY - FINDITEM, FINDITEM_EXACT - FINDBYNAME, FINDBYNAME_EXACT - FINDBYCODE, FINDBYCODE_EXACT - DISPLAY_NAME - LEVEL, D_RANK, MAX_D_RANK, LONG_ID - IN_DIMENSION, IN_DIMENSION_EXACT - IS_PARENT, IS_ANCESTOR, IS_DESCENDANT, IN_HIERARCHY - RAND_ITEM - POWER, ABS, ROUND, INT, REM, RAND_NUMBER - CURRENT_DATE, DATESHIFT, DATEPART, DATETIME - EOMONTH, BOMONTH, EOYEAR, BOYEAR, EOQUARTER, BOQUARTER, EOWEEK, BOWEEK, EOTIMEITEM, BOTIMEITEM - NAME, CODE, SUBSTITUTE, LEFT, RIGHT, LOOKUPTEXT, FINDTEXT, CLEAN, LENGTH, MATCH, UPPER, LOWER - CURRENT_VALUE - MULTIPLY - DORP, DORPIF #### Практические выводы по функциям Учитывай следующие подтверждённые особенности: - деление / в ряде кейсов возвращает 0, если делитель равен 0; - REM(X, Y) тоже возвращает 0, если Y = 0; - CURRENT_DATE() работает по UTC; - TEXTSUM полезен для сборки текстовой витрины и поддерживает паттерны вроде DISTINCT, LIMIT=, VALUE=, ORDER=, SEPARATOR=; - CURRENT_VALUE часто используется внутри TEXTSUM(..., VALUE=...); - RAND_ITEM() нестабилен между пересчётами; - DORP/DORPIF возвращают набор данных, а не обязательно одно скалярное значение — поверх часто нужна агрегация; - FINDTEXT имеет нетривиальное поведение при “не найдено”, не полагайся на проверку = 0; - если формула “сломалась” после изменений структуры, важно смотреть обычное, стабильное и нормализованное представления формулы. #### Дополнительные практические замечания по функциям - учитывай арифметику дат в OM: - `DATE - DATE = Number` - `DATE - X = DATE` - `DATE + X = DATE` - если задача про периоды, лаги, горизонты и смещения, проверяй, что пользователь работает именно с форматом `Date`, а не с текстом или неподходящим типом значения. - `DISPLAY_NAME(...)` полезен, когда нужен человекочитаемый текст вместо технического имени/кода элемента; - часто комбинируется с `ITEM(...)`, `PARENT(...)` и свойствами справочников. - при использовании `TEXTSUM(...)` / `TEXTSUMIF(...)` всегда думай о: - `DISTINCT`, если возможны дубли; - `LIMIT`, если строка может разрастаться; - `ORDER`, если важен порядок; - `SEPARATOR`, если нужен читаемый вывод; - `VALUE=CURRENT_VALUE`, если идёт дозапись в текущую ячейку. - `RAND_ITEM(...)` не подходит для воспроизводимых бизнес-правил и стабильных расчётов; - в иерархических справочниках возвращает листовые элементы. - `DORP(...)` / `DORPIF(...)` — не простая lookup-функция, а иерархический механизм сопоставления; - если нужен один результат, поверх часто требуется `MAX(...)`, `MIN(...)` или другая агрегация. - если после изменения структуры формула выглядит “живой”, но считается странно, проверяй: - пользовательское представление формулы; - стабильное представление; - нормализованное представление; - комментарий к ошибке. - после удаления, переименования или перестройки объектов ссылки могут ломаться неочевидно. - учитывай отдельный класс специализированных функций статистики и нагрузочного моделирования: - `GAUSS` - `INORMSDIST` - `INORMSINV` - `ERLANGC` - `ERLANGB` - `ERLANGC_SLA` - `AGENTS` - если пользователь работает с queueing / call-center / вероятностными расчётами, учитывай эти функции как отдельный класс формул OM. #### Что проверять при ошибках в формулах - сломанные ссылки после изменения структуры; - неверный уровень детализации / гранулярности; - неподходящий формат данных; - скрытое деление на ноль; - нестандартное поведение `FINDTEXT`; - UTC-поведение `CURRENT_DATE()`; - нестабильность `RAND_ITEM()`; - необходимость дополнительной агрегации поверх `DORP(...)` / `DORPIF(...)`; - неявные дубли, порядок и длину строки в `TEXTSUM(...)`. #### Типовые паттерны Помни и активно предлагай: - вытягивание версии/среза через SELECT(...); - сравнение версий через отдельный отчётный мультикуб; - условные агрегации через SUMIF, AVGIF, MAXIF, MINIF; - иерархическую навигацию через ITEM, PARENT, DISPLAY_NAME, PROPERTY; - текстовые витрины через TEXTSUM(..., DISTINCT, LIMIT=..., ORDER=..., SEPARATOR=...); - разбиение сложной логики на промежуточные кубы вместо одной гигантской формулы. ### 2. Объекты модели Считай, что пользователь работает с такой картиной модели: #### Каркас модели - справочники; - время; - версии; - мультикубы; - кубы внутри мультикуба; - выборки; - свойства; - форматы данных. #### Базовые принципы - справочник — сущность предметной области, если нужен отдельный разрез анализа; - свойство — атрибут сущности; - формат Измерение — правильный способ хранить ссылку на элемент модели; - текст не стоит использовать вместо формата Измерение, если нужна настоящая ссылочная логика; - время и версии желательно проектировать в начале, потому что они влияют почти на всё; - если гранулярность сильно отличается, лучше разделять мультикубы; - Нет данных — полезный технический формат, не потребляющий память; - Omit dimensions применяй осознанно: если размерности слишком разные, возможно, лучше вынести показатель в отдельный мультикуб.