--- /dev/null
+<?php
+
+declare(strict_types=1);
+
+namespace yii_app\commands;
+
+use yii\console\Controller;
+use yii\console\ExitCode;
+use yii_app\services\AutoMarkService;
+
+/**
+ * Авторазметка товаров из 1С (ERP-292).
+ *
+ * Использование:
+ * php yii auto-mark/run-new — разметить все товары без номенклатуры
+ * php yii auto-mark/run-product GUID — разметить конкретный товар
+ * php yii auto-mark/apply PRED_ID — применить одобренное предсказание
+ */
+class AutoMarkController extends Controller
+{
+ public string $defaultAction = 'run-new';
+
+ public function actionRunNew(): int
+ {
+ $this->stdout("Запуск авторазметки новых товаров...\n");
+
+ $service = new AutoMarkService();
+ $count = $service->batchPredict();
+
+ $this->stdout("Создано предсказаний: {$count}\n");
+ return ExitCode::OK;
+ }
+
+ public function actionRunProduct(string $guid): int
+ {
+ $service = new AutoMarkService();
+ $result = $service->predictForProduct($guid);
+
+ if ($result === null) {
+ $this->stderr("Не удалось создать предсказание для {$guid}\n");
+ return ExitCode::UNSPECIFIED_ERROR;
+ }
+
+ $this->stdout("Предсказание создано (ID={$result->id}, confidence={$result->confidence}, method={$result->method})\n");
+ return ExitCode::OK;
+ }
+
+ public function actionApply(int $predictionId): int
+ {
+ $service = new AutoMarkService();
+ $success = $service->applyApprovedPrediction($predictionId);
+
+ if (!$success) {
+ $this->stderr("Не удалось применить предсказание ID={$predictionId}\n");
+ return ExitCode::UNSPECIFIED_ERROR;
+ }
+
+ $this->stdout("Предсказание ID={$predictionId} применено.\n");
+ return ExitCode::OK;
+ }
+}