feat: 添加基金监控系统基础功能

添加基金监控系统相关文件,包括邮件发送功能、基金数据配置、测试脚本等。主要包含以下内容:

1. 添加PHPMailer库及相关语言文件
2. 添加基金配置数据文件(fund_config.json, fund_names.json等)
3. 添加邮件发送测试脚本(test_email.php, test_fund_email.php等)
4. 添加.gitignore文件忽略不必要的文件
5. 添加composer.json配置依赖

Signed-off-by: LL <LL>
This commit is contained in:
LL
2025-12-12 14:14:07 +08:00
commit 0cfefbebd8
106 changed files with 26164 additions and 0 deletions

12
data/email_config.json Normal file
View File

@@ -0,0 +1,12 @@
{
"smtp_server": "smtp.qq.com",
"smtp_port": 465,
"smtp_secure": "ssl",
"username": "768057005@qq.com",
"password": "guyzqekhycnobdfe",
"from_email": "768057005@qq.com",
"from_name": "基金监控系统",
"to_emails": [
"1693710928@qq.com"
]
}

6
data/email_status.json Normal file
View File

@@ -0,0 +1,6 @@
{
"last_sent_date": "2025-12-12",
"last_sent_time": "04:17:24",
"sent_count": 7,
"failed_count": 6
}

70
data/fund_config.json Normal file
View File

@@ -0,0 +1,70 @@
[
{
"channel": "1",
"fund_code": "003766",
"investment": 1000
},
{
"channel": "1",
"fund_code": "008327",
"investment": 1000
},
{
"channel": "1",
"fund_code": "012863",
"investment": 10000
},
{
"channel": "1",
"fund_code": "023350",
"investment": 1000
},
{
"channel": "1",
"fund_code": "017560",
"investment": 1000,
"name": "基金017560"
},
{
"channel": "2",
"fund_code": "011815",
"investment": 1000,
"name": "基金011815"
},
{
"channel": "2",
"fund_code": "003598",
"investment": 1000,
"name": "基金003598"
},
{
"channel": "2",
"fund_code": "004206",
"investment": 1000,
"name": "基金004206"
},
{
"channel": "2",
"fund_code": "022365",
"investment": 1000,
"name": "基金022365"
},
{
"channel": "2",
"fund_code": "022364",
"investment": 1000,
"name": "基金022364"
},
{
"channel": "2",
"fund_code": "011103",
"investment": 1000,
"name": "基金011103"
},
{
"channel": "0",
"fund_code": "025825",
"investment": 1000,
"name": "基金025825"
}
]

109
data/fund_daily_data.json Normal file
View File

@@ -0,0 +1,109 @@
{
"last_update": "2025-12-12",
"funds": {
"003766": [
{
"date": "2025-12-12",
"dwjz": "1.7080",
"gsz": "1.7077",
"gszzl": -0.02,
"name": "广发创业板ETF发起式联接C"
}
],
"004206": [
{
"date": "2025-12-12",
"dwjz": "2.9413",
"gsz": "2.9407",
"gszzl": -0.02,
"name": "华商元亨混合A"
}
],
"019432": [],
"003598": [
{
"date": "2025-12-12",
"dwjz": "4.5860",
"gsz": "4.5906",
"gszzl": 0.1,
"name": "华商润丰灵活配置混合A"
}
],
"001071": [],
"018994": [],
"003567": [],
"008327": [
{
"date": "2025-12-12",
"dwjz": "2.6023",
"gsz": "2.6075",
"gszzl": 0.2,
"name": "东财通信C"
}
],
"012863": [
{
"date": "2025-12-12",
"dwjz": "0.7814",
"gsz": "0.7700",
"gszzl": -1.46,
"name": "汇添富中证电池主题ETF发起式联接C"
}
],
"017560": [
{
"date": "2025-12-12",
"dwjz": "2.0737",
"gsz": "2.0600",
"gszzl": -0.66,
"name": "华安上证科创板芯片ETF发起式联接C"
}
],
"014320": [],
"023350": [
{
"date": "2025-12-12",
"dwjz": "3.2060",
"gsz": "3.2170",
"gszzl": 0.34,
"name": "诺安多策略混合C"
}
],
"011815": [
{
"date": "2025-12-12",
"dwjz": "1.4265",
"gsz": "1.4228",
"gszzl": -0.26,
"name": "恒越优势精选混合A"
}
],
"022365": [
{
"date": "2025-12-12",
"dwjz": "3.5688",
"gsz": "3.5622",
"gszzl": -0.19,
"name": "永赢科技智选混合发起C"
}
],
"022364": [
{
"date": "2025-12-12",
"dwjz": "3.5935",
"gsz": "3.5868",
"gszzl": -0.19,
"name": "永赢科技智选混合发起A"
}
],
"011103": [
{
"date": "2025-12-12",
"dwjz": "0.8012",
"gsz": "0.8023",
"gszzl": 0.14,
"name": "天弘中证光伏产业指数C"
}
]
}
}

