feat(api): 集成后端API,实现数据持久化和用户登录
- 新增token管理和用户信息状态,支持基于token的自动登录 - 实现登录或注册接口调用,自动根据URL参数完成身份验证 - 从后端加载交易记录、消息和待办提醒,替代本地缓存读写 - 对交易记录的增删改操作同步到数据库,确保数据一致性 - 对消息和提醒的增删改操作支持服务器同步,提升数据可靠性 - 优化消息发送逻辑,先保存用户消息,再处理AI回复并存库 - 添加待办提醒切换状态API调用,确保状态同步服务器 - 改进界面互动,支持文件与头像上传功能,更新管家形象 - 采用异步处理并增加错误捕获和用户提示,增强稳定性
This commit is contained in:
@@ -6,8 +6,8 @@ import BillReminders, { getDaysRemaining } from './BillReminders';
|
||||
|
||||
interface LedgerPageProps {
|
||||
transactions: Transaction[];
|
||||
onUpdateTransaction: (t: Transaction) => void;
|
||||
onDeleteTransaction: (id: string) => void;
|
||||
onUpdateTransaction: (t: Transaction) => Promise<void>;
|
||||
onDeleteTransaction: (id: string) => Promise<void>;
|
||||
budgets: Record<string, number>;
|
||||
setBudgets: (val: Record<string, number>) => void;
|
||||
reminders: BillReminder[];
|
||||
@@ -200,7 +200,24 @@ const LedgerPage: React.FC<LedgerPageProps> = ({
|
||||
{subTab === 'calendar' && <CalendarView transactions={transactions} reminders={reminders} viewDate={selectedMonth} />}
|
||||
{subTab === 'bills' && <BillReminders reminders={reminders.filter(r => r.frequency === 'monthly' || r.targetDate.startsWith(selectedMonth))} onAdd={onAddReminder} onUpdate={onUpdateReminder} onDelete={onDeleteReminder} onToggle={onToggleReminder} />}
|
||||
</div>
|
||||
{editingTransaction && <EditTransactionModal transaction={editingTransaction} onSave={(updated) => { onUpdateTransaction(updated); setEditingTransaction(null); }} onDelete={(id) => { onDeleteTransaction(id); setEditingTransaction(null); }} onClose={() => setEditingTransaction(null)} />}
|
||||
{editingTransaction && (
|
||||
<EditTransactionModal
|
||||
transaction={editingTransaction}
|
||||
onSave={async (updated) => {
|
||||
try {
|
||||
await onUpdateTransaction(updated);
|
||||
setEditingTransaction(null);
|
||||
} catch (e) {
|
||||
// Error handled in App.tsx
|
||||
}
|
||||
}}
|
||||
onDelete={async (id) => {
|
||||
await onDeleteTransaction(id);
|
||||
setEditingTransaction(null);
|
||||
}}
|
||||
onClose={() => setEditingTransaction(null)}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user