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

6.5 KiB
Raw Blame History

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/*(如 stockparamindexDatasstockinfogetdivstockepstockmarginstockbasic)。代表页面:stock_trend.phpstockdiv.phpstockep.phpstockmargin.phphkholdbycode.phpindex_trend.phpindex_mv_all.phpindex_margin.php
  2. 模式 CAJAX → inc/ajax.inc.php:页面 JS 用 $.ajax../inc/ajax.inc.php,通过 $_REQUEST['t'] 路由(if 链,不是 switch/case)。t 取值:stockListfinanceDataesfTBDesfListDailynewTBDmoneyflowDataestateData。代表页面:moneyflow.phprealestate.phpestateTradeDaily.phpestateListDaily.phpestateNewTradeDaily.phpstockkeydata.phpstockTradeRecord.php
  3. 模式 A(服务端注入)PHP 查询后 json_encode() 注入 <script> 标签中的 JS 变量。window.chartConfig 全局变量仅剩 deprecated/ 在用;活跃页面 charts/chartStDetail.php 是变体(注入命名变量 data1data5legend 等)。

代码风格约定

  • 缩进:使用 Tab 缩进(现有代码风格)。
  • SQL 查询:使用 heredoc 语法,保持可读性。
  • PHP 标签:使用 <?=<?php 短标签。
  • 注释:中文注释,简洁为主,解释业务逻辑而非代码本身(如指数的 ts_code 映射、机构类型 LX 含义等)。
  • 不需要加 docblock —— 现有代码基本没有,新代码也不加。

新增页面流程

如果要新增一个数据可视化页面,按以下步骤:

  1. inc/ 中写数据获取函数(如果数据源有复用价值),或在页面内直接写查询
  2. charts/ 创建 newpage.phpinclude 需要的 inc/*.php
  3. 通过 $_REQUEST 接收参数(如 ts_codet_startt_end
  4. 数据获取:优先走模式 Bfetch api.doorcome.cn)或模式 Cajax.inc.php 加一个 t= 分支)
  5. 图表 JS 放 js/ 目录,新式页面复用 js/renderCharts.jsdoubleLineChart() 等)和 js/pubfunc.jsgetRows()hideSwitch() 等)
  6. 公共库统一从 /lib/js/ 引用:jquery-3.6.0.min.jsecharts-5.4.2.jstailwindcss-3.4.17.js(注意是连字符、在 lib/js/ 下,不是 js/
  7. 对于样式较新的页面,使用 /lib/js/tailwindcss-3.4.17.js 并参考 index-2.php 的布局风格
  8. index-2.php 中添加导航入口

常用代码片段

获取数据库连接

include_once __DIR__."/inc/config.php";
$mysqli = get_mysqli_connection();

标准查询返回 echarts 数据格式

$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

include_once __DIR__."/inc/functions.inc.php";
$data = callTushareApi('daily_basic', $params);

前端 AJAX 调用模式

// 请求参数中必须包含 t 字段,用于 ajax.inc.php 路由
$_REQUEST['t'] = 'stockList';

数据库表名约定

完整清单见 DB_REFERENCE.md(16 张表、在用/未用/已被 API 替代状态一目了然)。要点:

  • 已被 API 替代、代码不再直接引用index_hist_pro(指数行情)、stock_his_pro(个股行情)、stock_all_pro(代码↔名称)——对应数据走 api.doorcome.cnindexDatas / 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.phpchartThree.phpstock_ih.phpindex_ih.php)已全部移入 deprecated/,当前无活跃调用者;getIhData() / getIhDataByStock() 保留在 inc/getData.inc.php

注意事项

  • TuShare API token 硬编码在 inc/config.php —— 不要提交到公开仓库。
  • 没有鉴权机制 —— 这是内网或个人使用的系统,不需要添加登录/权限功能。
  • deprecated/ 目录 —— 存放已废弃的旧版页面(chartOne~chartSixstock_ihindex_ih、旧版 stock_trend/index_trend 等,部分仍用 window.chartConfig 模式),直接忽略,不要修改或引用。
  • class/basic_info.class.php —— 独立的小类,未被核心流程引用。
  • news/research/ —— 独立的子模块,有自己的 JS/CSS 和设计文档,修改前先看对应的 design.mdoutline.md

Checkpoint

当用户说 "checkpoint" 时,在项目根目录生成 continuation.md,包含:

  • 当前状态:刚刚完成了什么、改了哪些文件、结果如何
  • 后续步骤:具体的、有序的下一步行动
  • 待解决问题:未解决的疑问、已知限制或需要决策的事项

Notes

(待补充:部署 sync-echart 命令细节见 CLAUDE.mdPHP 语法检查 php -l 修改后必做。)