/** * 红娘服务(API_INVENTORY 行 102-105) * * 封装:申请红娘服务 / 我的服务列表 / 服务详情 / 红娘推荐列表。 * 关键不变量(AGENTS.md): * - 第 5 条:红娘不可替用户 Like——红娘只产出推荐,最终 Like/Pass 由用户本人操作。 * 本层不提供任何"代用户操作"的接口;推荐操作走 matchService.like/pass。 * - 第 7 条:普通工作人员不能查看私人聊天——本层无聊天接入入口。 */ const api = require('../utils/api'); /** * 申请红娘服务(API_INVENTORY 行 102) * @param {{ requirement: string }} payload 用户对自己择偶需求的进一步描述 * @returns {Promise<{ serviceId: string, status: 'submitted' }>} */ function applyService(payload) { const idempotencyKey = api.idempotencyKey('matchmaker-apply'); return api.post('/matchmaker/services', payload, undefined, idempotencyKey); } /** * 我的服务列表(API_INVENTORY 行 103) * @param {{ cursor?: string, pageSize?: number }} params * @returns {Promise<{ items: Array, nextCursor: string|null }>} */ function getMyServices(params = {}) { return api.get('/matchmaker/services', params); } /** * 服务详情(API_INVENTORY 行 104) * @param {string} serviceId * @returns {Promise} */ function getServiceDetail(serviceId) { return api.get(`/matchmaker/services/${encodeURIComponent(serviceId)}`); } function confirmService(serviceId) { return api.post(`/matchmaker/services/${encodeURIComponent(serviceId)}/confirm`, {}, undefined, api.idempotencyKey(`matchmaker-confirm:${serviceId}`)); } /** * 红娘推荐列表(API_INVENTORY 行 105) * @param {{ serviceId?: string, cursor?: string, pageSize?: number }} params * @returns {Promise<{ items: Array, nextCursor: string|null }>} */ function getRecommendations(params = {}) { return api.get('/matchmaker/recommendations', params); } function markRecommendationViewed(recommendationId) { return api.put(`/matchmaker/recommendations/${encodeURIComponent(recommendationId)}/viewed`); } module.exports = { applyService, getMyServices, getServiceDetail, confirmService, getRecommendations, markRecommendationViewed, };