# GSDJGX App - 基金标的公司估值系统

## 项目概述

**GSDJGX App** 是一款专业的基金标的企业价值评估软件，采用基于市场法的企业价值评估系统。通过TOPSIS熵权法进行客观数据分析，确定指标权重，显著提升评估的科学性、准确性与客观性，为投资决策提供可靠的价值评估支持。

### 项目信息

- **项目名称**: GSDJGX App
- **当前版本**: 2.1.498
- **开发者**: beijihu
- **项目描述**: 基金标的公司估值系统

## 技术架构

### 前端技术栈

- **框架**: Angular 22.1.3（独立组件架构、懒加载路由）
- **变更检测**: Zoneless（`provideZonelessChangeDetection()`，无 zone.js）+ 组件级 OnPush
- **UI 组件库**: Syncfusion EJ2 Angular Components 33.2.x（内置简体中文本地化 syncfusion-ej2-zh-cn）
- **图表库**: ECharts 6.1.x
- **包管理器**: pnpm
- **字体**: Inter（@fontsource/inter）
- **样式**: Tailwind CSS Lite 变体
- **状态管理**: Angular Signals 优先（跨组件共享状态收敛到全局 signal store，如办公系统绑定的 OfficeBindingStore）；服务层保留 RxJS 用于数据流

### 后端技术栈

- **框架**: Tauri 2.11.x
- **编程语言**: Rust（Edition 2021，rustc ≥ 1.94）
- **数据库**: SQLite（SeaORM 2.0 + @tauri-apps/plugin-sql）
- **API 集成**: OpenAI API RS v10
- **HTTP 客户端**: Reqwest v0.13
- **异步运行时**: Tokio v1.0
- **数据库ORM**: SeaORM 2.0.x
- **加密**: SHA2 v0.10
- **并行计算**: Rayon v1.0

### 开发工具
- **TypeScript**: ~6.0.3
- **构建工具**: Angular CLI + Tauri CLI
- **测试框架**: Jasmine + Karma
- **代码质量**: ESLint；`pnpm check` 一条龙（结构检查 + 类型检查 + 单测 + 构建 + Rust 测试）

## 核心功能模块

### 1. 可比公司筛选
- 基于被评估单位的行业分类执行上市公司筛选
- 支持多维度筛选参数设置（上市时间、财务指标、经营稳定性等）
- 自动排除不符合可比要求的企业
- 可比公司距离矩阵计算与显示

### 2. 指标体系配置
- 支持财务指标与非财务指标的系统化管理
- 指标计算规则定义和属性设置（正向/负向/区间）
- 分层结构管理（企业规模、盈利能力、成长性、研发投入等）
- 动态调整指标体系功能
- 指标别名系统支持

### 3. 数据获取与标准化
- 多种数据获取方式（同花顺API接口、内部数据库）
- 全面的数据预处理流程（数据清洗、异常值处理）
- 无量纲化标准化处理（归一化、对数归一化等）
- 生成标准化评价矩阵

### 4. 指标加权模块
- 基于熵值理论的客观赋权方法
- 计算指标数据的离散程度确定相对重要性
- 自动生成完整的指标权重向量
- 权重分析功能支持

### 5. TOPSIS评分与排序
- 实现TOPSIS（趋近理想解排序）算法
- 确定正理想解和负理想解
- 计算相对贴近度指标
- 生成价值比率修正系数

### 6. 估值计算模块
- 价值比率调整（市销率EV/S、市盈率P/E等）
- 股权价值计算
- 多种标准价值比率类型计算
- 标准格式评估结果输出
- 估值区间计算

### 7. 报告生成与管理
- 结构化报告生成
- 富文本报告编辑支持
- 报告版本管理与差异追踪
- 报告持久化存储

### 8. 项目管理
- 基金树视图管理
- 项目数据自动初始化
- 项目切换功能
- 项目扩展信息管理

### 9. 状态管理
- 统一产线状态管理系统
- 智能状态管理逻辑
- 状态标签和确认按钮布局
- 基于哈希检查的自动编辑状态管理

### 10. 系统功能
- 用户信息管理
- 系统设置
- 自动更新机制
- 数据持久化与版本管理
- 最近项目历史记录
- 登录认证对话框

### 11. 计算引擎
- LocalCalculation 配置解析
- 财务数据查询与转换
- 指标计算与分析
- 多期财务数据处理
- 时间序列计算支持

### 12. 扩展功能
- 修改跟踪演示组件
- 管道状态徽章组件
- 项目操作组件增强
- 基金管理组件优化

## 核心价值主张

1. **科学性**: 基于行业认可的算法理论，客观确定指标权重
2. **准确性**: 标准化数据处理，消除量纲差异影响
3. **灵活性**: 支持指标体系动态配置和筛选条件自定义
4. **专业性**: 符合金融行业评估标准和监管要求
5. **易用性**: 友好的用户界面和完整的报告输出

## 项目结构

