feat: implement server start/stop functionality

- Replace stub implementations with actual API calls
- POST /api/provision/orders/{order_id}/start
- POST /api/provision/orders/{order_id}/stop
- Add proper validation, logging, and error handling
- Follow existing code patterns (callProvisionAPI, __DIRECT__)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
kappa
2026-01-28 20:46:05 +09:00
parent 79b8555893
commit 41f99334eb

View File

@@ -843,23 +843,69 @@ export async function executeServerAction(
}
case 'start': {
const { server_id } = args;
const { order_id } = args;
if (!server_id) {
return '🚫 서버 시작에는 server_id가 필요합니다.';
if (!order_id) {
return '🚫 서버 시작에는 order_id가 필요합니다.';
}
return '🚧 서버 시작 기능은 준비 중입니다.\n\n현재 서버 추천 기능만 사용 가능합니다.';
if (!telegramUserId) {
return '🚫 사용자 인증이 필요합니다.';
}
if (!env) {
return '🚫 환경 설정이 필요합니다.';
}
// Call the provision API to start the server
const result = await callProvisionAPI(
`/api/provision/orders/${order_id}/start`,
'POST',
env,
undefined,
telegramUserId
);
if (result.error) {
return `🚫 서버 시작 실패: ${result.error}`;
}
logger.info('서버 시작 요청', { userId: maskUserId(telegramUserId), orderId: order_id });
return `__DIRECT__\n✅ 서버 시작 요청이 완료되었습니다.\n\n• 주문번호: #${order_id}\n• 상태: 시작 중...\n\n⏳ 서버가 시작되기까지 1-2분 소요될 수 있습니다.`;
}
case 'stop': {
const { server_id } = args;
const { order_id } = args;
if (!server_id) {
return '🚫 서버 중지에는 server_id가 필요합니다.';
if (!order_id) {
return '🚫 서버 중지에는 order_id가 필요합니다.';
}
return '🚧 서버 중지 기능은 준비 중입니다.\n\n현재 서버 추천 기능만 사용 가능합니다.';
if (!telegramUserId) {
return '🚫 사용자 인증이 필요합니다.';
}
if (!env) {
return '🚫 환경 설정이 필요합니다.';
}
// Call the provision API to stop the server
const result = await callProvisionAPI(
`/api/provision/orders/${order_id}/stop`,
'POST',
env,
undefined,
telegramUserId
);
if (result.error) {
return `🚫 서버 중지 실패: ${result.error}`;
}
logger.info('서버 중지 요청', { userId: maskUserId(telegramUserId), orderId: order_id });
return `__DIRECT__\n✅ 서버 중지 요청이 완료되었습니다.\n\n• 주문번호: #${order_id}\n• 상태: 중지 중...\n\n⏳ 서버가 중지되기까지 1-2분 소요될 수 있습니다.`;
}
case 'list': {