119
data/fund_history.json Normal file
View File

@@ -0,0 +1,119 @@
{
"last_update": "2025-10-29",
"data": [],
"yesterday_data": {
"003766": {
"date": "2025-11-18",
"change": -0.43,
"name": "广发创业板ETF发起式联接C"
},
"008327": {
"date": "2025-11-18",
"change": 1.55,
"name": "东财通信C"
},
"012863": {
"date": "2025-11-18",
"change": -3.89,
"name": "汇添富中证电池主题ETF发起式联接C"
},
"023350": {
"date": "2025-11-18",
"change": -1.27,
"name": "诺安多策略混合C"
},
"017560": {
"date": "2025-11-18",
"change": 2.09,
"name": "华安上证科创板芯片ETF发起式联接C"
},
"011815": {
"date": "2025-11-18",
"change": -1.14,
"name": "恒越优势精选混合"
},
"003598": {
"date": "2025-11-18",
"change": 0.58,
"name": "华商润丰灵活配置混合A"
},
"004206": {
"date": "2025-11-18",
"change": 0.7,
"name": "华商元亨混合A"
},
"022365": {
"date": "2025-11-18",
"change": 1.27,
"name": "永赢科技智选混合发起C"
},
"022364": {
"date": "2025-11-18",
"change": 1.27,
"name": "永赢科技智选混合发起A"
},
"011103": {
"date": "2025-11-18",
"change": -2.1,
"name": "天弘中证光伏产业指数C"
}
},
"today_data": {
"003766": {
"date": "2025-12-12",
"change": 0.6,
"name": "广发创业板ETF发起式联接C"
},
"008327": {
"date": "2025-12-12",
"change": 1.63,
"name": "东财通信C"
},
"012863": {
"date": "2025-12-12",
"change": -0.63,
"name": "汇添富中证电池主题ETF发起式联接C"
},
"023350": {
"date": "2025-12-12",
"change": 0.56,
"name": "诺安多策略混合C"
},
"017560": {
"date": "2025-12-12",
"change": 0.48,
"name": "华安上证科创板芯片ETF发起式联接C"
},
"011815": {
"date": "2025-12-12",
"change": 0.58,
"name": "恒越优势精选混合A"
},
"003598": {
"date": "2025-12-12",
"change": 0.47,
"name": "华商润丰灵活配置混合A"
},
"004206": {
"date": "2025-12-12",
"change": 0.5,
"name": "华商元亨混合A"
},
"022365": {
"date": "2025-12-12",
"change": 1.14,
"name": "永赢科技智选混合发起C"
},
"022364": {
"date": "2025-12-12",
"change": 1.14,
"name": "永赢科技智选混合发起A"
},
"011103": {
"date": "2025-12-12",
"change": 1.08,
"name": "天弘中证光伏产业指数C"
}
},
"last_update_date": "2025-12-12"
}

22
data/fund_names.json Normal file
View File

@@ -0,0 +1,22 @@
{
"003766": "汇添富医疗服务混合",
"0": "易方达消费行业股票",
"001714": "工银文体产业股票",
"000241": "中欧时代先锋股票",
"001475": "易方达国防军工混合",
"1": "招商中证白酒指数",
"000689": "前海开源新经济混合",
"001102": "前海开源国家比较优势混合",
"001593": "天弘创业板ETF联接",
"000971": "高升沪深300指数增强",
"004206": "华商元亨混合A",
"019432": "永赢睿信混合C",
"003598": "华商润丰灵活配置混合A",
"001071": "华安媒体互联网混合A",
"018994": "中欧数字经济混合发起C",
"003567": "华夏行业景气混合A",
"008327": "东财通信C",
"012863": "汇添富中证电池主题ETF发起式联接C",
"014320": "德邦半导体产业混合发起式C",
"023350": "诺安多策略混合C"
}

