feat(app): 实现完整的财务管家记账聊天与统计功能
- 新增App主组件,实现聊天、账本、统计三大功能模块切换 - 支持语音及文本输入,自动解析记账信息并生成交易记录 - 交易记录支持编辑、删除、提醒等操作,数据本地持久化 - 管家性格预设和自定义设定,包含头像上传和语气调整 - 会话展示支持关联交易显示,样式区分收入与支出 - 账本页添加日期分组交易列表及饼图统计展示 - 消息列表实现渐变背景和交互动画,提升用户体验 - 支持图片上传并同步发送给AI进行解析记账 - 底部导航实现三标签切换并同步显示对应内容 - 全局事务编辑弹窗支持直接调用和删除操作 - 增加环境变量示例和.gitignore规则,完善工程配置
This commit is contained in:
73
types.ts
Normal file
73
types.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
|
||||
export enum TransactionType {
|
||||
EXPENSE = 'expense',
|
||||
INCOME = 'income',
|
||||
}
|
||||
|
||||
export enum ExpenseCategory {
|
||||
FOOD = '餐饮',
|
||||
SHOPPING = '购物',
|
||||
TRANSPORT = '交通',
|
||||
HOUSING = '住房',
|
||||
ENTERTAINMENT = '娱乐',
|
||||
MEDICAL = '医疗',
|
||||
SOCIAL = '人情',
|
||||
EDUCATION = '学习',
|
||||
FINANCE = '金融',
|
||||
CHILD = '孩子',
|
||||
PET = '宠物',
|
||||
CAR = '汽车',
|
||||
BEAUTY = '美容',
|
||||
BUSINESS = '经营',
|
||||
MISC = '杂项',
|
||||
}
|
||||
|
||||
export enum IncomeCategory {
|
||||
SALARY = '工资',
|
||||
BONUS = '奖金',
|
||||
INVESTMENT = '理财',
|
||||
PARTTIME = '兼职',
|
||||
GIFT = '红包',
|
||||
OTHER = '其他收入',
|
||||
}
|
||||
|
||||
export interface Transaction {
|
||||
id: string;
|
||||
item: string;
|
||||
amount: number;
|
||||
type: TransactionType;
|
||||
category: string; // Takes values from ExpenseCategory or IncomeCategory
|
||||
date: string; // ISO string YYYY-MM-DD
|
||||
timestamp: number;
|
||||
}
|
||||
|
||||
export interface Message {
|
||||
id: string;
|
||||
role: 'user' | 'assistant';
|
||||
content: string;
|
||||
timestamp: number;
|
||||
relatedTransactionId?: string; // If this message created a transaction
|
||||
}
|
||||
|
||||
export interface BillReminder {
|
||||
id: string;
|
||||
title: string;
|
||||
amount?: number; // Made optional
|
||||
frequency: 'monthly' | 'once';
|
||||
targetDate: string; // 'DD' (e.g. "15") for monthly, or 'YYYY-MM-DD' for once
|
||||
isCompleted: boolean;
|
||||
}
|
||||
|
||||
// Global augmentation for Web Speech API
|
||||
declare global {
|
||||
interface Window {
|
||||
SpeechRecognition: any;
|
||||
webkitSpeechRecognition: any;
|
||||
}
|
||||
}
|
||||
|
||||
export interface DailyStat {
|
||||
date: string;
|
||||
total: number;
|
||||
breakdown: { name: string; value: number; fill: string }[];
|
||||
}
|
||||
Reference in New Issue
Block a user