```
GSDJGXApp/
├── src/                          # Angular 前端源码
│   ├── app/                      # 应用主要组件
│   │   ├── calculation-engine/   # 计算引擎相关
│   │   │   ├── constants/        # 计算引擎常量定义
│   │   │   ├── modules/          # 计算引擎模块
│   │   │   ├── services/         # 计算引擎服务
│   │   │   ├── types/            # 计算引擎类型定义
│   │   │   ├── utils/            # 计算引擎工具函数
│   │   │   └── index.ts          # 计算引擎统一导出
│   │   ├── comparable-company-selection/  # 可比公司选择流程
│   │   ├── components/           # 可复用组件
│   │   │   ├── fund-management/  # 基金管理组件
│   │   │   ├── login-dialog.component.ts      # 登录对话框
│   │   │   ├── modification
│   ├── assets/                   # 静态资源
│   └── api_example/              # API 示例脚本
├── src-tauri/                    # Tauri 后端源码
│   ├── src/                      # Rust 源码
│   │   ├── commands/             # Tauri 命令处理
│   │   ├── models/               # 数据模型
│   │   ├── services/             # 后端服务
│   │   ├── db_commands.rs        # 数据库命令
│   │   ├── db_pool.rs            # 数据库连接池
│   │   ├── lib.rs                # 库入口
│   │   └── main.rs               # 主程序
│   ├── sql/                      # 数据库建表/迁移脚本
│   ├── capabilities/             # 权限/能力声明
│   ├── icons/                    # 应用图标
│   ├── Cargo.toml                # Rust 依赖配置
│   ├── tauri.conf.json          # Tauri 配置文件
│   └── build.rs                  # 构建脚本
├── scripts/                      # 构建和工具脚本
│   ├── find-unused-imports.js    # 未使用导入检测
│   └── upload-release.mjs        # 发布上传脚本
├── docs/                         # 项目文档
├── helpDocs/                     # 帮助文档
└── README.md                     # 项目说明

## 核心路由结构

```
左侧导航面板 (left-pane):
- fundtreeview: 基金树视图
- folderpages: 文件夹页面
- user-info: 用户信息

主内容面板 (main-pane):
- welcome: 欢迎页面
- fund-management: 基金管理（支持 fundId 参数）
- project-operation: 项目操作（支持 projectId 参数）
- system-setting: 系统设置
- project-summary: 项目汇总表
- project-extension: 项目扩展信息
- auto-calculate-example: 自动计算示例
- greedy-calaulate-example: 贪心计算示例
- report-management: 报告管理

扩展组件:
- recent-projects: 最近项目组件
- login-dialog: 登录对话框
- modification-tracking-demo: 修改跟踪演示
```

## 快速开始

### 环境要求
- Node.js 22+（Angular 22 要求 22.22.3 或 24.15+）
- Rust 1.94+（sqlx 0.9 / SeaORM 2.0 最低要求）
- pnpm 包管理器
- macOS 系统依赖: Xcode CLT (`xcode-select --install`)

### 安装依赖
```bash
pnpm install
```

### 开发模式运行
```bash
pnpm tauri dev
```


### 构建生产版本
```bash
pnpm tauri build    # 构建桌面应用
```

## PNPM 脚本说明

| 脚本 | 作用 |
|------|------|
| start | Angular Dev Server (仅前端) |
| build | 构建前端产物 |
| watch | 开发持续构建（无 Tauri） |
| test / test:watch / test:coverage | 单元测试相关 |
| tauri dev | 启动桌面开发环境 |
| tauri build | 构建生产桌面应用 |
| release | 前端构建 + 桌面应用打包 |
| upload | 上传发行制品（使用 upload-release.mjs） |
| release:upload | 构建并上传发行制品 |

## 测试策略

当前测试基于 Jasmine + Karma：
- 单元测试：组件 / 服务 / 算法函数
- 覆盖率门槛（建议）：行/函数/分支 ≥ 70%
- 建议：对核心算法（熵权、TOPSIS、指标归一化）补充边界测试

## 数据持久化

- 底层：SQLite，通过 `@tauri-apps/plugin-sql`
- 脚本：参考 `src-tauri/sql/` 中的建表与迁移
- 结果持久化：各指标结果 / 报告生成记录
- 状态管理：通过 `@tauri-apps/plugin-store` 实现应用状态持久化

## 安全与权限

- 能力声明：通过 `src-tauri/capabilities/` 精确声明文件系统、对话框、进程、剪贴板、深链、更新器等访问能力
- 前端与 Rust 通信：严格通过 Tauri 命令（见 `src-tauri/src/commands/`）与类型化模型进行交互
- 权限控制：以能力文件为边界的桌面端权限模型（RBAC 如需启用，另见内部规范）

## 更新机制

- 已配置 Updater 端点（`tauri.conf.json -> plugins.updater.endpoints`），但当前默认 `active: false`
- 用户可通过顶部菜单“帮助 → 检查更新”手动触发；如需开启自动更新，需将 `active` 设为 `true` 并配合签名公钥


## 许可证

本项目为私有项目，版权所有。

## 联系方式

如有任何问题或建议，请联系开发团队。

---

最后更新时间：2026-09-07（对应应用版本 2.1.498）