1
data/last_cleanup.txt Normal file
View File

@@ -0,0 +1 @@
1762443884

381
data/operation_log.json Normal file
View File

@@ -0,0 +1,381 @@
{
"0": {
"timestamp": "2025-12-12 04:47:50",
"action": "管理员登录",
"ip": "::1"
},
"1": {
"timestamp": "2025-12-12 04:17:07",
"action": "管理员登录",
"ip": "::1"
},
"2": {
"timestamp": "2025-11-11 13:41:58",
"action": "管理员登录",
"ip": "113.87.139.184"
},
"3": {
"timestamp": "2025-11-06 08:31:27",
"action": "管理员登录",
"ip": "113.87.138.191"
},
"4": {
"timestamp": "2025-11-05 14:45:57",
"action": "管理员登录",
"ip": "113.87.138.191"
},
"5": {
"timestamp": "2025-11-05 14:34:30",
"action": "管理员登录",
"ip": "113.87.138.191"
},
"6": {
"timestamp": "2025-11-05 09:47:16",
"action": "管理员登录",
"ip": "113.87.138.191"
},
"7": {
"timestamp": "2025-11-01 23:18:46",
"action": "管理员登录",
"ip": "113.87.139.206"
},
"8": {
"timestamp": "2025-10-31 23:11:13",
"action": "管理员登录",
"ip": "113.84.8.124"
},
"9": {
"timestamp": "2025-10-31 10:20:41",
"action": "管理员注销",
"ip": "113.87.137.255"
},
"10": {
"timestamp": "2025-10-31 10:18:31",
"action": "管理员登录",
"ip": "113.87.137.255"
},
"11": {
"timestamp": "2025-10-31 09:08:47",
"action": "管理员登录",
"ip": "113.87.137.255"
},
"12": {
"timestamp": "2025-10-30 21:05:23",
"action": "管理员登录",
"ip": "113.87.139.170"
},
"13": {
"timestamp": "2025-10-30 17:28:24",
"action": "管理员注销",
"ip": "113.87.137.255"
},
"14": {
"timestamp": "2025-10-30 17:14:21",
"action": "管理员登录",
"ip": "113.87.137.255"
},
"operations": [
{
"id": "6902c8ca52d34",
"type": "add",
"fund_code": "123123",
"channel": "0",
"investment": 1000,
"details": "添加基金",
"timestamp": 1761790154,
"date": "2025-10-30 10:09:14"
},
{
"id": "6902c8d11928c",
"type": "delete",
"fund_code": "123123",
"channel": "0",
"investment": 1000,
"details": "删除基金",
"timestamp": 1761790161,
"date": "2025-10-30 10:09:21"
},
{
"id": "690303ba12e0b",
"type": "delete",
"fund_code": "017560",
"channel": "1",
"investment": 1000,
"details": "删除基金",
"timestamp": 1761805242,
"date": "2025-10-30 14:20:42"
},
{
"id": "690aeffc99bf3",
"type": "delete",
"fund_code": "003766",
"channel": "0",
"investment": 10000,
"details": "删除基金",
"timestamp": 1762324476,
"date": "2025-11-05 14:34:36"
},
{
"id": "690af008d8578",
"type": "delete",
"fund_code": "018994",
"channel": "0",
"investment": 1000,
"details": "删除基金",
"timestamp": 1762324488,
"date": "2025-11-05 14:34:48"
},
{
"id": "690af00b6106c",
"type": "delete",
"fund_code": "003567",
"channel": "0",
"investment": 1000,
"details": "删除基金",
"timestamp": 1762324491,
"date": "2025-11-05 14:34:51"
},
{
"id": "690af00e849e6",
"type": "delete",
"fund_code": "014320",
"channel": "1",
"investment": 1000,
"details": "删除基金",
"timestamp": 1762324494,
"date": "2025-11-05 14:34:54"
},
{
"id": "690af0623f151",
"type": "delete",
"fund_code": "001071",
"channel": "0",
"investment": 1000,
"details": "删除基金",
"timestamp": 1762324578,
"date": "2025-11-05 14:36:18"
},
{
"id": "690af06459fbc",
"type": "delete",
"fund_code": "004206",
"channel": "0",
"investment": 1000,
"details": "删除基金",
"timestamp": 1762324580,
"date": "2025-11-05 14:36:20"
},
{
"id": "690af06641d8c",
"type": "delete",
"fund_code": "019432",
"channel": "0",
"investment": 1000,
"details": "删除基金",
"timestamp": 1762324582,
"date": "2025-11-05 14:36:22"
},
{
"id": "690af0683bed6",
"type": "delete",
"fund_code": "003598",
"channel": "0",
"investment": 1000,
"details": "删除基金",
"timestamp": 1762324584,
"date": "2025-11-05 14:36:24"
},
{
"id": "690becaa0e959",
"type": "add",
"fund_code": "017560",
"channel": "1",
"investment": 1000,
"details": "添加基金",
"timestamp": 1762389162,
"date": "2025-11-06 08:32:42"
},
{
"id": "6912cce74b4c7",
"type": "add",
"fund_code": "011815",
"channel": "1",
"investment": 1000,
"details": "添加基金",
"timestamp": 1762839783,
"date": "2025-11-11 13:43:03"
},
{
"id": "6912cd0a18557",
"type": "update",
"fund_code": "011815",
"channel": "2",
"investment": 1000,
"details": "更新基金: 投资金额 1000 -> 1000",
"timestamp": 1762839818,
"date": "2025-11-11 13:43:38"
},
{
"id": "6912cd214bbaa",
"type": "add",
"fund_code": "003598",
"channel": "2",
"investment": 1000,
"details": "添加基金",
"timestamp": 1762839841,
"date": "2025-11-11 13:44:01"
},
{
"id": "6912cd2e79b67",
"type": "add",
"fund_code": "004206",
"channel": "2",
"investment": 1000,
"details": "添加基金",
"timestamp": 1762839854,
"date": "2025-11-11 13:44:14"
},
{
"id": "6912cd3839737",
"type": "add",
"fund_code": "022365",
"channel": "2",
"investment": 1000,
"details": "添加基金",
"timestamp": 1762839864,
"date": "2025-11-11 13:44:24"
},
{
"id": "6912cd4373db8",
"type": "add",
"fund_code": "022364",
"channel": "2",
"investment": 1000,
"details": "添加基金",
"timestamp": 1762839875,
"date": "2025-11-11 13:44:35"
},
{
"id": "6912cd51cdd4c",
"type": "add",
"fund_code": "011103",
"channel": "2",
"investment": 1000,
"details": "添加基金",
"timestamp": 1762839889,
"date": "2025-11-11 13:44:49"
},
{
"id": "6912cd644111a",
"type": "add",
"fund_code": "025825",
"channel": "0",
"investment": 1000,
"details": "添加基金",
"timestamp": 1762839908,
"date": "2025-11-11 13:45:08"
},
{
"id": "693b8bfaa63d0",
"type": "更新邮箱配置",
"fund_code": {
"smtp_server": "smtp.qq.com",
"username": "768057005@qq.com"
},
"channel": null,
"investment": null,
"details": "",
"timestamp": 1765510138,
"date": "2025-12-12 04:28:58"
},
{
"id": "693b8c04e98c3",
"type": "添加邮箱收件人",
"fund_code": {
"email": "test@example.com"
},
"channel": null,
"investment": null,
"details": "",
"timestamp": 1765510148,
"date": "2025-12-12 04:29:08"
},
{
"id": "693b8cd247748",
"type": "更新邮箱配置",
"fund_code": {
"smtp_server": "smtp.qq.com",
"username": "768057005@qq.com"
},
"channel": null,
"investment": null,
"details": "",
"timestamp": 1765510354,
"date": "2025-12-12 04:32:34"
},
{
"id": "693b8d0368150",
"type": "更新邮箱配置",
"fund_code": {
"smtp_server": "smtp.qq.com",
"username": "768057005@qq.com"
},
"channel": null,
"investment": null,
"details": "",
"timestamp": 1765510403,
"date": "2025-12-12 04:33:23"
},
{
"id": "693b8d7531808",
"type": "更新邮箱配置",
"fund_code": {
"smtp_server": "smtp.qq.com",
"username": "768057005@qq.com"
},
"channel": null,
"investment": null,
"details": "",
"timestamp": 1765510517,
"date": "2025-12-12 04:35:17"
},
{
"id": "693b8da74c31d",
"type": "更新邮箱配置",
"fund_code": {
"smtp_server": "smtp.qq.com",
"username": "768057005@qq.com"
},
"channel": null,
"investment": null,
"details": "",
"timestamp": 1765510567,
"date": "2025-12-12 04:36:07"
},
{
"id": "693b8dd0211df",
"type": "更新邮箱配置",
"fund_code": {
"smtp_server": "smtp.qq.com",
"username": "768057005@qq.com"
},
"channel": null,
"investment": null,
"details": "",
"timestamp": 1765510608,
"date": "2025-12-12 04:36:48"
},
{
"id": "693b9071c066e",
"type": "添加邮箱收件人",
"fund_code": {
"email": "1693710928@qq.com"
},
"channel": null,
"investment": null,
"details": "",
"timestamp": 1765511281,
"date": "2025-12-12 04:48:01"
}
]
}

