功能添加
All checks were successful
Docker Build & Deploy / Build Docker Image (push) Successful in 20s
Docker Build & Deploy / Deploy to Production (push) Successful in 5s

This commit is contained in:
孙诚
2025-12-26 15:21:31 +08:00
parent 7dfb6a5902
commit cb11d80d1f
26 changed files with 2208 additions and 841 deletions

View File

@@ -1,44 +1,18 @@
import request from './request'
/**
* 获取分类(支持按类型筛选)
* 获取分类列表(支持按类型筛选)
* @param {string|null} type - 交易类型(Expense=0/Income=1)null表示获取全部
* @returns {Promise<{success: boolean, data: Array}>}
*/
export const getCategoryTree = (type = null) => {
export const getCategoryList = (type = null) => {
return request({
url: '/TransactionCategory/GetTree',
url: '/TransactionCategory/GetList',
method: 'get',
params: type !== null ? { type } : {}
})
}
/**
* 获取顶级分类列表(按类型)
* @param {number} type - 交易类型(Expense=0/Income=1)
* @returns {Promise<{success: boolean, data: Array}>}
*/
export const getTopLevelCategories = (type) => {
return request({
url: '/TransactionCategory/GetTopLevel',
method: 'get',
params: { type }
})
}
/**
* 获取子分类列表
* @param {number} parentId - 父分类ID
* @returns {Promise<{success: boolean, data: Array}>}
*/
export const getChildCategories = (parentId) => {
return request({
url: '/TransactionCategory/GetChildren',
method: 'get',
params: { parentId }
})
}
/**
* 根据ID获取分类详情
* @param {number} id - 分类ID
@@ -53,7 +27,7 @@ export const getCategoryById = (id) => {
/**
* 创建分类
* @param {object} data - 分类数据
* @param {object} data - 分类数据 { name, type }
* @returns {Promise<{success: boolean, data: number}>} 返回新创建的分类ID
*/
export const createCategory = (data) => {
@@ -66,7 +40,7 @@ export const createCategory = (data) => {
/**
* 更新分类
* @param {object} data - 分类数据
* @param {object} data - 分类数据 { id, name }
* @returns {Promise<{success: boolean}>}
*/
export const updateCategory = (data) => {
@@ -92,7 +66,7 @@ export const deleteCategory = (id) => {
/**
* 批量创建分类(用于初始化)
* @param {Array} dataList - 分类数据数组
* @param {Array} dataList - 分类数据数组 [{ name, type }, ...]
* @returns {Promise<{success: boolean, data: number}>} 返回创建的数量
*/
export const batchCreateCategories = (dataList) => {

View File

@@ -41,7 +41,6 @@ export const getTransactionDetail = (id) => {
* @param {number} data.balance - 交易后余额
* @param {number} data.type - 交易类型 (0:支出, 1:收入, 2:不计入收支)
* @param {string} data.classify - 交易分类
* @param {string} data.subClassify - 交易子分类
* @returns {Promise<{success: boolean}>}
*/
export const createTransaction = (data) => {
@@ -60,7 +59,6 @@ export const createTransaction = (data) => {
* @param {number} data.balance - 交易后余额
* @param {number} data.type - 交易类型 (0:支出, 1:收入, 2:不计入收支)
* @param {string} data.classify - 交易分类
* @param {string} data.subClassify - 交易子分类
* @returns {Promise<{success: boolean}>}
*/
export const updateTransaction = (data) => {
@@ -99,7 +97,7 @@ export const getTransactionsByDate = (date) => {
// 注意分类相关的API已迁移到 transactionCategory.js
// 请使用 getCategoryTree 等新接口
// 请使用 getCategoryList 等新接口
/**
* 获取未分类的账单数量
@@ -127,13 +125,13 @@ export const getUnclassified = (pageSize = 10) => {
/**
* 智能分类 - 使用AI对账单进行分类EventSource流式响应
* @param {number} pageSize - 每次分类的账单数量
* @returns {EventSource} 返回EventSource对象用于接收流式数据
* @param {Array<number>} transactionIds - 分类的账单ID列表
* @returns {Promise<Response>} 返回响应对象用于接收流式数据
*/
export const smartClassify = (pageSize = 10) => {
const baseURL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:5000'
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}/api/TransactionRecord/SmartClassify`
const url = `${baseURL}/TransactionRecord/SmartClassify`
return fetch(url, {
method: 'POST',
@@ -141,7 +139,7 @@ export const smartClassify = (pageSize = 10) => {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({ pageSize })
body: JSON.stringify({ transactionIds })
})
}
@@ -149,8 +147,7 @@ export const smartClassify = (pageSize = 10) => {
* 批量更新账单分类
* @param {Array} items - 要更新的账单分类数据数组
* @param {number} items[].id - 账单ID
* @param {string} items[].classify - 一级分类
* @param {string} items[].subClassify - 子分类
* @param {string} items[].classify - 分类
* @returns {Promise<{success: boolean, message: string}>}
*/
export const batchUpdateClassify = (items) => {
@@ -160,3 +157,46 @@ export const batchUpdateClassify = (items) => {
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: '/TransactionRecord/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 }
})
}