diff --git a/packages/services/agent-service/src/infrastructure/repositories/agent-instance.repository.ts b/packages/services/agent-service/src/infrastructure/repositories/agent-instance.repository.ts index 599b0d0..31dcd57 100644 --- a/packages/services/agent-service/src/infrastructure/repositories/agent-instance.repository.ts +++ b/packages/services/agent-service/src/infrastructure/repositories/agent-instance.repository.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common'; -import { DataSource, Repository } from 'typeorm'; +import { DataSource, Not, Repository } from 'typeorm'; import { AgentInstance } from '../../domain/entities/agent-instance.entity'; @Injectable() @@ -27,7 +27,8 @@ export class AgentInstanceRepository { } findByDingTalkUserId(dingTalkUserId: string): Promise { - return this.repo.findOne({ where: { dingTalkUserId } as any }); + // Exclude removed instances so a rebound new instance is routed correctly + return this.repo.findOne({ where: { dingTalkUserId, status: Not('removed') } as any }); } save(instance: AgentInstance): Promise { diff --git a/packages/services/agent-service/src/interfaces/rest/controllers/agent-instance.controller.ts b/packages/services/agent-service/src/interfaces/rest/controllers/agent-instance.controller.ts index e185cfe..3f2a005 100644 --- a/packages/services/agent-service/src/interfaces/rest/controllers/agent-instance.controller.ts +++ b/packages/services/agent-service/src/interfaces/rest/controllers/agent-instance.controller.ts @@ -146,6 +146,7 @@ export class AgentInstanceController { if (!inst) throw new NotFoundException(`Instance ${id} not found`); await this.deployService.removeInstance(inst); inst.status = 'removed'; + inst.dingTalkUserId = null as any; // Clear DingTalk binding so the ID can be reused by a new instance await this.instanceRepo.save(inst); return { message: 'Instance removed', id }; }