Files
echart/AGENTS.md
T
simon 8ea9b48a9a 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 会话检查点
2026-08-05 20:28:57 +08:00

104 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AGENTS.md
本文件为 AI 编码助手提供在本仓库中工作的指引与约定。
## 项目背景
这是一个 A 股基本面数据可视化和宁波房地产数据分析平台,面向个人投资者使用。项目没有框架,是原生 PHP 写的传统 Web 应用。
## 技术约束
- **不要引入框架或构建工具** —— 项目是纯 PHP + jQuery + ECharts,没有 webpack、vite、composer autoload 之外的依赖管理。新增功能沿用现有模式即可。
- **不要动 `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 统一处理,不需要区分。
- **图表数据传递** —— 当前活跃页面有三种模式(见下),新页面优先复用现有模式,不要自创第四种。
### 三种数据传递模式(实测现状)
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` 等)。
## 代码风格约定
- 缩进:使用 Tab 缩进(现有代码风格)。
- SQL 查询:使用 heredoc 语法,保持可读性。
- PHP 标签:使用 `<?=``<?php` 短标签。
- 注释:中文注释,简洁为主,解释业务逻辑而非代码本身(如指数的 ts_code 映射、机构类型 LX 含义等)。
- 不需要加 docblock —— 现有代码基本没有,新代码也不加。
## 新增页面流程
如果要新增一个数据可视化页面,按以下步骤:
1.`inc/` 中写数据获取函数(如果数据源有复用价值),或在页面内直接写查询
2.`charts/` 创建 `newpage.php`include 需要的 `inc/*.php`
3. 通过 `$_REQUEST` 接收参数(如 `ts_code``t_start``t_end`
4. 数据获取:优先走模式 B(fetch `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` 中添加导航入口
## 常用代码片段
### 获取数据库连接
```php
include_once __DIR__."/inc/config.php";
$mysqli = get_mysqli_connection();
```
### 标准查询返回 echarts 数据格式
```php
$tDate = $idx = $data = array();
while ($row = $result->fetch_assoc()) {
array_push($tDate, $row['trade_date']);
array_push($idx, $row['close']);
array_push($data, array("value" => array($row['trade_date'], round($row['close'], 2))));
}
$result->free();
$mysqli->close();
return array('tDate' => $tDate, 'idx' => $idx, 'data' => $data);
```
### 调用 TuShare API
```php
include_once __DIR__."/inc/functions.inc.php";
$data = callTushareApi('daily_basic', $params);
```
### 前端 AJAX 调用模式
```php
// 请求参数中必须包含 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 硬编码在 `inc/config.php` 中** —— 不要提交到公开仓库。
- **没有鉴权机制** —— 这是内网或个人使用的系统,不需要添加登录/权限功能。
- **`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
当用户说 "checkpoint" 时,在项目根目录生成 `continuation.md`,包含:
- **当前状态**:刚刚完成了什么、改了哪些文件、结果如何
- **后续步骤**:具体的、有序的下一步行动
- **待解决问题**:未解决的疑问、已知限制或需要决策的事项
## Notes
(待补充:部署 `sync-echart` 命令细节见 CLAUDE.mdPHP 语法检查 `php -l` 修改后必做。)