feat(cma): treasury stage-1 MVP - migration, models, endpoints, rules, 2 pages
G1 review fixes P0-1/P0-2/P1-3/P1-4/P1-5/P2-6/P2-7/P2-8 applied: - up() filters comment lines then asserts missing_tables == [] (CREATE hits 6/6) - created counter = new-object diff via information_schema (idempotent second run = 0) - down() drops columns per-column, dumps via write-path creds + fail-closed - seeds expanded to 8 rules + 6 limits; data_status DEFAULT estimated - no physical FK (app-layer checks), amount FLOAT wan-yuan, round(x,4) Scope: 6 treasury_* tables + cash_plans 4 added columns; cash.py untouched. Not pushed: deploy is approval-gated (de851257).
This commit is contained in:
@@ -493,4 +493,36 @@ export const aiSuggestionApi = {
|
||||
preview: (id: number) => api.get(`/ai/suggestions/${id}/preview`),
|
||||
}
|
||||
|
||||
// ── 资金管理(账户池/头寸/支付内控 2026-09-15)──
|
||||
export const treasuryApi = {
|
||||
// 账户池
|
||||
listAccounts: (params?: any) => api.get('/treasury/accounts', { params }),
|
||||
createAccount: (data: any) => api.post('/treasury/accounts', data),
|
||||
updateAccount: (id: number, data: any) => api.put(`/treasury/accounts/${id}`, data),
|
||||
deleteAccount: (id: number) => api.delete(`/treasury/accounts/${id}`),
|
||||
importAccounts: (rows: any[]) => api.post('/treasury/accounts/import', rows),
|
||||
// 头寸
|
||||
listBalances: (params?: any) => api.get('/treasury/balances', { params }),
|
||||
upsertBalance: (data: any) => api.post('/treasury/balances', data),
|
||||
importBalances: (rows: any[]) => api.post('/treasury/balances/import', rows),
|
||||
positionsSummary: (params?: any) => api.get('/treasury/positions/summary', { params }),
|
||||
dashboard: () => api.get('/treasury/dashboard'),
|
||||
// 规则库 / 授权矩阵
|
||||
listRules: (params?: any) => api.get('/treasury/control-rules', { params }),
|
||||
updateRule: (id: number, data: any) => api.put(`/treasury/control-rules/${id}`, data),
|
||||
testRules: (data: any) => api.post('/treasury/control-rules/test', data),
|
||||
listLimits: (params?: any) => api.get('/treasury/limits', { params }),
|
||||
updateLimit: (id: number, data: any) => api.put(`/treasury/limits/${id}`, data),
|
||||
// 支付单
|
||||
listPayments: (params?: any) => api.get('/treasury/payments', { params }),
|
||||
createPayment: (data: any) => api.post('/treasury/payments', data),
|
||||
updatePayment: (id: number, data: any) => api.put(`/treasury/payments/${id}`, data),
|
||||
precheckPayment: (id: number) => api.post(`/treasury/payments/${id}/precheck`),
|
||||
approvePayment: (id: number, data: any) => api.post(`/treasury/payments/${id}/approve`, data),
|
||||
payPayment: (id: number) => api.post(`/treasury/payments/${id}/pay`),
|
||||
waivePayment: (id: number, data: any) => api.post(`/treasury/payments/${id}/waive`, data),
|
||||
// 规则命中留痕
|
||||
listHits: (params?: any) => api.get('/treasury/control-hits', { params }),
|
||||
}
|
||||
|
||||
export default api
|
||||
|
||||
Reference in New Issue
Block a user