feat: 投资资讯日报查询页 + 文档更新 + 拉取服务器最新内容

- 新增 charts/news_reports.php 报告查询导航页(列表+详情一体,fetch API 渲染)
- 新增 js/newsReports.js:AI 摘要/新闻联播/财经新闻/公告调研/数据总览固定模块,stats 归一化兼容多种格式
- index-2.php 研究报告卡片改为导航链接,移除 PHP 目录下拉框
- 更新 AGENTS.md/CLAUDE.md(路径、页面清单、数据模式等核实修正)
- 同步服务器拉取的文档:quant 使用手册、podcast-docs
- 生成 continuation.md 会话检查点
This commit is contained in:
2026-08-05 20:28:57 +08:00
parent 60fb1b95e1
commit 8ea9b48a9a
10 changed files with 1717 additions and 128 deletions
+32 -13
View File
@@ -9,10 +9,16 @@
## 技术约束
- **不要引入框架或构建工具** —— 项目是纯 PHP + jQuery + ECharts,没有 webpack、vite、composer autoload 之外的依赖管理。新增功能沿用现有模式即可。
- **不要动 `inc/config.php`** —— 该文件包含数据库连接逻辑且部分编码加密,手工修改可能破坏现有功能
- **PHP 版本** —— 代码兼容 PHP 7.x/8.x,使用了 `mysqli`、cURL、Composer autoload。不要使用 PHP 8.1+ 独有的特性(如枚举、readonly 等)。
- **不要动 `inc/config.php`** —— 该文件含**明文**数据库凭据和 `TUSHARE_API_TOKEN`,是敏感文件;手工修改可能破坏连接逻辑。也**不要提交到公开仓库**
- **PHP 版本** —— 代码兼容 PHP 7.x/8.x(本地为 PHP 8.4,使用了 `mysqli`、cURL、Composer autoload。不要使用 PHP 8.1+ 独有的特性(如枚举、readonly 等)。
- **所有用户输入走 `$_REQUEST`** —— GET 和 POST 统一处理,不需要区分。
- **图表数据传递模式** —— 后端 PHP 查库 → `json_encode()` 注入 `<script>` 标签作为 JS 全局变量 → 页面专属的 JS 文件读取全局变量并用 `echarts.init()` 渲染
- **图表数据传递** —— 当前活跃页面有三种模式(见下),新页面优先复用现有模式,不要自创第四种
### 三种数据传递模式(实测现状)
1. **模式 Bfetch 外部 API**:页面 JS 用 `fetch()``https://api.doorcome.cn/api/*`(如 `stockparam``indexDatas``stockinfo``getdiv``stockep``stockmargin``stockbasic`)。代表页面:`stock_trend.php``stockdiv.php``stockep.php``stockmargin.php``hkholdbycode.php``index_trend.php``index_mv_all.php``index_margin.php`
2. **模式 CAJAX → `inc/ajax.inc.php`**:页面 JS 用 `$.ajax``../inc/ajax.inc.php`,通过 `$_REQUEST['t']` 路由(if 链,不是 switch/case)。`t` 取值:`stockList``financeData``esfTBD``esfListDaily``newTBD``moneyflowData``estateData`。代表页面:`moneyflow.php``realestate.php``estateTradeDaily.php``estateListDaily.php``estateNewTradeDaily.php``stockkeydata.php``stockTradeRecord.php`
3. **模式 A(服务端注入)**PHP 查询后 `json_encode()` 注入 `<script>` 标签中的 JS 变量。`window.chartConfig` 全局变量**仅剩 `deprecated/` 在用**;活跃页面 `charts/chartStDetail.php` 是变体(注入命名变量 `data1``data5``legend` 等)。
## 代码风格约定
@@ -27,12 +33,13 @@
如果要新增一个数据可视化页面,按以下步骤:
1.`inc/` 中写数据获取函数(如果数据源有复用价值),或在页面内直接写查询
2.根目录创建 `newpage.php`include 需要的 `inc/*.php`
2. `charts/` 创建 `newpage.php`include 需要的 `inc/*.php`
3. 通过 `$_REQUEST` 接收参数(如 `ts_code``t_start``t_end`
4. 查询数据库,`json_encode` 结果注入到页面
5. `js/` 中创建对应的 JS 文件,负责 ECharts 初始化和图表渲染
6. 对于样式较新的页面,使用 `js/tailwindcss_3.4.17.js` 并参考 `index-2.php` 的布局风格
7. `index-2.php` 中添加导航入口
4. 数据获取:优先走模式 Bfetch `api.doorcome.cn`)或模式 C`ajax.inc.php` 加一个 `t=` 分支)
5. 图表 JS 放 `js/` 目录,新式页面复用 `js/renderCharts.js``doubleLineChart()` 等)和 `js/pubfunc.js``getRows()``hideSwitch()` 等)
6. 公共库统一从 `/lib/js/` 引用:`jquery-3.6.0.min.js``echarts-5.4.2.js``tailwindcss-3.4.17.js`(注意是连字符、在 `lib/js/` 下,不是 `js/`
7. 对于样式较新的页面,使用 `/lib/js/tailwindcss-3.4.17.js` 并参考 `index-2.php` 的布局风格
8.`index-2.php` 中添加导航入口
## 常用代码片段
@@ -63,16 +70,24 @@ $data = callTushareApi('daily_basic', $params);
### 前端 AJAX 调用模式
```php
// 请求参数中必须包含 t 字段,用于路由
$_REQUEST['t'] = 'stockList'; // ajax.inc.php 中的 case
// 请求参数中必须包含 t 字段,用于 ajax.inc.php 路由
$_REQUEST['t'] = 'stockList';
```
## 数据库表名约定
完整清单见 `DB_REFERENCE.md`(16 张表、在用/未用/已被 API 替代状态一目了然)。要点:
- **已被 API 替代、代码不再直接引用**:`index_hist_pro`(指数行情)、`stock_his_pro`(个股行情)、`stock_all_pro`(代码↔名称)——对应数据走 `api.doorcome.cn``indexDatas` / `stockbasic` / `stockinfo` 等端点。
- **在用**`moneyflow_hsgt_pro`(沪深港通原始值)、`moneyflow_hsgt_pro_ext`(累积值)、`estate_json` / `estate_json_ext` / `estate_listing`(房地产)、`trade_record` / `trade_record_cj`(方正/长江证券交易记录)、`mac_report`(宏观研究,quant/ 用)、`pv_log` / `pv_counter`(访问日志)。
- **机构持仓在 `ih_by_ts_code_ext`**,但消费它的页面(`chartSix.php``chartThree.php``stock_ih.php``index_ih.php`)已全部移入 `deprecated/`,当前无活跃调用者;`getIhData()` / `getIhDataByStock()` 保留在 `inc/getData.inc.php`
## 注意事项
- **TuShare API token 硬编码在代码中** —— 不要提交到公开仓库。
- **TuShare API token 硬编码在 `inc/config.php` 中** —— 不要提交到公开仓库。
- **没有鉴权机制** —— 这是内网或个人使用的系统,不需要添加登录/权限功能。
- **数据库表名约定** —— 指数数据在 `index_hist_pro`,个股历史在 `stock_his_pro`,基本面在 `stock_his_basic_pro`,机构持仓在 `ih_by_ts_code_ext`,房地产数据在 `estate_json` 系列,交易记录在 `trade_record`
- **`deprecated/` 目录** —— 存放已废弃的旧版页面,直接忽略,不要修改或引用。
- **`deprecated/` 目录** —— 存放已废弃的旧版页面(`chartOne`~`chartSix``stock_ih``index_ih`、旧版 `stock_trend`/`index_trend` 等,部分仍用 `window.chartConfig` 模式),直接忽略,不要修改或引用
- **`class/basic_info.class.php`** —— 独立的小类,未被核心流程引用。
- **`news/``research/`** —— 独立的子模块,有自己的 JS/CSS 和设计文档,修改前先看对应的 `design.md``outline.md`
## Checkpoint
@@ -82,3 +97,7 @@ $_REQUEST['t'] = 'stockList'; // ajax.inc.php 中的 case
- **当前状态**:刚刚完成了什么、改了哪些文件、结果如何
- **后续步骤**:具体的、有序的下一步行动
- **待解决问题**:未解决的疑问、已知限制或需要决策的事项
## Notes
(待补充:部署 `sync-echart` 命令细节见 CLAUDE.mdPHP 语法检查 `php -l` 修改后必做。)