Skip to content

Latest commit

 

History

History
110 lines (80 loc) · 6.47 KB

File metadata and controls

110 lines (80 loc) · 6.47 KB

AGENTS.md — Смета для ландшафтных проектов

Этот проект помогает вести смету и график реализации ландшафтного проекта по дням.

Главная модель

Ось проекта — день.

Не перестраивай смету в модель «по видам работ». Виды работ можно показывать в графике, но деньги считаются через дневную модель:

  • labor[] — люди по дням;
  • equipment[] — техника по дням;
  • delivery[] — платные доставки по дням;
  • subcontractors[] — подрядчики за задачу;
  • materials[] — материалы на весь объект;
  • schedule[] — операционный график работ по дням.

schedule[] не должен считать деньги повторно. Он описывает, что делать, что привезти, что проверить и какие есть риски.

schedule[] может включать day: 0 — предстартовое согласование и финализацию плана. День 0 не входит в себестоимость и не должен добавлять людей/технику в бюджетные матрицы.

В project желательно хранить:

  • address — адрес или понятное место объекта;
  • start_date — дата первого рабочего дня;
  • working_days — рабочие дни недели (0 = воскресенье, 1 = понедельник).

Файлы

  • data/template.json — чистый шаблон нового проекта.
  • Рабочий файл проекта .json — источник правды для конкретного проекта.
  • engine.py — авторитетный расчёт и генератор HTML.
  • smeta.html — генерируемая офлайн-витрина. Руками не редактировать.
  • skills/smeta-day-planner/SKILL.md — опциональный навык для агентов, которые умеют подключать repo-local skills.

Команды

uv run engine.py data/template.json --html smeta.html

Проверки после изменений:

python3 -c "import json; json.load(open('data/template.json', encoding='utf-8'))"
PYTHONDONTWRITEBYTECODE=1 python3 -c "import ast, pathlib; ast.parse(pathlib.Path('engine.py').read_text(encoding='utf-8'))"

Если менялся JS внутри HTML-шаблона, извлеки скрипт из smeta.html и проверь node --check.

UI-правила

  • HTML остаётся самодостаточным и офлайн.
  • Вкладка Бюджет — редактирование финансовой модели.
  • Вкладка График работ — доска дней + редактор выбранного дня.
  • Доска должна быть обзором, а не полноценным Miro-клоном.
  • Не добавляй drag-and-drop, зависимости или сложный календарь без отдельного решения по модели данных.
  • Сначала сохраняй понятность: день, дата, люди, техника, стоимость, работы, поставки, проверки, статус.

Публичная документация

Для публикации пользователю должно быть понятно:

  • можно открыть smeta.html без установки зависимостей;
  • можно сохранить/открыть файл проекта;
  • примерные цены не являются коммерческим предложением;
  • агент должен работать с файлом проекта .json, а не парсить HTML.

smeta.html может автосохранять черновик в localStorage браузера, но агент его не видит. В Chrome/Edge пользователь может сохранить изменения прямо в выбранный файл проекта через File System Access API; в других браузерах используется скачивание копии. Перед агентными правками пользователь должен сохранить актуальный файл проекта.

Агентный слой и поиск

Агент должен использовать рабочий файл проекта .json как API проекта.

Практичные инструменты для проверки фактов, цен и условий:

  • Tavily — быстрый web search для LLM;
  • Brave Search API — независимый поисковый API;
  • Exa — семантический web search;
  • Firecrawl — превращение сайтов и прайсов в Markdown/структурированный текст;
  • WebSearch Plus — web search с LLM-friendly выдачей;
  • ocli — вызов любых OpenAPI/Swagger API из CLI;
  • погодные API — для планирования дат работ, где погода критична.

Агенту можно поручать:

  • проверить цены материалов и обновить materials[];
  • проверить ставки техники/доставки и обновить equipment[]/delivery[];
  • предложить график schedule[] по адресу, стартовой дате и погодным рискам;
  • отметить дни со статусом risk, если погода или поставки мешают работам;
  • сформировать вопросы к пользователю, если данных недостаточно.

Погодный API не обязателен. Агент может использовать обычный веб-поиск по адресу и датам, если пользователь явно попросил проверить погоду.

Не делай автоматические сетевые запросы без явного запроса пользователя. В публичном репозитории не храни API-ключи.