import type { FastifyInstance } from 'fastify';
import { landingChatService } from '../services/landingChatService.js';
import { verifyTurnstileForNewSession } from '../services/captchaService.js';

export async function landingRoutes(fastify: FastifyInstance) {
  /** Public landing-page chat — support via talkback + conversational login. */
  fastify.post('/chat', async (req, reply) => {
    const body = req.body as {
      sessionId?: string | null;
      message?: string;
      captchaToken?: string;
    };
    const sessionId = body.sessionId?.trim() ? body.sessionId.trim() : null;
    const message = typeof body.message === 'string' ? body.message : '';
    const ip = req.ip;

    if (!(await verifyTurnstileForNewSession(sessionId, body.captchaToken, ip))) {
      return reply.status(400).send({ error: 'Captcha verification failed' });
    }

    const result = await landingChatService.processChat({
      sessionId,
      message,
      remoteIp: ip,
      io: fastify.io,
      log: fastify.log,
    });
    return reply.send(result);
  });
}
