import request from './request' /** * 交易记录相关 API */ /** * 获取交易记录列表(分页) * @param {Object} params - 查询参数 * @param {number} [params.latestId] - 最后一条记录的ID,用于游标分页 * @param {string} [params.searchKeyword] - 搜索关键词 * @returns {Promise<{success: boolean, data: Array, total: number, lastId: number}>} */ export const getTransactionList = (params = {}) => { return request({ url: '/TransactionRecord/GetList', method: 'get', params }) } /** * 获取待确认分类的交易记录列表 * @returns {Promise<{success: boolean, data: Array}>} */ export const getUnconfirmedTransactionList = () => { return request({ url: '/TransactionRecord/GetUnconfirmedList', method: 'get' }) } /** * 全部确认待确认的交易分类 * @returns {Promise<{success: boolean, data: number}>} */ export const confirmAllUnconfirmed = (ids) => { return request({ url: '/TransactionRecord/ConfirmAllUnconfirmed', method: 'post', data: { ids } }) } /** * 根据ID获取交易记录详情 * @param {number} id - 交易记录ID * @returns {Promise<{success: boolean, data: Object}>} */ export const getTransactionDetail = (id) => { return request({ url: `/TransactionRecord/GetById/${id}`, method: 'get' }) } /** * 创建交易记录 * @param {Object} data - 交易记录数据 * @param {string} data.card - 卡号 * @param {string} data.occurredAt - 交易时间 * @param {string} data.reason - 交易摘要 * @param {number} data.amount - 交易金额 * @param {number} data.balance - 交易后余额 * @param {number} data.type - 交易类型 (0:支出, 1:收入, 2:不计入收支) * @param {string} data.classify - 交易分类 * @returns {Promise<{success: boolean}>} */ export const createTransaction = (data) => { return request({ url: '/TransactionRecord/Create', method: 'post', data }) } /** * 更新交易记录 * @param {Object} data - 交易记录数据 * @param {number} data.id - 交易记录ID * @param {number} data.amount - 交易金额 * @param {number} data.balance - 交易后余额 * @param {number} data.type - 交易类型 (0:支出, 1:收入, 2:不计入收支) * @param {string} data.classify - 交易分类 * @param {string} [data.occurredAt] - 交易时间 * @returns {Promise<{success: boolean}>} */ export const updateTransaction = (data) => { return request({ url: '/TransactionRecord/Update', method: 'post', data }) } /** * 删除交易记录 * @param {number} id - 交易记录ID * @returns {Promise<{success: boolean}>} */ export const deleteTransaction = (id) => { return request({ url: '/TransactionRecord/DeleteById', method: 'post', params: { id } }) } /** * 获取指定日期的交易记录 * @param {string} date - 日期字符串 (格式: yyyy-MM-dd) * @returns {Promise<{success: boolean, data: Array}>} */ export const getTransactionsByDate = (date) => { return request({ url: '/TransactionRecord/GetByDate', method: 'get', params: { date } }) } // 注意:分类相关的API已迁移到 transactionCategory.js // 请使用 getCategoryList 等新接口 /** * 获取未分类的账单数量 * @returns {Promise<{success: boolean, data: number}>} */ export const getUnclassifiedCount = () => { return request({ url: '/TransactionRecord/GetUnclassifiedCount', method: 'get' }) } /** * 获取未分类的账单列表 * @param {number} pageSize - 每页数量,默认10条 * @returns {Promise<{success: boolean, data: Array}>} */ export const getUnclassified = (pageSize = 10) => { return request({ url: '/TransactionRecord/GetUnclassified', method: 'get', params: { pageSize } }) } /** * 智能分类 - 使用AI对账单进行分类(EventSource流式响应) * @param {Array} transactionIds - 要分类的账单ID列表 * @returns {Promise} 返回响应对象用于接收流式数据 */ export const smartClassify = (transactionIds = []) => { const baseURL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:5071/api' const token = localStorage.getItem('token') const url = `${baseURL}/TransactionRecord/SmartClassify` return fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` }, body: JSON.stringify({ transactionIds }) }) } /** * 批量更新账单分类 * @param {Array} items - 要更新的账单分类数据数组 * @param {number} items[].id - 账单ID * @param {string} items[].classify - 分类 * @returns {Promise<{success: boolean, message: string}>} */ export const batchUpdateClassify = (items) => { return request({ url: '/TransactionRecord/BatchUpdateClassify', method: 'post', data: items }) } /** * 获取按交易摘要分组的统计信息(支持分页) * @param {number} pageIndex - 页码,从1开始 * @param {number} pageSize - 每页数量,默认20 * @returns {Promise<{success: boolean, data: Array, total: number}>} */ export const getReasonGroups = (pageIndex = 1, pageSize = 20) => { return request({ url: '/TransactionStatistics/GetReasonGroups', method: 'get', params: { pageIndex, pageSize } }) } /** * 按摘要批量更新分类 * @param {Object} data - 批量更新数据 * @param {string} data.reason - 交易摘要 * @param {number} data.type - 交易类型 (0:支出, 1:收入, 2:不计入收支) * @param {string} data.classify - 分类名称 * @returns {Promise<{success: boolean, data: number, message: string}>} */ export const batchUpdateByReason = (data) => { return request({ url: '/TransactionRecord/BatchUpdateByReason', method: 'post', data }) } /** * NLP分析 - 根据用户自然语言输入查询交易记录并预设分类 * @param {string} userInput - 用户的自然语言输入 * @returns {Promise<{success: boolean, data: Object}>} */ export const nlpAnalysis = (userInput) => { return request({ url: '/TransactionRecord/NlpAnalysis', method: 'post', data: { userInput } }) } /** * 一句话录账解析 * @param {string} text - 用户输入的自然语言文本 * @returns {Promise<{success: boolean, data: Object}>} */ export const parseOneLine = (text) => { return request({ url: '/TransactionRecord/ParseOneLine', method: 'post', data: { text } }) }