替代 SQL Accounting / Excel 的专业发票管理系统,支持 SST 税务、账龄分析、自动催款提醒
你是一位资深全栈工程师。请帮我搭建一个完整的「发票与收款追踪系统」,专为马来西亚中小企业(Sdn Bhd)设计。
## 角色与背景
你是一位资深全栈工程师,为马来西亚中小企业构建发票与收款追踪系统。
## 项目目标
构建一个替代 SQL Accounting / Excel 的专业发票管理系统,支持 SST 税务、账龄分析、自动催款提醒。
## 目标用户
马来西亚中小企业(Sdn Bhd)的财务人员和管理者。
## 核心功能与界面
- **仪表板**:显示本月收入、应收总额、逾期金额、客户数;月度收入柱状图(最近12个月);账龄分析表格(当前/30/60/90天);最近5笔发票列表;逾期提醒列表。
- **发票管理**:创建/编辑发票,支持动态增减明细项,自动计算小计、SST(税率 {tax_rate}%)和总额;发票列表支持按状态筛选和搜索;发票详情页采用专业PDF风格排版,支持打印,显示公司抬头({company_name}、{company_address}、{company_phone}、{company_email})、客户信息、明细项、付款记录、银行转账信息。
- **客户管理**:客户列表显示公司名、联系人、应收余额;客户详情页显示基本信息及该客户所有发票和付款历史。
- **收款记录**:记录收款弹窗,支持部分付款,自动更新发票余额和状态。
- **循环发票**:标记发票为每月或每季循环,仪表板显示下次生成日期,提供一键生成下期发票。
- **逾期提醒**:到期前3天黄色标签,逾期1天自动标记并显示红色标签,逾期7/30/60天在仪表板显示催款建议,提供生成催款邮件按钮。
## 业务规则
- SST 税额 = 小计 × {tax_rate}%,总额 = 小计 + SST 税额,金额保留两位小数。
- 发票编号自动递增,格式如 INV-2026-0001,不可重复。
- 付款后自动更新 amount_paid 和 balance_due,余额为零时自动标记为已付。
- 每日检查逾期发票,自动标记。
- 客户应收余额自动汇总。
## 设计方向
- 主色:{primary_color},搭配 slate 灰色文字,白色背景,卡片细边框微阴影。
- 发票预览用深色 navy 区块突出公司抬头。
- 响应式设计,支持手机查看。
- 金额格式:{currency} 1,234.56。
- 付款条款:{payment_terms}。
## 构建方法
- 使用 Next.js 16(App Router)+ TypeScript + Tailwind CSS 4 + Supabase(Postgres + Auth + RLS)。
- 部署在 Vercel。
- 先给出简短实施计划,优先实现主要用户流程(创建发票、记录付款、仪表板)。
- 使用合理的技术决策,包含样本数据(3个马来西亚客户和5张样本发票)。
- 确保只有认证用户可以访问数据。
- 提供运行和测试说明。
## 构建顺序(请严格遵守)
请按以下顺序开发,让我尽早在屏幕上看到成果,不要长时间没有画面:
1. 先做界面:用接近真实的示例数据,把所有页面做出来(暂时不接数据库),让我能马上看到、能点击。做完先停下来,等我确认。
2. 再做功能:我确认界面后,才让按钮、表单和计算真正可用(继续用示例数据)。
3. 再接 Supabase:功能都正常后,才连接 Supabase 保存真实数据和登录(如需要)。
4. 最后上线:先确保在我电脑上运行正常,再把代码上传到 GitHub,经我同意后部署到 Vercel。
请保持简单——我是非技术背景的老板。有不清楚或需要决定的事,先问我,不要自己假设。