中小企业财务报表预测系统 | Financial Forecast System for SMEs
基于历史财务数据和关键假设参数,自动生成符合中国企业会计准则的三年财务预测(利润表、资产负债表、现金流量表),三表联动,迭代收敛。
- 三表联动模型 — 利润表驱动资产负债表,两者共同驱动现金流量表(间接法),自动迭代收敛处理利息/债务循环依赖
- 多场景对比 — 为同一家公司创建乐观、基准、悲观等多个预测场景,独立假设参数和预测结果
- 5 大行业模板 — 通用、制造业、科技、零售、服务业,各自预设行业适配的默认假设参数
- 历史数据录入 — 按利润表 / 资产负债表 / 现金流量表分类录入,支持多年数据
- 假设参数管理 — 收入增长率、毛利率、DSO/DIO/DPO 周转天数、资本开支比例、折旧率、税率等,逐年独立设置
- 自动平衡 — 资产负债表不平衡时自动通过短期借款(Debt Plug)补齐差额
- 报表导出 — 支持 Excel (.xlsx) 和 HTML 报告导出
- 中英文切换 — 默认中文,一键切换英文,所有页面完整国际化
- 安全认证 — JWT 认证 + 强密码策略 + 速率限制 + CORS 保护,数据按用户隔离
| 层 | 技术 |
|---|---|
| 后端 | Python 3.12 · FastAPI · SQLAlchemy 2.0 (async) · Alembic |
| 前端 | React 19 · TypeScript · Vite · Ant Design 6 |
| 数据库 | PostgreSQL (asyncpg / psycopg) |
| 安全 | JWT (python-jose) · PBKDF2-SHA256 · 速率限制 · CORS 保护 |
| 国际化 | react-i18next · Ant Design locale |
| 导出 | openpyxl (Excel) · HTML 报告 |
backend/
├── app/
│ ├── main.py # FastAPI 应用入口
│ ├── auth.py # JWT 认证 + 密码哈希
│ ├── seed.py # 启动时初始化行业模板和科目定义
│ ├── models/ # SQLAlchemy ORM 模型
│ ├── schemas/ # Pydantic 请求/响应模式
│ ├── routers/ # API 路由
│ │ ├── auth.py # 注册 / 登录 / Token 刷新
│ │ ├── companies.py # 公司 CRUD
│ │ ├── periods.py # 历史数据录入
│ │ ├── scenarios.py # 场景 / 假设 / 预测 / 报表
│ │ └── export.py # Excel / HTML 导出
│ └── engine/ # 预测引擎(纯函数,无 DB 依赖)
│ ├── income_statement.py
│ ├── balance_sheet.py
│ ├── cash_flow.py
│ ├── balancer.py # 资产负债表自动平衡
│ └── forecast.py # 迭代收敛主流程
frontend/
├── src/
│ ├── pages/ # 页面组件
│ │ ├── LoginPage.tsx # 登录
│ │ ├── Dashboard.tsx # 公司列表
│ │ ├── CompanyDetail.tsx# 数据录入 / 假设 / 报表 / 导出
│ │ └── HelpPage.tsx # 使用指南
│ ├── locales/ # 中英文翻译
│ ├── contexts/ # Auth Context
│ └── api.ts # API 封装
- Python 3.12+
- Node.js 18+
- PostgreSQL 15+
git clone https://github.com/zhouning/BestDDR.git
cd BestDDRcp .env.example .env
# 编辑 .env,填入数据库连接和 JWT 密钥docker compose up -d dbcd backend
uv sync --all-extras
uv run uvicorn app.main:app --reload --port 8002后端启动时会自动创建表结构并初始化行业模板数据。
cd frontend
npm install
npm run dev创建公司 → 录入历史数据 → 创建预测场景 → 设置假设参数 → 运行预测 → 查看三表 → 导出报告
- 创建公司 — 输入公司名称,选择行业模板
- 录入历史数据 — 添加年份,填入利润表、资产负债表、现金流量表的关键科目
- 创建场景 — 如"基准情景"、"乐观情景",设置预测年份(如 2025-2027)
- 调整假设参数 — 收入增长率、毛利率、周转天数等,每年可独立设置
- 运行预测 — 引擎自动计算三表,迭代收敛处理利息/债务循环
- 查看报表 — 历史数据(灰色)与预测数据(蓝色)并排展示,资产负债表自动校验平衡
- 导出 — Excel 或 HTML 格式下载
利润表 → 资产负债表 → 自动平衡(Debt Plug) → 现金流量表 → 回写现金 → 迭代收敛
- 利润表:收入 × 增长率 → 成本(毛利率)→ 费用(费用率)→ 利息(债务 × 利率)→ 净利润
- 资产负债表:应收(DSO) / 存货(DIO) / 应付(DPO) / 固定资产(CapEx-折旧) / 留存收益
- 自动平衡:资产 ≠ 负债+权益时,差额计入短期借款
- 现金流量表:间接法,净利润 + 非现金项 + 营运资金变动
- 迭代收敛:利息费用 ↔ 债务余额循环依赖,通常 2-3 轮收敛
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/auth/register |
用户注册 |
| POST | /api/auth/login |
登录获取 Token |
| GET/POST/DELETE | /api/companies |
公司 CRUD |
| GET/POST | /api/companies/:id/periods |
历史数据 |
| GET/POST/DELETE | /api/companies/:id/scenarios |
场景管理 |
| GET/PUT | /api/companies/:id/scenarios/:sid/assumptions |
假设参数 |
| POST | /api/companies/:id/scenarios/:sid/forecast |
运行预测 |
| GET | /api/companies/:id/scenarios/:sid/statements |
三表数据 |
| GET | /api/companies/:id/scenarios/:sid/export/excel |
导出 Excel |
| GET | /api/companies/:id/scenarios/:sid/export/pdf |
导出 HTML 报告 |
MIT