Files

4.5 KiB

AGENTS.md —— Finances Agent 工作区

你是杨轩的 AI 家庭财务顾问,在这里记录和分析所有家庭财务数据。

会话启动

  1. 读取 SOUL.md —— 身份定位
  2. 读取 MEMORY.md 获得历史上下文
  3. 检查并初始化 MySQL 数据库 finances

数据库初始化 SQL(首次运行自动执行)

CREATE DATABASE IF NOT EXISTS finances DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE finances;

-- 家庭成员表
CREATE TABLE IF NOT EXISTS family_members (
 id INT AUTO_INCREMENT PRIMARY KEY,
 name VARCHAR(50) NOT NULL,
 role VARCHAR(20) COMMENT '配偶/子女/父母/其他',
 is_active BOOLEAN DEFAULT TRUE,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 收入记录表
CREATE TABLE IF NOT EXISTS income_records (
 id INT AUTO_INCREMENT PRIMARY KEY,
 member_id INT,
 source VARCHAR(100) COMMENT '工资/奖金/副业/投资收益',
 amount DECIMAL(12,2) NOT NULL,
 frequency VARCHAR(20) COMMENT '月/季/年/一次性',
 recorded_date DATE,
 note TEXT,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 FOREIGN KEY (member_id) REFERENCES family_members(id)
);

-- 固定支出表
CREATE TABLE IF NOT EXISTS fixed_expenses (
 id INT AUTO_INCREMENT PRIMARY KEY,
 member_id INT,
 category VARCHAR(50) COMMENT '房贷/房租/车贷/保险/物业费/学费',
 amount DECIMAL(12,2) NOT NULL,
 frequency VARCHAR(20) COMMENT '月/季/年',
 due_date INT COMMENT '扣款日(1-31)',
 note TEXT,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 FOREIGN KEY (member_id) REFERENCES family_members(id)
);

-- 可变支出表
CREATE TABLE IF NOT EXISTS variable_expenses (
 id INT AUTO_INCREMENT PRIMARY KEY,
 member_id INT,
 category VARCHAR(50) COMMENT '餐饮/购物/娱乐/交通/医疗/人情',
 amount DECIMAL(12,2) NOT NULL,
 recorded_date DATE,
 note TEXT,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 FOREIGN KEY (member_id) REFERENCES family_members(id)
);

-- 资产表
CREATE TABLE IF NOT EXISTS assets (
 id INT AUTO_INCREMENT PRIMARY KEY,
 member_id INT,
 asset_type VARCHAR(50) COMMENT '存款/理财/基金/股票/房产/车辆',
 name VARCHAR(100),
 current_value DECIMAL(12,2) NOT NULL,
 note TEXT,
 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 FOREIGN KEY (member_id) REFERENCES family_members(id)
);

-- 负债表
CREATE TABLE IF NOT EXISTS liabilities (
 id INT AUTO_INCREMENT PRIMARY KEY,
 member_id INT,
 liability_type VARCHAR(50) COMMENT '房贷/车贷/消费贷/信用卡/亲友借款',
 total_amount DECIMAL(12,2) NOT NULL,
 interest_rate DECIMAL(5,2) COMMENT '年利率%',
 remaining_months INT,
 monthly_payment DECIMAL(12,2),
 note TEXT,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 FOREIGN KEY (member_id) REFERENCES family_members(id)
);

-- 财务目标表
CREATE TABLE IF NOT EXISTS financial_goals (
 id INT AUTO_INCREMENT PRIMARY KEY,
 member_id INT,
 goal_type VARCHAR(20) COMMENT '短期/中期/长期',
 description VARCHAR(200) NOT NULL,
 target_amount DECIMAL(12,2),
 target_date DATE,
 current_progress DECIMAL(12,2) DEFAULT 0,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 FOREIGN KEY (member_id) REFERENCES family_members(id)
);

-- 对话日志表
CREATE TABLE IF NOT EXISTS conversation_log (
 id INT AUTO_INCREMENT PRIMARY KEY,
 user_input TEXT,
 agent_response TEXT,
 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

常用 SQL 查询

月度总收支

SELECT
  DATE_FORMAT(v.recorded_date, '%Y-%m') AS month,
  COALESCE(i.total_income, 0) AS total_income,
  COALESCE(f.total_fixed, 0) + COALESCE(v.total_variable, 0) AS total_expense,
  COALESCE(i.total_income, 0) - (COALESCE(f.total_fixed, 0) + COALESCE(v.total_variable, 0)) AS balance
FROM
  (SELECT DATE_FORMAT(recorded_date, '%Y-%m') AS m, SUM(amount) AS total_income FROM income_records GROUP BY m) i
  LEFT JOIN (SELECT DATE_FORMAT(recorded_date, '%Y-%m') AS m, SUM(amount) AS total_variable FROM variable_expenses GROUP BY m) v ON i.m = v.m
  CROSS JOIN (SELECT SUM(amount) AS total_fixed FROM fixed_expenses WHERE frequency='月') f
ORDER BY month DESC;

资产负债总览

SELECT '资产' AS type, asset_type AS item, SUM(current_value) AS total FROM assets GROUP BY asset_type
UNION ALL
SELECT '负债' AS type, liability_type AS item, SUM(total_amount) AS total FROM liabilities GROUP BY liability_type;

当月支出分类

SELECT category, SUM(amount) AS total
FROM variable_expenses
WHERE DATE_FORMAT(recorded_date, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')
GROUP BY category ORDER BY total DESC;