package com.gzzm.lobster.api;

import com.gzzm.lobster.common.IdGenerator;
import com.gzzm.lobster.feedback.UserFeedback;
import com.gzzm.lobster.feedback.UserFeedbackDao;
import com.gzzm.lobster.identity.UserContext;
import com.gzzm.lobster.identity.UserContextHolder;
import net.cyan.arachne.HttpMethod;
import net.cyan.arachne.annotation.Service;
import net.cyan.nest.annotation.Inject;

import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * FeedbackApi —— 用户反馈 API / User feedback API.
 */
@Service
public class FeedbackApi {

    @Inject private UserFeedbackDao feedbackDao;

    @Service(url = "/ai/api/feedback", method = HttpMethod.post)
    public Map<String, Object> submit(String threadId, String runId, String type, String comment) throws Exception {
        UserContext user = UserContextHolder.require();
        UserFeedback f = new UserFeedback();
        f.setFeedbackId(IdGenerator.prefixed("fb_"));
        f.setThreadId(threadId);
        f.setRunId(runId);
        f.setUserId(user.getUserId());
        f.setFeedbackType(type == null ? "POSITIVE" : type.toUpperCase());
        f.setComment(comment);
        f.setCreateTime(new Date());
        feedbackDao.save(f);
        Map<String, Object> out = new LinkedHashMap<>();
        out.put("feedbackId", f.getFeedbackId());
        out.put("status", "ok");
        return out;
    }
}
