Этот проект помогает вести смету и график реализации ландшафтного проекта по дням.
Ось проекта — день.
Не перестраивай смету в модель «по видам работ». Виды работ можно показывать в графике, но деньги считаются через дневную модель:
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.
- 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-ключи.