9
data/recommend_logs.json Normal file
View File

@@ -0,0 +1,9 @@
[
{
"action": "recommend_fund",
"timestamp": "2025-10-31 16:33:53",
"fund_code": "005965",
"fund_name": "\u5b89\u4fe1\u4e2d\u8bc1500\u6307\u6570\u589e\u5f3aA",
"ip": "113.87.137.255"
}
]

View File

@@ -0,0 +1,11 @@
[
{
"fund_code": "005965",
"ip": "113.87.137.255",
"timestamp": "2025-10-31 16:33:53",
"channel": "网站推荐",
"amount": 1000,
"status": "pending",
"fund_name": "安信中证500指数增强A"
}
]

95
data/stats.json Normal file
View File

@@ -0,0 +1,95 @@
{
"total_visits": 618,
"today_visits": 5,
"unique_visitors": 64,
"last_reset": "2025-12-12",
"daily_stats": {
"2025-10-28": 55,
"2025-10-29": 195,
"2025-10-30": 206,
"2025-10-31": 18,
"2025-11-01": 4,
"2025-11-02": 2,
"2025-11-03": 12,
"2025-11-04": 6,
"2025-11-05": 11,
"2025-11-06": 9,
"2025-11-07": 7,
"2025-11-10": 5,
"2025-11-11": 11,
"2025-11-12": 10,
"2025-11-13": 10,
"2025-11-14": 10,
"2025-11-15": 1,
"2025-11-17": 5,
"2025-11-18": 1,
"2025-12-12": 5
},
"unique_ips": [
"113.87.138.21",
"113.84.209.129",
"113.87.137.255",
"23.27.145.18",
"112.97.82.77",
"113.84.82.28",
"178.239.124.106",
"23.27.145.162",
"14.116.140.45",
"18.207.197.68",
"14.116.140.24",
"183.211.90.28",
"113.201.15.72",
"42.232.246.99",
"81.71.101.51",
"113.84.138.211",
"14.116.140.135",
"113.84.42.84",
"113.87.139.170",
"180.101.245.251",
"220.196.160.101",
"103.219.192.68",
"112.97.84.103",
"149.57.180.103",
"113.84.8.124",
"23.27.145.45",
"66.249.75.226",
"27.38.135.37",
"205.169.39.29",
"34.123.170.104",
"205.169.39.25",
"113.87.139.206",
"205.169.39.148",
"112.97.87.32",
"113.84.192.103",
"113.87.138.191",
"146.70.185.32",
"14.116.140.239",
"113.87.137.193",
"220.196.160.146",
"110.249.201.169",
"113.84.33.37",
"14.116.140.86",
"113.87.136.77",
"180.101.244.13",
"180.101.244.15",
"14.116.140.42",
"113.84.83.15",
"113.87.139.184",
"113.84.193.224",
"129.211.162.158",
"113.87.139.12",
"113.84.169.220",
"14.31.17.219",
"220.196.160.144",
"14.31.17.35",
"112.97.80.134",
"66.249.77.193",
"35.165.215.140",
"113.87.139.101",
"113.87.136.32",
"205.169.39.16",
"113.84.33.13",
"::1"
],
"today_unique_visitors": 1
}

4328
data/visits.json Normal file

File diff suppressed because it is too large Load Diff