feat(api): 集成后端API,实现数据持久化和用户登录

- 新增token管理和用户信息状态,支持基于token的自动登录
- 实现登录或注册接口调用,自动根据URL参数完成身份验证
- 从后端加载交易记录、消息和待办提醒,替代本地缓存读写
- 对交易记录的增删改操作同步到数据库,确保数据一致性
- 对消息和提醒的增删改操作支持服务器同步,提升数据可靠性
- 优化消息发送逻辑,先保存用户消息,再处理AI回复并存库
- 添加待办提醒切换状态API调用,确保状态同步服务器
- 改进界面互动,支持文件与头像上传功能,更新管家形象
- 采用异步处理并增加错误捕获和用户提示,增强稳定性
This commit is contained in:
2026-01-22 18:25:42 +08:00
parent c06e74bd01
commit 194de6ec06
7 changed files with 1595 additions and 499 deletions

View File

@@ -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>
);
};