Skip to content

test(ton-trading-bot): выделенные тесты управления позициями; инструменты уже экспортированы (#188) - #189

Merged
xlabtg merged 3 commits into
xlabtg:mainfrom
konard:issue-188-77abb0378f99
Jun 17, 2026
Merged

test(ton-trading-bot): выделенные тесты управления позициями; инструменты уже экспортированы (#188)#189
xlabtg merged 3 commits into
xlabtg:mainfrom
konard:issue-188-77abb0378f99

Conversation

@konard

@konard konard commented Jun 16, 2026

Copy link
Copy Markdown

Итог расследования

Issue #188 сообщает, что три инструмента управления позициями (ton_trading_get_open_positions, ton_trading_close_position, ton_trading_close_all_positions) задокументированы, но отсутствуют в экспортируемом API.

При проверке оказалось, что функциональность уже полностью реализована в ветке main коммитом 2fe18d0 (feat(ton-trading-bot): add position close tools). На текущем main:

  • ✅ все три инструмента экспортируются из tools(sdk) — всего 42 инструмента, что совпадает с manifest;
  • ton_trading_get_open_positions, ton_trading_close_position, ton_trading_close_all_positions присутствуют в manifest.json;
  • ✅ схемы инструментов задокументированы в README.md;
  • ✅ внутренняя логика (formatOpenPosition, closeOpenPosition, closeTradeJournalEntry) подключена и используется;
  • ✅ инструменты покрыты тестами в tests/index.test.js.

Таким образом, основное требование issue (export + manifest + README) уже выполнено. Воспроизведение из issue (tool not found) на актуальном коде не повторяется.

Что добавляет этот PR

Единственный пункт acceptance criteria, не выполненный буквально, — выделенный тестовый файл plugins/ton-trading-bot/tests/open-positions.test.js, который явно запрошен в issue (раздел «4. Add tests»). Он добавлен в этом PR и закрывает два сценария, ранее не проверявшихся явно:

  • close_position корректно отклоняет закрытие уже закрытой позиции (graceful failure);
  • close_all_positions не закрывает позицию дважды при гонке двух параллельных проходов (compare-and-swap / CAS).

Полный список новых проверок (tests/open-positions.test.js, 9 тестов):

  1. экспорт всех трёх инструментов из tools(sdk);
  2. get_open_positions возвращает только записи со status = 'open';
  3. get_open_positions учитывает фильтр mode (real / simulation / all);
  4. get_open_positions ограничивает limit диапазоном 1–100;
  5. close_position переводит симуляционную позицию из 'open' в 'closed';
  6. close_position корректно отклоняет уже закрытую позицию;
  7. close_position корректно отклоняет несуществующую сделку;
  8. close_all_positions закрывает все открытые позиции выбранного режима (не трогая чужой режим);
  9. close_all_positions не допускает двойного закрытия при гонке (CAS).

Как воспроизвести / проверить

# целевой набор тестов
node --test plugins/ton-trading-bot/tests/open-positions.test.js

# все тесты плагина (189 существующих + 9 новых = 198)
node --test plugins/ton-trading-bot/tests/*.test.js

# валидация манифеста и линт
node scripts/validate-plugins.mjs   # ton-trading-bot: 42 tool(s) validated
npx eslint plugins/ton-trading-bot/tests/open-positions.test.js  # 0 проблем

Заметки

  • Версия плагина не повышалась: PR не меняет поведение плагина (добавлены только тесты), поэтому новый релиз не нужен и проверка соответствия версий index.jsmanifest.json (issue The plugin is not updated after the update. #186) остаётся зелёной.

Acceptance Criteria

  • ton_trading_get_open_positions вызывается и возвращает открытые позиции в режиме simulation
  • ton_trading_close_position закрывает одну открытую симуляционную позицию и обновляет P&L
  • ton_trading_close_all_positions закрывает все открытые позиции выбранного режима атомарно (CAS)
  • Все три инструмента присутствуют в экспортируемом списке и соответствуют схеме README
  • Юнит-тесты проходят для каждого инструмента
  • Регрессий в существующих инструментах нет (все 198 тестов проходят)

Fixes #188

konard added 2 commits June 16, 2026 16:20
Adding .gitkeep for PR creation (default mode).
This file will be removed when the task is complete.

Issue: xlabtg#188
@konard konard changed the title [WIP] [P0] ton-trading-bot: 3 critical tools documented but missing from exported API (get_open_positions, close_position, close_all_positions) test(ton-trading-bot): выделенные тесты управления позициями; инструменты уже экспортированы (#188) Jun 16, 2026
@konard
konard marked this pull request as ready for review June 16, 2026 16:25
@konard

konard commented Jun 16, 2026

Copy link
Copy Markdown
Author

Working session summary

Готово. Подведу итог.

Результат

Issue #188 уже была решена в main коммитом 2fe18d0 (feat(ton-trading-bot): add position close tools). Я это проверил эмпирически:

  • m.tools(sdk) возвращает 42 инструмента, включая все три «отсутствующих»: ton_trading_get_open_positions, ton_trading_close_position, ton_trading_close_all_positions;
  • они есть в manifest.json и задокументированы в README.md;
  • node scripts/validate-plugins.mjston-trading-bot: 42 tool(s) validated;
  • воспроизведение из issue (tool not found) на актуальном коде не повторяется.

То есть основное требование (export + manifest + README + базовые тесты) уже выполнено предыдущей работой.

Что я добавил

Единственный буквально невыполненный пункт acceptance criteria — выделенный файл тестов, явно запрошенный в issue (раздел «4. Add tests»). Я создал plugins/ton-trading-bot/tests/open-positions.test.js (9 тестов), который дополнительно закрывает два сценария, ранее не проверявшиеся явно:

  • close_position корректно отклоняет уже закрытую позицию (graceful failure);
  • close_all_positions не допускает двойного закрытия при гонке (CAS).

Проверки

  • Новый файл: 9/9 тестов проходят, eslint — 0 проблем.
  • Весь плагин: 198/198 тестов проходят (189 существующих + 9 новых).
  • Версию плагина не повышал — поведение не меняется, только тесты; проверка соответствия версий (issue The plugin is not updated after the update. #186) остаётся зелёной.
  • main уже влит в ветку, рабочее дерево чистое.

Единственный «фейл» в полном прогоне run-tests.mjs — это vk-full-admin из-за отсутствующего модуля vk-io (несвязанная с задачей проблема окружения), к ton-trading-bot отношения не имеет.

PR обновлён (заголовок + подробное описание) и переведён в статус ready for review: #189

Замечание: по сути issue #188 — устаревший дубликат работы по issue #144. Если хотите, могу вместо добавления тестов просто закрыть issue с пояснением, что функциональность уже в main — но я выбрал вариант, который буквально завершает все acceptance criteria и оставляет регрессионную защиту.


This summary was automatically extracted from the AI working session output.

@konard

konard commented Jun 16, 2026

Copy link
Copy Markdown
Author

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Public pricing estimate: $1.524453
  • Calculated by Anthropic: $1.741731
  • Difference: $0.217279 (+14.25%)

📊 Context and tokens usage:

  • 70.4K / 1M (7%) input tokens, 19.1K / 128K (15%) output tokens

Total: (3.3K new + 57.9K cache writes + 1.3M cache reads) input tokens, 19.1K output tokens, $1.524453 cost

🤖 Models used:

  • Tool: Anthropic Claude Code
  • Requested: opus
  • Model: Claude Opus 4.8 (claude-opus-4-8)

📎 Log file uploaded as Gist (958KB)


Now working session is ended, feel free to review and add any feedback on the solution draft.

@konard

konard commented Jun 16, 2026

Copy link
Copy Markdown
Author

✅ Ready to merge

This pull request is now ready to be merged:

  • All CI checks have passed
  • No merge conflicts
  • No pending changes

Monitored by hive-mind with --auto-restart-until-mergeable flag

@xlabtg
xlabtg merged commit 168a166 into xlabtg:main Jun 17, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[P0] ton-trading-bot: 3 critical tools documented but missing from exported API (get_open_positions, close_position, close_all_positions)

2 participants