# CLAUDE.md 本文件为 Claude Code(claude.ai/code)在本仓库中工作提供指引。 ## 项目概览 基于 PHP 的 A 股金融数据可视化和宁波房地产数据分析平台。使用 ECharts 生成交互式图表,后端为 MySQL 数据库和 TuShare API。 ## 技术栈 - **后端**: PHP(无框架),Composer 管理依赖(`phpoffice/phpspreadsheet`、`monolog/monolog`) - **前端**: ECharts 4.x、jQuery、Tailwind CSS 3.4(CDN 引入)、DataTables、Font Awesome - **数据库**: MySQL,通过 `mysqli` 连接——统一使用 `inc/config.php` 中的 `get_mysqli_connection()` 获取连接 - **外部 API**: TuShare(`api.tushare.pro` 和 `api.waditu.com`),用于获取财务数据 - **调试**: XDebug,端口 9000(配置见 `.vscode/launch.json`) ## 无构建步骤 传统 PHP 应用,没有构建/检查/测试流水线。文件直接部署到 Web 服务器。运行于 `echart.doorcome.cn`。每个 `.php` 文件是独立的入口点,没有路由机制。Composer autoload 在部分文件中使用(引入 `vendor/autoload.php`)。 ## 架构 ### 核心 includes(`inc/`) - `config.php` — 数据库连接工厂(`get_mysqli_connection()`),所有 DB 操作统一走此函数。另含 `db_query()` 参数化查询函数和 `jsonResponse()` 统一 JSON 响应函数。 - `getData.inc.php` — 指数数据、机构持仓(IH)、资金流向(沪深港通南北向)、个股历史查询。 - `getBasic.inc.php` — PE/PB/PS 历史、股价历史、市值数据、TuShare API 封装、日期工具、数据查询函数。HTML 渲染函数已拆分至 `widgets.inc.php`。 - `widgets.inc.php` — HTML 组件函数:`tradeStocksList()`、`vendorList()`、`yearList()`、`yearToname()`。 - `functions.inc.php` — 共享表单组件(districtList、indexList、seList、byDM)和 `callTushareApi()` 辅助函数。 - `ajax.inc.php` — 所有 AJAX 端点,通过 `$_REQUEST['t']` 分发:股票列表、财务数据(调用 `getFinanceData.class.php`)、房地产成交/挂牌查询。业务函数(`esfTradeDaily`、`esfListDaily`)已迁移至 `getEstate.inc.php`。 - `getFinanceData.class.php` — `getFinance` 类,调用 TuShare API 获取财务报表数据。 - `tradeRec.inc.php` — 交易记录查询(`trade_record` / `trade_record_cj` 表)。 - `excelOperate.inc.php` — 通过 PhpSpreadsheet 读取 Excel/CSV 文件。 - `postJson.inc.php` — 使用 cURL 发送 JSON HTTP POST 请求。 - `getEstate.inc.php` — 房地产相关数据查询(`estate_listing` 表)及二手房成交/挂牌数据函数。 - `upload.php` — 文件上传处理。 - `plansetup.php` — 用于 Composer autoload 的快捷入口(`__DIR__."/../vendor/autoload.php"`)。 ### 页面结构 根目录及 `charts/` 下的每个 `.php` 文件渲染一个独立的数据视图,存在两种数据获取模式: **模式 A(传统——服务端注入):** 1. 引入所需的 `inc/*.php` 2. 通过 `$_REQUEST` 接收查询参数 3. PHP 查询数据库,将结果通过 `json_encode()` 注入 `