改版成为web应用
This commit is contained in:
parent
43736b2111
commit
61d51a7218
2
.env
2
.env
@ -3,6 +3,6 @@ ALPHA_VANTAGE_KEY=2ROWPV7BMW6JSG0Y
|
|||||||
JQUANTS_REFRESH_TOKEN=eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.AzlbVPyDZZ1OQc35ICxAtQeb2j51DhSGy69dihg6lEznIgRNgHn5wmhFOnNz_Nh7z-1AJj66d2T4Naj76lRpHhXk5FCViUzZqaNkz9Q_TnoHt90Pp_Op-1cHORbjfCGpW3cvT9En6UZxodjDliRzqCpqJ52UCLLWUJfJIwyFy5-QcWTEOGOdVRXTHtihy-w7ylw7ocUj3gd34NLGPr45yG0fTmo7om_MWBPbVsWvWOjdvrEtee43xEuZTheqbRgU3IRxa7ff1zIRDSrbH-nWIBPsh-XXV2r2OZTBARairjnUA0Ikma224UF_m5acpPwcs4UwrbeKyq13K3N1f3ohDA.6Zi0U52Kps9h3ezu.RPeBbqcqaca9F8ZuSkLN8o5Kk-IARoHW5ij58DFjYpvc7-ZXhATPYOBHJKQ3tFL2fE08nnb9TMmjvErsF7MFxcxt1XnDfhbak55SFzw3yGfXhD6VqeLaSoPwcs_cFuXNtfQEeibyMpcUUj2dXltgc1axqIA1Lndyw9RMPOyH3b0wShyd7WCPiO7amktMUNDMkbgUDR6wYGEpWYxug9ySaGuu0JSAH6sDR2TRkuUOhgBfhsKIvqSQNahM5yRQpeJ0zvY3UOUxADyaKTTK_kNco9mMjoymQIK6eO30cCJva89hITytncWDxRCG5TsMuXJeqHkg2_RCZ6gckSZAYkiWmeXrw26qBOqZ8efV5aMo4D6NMLPVLyPeLJX3Vnpuzw_ySpMKewhmTmSaKZUXRWc06VXIln8YVZDAH7uGbkZHk4Gq0nDxH6xH7sSQROFOZlPuYeaJ5Ye07-_0QunvvVwCtvF69GpURukG8s7qQ-c6x5iWPJa0icommt6I6EHif3_X_oaHfcioQgjDD3zJIhKjHHZGp4yZhskuXhV3p-M9FiKeJFMhBK085UkopMFUHGa6p3DPmxA-UzVb8UbPqE4xvYrqujLg3rnwSOQjpnzLNcjVy9GhKVHqIpTTLtAmaXinkM4LExPfyVlGOAbE70q1C_VtEMIbwCNh5yd1JMo__WP-w_VQt9X_GF1k_8bUGLRJEUYIhuZX9cgZkFwiUCdSXOxBOZ6XM8vnTYj0J7bMkkbaJNIITzPEAz1HjbyN0N82os3aLq9PpMsay0QLREfkzKaWdjWs-Dj9mjJl7rl22GFe_wC1sT90W9iGMH8pjNsEU8byFXe_Gb6ZCzfWydk2eK1LRMW_N_IMg4oA-bp92dToAhiHci793mkDwDVqe_Yd06CClVZfX1cSuPZQfj2OwARQWqHrN6ZX7UnnHippvcvrJmqABDEHL-JyA5wcdCQOkHqQZsZvXTlDO6nyucTwOrI9jRStdjbFSpqDJV7unIVztEezzQFleLQ1bumMJwkvWHIqxM4js1d8xajFIBcvWC4BndlU0zp5Th39PShFb0_cmhEbhCSpzaofWW5-BLPmhIxyIAGbXKAR2mUwfBYnNzGdPffa3-EOiYR-CfYHFn9Vq7DZivcAj9FbMiOWaU5L-qU_ucpKOJ85gSUudVt59JMZWHniXdiURQUEuz3Q5ntCVM1Dhh2ir_-JHVpuK7VZ13HFgaMAE5zE4iIBltGo2XDT_5F1KsqoHVNtMnRSs8syN-kBsUEuQNwaZr5Jh6e4cmQKdHWRIycHMouYhTGiZHA5-R_lNtuipLyERQ-agaUGyZ7eqY6rDrk1Vsbbf_oAqfs_P3plB60jRQ.AkfSJSjSunnRAS2Ahrjx1Q
|
JQUANTS_REFRESH_TOKEN=eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.AzlbVPyDZZ1OQc35ICxAtQeb2j51DhSGy69dihg6lEznIgRNgHn5wmhFOnNz_Nh7z-1AJj66d2T4Naj76lRpHhXk5FCViUzZqaNkz9Q_TnoHt90Pp_Op-1cHORbjfCGpW3cvT9En6UZxodjDliRzqCpqJ52UCLLWUJfJIwyFy5-QcWTEOGOdVRXTHtihy-w7ylw7ocUj3gd34NLGPr45yG0fTmo7om_MWBPbVsWvWOjdvrEtee43xEuZTheqbRgU3IRxa7ff1zIRDSrbH-nWIBPsh-XXV2r2OZTBARairjnUA0Ikma224UF_m5acpPwcs4UwrbeKyq13K3N1f3ohDA.6Zi0U52Kps9h3ezu.RPeBbqcqaca9F8ZuSkLN8o5Kk-IARoHW5ij58DFjYpvc7-ZXhATPYOBHJKQ3tFL2fE08nnb9TMmjvErsF7MFxcxt1XnDfhbak55SFzw3yGfXhD6VqeLaSoPwcs_cFuXNtfQEeibyMpcUUj2dXltgc1axqIA1Lndyw9RMPOyH3b0wShyd7WCPiO7amktMUNDMkbgUDR6wYGEpWYxug9ySaGuu0JSAH6sDR2TRkuUOhgBfhsKIvqSQNahM5yRQpeJ0zvY3UOUxADyaKTTK_kNco9mMjoymQIK6eO30cCJva89hITytncWDxRCG5TsMuXJeqHkg2_RCZ6gckSZAYkiWmeXrw26qBOqZ8efV5aMo4D6NMLPVLyPeLJX3Vnpuzw_ySpMKewhmTmSaKZUXRWc06VXIln8YVZDAH7uGbkZHk4Gq0nDxH6xH7sSQROFOZlPuYeaJ5Ye07-_0QunvvVwCtvF69GpURukG8s7qQ-c6x5iWPJa0icommt6I6EHif3_X_oaHfcioQgjDD3zJIhKjHHZGp4yZhskuXhV3p-M9FiKeJFMhBK085UkopMFUHGa6p3DPmxA-UzVb8UbPqE4xvYrqujLg3rnwSOQjpnzLNcjVy9GhKVHqIpTTLtAmaXinkM4LExPfyVlGOAbE70q1C_VtEMIbwCNh5yd1JMo__WP-w_VQt9X_GF1k_8bUGLRJEUYIhuZX9cgZkFwiUCdSXOxBOZ6XM8vnTYj0J7bMkkbaJNIITzPEAz1HjbyN0N82os3aLq9PpMsay0QLREfkzKaWdjWs-Dj9mjJl7rl22GFe_wC1sT90W9iGMH8pjNsEU8byFXe_Gb6ZCzfWydk2eK1LRMW_N_IMg4oA-bp92dToAhiHci793mkDwDVqe_Yd06CClVZfX1cSuPZQfj2OwARQWqHrN6ZX7UnnHippvcvrJmqABDEHL-JyA5wcdCQOkHqQZsZvXTlDO6nyucTwOrI9jRStdjbFSpqDJV7unIVztEezzQFleLQ1bumMJwkvWHIqxM4js1d8xajFIBcvWC4BndlU0zp5Th39PShFb0_cmhEbhCSpzaofWW5-BLPmhIxyIAGbXKAR2mUwfBYnNzGdPffa3-EOiYR-CfYHFn9Vq7DZivcAj9FbMiOWaU5L-qU_ucpKOJ85gSUudVt59JMZWHniXdiURQUEuz3Q5ntCVM1Dhh2ir_-JHVpuK7VZ13HFgaMAE5zE4iIBltGo2XDT_5F1KsqoHVNtMnRSs8syN-kBsUEuQNwaZr5Jh6e4cmQKdHWRIycHMouYhTGiZHA5-R_lNtuipLyERQ-agaUGyZ7eqY6rDrk1Vsbbf_oAqfs_P3plB60jRQ.AkfSJSjSunnRAS2Ahrjx1Q
|
||||||
OPENAI_API_KEY=AIzaSyAT5QXWoACp87oqg1OK4USTIwc2RsJHvIc
|
OPENAI_API_KEY=AIzaSyAT5QXWoACp87oqg1OK4USTIwc2RsJHvIc
|
||||||
OPENAI_BASE_URL=https://generativelanguage.googleapis.com/v1beta/openai/
|
OPENAI_BASE_URL=https://generativelanguage.googleapis.com/v1beta/openai/
|
||||||
LLM_MODEL=gemini-3-pro-preview
|
LLM_MODEL=gemini-2.5-flash
|
||||||
IFIND_REFRESH_TOKEN=eyJzaWduX3RpbWUiOiIyMDI1LTEyLTIxIDE3OjQwOjU2In0=.eyJ1aWQiOiI3MjMwNDQwNzciLCJ1c2VyIjp7ImFjY2Vzc1Rva2VuIjoiYzk5NjdlNGUzNmJjZDliNzI2ZjM5YmQ5MGFkOWQwY2Q4NzE3OTllZi5zaWduc19Oekl6TURRME1EYzMiLCJhY2Nlc3NUb2tlbkV4cGlyZWRUaW1lIjoiMjAyNS0xMi0yMSAxNzo0MDo1NiIsImFjY291bnQiOiJ3eGhsdHowMDEiLCJhdXRoVXNlckluZm8iOnsiRVRyYW5zZmVyIjp0cnVlLCJFZXhjZWxQYXllcnMiOiIxNzk4NjgzMDAyMDAwIn0sImNvZGVDU0kiOltdLCJjb2RlWnpBdXRoIjpbXSwiaGFzQUlQcmVkaWN0IjpmYWxzZSwiaGFzQUlUYWxrIjpmYWxzZSwiaGFzQ0lDQyI6ZmFsc2UsImhhc0NTSSI6ZmFsc2UsImhhc0V2ZW50RHJpdmUiOmZhbHNlLCJoYXNGVFNFIjpmYWxzZSwiaGFzRmFzdCI6ZmFsc2UsImhhc0Z1bmRWYWx1YXRpb24iOmZhbHNlLCJoYXNISyI6dHJ1ZSwiaGFzTE1FIjpmYWxzZSwiaGFzTGV2ZWwyIjpmYWxzZSwiaGFzUmVhbENNRSI6ZmFsc2UsImhhc1RyYW5zZmVyIjpmYWxzZSwiaGFzVVMiOmZhbHNlLCJoYXNVU0FJbmRleCI6ZmFsc2UsImhhc1VTREVCVCI6ZmFsc2UsIm1hcmtldEF1dGgiOnsiRENFIjpmYWxzZX0sIm1heE9uTGluZSI6MSwibm9EaXNrIjpmYWxzZSwicHJvZHVjdFR5cGUiOiJTVVBFUkNPTU1BTkRQUk9EVUNUIiwicmVmcmVzaFRva2VuIjoiIiwicmVmcmVzaFRva2VuRXhwaXJlZFRpbWUiOiIyMDI2LTEyLTMxIDEwOjEwOjAyIiwic2Vzc3Npb24iOiI4ZmYxNzVmYzNmZDkxMzA3YTRlOWIzMTE3Njc4NDlhNiIsInNpZEluZm8iOns2NDoiMTExMTExMTExMTExMTExMTExMTExMTExIiwxOiIxMDEiLDI6IjEiLDY3OiIxMDExMTExMTExMTExMTExMTExMTExMTEiLDM6IjEiLDY5OiIxMTExMTExMTExMTExMTExMTExMTExMTExIiw1OiIxIiw2OiIxIiw3MToiMTExMTExMTExMTExMTExMTExMTExMTAwIiw3OiIxMTExMTExMTExMSIsODoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEiLDEzODoiMTExMTExMTExMTExMTExMTExMTExMTExMSIsMTM5OiIxMTExMTExMTExMTExMTExMTExMTExMTExIiwxNDA6IjExMTExMTExMTExMTExMTExMTExMTExMTEiLDE0MToiMTExMTExMTExMTExMTExMTExMTExMTExMSIsMTQyOiIxMTExMTExMTExMTExMTExMTExMTExMTExIiwxNDM6IjExIiw4MDoiMTExMTExMTExMTExMTExMTExMTExMTExIiw4MToiMTExMTExMTExMTExMTExMTExMTExMTExIiw4MjoiMTExMTExMTExMTExMTExMTExMTEwMTEwIiw4MzoiMTExMTExMTExMTExMTExMTExMDAwMDAwIiw4NToiMDExMTExMTExMTExMTExMTExMTExMTExIiw4NzoiMTExMTExMTEwMDExMTExMDExMTExMTExIiw4OToiMTExMTExMTEwMTEwMTAwMDAwMDAxMTExIiw5MDoiMTExMTEwMTExMTExMTExMTEwMDAxMTExMTAiLDkzOiIxMTExMTExMTExMTExMTExMTAwMDAxMTExIiw5NDoiMTExMTExMTExMTExMTExMTExMTExMTExMSIsOTY6IjExMTExMTExMTExMTExMTExMTExMTExMTEiLDk5OiIxMDAiLDEwMDoiMTExMTAxMTExMTExMTExMTExMCIsMTAyOiIxIiw0NDoiMTEiLDEwOToiMSIsNTM6IjExMTExMTExMTExMTExMTExMTExMTExMSIsNTQ6IjExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiw1NzoiMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAiLDYyOiIxMTExMTExMTExMTExMTExMTExMTExMTEiLDYzOiIxMTExMTExMTExMTExMTExMTExMTExMTEifSwidGltZXN0YW1wIjoiMTc2NjMxMDA1NjAzNyIsInRyYW5zQXV0aCI6ZmFsc2UsInR0bFZhbHVlIjowLCJ1aWQiOiI3MjMwNDQwNzciLCJ1c2VyVHlwZSI6IkZSRUVJQUwiLCJ3aWZpbmRMaW1pdE1hcCI6e319fQ==.03DB82A62F865C511B2C2BD464B535B62B0081C47AE33540D5D236CEF0C1FE9D
|
IFIND_REFRESH_TOKEN=eyJzaWduX3RpbWUiOiIyMDI1LTEyLTIxIDE3OjQwOjU2In0=.eyJ1aWQiOiI3MjMwNDQwNzciLCJ1c2VyIjp7ImFjY2Vzc1Rva2VuIjoiYzk5NjdlNGUzNmJjZDliNzI2ZjM5YmQ5MGFkOWQwY2Q4NzE3OTllZi5zaWduc19Oekl6TURRME1EYzMiLCJhY2Nlc3NUb2tlbkV4cGlyZWRUaW1lIjoiMjAyNS0xMi0yMSAxNzo0MDo1NiIsImFjY291bnQiOiJ3eGhsdHowMDEiLCJhdXRoVXNlckluZm8iOnsiRVRyYW5zZmVyIjp0cnVlLCJFZXhjZWxQYXllcnMiOiIxNzk4NjgzMDAyMDAwIn0sImNvZGVDU0kiOltdLCJjb2RlWnpBdXRoIjpbXSwiaGFzQUlQcmVkaWN0IjpmYWxzZSwiaGFzQUlUYWxrIjpmYWxzZSwiaGFzQ0lDQyI6ZmFsc2UsImhhc0NTSSI6ZmFsc2UsImhhc0V2ZW50RHJpdmUiOmZhbHNlLCJoYXNGVFNFIjpmYWxzZSwiaGFzRmFzdCI6ZmFsc2UsImhhc0Z1bmRWYWx1YXRpb24iOmZhbHNlLCJoYXNISyI6dHJ1ZSwiaGFzTE1FIjpmYWxzZSwiaGFzTGV2ZWwyIjpmYWxzZSwiaGFzUmVhbENNRSI6ZmFsc2UsImhhc1RyYW5zZmVyIjpmYWxzZSwiaGFzVVMiOmZhbHNlLCJoYXNVU0FJbmRleCI6ZmFsc2UsImhhc1VTREVCVCI6ZmFsc2UsIm1hcmtldEF1dGgiOnsiRENFIjpmYWxzZX0sIm1heE9uTGluZSI6MSwibm9EaXNrIjpmYWxzZSwicHJvZHVjdFR5cGUiOiJTVVBFUkNPTU1BTkRQUk9EVUNUIiwicmVmcmVzaFRva2VuIjoiIiwicmVmcmVzaFRva2VuRXhwaXJlZFRpbWUiOiIyMDI2LTEyLTMxIDEwOjEwOjAyIiwic2Vzc3Npb24iOiI4ZmYxNzVmYzNmZDkxMzA3YTRlOWIzMTE3Njc4NDlhNiIsInNpZEluZm8iOns2NDoiMTExMTExMTExMTExMTExMTExMTExMTExIiwxOiIxMDEiLDI6IjEiLDY3OiIxMDExMTExMTExMTExMTExMTExMTExMTEiLDM6IjEiLDY5OiIxMTExMTExMTExMTExMTExMTExMTExMTExIiw1OiIxIiw2OiIxIiw3MToiMTExMTExMTExMTExMTExMTExMTExMTAwIiw3OiIxMTExMTExMTExMSIsODoiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEiLDEzODoiMTExMTExMTExMTExMTExMTExMTExMTExMSIsMTM5OiIxMTExMTExMTExMTExMTExMTExMTExMTExIiwxNDA6IjExMTExMTExMTExMTExMTExMTExMTExMTEiLDE0MToiMTExMTExMTExMTExMTExMTExMTExMTExMSIsMTQyOiIxMTExMTExMTExMTExMTExMTExMTExMTExIiwxNDM6IjExIiw4MDoiMTExMTExMTExMTExMTExMTExMTExMTExIiw4MToiMTExMTExMTExMTExMTExMTExMTExMTExIiw4MjoiMTExMTExMTExMTExMTExMTExMTEwMTEwIiw4MzoiMTExMTExMTExMTExMTExMTExMDAwMDAwIiw4NToiMDExMTExMTExMTExMTExMTExMTExMTExIiw4NzoiMTExMTExMTEwMDExMTExMDExMTExMTExIiw4OToiMTExMTExMTEwMTEwMTAwMDAwMDAxMTExIiw5MDoiMTExMTEwMTExMTExMTExMTEwMDAxMTExMTAiLDkzOiIxMTExMTExMTExMTExMTExMTAwMDAxMTExIiw5NDoiMTExMTExMTExMTExMTExMTExMTExMTExMSIsOTY6IjExMTExMTExMTExMTExMTExMTExMTExMTEiLDk5OiIxMDAiLDEwMDoiMTExMTAxMTExMTExMTExMTExMCIsMTAyOiIxIiw0NDoiMTEiLDEwOToiMSIsNTM6IjExMTExMTExMTExMTExMTExMTExMTExMSIsNTQ6IjExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiw1NzoiMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAiLDYyOiIxMTExMTExMTExMTExMTExMTExMTExMTEiLDYzOiIxMTExMTExMTExMTExMTExMTExMTExMTEifSwidGltZXN0YW1wIjoiMTc2NjMxMDA1NjAzNyIsInRyYW5zQXV0aCI6ZmFsc2UsInR0bFZhbHVlIjowLCJ1aWQiOiI3MjMwNDQwNzciLCJ1c2VyVHlwZSI6IkZSRUVJQUwiLCJ3aWZpbmRMaW1pdE1hcCI6e319fQ==.03DB82A62F865C511B2C2BD464B535B62B0081C47AE33540D5D236CEF0C1FE9D
|
||||||
GEMINI_API_KEY=AIzaSyAT5QXWoACp87oqg1OK4USTIwc2RsJHvIc
|
GEMINI_API_KEY=AIzaSyAT5QXWoACp87oqg1OK4USTIwc2RsJHvIc
|
||||||
@ -5,12 +5,11 @@
|
|||||||
为公司 **{company_name}** (股票代码: **{ts_code}**) 生成一份关于内部人与机构投资者动向的深度分析报告。报告需覆盖**最近6-12个月**的数据,并解读这些“聪明钱”的行为可能暗示的公司前景。
|
为公司 **{company_name}** (股票代码: **{ts_code}**) 生成一份关于内部人与机构投资者动向的深度分析报告。报告需覆盖**最近6-12个月**的数据,并解读这些“聪明钱”的行为可能暗示的公司前景。
|
||||||
|
|
||||||
#### # 输出要求
|
#### # 输出要求
|
||||||
1. **数据驱动**:分析必须基于公开的、可验证的数据(如交易所披露的内部人交易记录、基金公司的持仓报告如13F文件等)。
|
1. **数据驱动**:请严格使用一级标题 `# {company_name} 内部人及机构动向分析` 作为报告的第一行。开头不要自我介绍,直接开始正文。正文用MarkDown输出,尽量说明信息来源,用斜体显示信息来源。
|
||||||
2. **聚焦近期**:重点分析最近6-12个月的动向,以捕捉最新的趋势变化。
|
2. **聚焦近期**:重点分析最近6-12个月的动向,以捕捉最新的趋势变化。
|
||||||
3. **深度解读,而非罗列**:不仅要呈现数据,更要深入分析交易行为背后的动机。例如,区分主动的公开市场增持与被动的股权激励,分析机构的“新进”与“清仓”。
|
3. **深度解读,而非罗列**:不仅要呈现数据,更要深入分析交易行为背后的动机。例如,区分主动的公开市场增持与被动的股权激励,分析机构的“新进”与“清仓”。
|
||||||
4. **结合股价**:将内部人和机构的动向与同期的股价走势相结合,分析是否存在“低位吸筹”或“高位派发”的迹象。
|
4. **结合股价**:将内部人和机构的动向与同期的股价走势相结合,分析是否存在“低位吸筹”或“高位派发”的迹象。
|
||||||
5. **Markdown格式**:使用清晰的标题结构。
|
5. **引用来源**:*在分析时需注明数据来源类型,如:来源:Q3季度机构持仓报告*。
|
||||||
6. **引用来源**:*在分析时需注明数据来源类型,如:来源:Q3季度机构持仓报告*。
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@ -5,12 +5,11 @@
|
|||||||
为公司 **{company_name}** (股票代码: **{ts_code}**) 生成一份全面、专业、结构化的投资分析报告。**请使用搜索工具验证管理层的最新言论、最新的行业政策变化以及近期的公司重大新闻。**
|
为公司 **{company_name}** (股票代码: **{ts_code}**) 生成一份全面、专业、结构化的投资分析报告。**请使用搜索工具验证管理层的最新言论、最新的行业政策变化以及近期的公司重大新闻。**
|
||||||
|
|
||||||
#### # 输出要求
|
#### # 输出要求
|
||||||
1. **直接开始**:不要进行任何自我介绍或客套话,直接输出报告正文。
|
1. **输出规范**:请严格使用一级标题 `# {company_name} 基本面分析` 作为报告的第一行。开头不要自我介绍,直接开始正文。正文用MarkDown输出,尽量说明信息来源,用斜体显示信息来源。
|
||||||
2. **Markdown格式**:使用清晰的多级Markdown标题(如 `##` 和 `###`)来组织报告结构。
|
2. **引用来源**:所有关键数据和重要结论都必须注明信息来源,并用*斜体*表示。例如:*来源:2023年公司年报*。优先使用公司财报、官方公告等可靠信源。
|
||||||
3. **引用来源**:所有关键数据和重要结论都必须注明信息来源,并用*斜体*表示。例如:*来源:2023年公司年报*。优先使用公司财报、官方公告等可靠信源。
|
3. **数据驱动**:尽可能地使用量化数据来支撑你的分析。
|
||||||
4. **数据驱动**:尽可能地使用量化数据来支撑你的分析。
|
4. **专业口吻**:保持客观、中立、分析性的专业语调。
|
||||||
5. **专业口吻**:保持客观、中立、分析性的专业语调。
|
5. **信息缺失处理**:如果某些信息在公开渠道无法获取,请明确指出“相关信息未公开披露”或类似说明。
|
||||||
6. **信息缺失处理**:如果某些信息在公开渠道无法获取,请明确指出“相关信息未公开披露”或类似说明。
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@ -5,12 +5,11 @@
|
|||||||
为公司 **{company_name}** (股票代码: **{ts_code}**) 生成一份深入的看涨分析报告。**请搜索最新的研报摘要和市场评论,以确保你的分析包含当前市场的最新观点。**报告的核心是论证该公司拥有被市场低估的隐藏资产、持续加深的护城河,并且其所处行业将迎来至少3年以上的景气周期。
|
为公司 **{company_name}** (股票代码: **{ts_code}**) 生成一份深入的看涨分析报告。**请搜索最新的研报摘要和市场评论,以确保你的分析包含当前市场的最新观点。**报告的核心是论证该公司拥有被市场低估的隐藏资产、持续加深的护城河,并且其所处行业将迎来至少3年以上的景气周期。
|
||||||
|
|
||||||
#### # 输出要求
|
#### # 输出要求
|
||||||
1. **直奔主题**:直接开始分析,无需引言。
|
1. **输出规范**:请严格使用一级标题 `# {company_name} 看涨分析` 作为报告的第一行。开头不要自我介绍,直接开始正文。正文用MarkDown输出,尽量说明信息来源,用斜体显示信息来源。
|
||||||
2. **Markdown格式**:使用清晰的标题结构来组织你的论点。
|
2. **数据与来源**:所有关键论点都必须有数据、事实或合理的逻辑推演作为支撑。请用*斜体*注明信息来源(如:*来源:公司2023年投资者交流纪要* 或 *来源:中信证券行业研报*)。
|
||||||
3. **数据与来源**:所有关键论点都必须有数据、事实或合理的逻辑推演作为支撑。请用*斜体*注明信息来源(如:*来源:公司2023年投资者交流纪要* 或 *来源:中信证券行业研报*)。
|
3. **聚焦看涨逻辑**:报告内容应完全围绕支撑看涨观点的论据展开,暂时忽略风险和负面因素。
|
||||||
4. **聚焦看涨逻辑**:报告内容应完全围绕支撑看涨观点的论据展开,暂时忽略风险和负面因素。
|
4. **前瞻性视角**:分析应侧重于未来3-5年的发展潜力,而不仅仅是回顾历史。
|
||||||
5. **前瞻性视角**:分析应侧重于未来3-5年的发展潜力,而不仅仅是回顾历史。
|
5. **信息缺失处理**:如果某些推论需要的数据无法公开获取,可以基于现有信息进行合理的逻辑推测,并明确标注“(此为基于...的推测)”。
|
||||||
6. **信息缺失处理**:如果某些推论需要的数据无法公开获取,可以基于现有信息进行合理的逻辑推测,并明确标注“(此为基于...的推测)”。
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@ -5,12 +5,11 @@
|
|||||||
为公司 **{company_name}** (股票代码: **{ts_code}**) 生成一份审慎的看跌分析报告(Bear Case)。**请搜索最新的研报摘要和市场评论,以确保你的分析包含当前市场的最新观点。**报告需要深入探讨可能侵蚀公司护城河的因素、被市场忽视的潜在风险、行业可能面临的逆风,并对公司的价值底线进行评估。
|
为公司 **{company_name}** (股票代码: **{ts_code}**) 生成一份审慎的看跌分析报告(Bear Case)。**请搜索最新的研报摘要和市场评论,以确保你的分析包含当前市场的最新观点。**报告需要深入探讨可能侵蚀公司护城河的因素、被市场忽视的潜在风险、行业可能面临的逆风,并对公司的价值底线进行评估。
|
||||||
|
|
||||||
#### # 输出要求
|
#### # 输出要求
|
||||||
1. **直奔主题**:直接开始风险分析,无需引言。
|
1. **输出规范**:请严格使用一级标题 `# {company_name} 看跌分析` 作为报告的第一行。开头不要自我介绍,直接开始正文。正文用MarkDown输出,尽量说明信息来源,用斜体显示信息来源。
|
||||||
2. **Markdown格式**:使用清晰的标题结构组织风险论点。
|
2. **证据驱动**:所有风险点都必须基于事实、数据或严谨的逻辑推演。请用*斜体*注明信息来源(如:*来源:竞争对手2023年财报* 或 *来源:行业监管政策草案*)。
|
||||||
3. **证据驱动**:所有风险点都必须基于事实、数据或严谨的逻辑推演。请用*斜体*注明信息来源(如:*来源:竞争对手2023年财报* 或 *来源:行业监管政策草案*)。
|
3. **聚焦看跌逻辑**:报告应完全围绕看跌观点展开,旨在识别和放大潜在的负面因素。
|
||||||
4. **聚焦看跌逻辑**:报告应完全围绕看跌观点展开,旨在识别和放大潜在的负面因素。
|
4. **底线思维**:分析的核心是评估“事情最坏能到什么程度”,并判断公司的安全边际。
|
||||||
5. **底线思维**:分析的核心是评估“事情最坏能到什么程度”,并判断公司的安全边际。
|
5. **信息缺失处理**:对于难以量化的风险(如管理层风险),进行定性分析和逻辑阐述。
|
||||||
6. **信息缺失处理**:对于难以量化的风险(如管理层风险),进行定性分析和逻辑阐述。
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
0
backend/app/__init__.py
Normal file
0
backend/app/__init__.py
Normal file
BIN
backend/app/__pycache__/__init__.cpython-313.pyc
Normal file
BIN
backend/app/__pycache__/__init__.cpython-313.pyc
Normal file
Binary file not shown.
BIN
backend/app/__pycache__/database.cpython-313.pyc
Normal file
BIN
backend/app/__pycache__/database.cpython-313.pyc
Normal file
Binary file not shown.
BIN
backend/app/__pycache__/main.cpython-313.pyc
Normal file
BIN
backend/app/__pycache__/main.cpython-313.pyc
Normal file
Binary file not shown.
BIN
backend/app/__pycache__/models.cpython-313.pyc
Normal file
BIN
backend/app/__pycache__/models.cpython-313.pyc
Normal file
Binary file not shown.
BIN
backend/app/__pycache__/schemas.cpython-313.pyc
Normal file
BIN
backend/app/__pycache__/schemas.cpython-313.pyc
Normal file
Binary file not shown.
BIN
backend/app/api/__pycache__/routes.cpython-313.pyc
Normal file
BIN
backend/app/api/__pycache__/routes.cpython-313.pyc
Normal file
Binary file not shown.
169
backend/app/api/routes.py
Normal file
169
backend/app/api/routes.py
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
from fastapi import APIRouter, Depends, HTTPException, BackgroundTasks
|
||||||
|
from fastapi.responses import HTMLResponse
|
||||||
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||||||
|
from sqlalchemy import select
|
||||||
|
from sqlalchemy.orm import selectinload
|
||||||
|
from app.database import get_db
|
||||||
|
from app.schemas import StockSearchRequest, StockSearchResponse, AnalysisRequest, ReportResponse, AnalysisStatus, ConfigUpdateRequest
|
||||||
|
from app.models import Report, Setting
|
||||||
|
from app.services import analysis_service
|
||||||
|
import os
|
||||||
|
import markdown
|
||||||
|
|
||||||
|
router = APIRouter()
|
||||||
|
|
||||||
|
@router.get("/health")
|
||||||
|
def health_check():
|
||||||
|
return {"status": "healthy"}
|
||||||
|
|
||||||
|
@router.post("/search", response_model=list[StockSearchResponse])
|
||||||
|
async def search_stock(request: StockSearchRequest, db: AsyncSession = Depends(get_db)):
|
||||||
|
setting = await db.get(Setting, "GEMINI_API_KEY")
|
||||||
|
api_key = setting.value if setting else os.getenv("GEMINI_API_KEY")
|
||||||
|
|
||||||
|
if not api_key:
|
||||||
|
raise HTTPException(status_code=500, detail="API Key not configured")
|
||||||
|
|
||||||
|
# Get AI model setting
|
||||||
|
model_setting = await db.get(Setting, "AI_MODEL")
|
||||||
|
model = model_setting.value if model_setting else "gemini-2.0-flash"
|
||||||
|
|
||||||
|
result = await analysis_service.search_stock(request.query, api_key, model)
|
||||||
|
if isinstance(result, dict) and "error" in result:
|
||||||
|
if isinstance(result, str) and "```json" in result:
|
||||||
|
pass
|
||||||
|
raise HTTPException(status_code=400, detail=str(result))
|
||||||
|
return result
|
||||||
|
|
||||||
|
@router.post("/analyze", response_model=ReportResponse)
|
||||||
|
async def start_analysis(request: AnalysisRequest, background_tasks: BackgroundTasks, db: AsyncSession = Depends(get_db)):
|
||||||
|
# Get AI model setting
|
||||||
|
model_setting = await db.get(Setting, "AI_MODEL")
|
||||||
|
model = model_setting.value if model_setting else "gemini-2.0-flash"
|
||||||
|
|
||||||
|
new_report = Report(
|
||||||
|
market=request.market,
|
||||||
|
symbol=request.symbol,
|
||||||
|
company_name=request.company_name,
|
||||||
|
status=AnalysisStatus.PENDING,
|
||||||
|
ai_model=model
|
||||||
|
)
|
||||||
|
db.add(new_report)
|
||||||
|
await db.commit()
|
||||||
|
await db.refresh(new_report)
|
||||||
|
|
||||||
|
setting = await db.get(Setting, "GEMINI_API_KEY")
|
||||||
|
api_key = setting.value if setting else os.getenv("GEMINI_API_KEY")
|
||||||
|
|
||||||
|
if not api_key:
|
||||||
|
new_report.status = AnalysisStatus.FAILED
|
||||||
|
await db.commit()
|
||||||
|
raise HTTPException(status_code=500, detail="API Key not configured")
|
||||||
|
|
||||||
|
# Trigger background task
|
||||||
|
background_tasks.add_task(
|
||||||
|
analysis_service.run_analysis_task,
|
||||||
|
new_report.id,
|
||||||
|
request.market,
|
||||||
|
request.symbol,
|
||||||
|
api_key
|
||||||
|
)
|
||||||
|
|
||||||
|
# Re-fetch with selectinload to avoid lazy loading issues
|
||||||
|
result = await db.execute(select(Report).options(selectinload(Report.sections)).where(Report.id == new_report.id))
|
||||||
|
report_with_sections = result.scalar_one()
|
||||||
|
|
||||||
|
return report_with_sections
|
||||||
|
|
||||||
|
@router.get("/reports", response_model=list[ReportResponse])
|
||||||
|
async def get_reports(db: AsyncSession = Depends(get_db)):
|
||||||
|
result = await db.execute(select(Report).options(selectinload(Report.sections)).order_by(Report.created_at.desc()))
|
||||||
|
return result.scalars().all()
|
||||||
|
|
||||||
|
@router.get("/reports/{report_id}", response_model=ReportResponse)
|
||||||
|
async def get_report(report_id: int, db: AsyncSession = Depends(get_db)):
|
||||||
|
result = await db.execute(select(Report).options(selectinload(Report.sections)).where(Report.id == report_id))
|
||||||
|
report = result.scalar_one_or_none()
|
||||||
|
if not report:
|
||||||
|
raise HTTPException(status_code=404, detail="Report not found")
|
||||||
|
return report
|
||||||
|
|
||||||
|
@router.get("/reports/{report_id}/html", response_class=HTMLResponse)
|
||||||
|
async def get_report_html(report_id: int, db: AsyncSession = Depends(get_db)):
|
||||||
|
result = await db.execute(select(Report).options(selectinload(Report.sections)).where(Report.id == report_id))
|
||||||
|
report = result.scalar_one_or_none()
|
||||||
|
if not report:
|
||||||
|
raise HTTPException(status_code=404, detail="Report not found")
|
||||||
|
|
||||||
|
# Get Financial HTML (Charts)
|
||||||
|
root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../../"))
|
||||||
|
base_dir = os.path.join(root_dir, "data", report.market)
|
||||||
|
symbol_dir = os.path.join(base_dir, report.symbol)
|
||||||
|
|
||||||
|
# Fuzzy match logic
|
||||||
|
financial_html = ""
|
||||||
|
try:
|
||||||
|
if not os.path.exists(symbol_dir) and os.path.exists(base_dir):
|
||||||
|
candidates = [d for d in os.listdir(base_dir) if d.startswith(report.symbol) and os.path.isdir(os.path.join(base_dir, d))]
|
||||||
|
if candidates:
|
||||||
|
symbol_dir = os.path.join(base_dir, candidates[0])
|
||||||
|
|
||||||
|
start_html_path = os.path.join(symbol_dir, "report.html")
|
||||||
|
if os.path.exists(start_html_path):
|
||||||
|
with open(start_html_path, 'r', encoding='utf-8') as f:
|
||||||
|
financial_html = f.read()
|
||||||
|
else:
|
||||||
|
financial_html = "<p>财务图表尚未生成,数据获取可能仍在进行中。</p>"
|
||||||
|
except Exception as e:
|
||||||
|
financial_html = f"<p>加载财务图表时出错: {str(e)}</p>"
|
||||||
|
|
||||||
|
# Only return financial charts, no analysis sections
|
||||||
|
final_html = f"""
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>{report.company_name} - 财务数据</title>
|
||||||
|
<style>
|
||||||
|
body {{ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; padding: 20px; line-height: 1.6; max-width: 1200px; margin: 0 auto; }}
|
||||||
|
table {{ border-collapse: collapse; width: 100%; margin: 20px 0; }}
|
||||||
|
th, td {{ border: 1px solid #ddd; padding: 12px; }}
|
||||||
|
th {{ background-color: #f5f5f5; }}
|
||||||
|
img {{ max-width: 100%; }}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{financial_html}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
"""
|
||||||
|
return final_html
|
||||||
|
|
||||||
|
@router.get("/config")
|
||||||
|
async def get_config(db: AsyncSession = Depends(get_db)):
|
||||||
|
result = await db.execute(select(Setting))
|
||||||
|
settings = result.scalars().all()
|
||||||
|
|
||||||
|
config_map = {s.key: s.value for s in settings}
|
||||||
|
|
||||||
|
if "GEMINI_API_KEY" in config_map:
|
||||||
|
config_map["GEMINI_API_KEY"] = "********" + config_map["GEMINI_API_KEY"][-4:]
|
||||||
|
elif os.getenv("GEMINI_API_KEY"):
|
||||||
|
val = os.getenv("GEMINI_API_KEY")
|
||||||
|
config_map["GEMINI_API_KEY"] = "********" + val[-4:]
|
||||||
|
else:
|
||||||
|
config_map["GEMINI_API_KEY"] = ""
|
||||||
|
|
||||||
|
return config_map
|
||||||
|
|
||||||
|
@router.post("/config")
|
||||||
|
async def update_config(request: ConfigUpdateRequest, db: AsyncSession = Depends(get_db)):
|
||||||
|
setting = await db.get(Setting, request.key)
|
||||||
|
if not setting:
|
||||||
|
setting = Setting(key=request.key, value=request.value)
|
||||||
|
db.add(setting)
|
||||||
|
else:
|
||||||
|
setting.value = request.value
|
||||||
|
|
||||||
|
await db.commit()
|
||||||
|
return {"status": "updated", "key": request.key}
|
||||||
31
backend/app/database.py
Normal file
31
backend/app/database.py
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
|
||||||
|
from sqlalchemy import text
|
||||||
|
from app.models import Base
|
||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
DATABASE_URL = os.getenv("DATABASE_URL", "sqlite+aiosqlite:///./stock_analysis.db")
|
||||||
|
|
||||||
|
engine = create_async_engine(DATABASE_URL, echo=True)
|
||||||
|
AsyncSessionLocal = async_sessionmaker(engine, expire_on_commit=False)
|
||||||
|
|
||||||
|
async def init_db():
|
||||||
|
async with engine.begin() as conn:
|
||||||
|
await conn.run_sync(Base.metadata.create_all)
|
||||||
|
|
||||||
|
# Migration: Add ai_model column if it doesn't exist (for SQLite)
|
||||||
|
try:
|
||||||
|
await conn.execute(
|
||||||
|
text("ALTER TABLE reports ADD COLUMN ai_model VARCHAR(100) DEFAULT 'gemini-2.0-flash-exp'")
|
||||||
|
)
|
||||||
|
print("Migration: Added ai_model column to reports table")
|
||||||
|
except Exception as e:
|
||||||
|
# Column already exists or other error
|
||||||
|
if "duplicate column" not in str(e).lower() and "already exists" not in str(e).lower():
|
||||||
|
print(f"Migration check: {e}")
|
||||||
|
|
||||||
|
async def get_db():
|
||||||
|
async with AsyncSessionLocal() as session:
|
||||||
|
yield session
|
||||||
37
backend/app/main.py
Normal file
37
backend/app/main.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
from fastapi import FastAPI
|
||||||
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
from app.api import routes
|
||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
from contextlib import asynccontextmanager
|
||||||
|
from app.database import init_db
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
@asynccontextmanager
|
||||||
|
async def lifespan(app: FastAPI):
|
||||||
|
# Initialize DB on startup
|
||||||
|
await init_db()
|
||||||
|
yield
|
||||||
|
|
||||||
|
app = FastAPI(title="Stock Analysis API", lifespan=lifespan)
|
||||||
|
|
||||||
|
# Configure CORS
|
||||||
|
origins = [
|
||||||
|
"http://localhost:3000",
|
||||||
|
"http://127.0.0.1:3000",
|
||||||
|
]
|
||||||
|
|
||||||
|
app.add_middleware(
|
||||||
|
CORSMiddleware,
|
||||||
|
allow_origins=["*"], # For development convenience
|
||||||
|
allow_credentials=True,
|
||||||
|
allow_methods=["*"],
|
||||||
|
allow_headers=["*"],
|
||||||
|
)
|
||||||
|
|
||||||
|
app.include_router(routes.router, prefix="/api")
|
||||||
|
|
||||||
|
@app.get("/")
|
||||||
|
def read_root():
|
||||||
|
return {"status": "ok", "message": "Stock Analysis API is running"}
|
||||||
44
backend/app/models.py
Normal file
44
backend/app/models.py
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, Enum
|
||||||
|
from sqlalchemy.orm import relationship, Mapped, mapped_column, DeclarativeBase
|
||||||
|
from sqlalchemy.sql import func
|
||||||
|
import enum
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
class Base(DeclarativeBase):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class AnalysisStatus(str, enum.Enum):
|
||||||
|
PENDING = "pending"
|
||||||
|
IN_PROGRESS = "in_progress"
|
||||||
|
COMPLETED = "completed"
|
||||||
|
FAILED = "failed"
|
||||||
|
|
||||||
|
class Report(Base):
|
||||||
|
__tablename__ = "reports"
|
||||||
|
|
||||||
|
id: Mapped[int] = mapped_column(primary_key=True, index=True)
|
||||||
|
market: Mapped[str] = mapped_column(String(10), index=True)
|
||||||
|
symbol: Mapped[str] = mapped_column(String(20), index=True)
|
||||||
|
company_name: Mapped[str] = mapped_column(String(200))
|
||||||
|
status: Mapped[AnalysisStatus] = mapped_column(Enum(AnalysisStatus), default=AnalysisStatus.PENDING)
|
||||||
|
ai_model: Mapped[str] = mapped_column(String(100), nullable=True, default="gemini-2.0-flash")
|
||||||
|
created_at: Mapped[datetime.datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|
||||||
|
|
||||||
|
sections: Mapped[list["ReportSection"]] = relationship(back_populates="report", cascade="all, delete-orphan")
|
||||||
|
|
||||||
|
class ReportSection(Base):
|
||||||
|
__tablename__ = "report_sections"
|
||||||
|
|
||||||
|
id: Mapped[int] = mapped_column(primary_key=True, index=True)
|
||||||
|
report_id: Mapped[int] = mapped_column(ForeignKey("reports.id"))
|
||||||
|
section_name: Mapped[str] = mapped_column(String(50)) # e.g. company_profile, fundamental_analysis
|
||||||
|
content: Mapped[str] = mapped_column(Text) # Markdown content
|
||||||
|
created_at: Mapped[datetime.datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|
||||||
|
|
||||||
|
report: Mapped["Report"] = relationship(back_populates="sections")
|
||||||
|
|
||||||
|
class Setting(Base):
|
||||||
|
__tablename__ = "settings"
|
||||||
|
|
||||||
|
key: Mapped[str] = mapped_column(String(50), primary_key=True)
|
||||||
|
value: Mapped[str] = mapped_column(Text)
|
||||||
48
backend/app/schemas.py
Normal file
48
backend/app/schemas.py
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
from pydantic import BaseModel
|
||||||
|
from typing import Optional, List
|
||||||
|
from datetime import datetime
|
||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
class AnalysisStatus(str, Enum):
|
||||||
|
PENDING = "pending"
|
||||||
|
IN_PROGRESS = "in_progress"
|
||||||
|
COMPLETED = "completed"
|
||||||
|
FAILED = "failed"
|
||||||
|
|
||||||
|
class StockSearchRequest(BaseModel):
|
||||||
|
query: str
|
||||||
|
|
||||||
|
class StockSearchResponse(BaseModel):
|
||||||
|
market: str
|
||||||
|
symbol: str
|
||||||
|
company_name: str
|
||||||
|
|
||||||
|
class AnalysisRequest(BaseModel):
|
||||||
|
market: str
|
||||||
|
symbol: str
|
||||||
|
company_name: str
|
||||||
|
|
||||||
|
class ReportSectionSchema(BaseModel):
|
||||||
|
section_name: str
|
||||||
|
content: str
|
||||||
|
created_at: datetime
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
|
|
||||||
|
class ReportResponse(BaseModel):
|
||||||
|
id: int
|
||||||
|
market: str
|
||||||
|
symbol: str
|
||||||
|
company_name: str
|
||||||
|
status: AnalysisStatus
|
||||||
|
ai_model: Optional[str] = None
|
||||||
|
created_at: datetime
|
||||||
|
sections: List[ReportSectionSchema] = []
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
|
|
||||||
|
class ConfigUpdateRequest(BaseModel):
|
||||||
|
key: str
|
||||||
|
value: str
|
||||||
Binary file not shown.
BIN
backend/app/services/__pycache__/llm_engine.cpython-313.pyc
Normal file
BIN
backend/app/services/__pycache__/llm_engine.cpython-313.pyc
Normal file
Binary file not shown.
176
backend/app/services/analysis_service.py
Normal file
176
backend/app/services/analysis_service.py
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import asyncio
|
||||||
|
import json
|
||||||
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||||||
|
from app.models import Report, ReportSection, AnalysisStatus
|
||||||
|
from app.services import llm_engine
|
||||||
|
from datetime import datetime
|
||||||
|
import google.genai as genai
|
||||||
|
from google.genai import types
|
||||||
|
|
||||||
|
async def search_stock(query: str, api_key: str, model: str = "gemini-2.0-flash"):
|
||||||
|
if not api_key:
|
||||||
|
return {"error": "API Key not provided"}
|
||||||
|
|
||||||
|
client = genai.Client(api_key=api_key)
|
||||||
|
prompt = f"""
|
||||||
|
你是一个专业的股票代码查询助手。请识别公司 '{query}' 的股票市场和代码。
|
||||||
|
|
||||||
|
**重要提示**:
|
||||||
|
1. 用户输入可能是公司全称、简称、别名或股票代码
|
||||||
|
2. 请仔细匹配,优先完全匹配,避免返回不相关的公司
|
||||||
|
3. 中国公司的简称经常省略"股份有限公司"等后缀
|
||||||
|
4. 例如:"茅台" = "贵州茅台酒股份有限公司" (600519.SH)
|
||||||
|
|
||||||
|
请返回一个 JSON 数组,包含所有匹配的公司。每个对象包含以下字段:
|
||||||
|
- 'market': 'CN' (中国), 'US' (美国), 'HK' (香港), 或 'JP' (日本) 之一
|
||||||
|
- 'symbol': 完整的股票代码 (例如 'AAPL', '600519.SH', '00700.HK', '688778.SH', '2503.T')
|
||||||
|
- 'company_name': 公司的中文简称(如果有的话,优先使用中文;如果只有英文名,则使用英文名)
|
||||||
|
|
||||||
|
**匹配规则**:
|
||||||
|
- 如果查询词与某公司简称、全称或股票代码完全匹配,返回该公司
|
||||||
|
- 如果有多个可能的匹配,返回所有相关公司
|
||||||
|
- 如果公司在中国但用户没有指定市场,默认为 CN(上海/深圳/北京交易所)
|
||||||
|
- 如果完全没找到匹配,返回 {{ "error": "未找到相关公司" }}
|
||||||
|
|
||||||
|
示例响应(单个结果):
|
||||||
|
[
|
||||||
|
{{
|
||||||
|
"market": "CN",
|
||||||
|
"symbol": "600519.SH",
|
||||||
|
"company_name": "贵州茅台"
|
||||||
|
}}
|
||||||
|
]
|
||||||
|
|
||||||
|
示例响应(多个结果):
|
||||||
|
[
|
||||||
|
{{
|
||||||
|
"market": "HK",
|
||||||
|
"symbol": "00700.HK",
|
||||||
|
"company_name": "腾讯控股"
|
||||||
|
}},
|
||||||
|
{{
|
||||||
|
"market": "US",
|
||||||
|
"symbol": "TCEHY",
|
||||||
|
"company_name": "Tencent Holdings ADR"
|
||||||
|
}}
|
||||||
|
]
|
||||||
|
|
||||||
|
现在请处理查询: '{query}'
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Enable Google Search for more accurate results
|
||||||
|
grounding_tool = types.Tool(google_search=types.GoogleSearch())
|
||||||
|
# Note: Cannot use response_mime_type with tools
|
||||||
|
config = types.GenerateContentConfig(tools=[grounding_tool])
|
||||||
|
|
||||||
|
response = client.models.generate_content(
|
||||||
|
model=model,
|
||||||
|
contents=prompt,
|
||||||
|
config=config
|
||||||
|
)
|
||||||
|
|
||||||
|
response_text = response.text.strip()
|
||||||
|
print(f"Search API raw response: {response_text[:500]}")
|
||||||
|
|
||||||
|
# Extract JSON from response (may be wrapped in markdown code blocks)
|
||||||
|
if "```json" in response_text:
|
||||||
|
# Extract JSON from code block
|
||||||
|
start = response_text.find("```json") + 7
|
||||||
|
end = response_text.find("```", start)
|
||||||
|
json_str = response_text[start:end].strip()
|
||||||
|
elif "```" in response_text:
|
||||||
|
# Extract from generic code block
|
||||||
|
start = response_text.find("```") + 3
|
||||||
|
end = response_text.find("```", start)
|
||||||
|
json_str = response_text[start:end].strip()
|
||||||
|
else:
|
||||||
|
json_str = response_text
|
||||||
|
|
||||||
|
result = json.loads(json_str)
|
||||||
|
|
||||||
|
# Ensure result is always an array for consistent handling
|
||||||
|
if not isinstance(result, list):
|
||||||
|
if isinstance(result, dict) and "error" in result:
|
||||||
|
return result # Return error as-is
|
||||||
|
result = [result] # Wrap single object in array
|
||||||
|
|
||||||
|
return result
|
||||||
|
except json.JSONDecodeError as e:
|
||||||
|
print(f"JSON decode error: {e}, Response text: {response_text}")
|
||||||
|
return {"error": f"无法解析搜索结果: {str(e)}"}
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Search error: {e}")
|
||||||
|
return {"error": f"搜索失败: {str(e)}"}
|
||||||
|
|
||||||
|
async def run_analysis_task(report_id: int, market: str, symbol: str, api_key: str):
|
||||||
|
"""
|
||||||
|
Background task to run the full analysis pipeline.
|
||||||
|
Creates its own DB session.
|
||||||
|
"""
|
||||||
|
print(f"Starting analysis for report {report_id}: {market} {symbol}")
|
||||||
|
|
||||||
|
# Create new session
|
||||||
|
from app.database import AsyncSessionLocal
|
||||||
|
|
||||||
|
async with AsyncSessionLocal() as session:
|
||||||
|
try:
|
||||||
|
report = await session.get(Report, report_id)
|
||||||
|
if not report:
|
||||||
|
print(f"Report {report_id} not found in background task")
|
||||||
|
return
|
||||||
|
|
||||||
|
report.status = AnalysisStatus.IN_PROGRESS
|
||||||
|
await session.commit()
|
||||||
|
|
||||||
|
company_name_for_prompt = report.company_name
|
||||||
|
|
||||||
|
# 2. Run Main Data Fetching Script (main.py)
|
||||||
|
root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../../"))
|
||||||
|
cmd = [sys.executable, "main.py", market, symbol]
|
||||||
|
|
||||||
|
print(f"Executing data fetch command: {cmd} in {root_dir}")
|
||||||
|
process = await asyncio.create_subprocess_exec(
|
||||||
|
*cmd,
|
||||||
|
cwd=root_dir,
|
||||||
|
stdout=asyncio.subprocess.PIPE,
|
||||||
|
stderr=asyncio.subprocess.PIPE
|
||||||
|
)
|
||||||
|
stdout, stderr = await process.communicate()
|
||||||
|
|
||||||
|
if process.returncode != 0:
|
||||||
|
error_msg = stderr.decode()
|
||||||
|
print(f"Data fetch failed: {error_msg}")
|
||||||
|
report.status = AnalysisStatus.FAILED
|
||||||
|
await session.commit()
|
||||||
|
return
|
||||||
|
|
||||||
|
print("Data fetch successful.")
|
||||||
|
|
||||||
|
# 3. Perform Analysis Logic
|
||||||
|
await llm_engine.process_analysis_steps(
|
||||||
|
report_id=report_id,
|
||||||
|
company_name=company_name_for_prompt,
|
||||||
|
symbol=symbol,
|
||||||
|
market=market,
|
||||||
|
db=session,
|
||||||
|
api_key=api_key
|
||||||
|
)
|
||||||
|
|
||||||
|
# 4. Finalize
|
||||||
|
report.status = AnalysisStatus.COMPLETED
|
||||||
|
await session.commit()
|
||||||
|
print(f"Analysis for report {report_id} completed.")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Analysis task exception: {e}")
|
||||||
|
try:
|
||||||
|
report = await session.get(Report, report_id)
|
||||||
|
if report:
|
||||||
|
report.status = AnalysisStatus.FAILED
|
||||||
|
await session.commit()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
153
backend/app/services/llm_engine.py
Normal file
153
backend/app/services/llm_engine.py
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
import os
|
||||||
|
import time
|
||||||
|
import markdown
|
||||||
|
import google.genai as genai
|
||||||
|
from google.genai import types
|
||||||
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||||||
|
from sqlalchemy.future import select
|
||||||
|
from app.models import Report, ReportSection, Setting
|
||||||
|
import asyncio
|
||||||
|
|
||||||
|
async def load_prompts(db: AsyncSession, prompt_dir: str):
|
||||||
|
prompts = {}
|
||||||
|
mapping = {
|
||||||
|
"company_profile": "公司简介.md",
|
||||||
|
"fundamental_analysis": "基本面分析.md",
|
||||||
|
"insider_analysis": "内部人与机构动向分析.md",
|
||||||
|
"bullish_analysis": "看涨分析.md",
|
||||||
|
"bearish_analysis": "看跌分析.md"
|
||||||
|
}
|
||||||
|
|
||||||
|
for key, filename in mapping.items():
|
||||||
|
# Try DB First
|
||||||
|
setting_key = f"PROMPT_{key.upper()}"
|
||||||
|
try:
|
||||||
|
result = await db.get(Setting, setting_key)
|
||||||
|
if result:
|
||||||
|
prompts[key] = result.value
|
||||||
|
continue
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error reading prompt setting {setting_key}: {e}")
|
||||||
|
|
||||||
|
# Fallback to File
|
||||||
|
try:
|
||||||
|
with open(os.path.join(prompt_dir, filename), 'r', encoding='utf-8') as f:
|
||||||
|
prompts[key] = f.read()
|
||||||
|
except FileNotFoundError:
|
||||||
|
print(f"Warning: Prompt file {filename} not found.")
|
||||||
|
prompts[key] = f"Error: Prompt {filename} not found."
|
||||||
|
|
||||||
|
return prompts
|
||||||
|
|
||||||
|
async def call_llm(api_key: str, model_name: str, system_prompt: str, user_prompt: str, context: str, enable_search: bool = True):
|
||||||
|
full_prompt = f"{system_prompt}\n\n{user_prompt}\n\nExisting Report Data for context:\n{context}"
|
||||||
|
|
||||||
|
client = genai.Client(api_key=api_key)
|
||||||
|
|
||||||
|
config_params = {}
|
||||||
|
if enable_search:
|
||||||
|
grounding_tool = types.Tool(google_search=types.GoogleSearch())
|
||||||
|
config_params['tools'] = [grounding_tool]
|
||||||
|
|
||||||
|
config = types.GenerateContentConfig(**config_params)
|
||||||
|
|
||||||
|
try:
|
||||||
|
def run_sync():
|
||||||
|
return client.models.generate_content(
|
||||||
|
model=model_name,
|
||||||
|
contents=full_prompt,
|
||||||
|
config=config
|
||||||
|
)
|
||||||
|
|
||||||
|
response = await asyncio.to_thread(run_sync)
|
||||||
|
return response.text
|
||||||
|
except Exception as e:
|
||||||
|
print(f"API Call Failed: {e}")
|
||||||
|
return f"\n\nError generating section: {e}\n\n"
|
||||||
|
|
||||||
|
async def process_analysis_steps(report_id: int, company_name: str, symbol: str, market: str, db: AsyncSession, api_key: str):
|
||||||
|
# 1. Load Prompts
|
||||||
|
root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../../"))
|
||||||
|
prompt_dir = os.path.join(root_dir, "Prompt")
|
||||||
|
prompts = await load_prompts(db, prompt_dir)
|
||||||
|
|
||||||
|
# 2. Read Data Context (report.md generated by main.py)
|
||||||
|
base_dir = os.path.join(root_dir, "data", market)
|
||||||
|
symbol_dir = os.path.join(base_dir, symbol)
|
||||||
|
|
||||||
|
if not os.path.exists(symbol_dir):
|
||||||
|
candidates = [d for d in os.listdir(base_dir) if d.startswith(symbol) and os.path.isdir(os.path.join(base_dir, d))]
|
||||||
|
if candidates:
|
||||||
|
symbol_dir = os.path.join(base_dir, candidates[0])
|
||||||
|
|
||||||
|
data_path = os.path.join(symbol_dir, "report.md")
|
||||||
|
if not os.path.exists(data_path):
|
||||||
|
# If report.md is missing, maybe main.py failed or output structure changed.
|
||||||
|
# We try to proceed or fail.
|
||||||
|
print(f"Warning: {data_path} not found.")
|
||||||
|
data_context = "No financial data available."
|
||||||
|
else:
|
||||||
|
with open(data_path, 'r', encoding='utf-8') as f:
|
||||||
|
data_context = f.read()
|
||||||
|
|
||||||
|
# CSV Context
|
||||||
|
csv_path = os.path.join(symbol_dir, "raw_balance_sheet_raw.csv")
|
||||||
|
csv_context = ""
|
||||||
|
if os.path.exists(csv_path):
|
||||||
|
with open(csv_path, 'r', encoding='utf-8') as f:
|
||||||
|
csv_content = f.read()
|
||||||
|
csv_context = f"\n\nRaw Balance Sheet Data (CSV):\n{csv_content}\n"
|
||||||
|
|
||||||
|
|
||||||
|
steps = [
|
||||||
|
("company_profile", "3. 公司简介 (Company Profile)"),
|
||||||
|
("fundamental_analysis", "4. 基本面分析 (Fundamental Analysis)"),
|
||||||
|
("insider_analysis", "5. 内部人与机构动向 (Insider Analysis)"),
|
||||||
|
("bullish_analysis", "6. 看涨分析 (Bullish Analysis)"),
|
||||||
|
("bearish_analysis", "7. 看跌分析 (Bearish Analysis)")
|
||||||
|
]
|
||||||
|
|
||||||
|
# Get AI model from settings
|
||||||
|
model_setting = await db.get(Setting, "AI_MODEL")
|
||||||
|
model_name = model_setting.value if model_setting else "gemini-2.0-flash"
|
||||||
|
|
||||||
|
# Prepare all API calls concurrently
|
||||||
|
async def process_section(key: str, name: str):
|
||||||
|
print(f"Processing {name}...")
|
||||||
|
prompt_template = prompts.get(key)
|
||||||
|
if not prompt_template:
|
||||||
|
return None
|
||||||
|
|
||||||
|
formatted_prompt = prompt_template.format(company_name=company_name, ts_code=symbol)
|
||||||
|
|
||||||
|
system_content = formatted_prompt
|
||||||
|
user_content = "请根据上述角色设定和要求,结合提供的财务数据,撰写本章节的分析报告。"
|
||||||
|
|
||||||
|
current_data_context = data_context
|
||||||
|
if key == "bearish_analysis" and csv_context:
|
||||||
|
current_data_context += csv_context
|
||||||
|
|
||||||
|
content = await call_llm(api_key, model_name, system_content, user_content, current_data_context, enable_search=True)
|
||||||
|
|
||||||
|
return (key, content)
|
||||||
|
|
||||||
|
# Run all sections concurrently
|
||||||
|
print(f"Starting concurrent analysis with {len(steps)} sections...")
|
||||||
|
results = await asyncio.gather(*[process_section(key, name) for key, name in steps])
|
||||||
|
|
||||||
|
# Save all results to DB
|
||||||
|
for result in results:
|
||||||
|
if result is None:
|
||||||
|
continue
|
||||||
|
key, content = result
|
||||||
|
section = ReportSection(
|
||||||
|
report_id=report_id,
|
||||||
|
section_name=key,
|
||||||
|
content=content
|
||||||
|
)
|
||||||
|
db.add(section)
|
||||||
|
|
||||||
|
await db.commit()
|
||||||
|
print(f"All {len(steps)} sections completed and saved!")
|
||||||
|
|
||||||
|
return True
|
||||||
15
backend/requirements.txt
Normal file
15
backend/requirements.txt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
fastapi
|
||||||
|
uvicorn
|
||||||
|
sqlalchemy
|
||||||
|
aiosqlite
|
||||||
|
python-dotenv
|
||||||
|
pydantic
|
||||||
|
requests
|
||||||
|
google-genai
|
||||||
|
markdown
|
||||||
|
beautifulsoup4
|
||||||
|
yfinance
|
||||||
|
pandas
|
||||||
|
numpy
|
||||||
|
pytest
|
||||||
|
httpx
|
||||||
14
data/CN/300750.SZ/historical_metrics.csv
Normal file
14
data/CN/300750.SZ/historical_metrics.csv
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
date_str,Price,PE,PB,MarketCap,Shareholders
|
||||||
|
20250930,402.0,36.1375,6.3157,1833784274046.0,226368.0
|
||||||
|
20241231,266.0,26.5478,4.9395,1171322077828.0,212061.0
|
||||||
|
20240930,251.89,25.1333,5.64,1108914407264.0,229043.0
|
||||||
|
20231231,163.26,23.3715,3.9816,718187472189.0,260992.0
|
||||||
|
20221231,393.42,60.3173,6.3972,960934064032.0,183317.0
|
||||||
|
20211231,588.0,245.4697,18.7433,1370540505600.0,141963.0
|
||||||
|
20201231,351.11,179.3523,13.3304,817901625971.0,133060.0
|
||||||
|
20191231,106.4,69.3745,6.3603,234973728079.99997,76710.0
|
||||||
|
20181231,73.8,41.7726,5.015,161992284120.0,82514.0
|
||||||
|
20171231,,,,,
|
||||||
|
20161231,,,,,
|
||||||
|
20151231,,,,,
|
||||||
|
20141231,,,,,
|
||||||
|
61
data/CN/300750.SZ/raw_balance_sheet.csv
Normal file
61
data/CN/300750.SZ/raw_balance_sheet.csv
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
ts_code,ann_date,f_ann_date,end_date,report_type,comp_type,end_type,total_share,cap_rese,undistr_porfit,surplus_rese,special_rese,money_cap,trad_asset,notes_receiv,accounts_receiv,oth_receiv,prepayment,div_receiv,int_receiv,inventories,amor_exp,nca_within_1y,sett_rsrv,loanto_oth_bank_fi,premium_receiv,reinsur_receiv,reinsur_res_receiv,pur_resale_fa,oth_cur_assets,total_cur_assets,fa_avail_for_sale,htm_invest,lt_eqt_invest,invest_real_estate,time_deposits,oth_assets,lt_rec,fix_assets,cip,const_materials,fixed_assets_disp,produc_bio_assets,oil_and_gas_assets,intan_assets,r_and_d,goodwill,lt_amor_exp,defer_tax_assets,decr_in_disbur,oth_nca,total_nca,cash_reser_cb,depos_in_oth_bfi,prec_metals,deriv_assets,rr_reins_une_prem,rr_reins_outstd_cla,rr_reins_lins_liab,rr_reins_lthins_liab,refund_depos,ph_pledge_loans,refund_cap_depos,indep_acct_assets,client_depos,client_prov,transac_seat_fee,invest_as_receiv,total_assets,lt_borr,st_borr,cb_borr,depos_ib_deposits,loan_oth_bank,trading_fl,notes_payable,acct_payable,adv_receipts,sold_for_repur_fa,comm_payable,payroll_payable,taxes_payable,int_payable,div_payable,oth_payable,acc_exp,deferred_inc,st_bonds_payable,payable_to_reinsurer,rsrv_insur_cont,acting_trading_sec,acting_uw_sec,non_cur_liab_due_1y,oth_cur_liab,total_cur_liab,bond_payable,lt_payable,specific_payables,estimated_liab,defer_tax_liab,defer_inc_non_cur_liab,oth_ncl,total_ncl,depos_oth_bfi,deriv_liab,depos,agency_bus_liab,oth_liab,prem_receiv_adva,depos_received,ph_invest,reser_une_prem,reser_outstd_claims,reser_lins_liab,reser_lthins_liab,indept_acc_liab,pledge_borr,indem_payable,policy_div_payable,total_liab,treasury_share,ordin_risk_reser,forex_differ,invest_loss_unconf,minority_int,total_hldr_eqy_exc_min_int,total_hldr_eqy_inc_min_int,total_liab_hldr_eqy,lt_payroll_payable,oth_comp_income,oth_eqt_tools,oth_eqt_tools_p_shr,lending_funds,acc_receivable,st_fin_payable,payables,hfs_assets,hfs_sales,cost_fin_assets,fair_value_fin_assets,contract_assets,contract_liab,accounts_receiv_bill,accounts_pay,oth_rcv_total,fix_assets_total,cip_total,oth_pay_total,long_pay_total,debt_invest,oth_debt_invest,update_flag
|
||||||
|
300750.SZ,20251021,20251021,20250930,1,1,3,4562854001.0,156365576000.0,151715049000.0,2272701000.0,38434000.0,324241586000.0,43260528000.0,418837000.0,66481235000.0,,13557167000.0,75434000.0,,80211558000.0,,98616000.0,,,,,,,10578550000.0,574228137000.0,,,59831799000.0,,,,193099000.0,128622702000.0,37365635000.0,,,,,15025388000.0,,890939000.0,4908611000.0,28542552000.0,,23937431000.0,321853995000.0,,,,36492000.0,,,,,,,,,,,,,896082131000.0,78441925000.0,15314463000.0,,,,,82967668000.0,131958477000.0,,,,21821691000.0,8851546000.0,,98000000.0,,,,,,,,,25005358000.0,4985363000.0,340940328000.0,8422115000.0,,,85843047000.0,2261098000.0,25224182000.0,4739536000.0,208129732000.0,,,,,,,,,,,,,,,,,549070060000.0,7097993000.0,,,,32764095000.0,314247976000.0,347012071000.0,896082131000.0,,6391356000.0,,,,,,,,,,,398446000.0,40678197000.0,66900072000.0,214926145000.0,2862290000.0,128622702000.0,37365635000.0,9357565000.0,1519965000.0,,,1
|
||||||
|
300750.SZ,20251021,20251021,20250930,1,1,3,4562854000.0,156365576000.0,151715049000.0,2272701000.0,38434000.0,324241586000.0,43260528000.0,418837000.0,66481235000.0,,13557167000.0,75434000.0,,80211558000.0,,98616000.0,,,,,,,10578550000.0,574228137000.0,,,59831799000.0,,,,193099000.0,128622702000.0,37365635000.0,,,,,15025388000.0,,890939000.0,4908611000.0,28542552000.0,,23937431000.0,321853995000.0,,,,36492000.0,,,,,,,,,,,,,896082131000.0,78441925000.0,15314463000.0,,,,,82967668000.0,131958477000.0,,,,21821691000.0,8851546000.0,,98000000.0,,,,,,,,,25005358000.0,4985363000.0,340940328000.0,8422115000.0,,,85843047000.0,2261098000.0,25224182000.0,4739536000.0,208129732000.0,,,,,,,,,,,,,,,,,549070060000.0,7097993000.0,,,,32764095000.0,314247976000.0,347012071000.0,896082131000.0,,6391356000.0,,,,,,,,,,,398446000.0,40678197000.0,66900072000.0,214926145000.0,2862290000.0,128622702000.0,37365635000.0,9357565000.0,1519965000.0,,,0
|
||||||
|
300750.SZ,20250731,20250731,20250630,1,1,2,4559310311.0,154314344000.0,137146982000.0,2272701000.0,32301000.0,350577746000.0,22447277000.0,314830000.0,63800375000.0,2223575000.0,9752799000.0,78013000.0,0.0,72272139000.0,,88019000.0,,,,,,,9410883000.0,567700337000.0,,,57636957000.0,,,,136825000.0,118696651000.0,35086190000.0,,,,,14684829000.0,,892909000.0,4301351000.0,26965253000.0,,25414858000.0,299481094000.0,,,,,,,,,,,,,,,,,867181431000.0,82416083000.0,19009443000.0,,,,,76968647000.0,133420147000.0,,,,20115797000.0,8643847000.0,1000.0,1107999000.0,10373854000.0,,,,,,,,26031681000.0,3506536000.0,336005110000.0,11970602000.0,1640002000.0,0.0,80137122000.0,1140246000.0,23683078000.0,4976542000.0,206786909000.0,,185496000.0,,,,,,,,,,,,,,,542792019000.0,4262590000.0,,,,29466392000.0,294923020000.0,324389412000.0,867181431000.0,,859971000.0,,,,,,,,,,,346467000.0,36641662000.0,64115205000.0,210388794000.0,2301588000.0,118696651000.0,35086190000.0,11481854000.0,1640002000.0,,,0
|
||||||
|
300750.SZ,20250415,20250415,20250331,1,1,1,4403394911.0,116857798000.0,140632845000.0,2194779000.0,48242000.0,321323654000.0,21421660000.0,168477000.0,60182430000.0,,7417713000.0,65098000.0,,65639666000.0,,78040000.0,,,,,,,7769187000.0,530298544000.0,,,56483298000.0,,,,176608000.0,112142665000.0,35221700000.0,,,,,14496931000.0,,893898000.0,4373265000.0,25303240000.0,,25136769000.0,289798725000.0,,,,,,,,,,,,,,,,,820097269000.0,84826153000.0,15782433000.0,,,,,79844165000.0,128662495000.0,,,,20320028000.0,9561191000.0,,,,,,,,,,,23013434000.0,2866697000.0,328208754000.0,11914211000.0,,,73507580000.0,1209610000.0,23847636000.0,5215845000.0,202749160000.0,,899889000.0,,,,,,,,,,,,,,,530957915000.0,2711392000.0,,,,27581708000.0,261557647000.0,289139355000.0,820097269000.0,,131980000.0,,,,,,,,,,,261473000.0,37088532000.0,60350907000.0,208506660000.0,2125282000.0,112142665000.0,35221700000.0,10169890000.0,1656337000.0,,,1
|
||||||
|
300750.SZ,20250315,20250315,20241231,1,1,4,4403466458.0,116756136000.0,126601541000.0,2194779000.0,35551000.0,303511993000.0,14282253000.0,130403000.0,64135510000.0,2141729000.0,5969685000.0,65217000.0,1000.0,59835533000.0,,72972000.0,,,,,,,6286465000.0,510142089000.0,,,54791525000.0,,,,151342000.0,112589053000.0,29754703000.0,,,,,14419804000.0,,894757000.0,4593980000.0,24118834000.0,,19275483000.0,276516035000.0,,,,,,,,,,,,,,,,,786658123000.0,81238456000.0,19696282000.0,,,,,67356323000.0,130977408000.0,,,,18653079000.0,9436442000.0,0.0,5400161000.0,10761762000.0,,,,,,,,22881417000.0,2058196000.0,317171534000.0,11922623000.0,1606480000.0,0.0,71926943000.0,1231236000.0,22041069000.0,5400795000.0,196030416000.0,,2116017000.0,,,,,,,,,,,,,,,513201949000.0,2712804000.0,,,,26526141000.0,246930033000.0,273456174000.0,786658123000.0,,-348637000.0,,,,,,,,,,,400626000.0,27834446000.0,64265913000.0,198333731000.0,2206947000.0,112589053000.0,29754703000.0,16161923000.0,1606480000.0,,,0
|
||||||
|
300750.SZ,20241019,20241019,20240930,1,1,3,4402375669.0,115137443600.0,117181223700.0,2192566200.0,33103400.0,264675795100.0,22002410300.0,292441400.0,66702709300.0,,6887337600.0,504261300.0,,55215275300.0,,200635500.0,,,,,,,6577524400.0,466764516700.0,,,54175331200.0,,,,128324700.0,110653484500.0,25200973600.0,,,,,14448153400.0,,883700900.0,4528856500.0,22121062800.0,,22428362600.0,271470487700.0,,,,,,,,,,,,,,,,,738235004400.0,85444436200.0,15239389800.0,,,,,63651540000.0,123140013700.0,,,,17368871900.0,8144202500.0,,22722000.0,,,,,,,,,16081511700.0,2926818100.0,281070698000.0,12104785500.0,,,65430208700.0,1180577400.0,21899574000.0,5492450500.0,193863663000.0,,2499377200.0,,,,,,,,,,,,,,,474934361000.0,2776131700.0,,,,26344412200.0,236956231200.0,263300643400.0,738235004400.0,,785650400.0,,,,,,,,,,,363142300.0,22651661600.0,66995150700.0,186791553700.0,3444015600.0,110653484500.0,25200973600.0,9367311600.0,1594834100.0,,,0
|
||||||
|
300750.SZ,20240727,20240727,20240630,1,1,2,4398807222.0,88643885800.0,104031988700.0,2192566200.0,21079900.0,255002207100.0,17300865500.0,228380300.0,58099476000.0,2869209400.0,7826466800.0,1246594600.0,,48050676200.0,,230227700.0,,,,,,,7030728600.0,442116937300.0,,,52121325000.0,,,,145385900.0,113142792200.0,27257067100.0,,,,,15718068700.0,,890937400.0,5000170700.0,20892871600.0,,21694056900.0,273134951500.0,,,,,,,,,,,,,,,,,715251888900.0,88819915800.0,18048659700.0,,,,,66052159100.0,116979636700.0,,,,16596608800.0,6093742000.0,,24643100.0,10590190600.0,,,,,,,,7123836300.0,2496093000.0,270831777000.0,19414874600.0,1651515800.0,,59165819700.0,1090238200.0,21242202400.0,32547613200.0,224580485000.0,,4363213700.0,,,,,,,,,,,,,,,495412262100.0,2511358500.0,,,,23608483400.0,196231143400.0,219839626800.0,715251888900.0,,-545826100.0,,,,,,,,,,,284662400.0,22462994100.0,58327856300.0,183031795800.0,4115804000.0,113142792200.0,27257067100.0,10614833600.0,1651515800.0,,,0
|
||||||
|
300750.SZ,20240416,20240416,20240331,1,1,1,4399041236.0,88213595700.0,113775363800.0,2192566200.0,12724600.0,288572136900.0,166802200.0,817044100.0,51186897200.0,,7886550900.0,426713900.0,,43979311300.0,,251362300.0,,,,,,,7332498400.0,459955986900.0,,,50586279900.0,,,,191694400.0,114498533800.0,26216109200.0,,,,,15581536000.0,,887894800.0,4958130700.0,19434638000.0,,22482818500.0,271330494700.0,,,,,,,,,,,,,,,,,731286481500.0,88444675700.0,16535118900.0,,,,,72631731700.0,112507178900.0,,,,16630284100.0,12277242700.0,,6975500.0,,,,,,,,,8263102400.0,2669102500.0,278962389700.0,19236444600.0,,,57296406400.0,1241289000.0,21767081900.0,31866021200.0,221855700200.0,,4754753700.0,,,,,,,,,,,,,,,500818089800.0,1966347800.0,,,,22738517700.0,207729874000.0,230468391700.0,731286481500.0,,1102930300.0,,,,,,,,,,,261354300.0,20599513300.0,52003941300.0,185138910600.0,3240165600.0,114498533800.0,26216109200.0,12094361500.0,1670358000.0,,,1
|
||||||
|
300750.SZ,20240416,20240416,20240331,1,1,1,4399041200.0,88213595700.0,113775363800.0,2192566200.0,12724600.0,288572136900.0,166802200.0,817044100.0,51186897200.0,,7886550900.0,426713900.0,,43979311300.0,,251362300.0,,,,,,,7332498400.0,459955986900.0,,,50586279900.0,,,,191694400.0,114498533800.0,26216109200.0,,,,,15581536000.0,,887894800.0,4958130700.0,19434638000.0,,22482818500.0,271330494700.0,,,,,,,,,,,,,,,,,731286481500.0,88444675700.0,16535118900.0,,,,,72631731700.0,112507178900.0,,,,16630284100.0,12277242700.0,,6975500.0,,,,,,,,,8263102400.0,2669102500.0,278962389700.0,19236444600.0,,,57296406400.0,1241289000.0,21767081900.0,31866021200.0,221855700200.0,,4754753700.0,,,,,,,,,,,,,,,500818089800.0,1966347800.0,,,,22738517700.0,207729874000.0,230468391700.0,731286481500.0,,1102930300.0,,,,,,,,,,,261354300.0,20599513300.0,52003941300.0,185138910600.0,3240165600.0,114498533800.0,26216109200.0,12094361500.0,1670358000.0,,,0
|
||||||
|
300750.SZ,20240316,20240316,20231231,1,1,4,4399041236.0,87907212600.0,103244625900.0,2192566200.0,9355000.0,264306514700.0,7767200.0,1751724600.0,64020533400.0,3012579200.0,6962872600.0,425984800.0,0.0,45433890100.0,,56827500.0,,,,,,,8286024600.0,449788001700.0,,,50027694100.0,,,,9839600.0,115387960100.0,25011907100.0,,,,,15675876200.0,,707881700.0,4695780000.0,17395585300.0,,21145073300.0,267380039400.0,,,,,,,,,,,,,,,,,717168041100.0,83448981700.0,15181012100.0,,,,,77514940700.0,117038773600.0,,,,14846251200.0,11741826300.0,0.0,29915700.0,13624086000.0,,,,,,,,7008874200.0,2091627800.0,287001069100.0,19237014400.0,1520256200.0,0.0,51638913500.0,1364905800.0,21448987400.0,31341466200.0,210283821400.0,,3941409600.0,,,,,,,,,,,,,,,497284890500.0,1572971600.0,,,,22175098200.0,197708052400.0,219883150600.0,717168041100.0,,1528223100.0,,,,,,,,,,,233964100.0,23982351900.0,65772258000.0,194553714300.0,3438564000.0,115387960100.0,25011907100.0,13654001700.0,1520256200.0,,,1
|
||||||
|
300750.SZ,20240316,20240316,20231231,1,1,4,4399041236.0,87907212600.0,103244625900.0,2192566200.0,9355000.0,264306514700.0,7767200.0,1751724600.0,64020533400.0,3012579200.0,6962872600.0,425984800.0,0.0,45433890100.0,,56827500.0,,,,,,,8286024600.0,449788001700.0,,,50027694100.0,,,,9839600.0,115387960100.0,25011907100.0,,,,,15675876200.0,,707881700.0,4695780000.0,17395585300.0,,21145073300.0,267380039400.0,,,,,,,,,,,,,,,,,717168041100.0,83448981700.0,15181012100.0,,,,,77514940700.0,117038773600.0,,,,14846251200.0,11741826300.0,0.0,29915700.0,13624086000.0,,,,,,,,7008874200.0,2091627800.0,287001069100.0,19237014400.0,1520256200.0,0.0,51638913500.0,1364905800.0,21448987400.0,31341466200.0,210283821400.0,,3941409600.0,,,,,,,,,,,,,,,497284890500.0,1572971600.0,,,,22175098200.0,197708052400.0,219883150600.0,717168041100.0,,1528223100.0,,,,,,,,,,,233964100.0,23982351900.0,65772258000.0,194553714300.0,3438564000.0,115387960100.0,25011907100.0,13654001700.0,1520256200.0,,,0
|
||||||
|
300750.SZ,20231020,20231020,20230930,1,1,3,4397223887.0,80571445900.0,91164745400.0,1214302900.0,6874800.0,233760087400.0,7680800.0,1534828000.0,68726798500.0,,8921784800.0,1212700.0,,48884011700.0,,63996200.0,,,,,,,7217387400.0,411386685400.0,,,45348743500.0,,,,15454100.0,104274341100.0,30650096400.0,,,,,16556905600.0,,715271700.0,4499728200.0,14571656000.0,,25355284700.0,260445521900.0,,,,,,,,,,,,,,,,,671832207300.0,85435191100.0,11348919000.0,,,,,79081439500.0,110924701800.0,,,,14119318800.0,6267372700.0,,26099000.0,,,,,,,,,4637261500.0,1725438200.0,276198050800.0,19676311700.0,,,31814013600.0,1381740300.0,20047725100.0,33132589700.0,193577250000.0,,5727986000.0,,,,,,,,,,,,,,,469775300700.0,249411800.0,,,,21942486100.0,180114420500.0,202056906600.0,671832207300.0,,3009239400.0,,,,,,,,,,,152275500.0,26556925700.0,70261626500.0,190006141300.0,3793848000.0,104274341100.0,30650096400.0,15808687600.0,1539941700.0,,,1
|
||||||
|
300750.SZ,20230726,20230726,20230630,1,1,2,4396292935.0,79909614900.0,80942539200.0,1214302900.0,3891600.0,219582042500.0,371279300.0,4221345500.0,61516723600.0,4505322900.0,12745835100.0,469548100.0,0.0,48910488200.0,,66949700.0,,,,,,,9120136200.0,383061012800.0,,,42820900000.0,,,,28657300.0,102694335500.0,32670444000.0,,,,,15607433200.0,,715160700.0,4336921600.0,12593262700.0,,25735275400.0,257937771900.0,,,,,,,,,,,,,,,,,640998784700.0,74910430300.0,16656553000.0,,,,,86701317000.0,100932770200.0,,,,12255185700.0,5889655600.0,0.0,36599000.0,15647024600.0,,,,,,,,4103059100.0,1785485900.0,270904064900.0,19793296700.0,1200000000.0,0.0,26355789200.0,1464682000.0,20534650700.0,33613635200.0,178411544000.0,,4762003000.0,,,,,,,,,,,,,,,449315608900.0,249411800.0,,,,21464036400.0,170219139400.0,191683175800.0,640998784700.0,,4001909600.0,,,,,,,,,,,344170000.0,22134411900.0,65738069100.0,187634087200.0,4974871000.0,102694335500.0,32670444000.0,15683623600.0,1200000000.0,,,0
|
||||||
|
300750.SZ,20230726,20230726,20230630,1,1,2,4396292935.0,79909614900.0,80942539200.0,1214302900.0,3891600.0,219582042500.0,371279300.0,4221345500.0,61516723600.0,4505322900.0,12745835100.0,469548100.0,0.0,48910488200.0,,66949700.0,,,,,,,9120136200.0,383061012800.0,,,42820900000.0,,,,28657300.0,102694335500.0,32670444000.0,,,,,15607433200.0,,715160700.0,4336921600.0,12593262700.0,,25735275400.0,257937771900.0,,,,,,,,,,,,,,,,,640998784700.0,74910430300.0,16656553000.0,,,,,86701317000.0,100932770200.0,,,,12255185700.0,5889655600.0,0.0,36599000.0,15647024600.0,,,,,,,,4103059100.0,1785485900.0,270904064900.0,19793296700.0,1200000000.0,0.0,26355789200.0,1464682000.0,20534650700.0,33613635200.0,178411544000.0,,4762003000.0,,,,,,,,,,,,,,,449315608900.0,249411800.0,,,,21464036400.0,170219139400.0,191683175800.0,640998784700.0,,4001909600.0,,,,,,,,,,,344170000.0,22134411900.0,65738069100.0,187634087200.0,4974871000.0,102694335500.0,32670444000.0,15683623600.0,1200000000.0,,,1
|
||||||
|
300750.SZ,20230421,20230421,20230331,1,1,1,2442514524.0,108494320100.0,70047213300.0,1214302900.0,,210447048500.0,1496062900.0,4845153200.0,48606965200.0,,14877912400.0,,,64037677300.0,,407644900.0,,,,,,,12242046600.0,389446165900.0,,,44003247000.0,,,,42548700.0,96611233400.0,32354331800.0,,,,,17562949500.0,,715160700.0,3801140400.0,10370303200.0,,26375928900.0,250757411600.0,,,,462334400.0,,,,,,,,,,,,,640203577500.0,68376274800.0,14876987000.0,,,,,114125383600.0,92008949000.0,,,,10213306300.0,5239122700.0,,457812.2,,,,,,,,,3980597800.0,1769661400.0,290026712800.0,18969611400.0,,,21992362200.0,3206405500.0,20463130600.0,6685434300.0,141456422200.0,,,,,,,,,,,,,,,,,431483135000.0,249411800.0,,,,20813483100.0,187906959400.0,208720442500.0,640203577500.0,,5958150000.0,,,,,,,,,,,572681900.0,25872569200.0,53452118400.0,206134332600.0,4578122900.0,96611233400.0,32354331800.0,21940135700.0,1200000000.0,,,1
|
||||||
|
300750.SZ,20230421,20230421,20230331,1,1,1,2442514524.0,108494320100.0,70047213300.0,1214302900.0,,210447048500.0,1496062900.0,4845153200.0,48606965200.0,,14877912400.0,,,64037677300.0,,407644900.0,,,,,,,12242046600.0,389446165900.0,,,44003247000.0,,,,42548700.0,96611233400.0,32354331800.0,,,,,17562949500.0,,715160700.0,3801140400.0,10370303200.0,,26375928900.0,250757411600.0,,,,462334400.0,,,,,,,,,,,,,640203577500.0,68376274800.0,14876987000.0,,,,,114125383600.0,92008949000.0,,,,10213306300.0,5239122700.0,,457812.2,,,,,,,,,3980597800.0,1769661400.0,290026712800.0,18969611400.0,,,21992362200.0,3206405500.0,20463130600.0,6685434300.0,141456422200.0,,,,,,,,,,,,,,,,,431483135000.0,249411800.0,,,,20813483100.0,187906959400.0,208720442500.0,640203577500.0,,5958150000.0,,,,,,,,,,,572681900.0,25872569200.0,53452118400.0,206134332600.0,4578122900.0,96611233400.0,32354331800.0,21940135700.0,1200000000.0,,,0
|
||||||
|
300750.SZ,20230310,20230310,20221231,1,1,4,2442514524.0,88904372100.0,63242753100.0,1214302900.0,,191043409500.0,1981328100.0,3526083700.0,57966516900.0,8678379900.0,15843284400.0,,,76668898800.0,,403711500.0,,,,,,,11907028600.0,387734857000.0,,,17595207400.0,,,,44316100.0,89070834700.0,35397650600.0,,,,,9539963200.0,,704065200.0,2294776000.0,9483660400.0,,25101316500.0,213217494900.0,,,,575638000.0,,,,,,,,,,,,,600952351900.0,59099358400.0,14415402500.0,,,,,126229468200.0,94534976000.0,,,,9476018400.0,4792441200.0,,8319600.0,15005751100.0,,,,,,,,7232224400.0,1622032600.0,295761419300.0,19177888600.0,1050000000.0,0.0,19697374600.0,1807813000.0,19966701700.0,6910284100.0,128281770600.0,,,,,,,,,,,,,,,,,424043189900.0,253991000.0,,,,12427910400.0,164481251600.0,176909162000.0,600952351900.0,,8931300000.0,,,,,,,,,,,174863000.0,22444785300.0,61492600600.0,220764444200.0,8678379900.0,89070834700.0,35397650600.0,15014070600.0,1050000000.0,,,0
|
||||||
|
300750.SZ,20230310,20230310,20221231,1,1,4,2442514524.0,88904372100.0,63242753100.0,1214302900.0,,191043409500.0,1981328100.0,3526083700.0,57966516900.0,8678379900.0,15843284400.0,,,76668898800.0,,403711500.0,,,,,,,11907028600.0,387734857000.0,,,17595207400.0,,,,44316100.0,89070834700.0,35397650600.0,,,,,9539963200.0,,704065200.0,2294776000.0,9483660400.0,,25101316500.0,213217494900.0,,,,575638000.0,,,,,,,,,,,,,600952351900.0,59099358400.0,14415402500.0,,,,,126229468200.0,94534976000.0,,,,9476018400.0,4792441200.0,,8319600.0,15005751100.0,,,,,,,,7232224400.0,1622032600.0,295761419300.0,19177888600.0,1050000000.0,0.0,19697374600.0,1807813000.0,19966701700.0,6910284100.0,128281770600.0,,,,,,,,,,,,,,,,,424043189900.0,253991000.0,,,,12427910400.0,164481251600.0,176909162000.0,600952351900.0,,8931300000.0,,,,,,,,,,,174863000.0,22444785300.0,61492600600.0,220764444200.0,8678379900.0,89070834700.0,35397650600.0,15014070600.0,1050000000.0,,,1
|
||||||
|
300750.SZ,20221022,20221022,20220930,1,1,3,2440471000.0,88382735300.0,50106491500.0,1213281100.0,,158589590400.0,1872628100.0,2060935500.0,54126365500.0,,12283273500.0,,,79025040400.0,,117605400.0,,,,,,,8955878900.0,344885693500.0,,,16148787800.0,,,,206596500.0,74307767700.0,38870681700.0,,,,,7989903700.0,,1002941600.0,1809975400.0,7347010300.0,,29358395300.0,197055445300.0,,,,,,,,,,,,,,,,,541941138800.0,47507184100.0,14104703300.0,,,,,119432231200.0,90588434600.0,,,,7434024200.0,2611381800.0,,11281100.0,,,,,,,,,8295346800.0,1398400500.0,278220526000.0,14150246000.0,,,13670695200.0,1714036000.0,16308196300.0,7419759400.0,102435170100.0,,20427700.0,,,,,,,,,,,,,,,380655696200.0,253991000.0,,,,11571083300.0,149714359300.0,161285442600.0,541941138800.0,,7825371500.0,,,,,,,,,,,37896000.0,20919604000.0,56187301000.0,210020665800.0,4137737600.0,74307767700.0,38870681700.0,13415971900.0,1310000000.0,,,0
|
||||||
|
300750.SZ,20221022,20221022,20220930,1,1,3,2440471007.0,88382735300.0,50106491500.0,1213281100.0,,158589590400.0,1872628100.0,2060935500.0,54126365500.0,,12283273500.0,,,79025040400.0,,117605400.0,,,,,,,8955878900.0,344885693500.0,,,16148787800.0,,,,206596500.0,74307767700.0,38870681700.0,,,,,7989903700.0,,1002941600.0,1809975400.0,7347010300.0,,29358395300.0,197055445300.0,,,,,,,,,,,,,,,,,541941138800.0,47507184100.0,14104703300.0,,,,,119432231200.0,90588434600.0,,,,7434024200.0,2611381800.0,,11281100.0,,,,,,,,,8295346800.0,1398400500.0,278220526000.0,14150246000.0,,,13670695200.0,1714036000.0,16308196300.0,7419759400.0,102435170100.0,,20427700.0,,,,,,,,,,,,,,,380655696200.0,253991000.0,,,,11571083300.0,149714359300.0,161285442600.0,541941138800.0,,7825371500.0,,,,,,,,,,,37896000.0,20919604000.0,56187301000.0,210020665800.0,4137737600.0,74307767700.0,38870681700.0,13415971900.0,1310000000.0,,,1
|
||||||
|
300750.SZ,20220824,20220824,20220630,1,1,2,2330851200.0,88237358700.0,42177114000.0,1213281100.0,,154264447500.0,1243421300.0,2362856400.0,37454291700.0,3940219400.0,12117397900.0,,,75505395700.0,,117855500.0,,,,,,,7659618000.0,303347957300.0,,,14187663100.0,,,,220568200.0,62198685500.0,37463214300.0,,,,,6815918200.0,,1002941600.0,1666427600.0,6175703600.0,,29115145600.0,177885713700.0,,,,,,,,,,,,,,,,,481233671000.0,38872517900.0,14937309400.0,,,,,107701837000.0,72521038800.0,,,,5041659000.0,1703180400.0,100.0,6590800.0,11498403900.0,,,,,,,,8731818900.0,1320644900.0,243949152300.0,13434684300.0,1160000000.0,0.0,10989376900.0,1459589400.0,14374329700.0,6911647100.0,87594184300.0,,968715900.0,,,,,,,,,,,,,,,331543336500.0,438727300.0,,,,10019159000.0,139671175400.0,149690334500.0,481233671000.0,,6041677900.0,,,,,,,,,,,20129300.0,19517953200.0,39817148100.0,180222875800.0,3940219400.0,62198685500.0,37463214300.0,11504994800.0,1160000000.0,,,0
|
||||||
|
300750.SZ,20220430,20220430,20220331,1,1,1,2330851200.0,43295032600.0,35580140300.0,1158471200.0,,100289630900.0,1935152000.0,1786860400.0,24877828400.0,,10100118500.0,,,61578271700.0,,227220900.0,,,,,,,8924856400.0,222276559600.0,,,12380408000.0,,,,511561200.0,56266248400.0,28893882000.0,,,,,5357768600.0,,653619200.0,1708148800.0,6201003000.0,,27208014400.0,153979092300.0,,,,,,,,,,,,,,,,,376255651900.0,33235483200.0,15403153700.0,,,,,83593860700.0,64325631500.0,,,,5529734300.0,1981850300.0,,6590800.0,,,,,,,,,7197313100.0,1449820600.0,204121679200.0,12638046700.0,,,10894420700.0,1009284700.0,12919522900.0,6466877500.0,78538624300.0,,1787115400.0,,,,,,,,,,,,,,,282660303500.0,443534900.0,,,,8384011300.0,85211337100.0,93595348500.0,376255651900.0,,3290376800.0,,,,,,,,,,,23696100.0,15050335800.0,26664688800.0,147919492200.0,4267155900.0,56266248400.0,28893882000.0,7802863800.0,1010000000.0,,,1
|
||||||
|
300750.SZ,20220422,20220422,20211231,1,1,4,2330851200.0,43163696500.0,34095467500.0,1158471200.0,,89071889700.0,1363972900.0,1463828000.0,23753548200.0,3114909600.0,6466439300.0,,,40199691900.0,,201655900.0,,,,,,,5292231900.0,177734938700.0,,,10949033600.0,,,,619282400.0,41275333300.0,30998159500.0,,,,,4479606400.0,,527850700.0,1264339100.0,5542554400.0,,20575419100.0,129931922300.0,,,,243105100.0,,,,,,,,,,,,,307666860900.0,22119078800.0,12123056900.0,,,,,58405751300.0,48784286300.0,,,,5122787800.0,2403797500.0,0.0,6590800.0,6169623600.0,,,,,,,,3548532800.0,1242490300.0,149344832600.0,15855052000.0,1010000000.0,0.0,9953762700.0,1038576900.0,12099359100.0,3228720400.0,65699853800.0,,,,,,,,,,,,,,,,,215044686400.0,443534900.0,,,,8108903200.0,84513271300.0,92622174500.0,307666860900.0,,4208319800.0,,,,,,,,,,,77285500.0,11537915300.0,25217376200.0,107190037600.0,3114909600.0,41275333300.0,30998159500.0,6176214400.0,1010000000.0,,,0
|
||||||
|
300750.SZ,20211028,20211028,20210930,1,1,3,2329007802.0,41512967187.03,25859863285.73,1157782633.55,,80735121590.38,1754005408.73,5863666031.21,14340032235.16,,3282854834.31,,,34961665056.94,,176775294.63,,,,,,,3689743310.86,149294839099.23,,,10031478677.96,,,,521066919.71,31850222746.77,21495217684.82,,,,,3530624985.15,,349692478.44,755110152.8,4311764310.21,,21438993970.78,99856957130.14,,,,1679344985.15,,,,,,,,,,,,,249151796229.37,17159358715.27,8648141083.6,,,,,45594390099.07,32631866194.43,,,,3538683641.3,2171709495.66,,10638731.54,,,,,,,,,1572686982.26,1152044044.4,114496862624.12,17528377295.31,,,10171233831.28,360049010.39,7944056738.7,,54472495682.41,,,,,,,,,,,,,,,,,168969358306.53,443534934.1,,,,7487789886.43,72694648036.41,80182437922.84,249151796229.37,,2278562062.2,,,,,,,,,,,77075924.92,13196959051.03,20203698266.37,78226256293.5,2734554426.94,31850222746.77,21495217684.82,5990382032.37,1171669290.75,,,0
|
||||||
|
300750.SZ,20211028,20211028,20210930,1,1,3,2329007802.0,41512967187.03,25859863285.73,1157782633.55,,80735121590.38,1754005408.73,5863666031.21,14340032235.16,,3282854834.31,,,34961665056.94,,176775294.63,,,,,,,3689743310.86,149294839099.23,,,10031478677.96,,,,521066919.71,31850222746.77,21495217684.82,,,,,3530624985.15,,349692478.44,755110152.8,4311764310.21,,21438993970.78,99856957130.14,,,,1679344985.15,,,,,,,,,,,,,249151796229.37,17159358715.27,8648141083.6,,,,,45594390099.07,32631866194.43,,,,3538683641.3,2171709495.66,,10638731.54,,,,,,,,,1572686982.26,1152044044.4,114496862624.12,17528377295.31,,,10171233831.28,360049010.39,7944056738.7,,54472495682.41,,,,,,,,,,,,,,,,,168969358306.53,443534934.1,,,,7487789886.43,72694648036.41,80182437922.84,249151796229.37,,2278562062.2,,,,,,,,,,,77075924.92,13196959051.03,20203698266.37,78226256293.5,2734554426.94,31850222746.77,21495217684.82,5990382032.37,1171669290.75,,,1
|
||||||
|
300750.SZ,20210826,20210826,20210630,1,1,2,2329007802.0,41446874263.9,22565878445.75,1157782633.55,,74686697280.12,2214851732.73,5485309961.18,13981824366.21,4058611364.67,3848415008.73,,,24165705805.13,,143447332.7,,,,,,,3150312575.08,132996356932.87,,,9240532691.61,,,,463424807.46,25132132439.37,15450275778.57,0.0,0.0,,,3395293147.7,,329506902.78,478944306.35,3890656231.9,,12646811292.58,74787140887.04,,,,1184105581.4,,,,,,,,,,,,,207783497819.91,8701599250.29,7936400830.37,,,,,33850033847.32,25670496056.42,,,,3023749746.8,1454565477.15,0.0,565000646.18,6879740238.9,,,,,,,,1493766156.37,1057174566.45,92689792739.55,14273326292.78,1150000000.0,0.0,8709869807.16,235972124.69,6400308476.35,,39605688511.2,,,,,,,,,,,,,,,,,132295481250.75,693512300.6,,,,6729713769.57,68758302799.59,75488016569.16,207783497819.91,,1952271954.99,,,,,,,,,,,77075924.92,10758865173.59,19467134327.39,59520529903.74,4058611364.67,25132132439.37,15450275778.57,7444740885.08,1150000000.0,,,0
|
||||||
|
300750.SZ,20210430,20210430,20210331,1,1,1,2329474028.0,41380785863.11,20595335940.37,1157782633.55,,71677310067.0,1774375580.91,9447306209.1,12260857992.64,,1983836972.02,,,17194779915.91,,46920942.02,,,,,,,1777499958.73,120622316843.24,,,5574560949.21,,,,497767224.94,20760089316.68,5602125260.39,,,,,2527779959.26,,147951887.23,420276294.97,3497853311.61,,11262011782.97,52706588084.12,,,,727619072.06,,,,,,,,,,,,,173328904927.36,7046382303.41,6213829887.31,,,,,23346295000.95,17844739699.91,,,,3098793999.64,1336465854.43,,6172824.12,,,,,,,,,1473265562.64,904377178.92,66877122610.85,14339029833.92,,,7708599437.28,54350808.15,4674614610.02,,35110766315.06,,,,,,,,,,,,,,,,,101987888925.91,710020552.82,,,,5696780374.85,65644235626.6,71341016001.45,173328904927.36,,890877714.39,,,,,,,,,,,75269024.76,8125493258.78,21708164201.74,41191034700.86,3656541108.09,20760089316.68,5602125260.39,4533862168.27,1150000000.0,,,0
|
||||||
|
300750.SZ,20210430,20210430,20210331,1,1,1,2329474028.0,41380785863.11,20595335940.37,1157782633.55,,71677310067.0,1774375580.91,9447306209.1,12260857992.64,,1983836972.02,,,17194779915.91,,46920942.02,,,,,,,1777499958.73,120622316843.24,,,5574560949.21,,,,497767224.94,20760089316.68,5602125260.39,,,,,2527779959.26,,147951887.23,420276294.97,3497853311.61,,11262011782.97,52706588084.12,,,,727619072.06,,,,,,,,,,,,,173328904927.36,7046382303.41,6213829887.31,,,,,23346295000.95,17844739699.91,,,,3098793999.64,1336465854.43,,6172824.12,,,,,,,,,1473265562.64,904377178.92,66877122610.85,14339029833.92,,,7708599437.28,54350808.15,4674614610.02,,35110766315.06,,,,,,,,,,,,,,,,,101987888925.91,710020552.82,,,,5696780374.85,65644235626.6,71341016001.45,173328904927.36,,890877714.39,,,,,,,,,,,75269024.76,8125493258.78,21708164201.74,41191034700.86,3656541108.09,20760089316.68,5602125260.39,4533862168.27,1150000000.0,,,1
|
||||||
|
300750.SZ,20210428,20210428,20201231,1,1,4,2329474028.0,41662151603.08,18640918703.75,1157782633.55,,68424116053.67,3288071512.61,9877156349.23,11293523722.88,3303956813.15,997118630.25,,,13224640950.39,,81548616.67,,,,,,,969240539.21,112864989321.68,,,4813072905.14,,,,372156591.66,19621648443.02,5750351820.37,,,,,2517935725.46,,147951887.23,363551716.95,3167109948.33,,5002631587.8,43753437618.91,,,,1330347108.86,,,,,,,,,,,,,156618426940.59,6068163254.2,6335080182.17,,,,,15636589526.9,15634844308.52,,,,2657564914.42,1321059090.43,0.0,6172824.12,4401603465.43,,,,,,,,1349038696.49,760008999.58,54977189803.22,14382255950.87,1193938630.3,0.0,6797704877.32,85518810.08,3918939197.71,,32446520720.48,,,,,,,,,,,,,,,,,87423710523.7,710020552.82,,,,4987417050.31,64207299366.58,69194716416.89,156618426940.59,,1126992951.02,,,,,,,,,,,75269024.76,6875227795.16,21170680072.11,31271433835.42,3303956813.15,19621648443.02,5750351820.37,4407776289.55,1193938630.3,,,1
|
||||||
|
300750.SZ,20210428,20210428,20201231,1,1,4,2329474028.0,41662151603.08,18640918703.75,1157782633.55,,68424116053.67,3288071512.61,9877156349.23,11293523722.88,3303956813.15,997118630.25,,,13224640950.39,,81548616.67,,,,,,,969240539.21,112864989321.68,,,4813072905.14,,,,372156591.66,19621648443.02,5750351820.37,,,,,2517935725.46,,147951887.23,363551716.95,3167109948.33,,5002631587.8,43753437618.91,,,,1330347108.86,,,,,,,,,,,,,156618426940.59,6068163254.2,6335080182.17,,,,,15636589526.9,15634844308.52,,,,2657564914.42,1321059090.43,0.0,6172824.12,4401603465.43,,,,,,,,1349038696.49,760008999.58,54977189803.22,14382255950.87,1193938630.3,0.0,6797704877.32,85518810.08,3918939197.71,,32446520720.48,,,,,,,,,,,,,,,,,87423710523.7,710020552.82,,,,4987417050.31,64207299366.58,69194716416.89,156618426940.59,,1126992951.02,,,,,,,,,,,75269024.76,6875227795.16,21170680072.11,31271433835.42,3303956813.15,19621648443.02,5750351820.37,4407776289.55,1193938630.3,,,0
|
||||||
|
300750.SZ,20201028,20201028,20200930,1,1,3,2329474028.0,41267668240.95,16477692586.43,1097245469.55,,66437209386.46,1967213405.45,6851381952.07,8988062513.02,,655033779.17,,,9346975874.54,,,,,,,,,1416333485.15,101740472119.2,,,2311733016.79,,,,,17198092089.37,5656172336.78,,,,,2470422536.68,,147951887.23,342491525.84,2535329791.94,,3877580433.51,36028386135.32,,,,1155305887.36,,,,,,,,,,,,,137768858254.52,5419429150.29,4361165244.81,,,,,11510910950.46,11093220985.42,,,,1653018543.8,933795455.63,,14380319.72,,,,,,,,,1356368401.84,581206979.29,40542341632.86,14761040736.73,,,6048903332.43,121078988.67,3564969995.83,,30644786719.55,,,,,,,,,,,,,,,,,71187128352.41,709694163.22,,,,5225460213.39,61356269688.72,66581729902.11,137768858254.52,,893883527.01,,,,,,,,,,,,5417110399.38,15839444465.09,22604131935.88,4922955835.98,17198092089.37,5656172336.78,3635544672.23,729364515.6,,,0
|
||||||
|
300750.SZ,20200827,20200827,20200630,1,1,2,2207113780.0,21714813493.64,15032163142.9,1097245469.55,,37571034186.03,874307109.33,5391856244.26,7771501102.25,4229576026.07,551171111.25,,,9120702363.9,,,,,,,,,1319042475.94,68130152338.81,,,1527611204.58,,,,,16402618133.36,3430354308.42,0.0,0.0,,,2423107313.8,,147951887.23,359696314.61,2350468845.86,,3992774774.45,31906951088.14,,,,1300961719.78,,,,,,,,,,,,,100037103426.95,6723868093.75,2876186024.14,,,,,12821286467.94,7438880488.43,,,,1386927107.57,662849296.73,0.0,17042223.28,4208329087.55,,,,,,,,1154945481.02,458181632.25,35466989734.91,4582049677.92,713971319.27,0.0,6101214728.99,77630155.57,1619553975.47,,19818287950.97,,,,,,,,,,,,,,,,,55285277685.88,1029206052.4,,,,5078667240.51,39673158500.56,44751825741.07,100037103426.95,,651028666.87,,,,,,,,,,,,4442361926.0,13163357346.51,20260166956.37,4229576026.07,16402618133.36,3430354308.42,4225371310.83,713971319.27,,,0
|
||||||
|
300750.SZ,20200827,20200827,20200630,1,1,2,2207113780.0,21714813493.64,15032163142.9,1097245469.55,,37571034186.03,874307109.33,5391856244.26,7771501102.25,4229576026.07,551171111.25,,,9120702363.9,,,,,,,,,1319042475.94,68130152338.81,,,1527611204.58,,,,,16402618133.36,3430354308.42,0.0,0.0,,,2423107313.8,,147951887.23,359696314.61,2350468845.86,,3992774774.45,31906951088.14,,,,1300961719.78,,,,,,,,,,,,,100037103426.95,6723868093.75,2876186024.14,,,,,12821286467.94,7438880488.43,,,,1386927107.57,662849296.73,0.0,17042223.28,4208329087.55,,,,,,,,1154945481.02,458181632.25,35466989734.91,4582049677.92,713971319.27,0.0,6101214728.99,77630155.57,1619553975.47,,19818287950.97,,,,,,,,,,,,,,,,,55285277685.88,1029206052.4,,,,5078667240.51,39673158500.56,44751825741.07,100037103426.95,,651028666.87,,,,,,,,,,,,4442361926.0,13163357346.51,20260166956.37,4229576026.07,16402618133.36,3430354308.42,4225371310.83,713971319.27,,,1
|
||||||
|
300750.SZ,20200428,20200428,20200331,1,1,1,2208399700.0,21690483383.4,14322773169.6,1097245469.55,,37110260152.45,1368845782.86,6958116041.84,7844668160.97,,766901403.45,,,10193303476.8,,,,,,,,,1445792765.06,71654624828.61,,,1520944749.97,,,,,16936823089.92,1756814917.99,,,,,2331373470.76,,147951887.23,375597490.81,2277794465.42,,3179996567.8,29781840068.04,,,,1087997373.15,,,,,,,,,,,,,101436464896.65,5717526586.79,2489349924.44,,,,,16185682771.99,7573283671.28,,,,1615223768.07,722158365.68,,2418687.95,,,,,,,,,1159645442.09,,39832505062.62,4539302834.76,,,5756547909.56,53697173.7,1595065700.99,,18359783488.16,,,,,,,,,,,,,,,,,58192288550.78,1074894790.0,,,,4469433925.84,38774742420.03,43244176345.87,101436464896.65,,530735487.48,,,,,,,,,,,,4948467629.29,14802784202.81,23758966443.27,4878739672.03,16936823089.92,1756814917.99,5138693489.78,697643282.36,,,1
|
||||||
|
300750.SZ,20200425,20200425,20191231,1,1,4,2208399700.0,21630448577.59,13652965292.41,1097245469.55,,32269635327.07,1389585592.37,9649949692.85,8338535645.35,4568565748.8,538163094.42,,,11480549879.88,,,,,,,,,1647816662.94,71694937173.28,,,1540452827.51,,,,,17417348593.44,1996524778.01,,,,,2302317207.14,,147951887.23,394096018.07,2079210533.02,,2248533970.82,29657039538.04,,,,1812135529.6,,,,,,,,,,,,,101351976711.32,4980563181.26,2125646681.77,,,,286915936.0,17420197790.4,10692137500.67,6161443242.83,,,1582275521.53,962984568.04,,2418687.95,5295890304.78,,,,,,,,1077468495.09,,45607378729.06,1508339195.7,873618580.61,,5289773262.4,91191949.71,813236654.86,,13556722824.54,,,,,,,,,,,,,,,,,59164101553.6,1074894790.0,,,,4052891263.24,38134983894.48,42187875157.72,101351976711.32,,620819644.93,,,,,,,,,,,,,17988485338.2,28112335291.07,4568565748.8,17417348593.44,1996524778.01,5298308992.73,873618580.61,,,0
|
||||||
|
300750.SZ,20200425,20200425,20191231,1,1,4,2208399700.0,21630448577.59,13652965292.41,1097245469.55,,32269635327.07,1389585592.37,9649949692.85,8338535645.35,4568565748.8,538163094.42,,,11480549879.88,,,,,,,,,1647816662.94,71694937173.28,,,1540452827.51,,,,,17417348593.44,1996524778.01,,,,,2302317207.14,,147951887.23,394096018.07,2079210533.02,,2248533970.82,29657039538.04,,,,1812135529.6,,,,,,,,,,,,,101351976711.32,4980563181.26,2125646681.77,,,,286915936.0,17420197790.4,10692137500.67,6161443242.83,,,1582275521.53,962984568.04,,2418687.95,5295890304.78,,,,,,,,1077468495.09,,45607378729.06,1508339195.7,873618580.61,,5289773262.4,91191949.71,813236654.86,,13556722824.54,,,,,,,,,,,,,,,,,59164101553.6,1074894790.0,,,,4052891263.24,38134983894.48,42187875157.72,101351976711.32,,620819644.93,,,,,,,,,,,,,17988485338.2,28112335291.07,4568565748.8,17417348593.44,1996524778.01,5298308992.73,873618580.61,,,1
|
||||||
|
300750.SZ,20191026,20191026,20190930,1,1,3,2208399700.0,21521985575.3,12667619429.06,985878418.69,,33352339595.99,287810000.0,8710491739.55,9700597153.15,,2361924059.73,,139542854.11,10005326799.83,,,,,,,,,1167260929.19,68689001550.95,,,1176625150.34,,,,,16885925397.99,2831712605.56,,,,,1518584142.91,,100419270.78,341847641.95,2055036261.06,,1118431570.76,27622355108.0,,,,1487576248.68,,,,,,,,,,,,,96311356658.95,4630256269.72,1340563717.48,,,,314247518.1,17244910400.54,10889184263.67,7212285097.05,,,1519823498.03,1213384710.92,29996067.26,2418687.95,3179532040.92,,,,,,,,917868306.62,,43864214308.54,,,,5579606717.14,177088163.04,653515298.16,,11957626010.3,,,,,,,,,,,,,,,,,55821840318.84,1074894790.0,,,,3545602822.65,36943913517.46,40489516340.11,96311356658.95,,634925184.41,,,,,,,,,,,,,18411088892.7,28134094664.21,1615675024.83,16885925397.99,2831712605.56,3211946796.13,917159562.24,,,1
|
||||||
|
300750.SZ,20190824,20190824,20190630,1,1,2,2194445000.0,20966274995.41,11305749304.2,985878418.69,,32556486370.73,58980000.0,9444111464.19,8193892175.59,824534244.85,1029818178.9,2452287.27,177853201.6,9623692125.75,,,,,,,,,1233554253.66,63881882652.5,,,947416921.82,,,,,14883961290.06,3506528066.14,,,,,1555293801.94,,100419270.78,316656012.08,1736570054.02,,1425909205.95,26006748934.49,,,,736508349.96,,,,,,,,,,,,,89888631586.99,3638729122.03,1294039502.4,,,,314247518.1,17059577651.6,10098811857.43,7534909203.04,,,1317233803.46,803066668.27,22426699.31,311692470.8,2664652254.88,,,,,,,,830307415.47,,42250965044.76,,925232995.13,,4313623912.01,58389832.13,635800994.99,,9571776856.29,,,,,,,,,,,,,,,,,51822741901.05,773581200.0,,,,3488400716.48,34577488969.46,38065889685.94,89888631586.99,,-101277548.84,,,,,,,,,,,,,17638003639.78,27158389509.03,1004839733.72,14883961290.06,3506528066.14,2998771424.99,925232995.13,,,0
|
||||||
|
300750.SZ,20190427,20190427,20190331,1,1,1,2195017400.0,21452320895.65,10562239859.25,985878418.69,,32224951522.9,37900000.0,9162783167.49,7933064764.17,,1153320036.04,,182452713.88,7686537622.67,,,,,,,,,870074607.47,60520697494.05,,,1047709787.58,,,,,12718283064.26,4002146735.88,,,,,1331981184.25,,100419270.78,320180603.51,1481495508.21,,1008321047.6,23580574965.47,,,,652958907.43,,,,,,,,,,,,,84101272459.52,3394334761.13,1403970598.49,,,,314247518.1,,,5404891136.69,,,1336293223.26,1122299621.77,20963013.91,,,,,,,,,,990251685.25,,38597161467.45,,,,3507541924.93,41726802.59,626870612.25,,8505238976.51,,,,,,,,,,,,,,,,,47102400443.96,793701060.0,,,,2772478669.16,34226393346.4,36998872015.56,84101272459.52,,-175362167.19,,,,,,,,,,,,,17095847931.66,24124867219.59,799106865.88,12718283064.26,4002146735.88,3900340464.3,934764875.61,,,0
|
||||||
|
300750.SZ,20190427,20190427,20190331,1,1,1,2195017400.0,21452320895.65,10562239859.25,985878418.69,,32224951522.9,37900000.0,9162783167.49,7933064764.17,,1153320036.04,,182452713.88,7686537622.67,,,,,,,,,870074607.47,60520697494.05,,,1047709787.58,,,,,12718283064.26,4002146735.88,,,,,1331981184.25,,100419270.78,320180603.51,1481495508.21,,1008321047.6,23580574965.47,,,,652958907.43,,,,,,,,,,,,,84101272459.52,3394334761.13,1403970598.49,,,,314247518.1,,,5404891136.69,,,1336293223.26,1122299621.77,20963013.91,,,,,,,,,,990251685.25,,38597161467.45,,,,3507541924.93,41726802.59,626870612.25,,8505238976.51,,,,,,,,,,,,,,,,,47102400443.96,793701060.0,,,,2772478669.16,34226393346.4,36998872015.56,84101272459.52,,-175362167.19,,,,,,,,,,,,,17095847931.66,24124867219.59,799106865.88,12718283064.26,4002146735.88,3900340464.3,934764875.61,,,1
|
||||||
|
300750.SZ,20190425,20190425,20181231,1,1,4,2195017400.0,21372918712.25,9515006632.3,985878418.69,,27731189739.92,,9742890628.44,6224857396.53,589281314.94,864640798.47,,92808117.05,7076101849.47,,,,,,,,,1076991664.73,53911422755.37,1516521098.2,,965198180.81,,,,,11574665757.11,1623838222.94,,,,,1346171137.42,,100419270.78,305828515.4,1240737742.63,,1298901335.85,19972281261.14,,,,512661245.82,,,,,,,,,,,,,73883704016.51,3490767815.96,1180092100.11,,,,314247518.1,11841128076.55,7057075077.4,4994400867.91,,,1122253456.83,722536564.72,19842845.23,,2904341329.33,,,,,,,,929024032.37,,31084941868.55,,943414523.31,,2512382681.52,40984489.33,611042047.22,,7598591557.34,,,,,,,,,,,,,,,,,38683533425.89,793701060.0,,,,2261889695.31,32938280895.31,35200170590.62,73883704016.51,,-336839207.93,,,,,,,,,,,,,15967748024.97,18898203153.95,682089431.99,11574665757.11,1623838222.94,2924184174.56,943414523.31,,,0
|
||||||
|
300750.SZ,20190425,20190425,20181231,1,1,4,2195017400.0,21372918712.25,9515006632.3,985878418.69,,27731189739.92,,9742890628.44,6224857396.53,589281314.94,864640798.47,,92808117.05,7076101849.47,,,,,,,,,1076991664.73,53911422755.37,1516521098.2,,965198180.81,,,,,11574665757.11,1623838222.94,,,,,1346171137.42,,100419270.78,305828515.4,1240737742.63,,1298901335.85,19972281261.14,,,,512661245.82,,,,,,,,,,,,,73883704016.51,3490767815.96,1180092100.11,,,,314247518.1,11841128076.55,7057075077.4,4994400867.91,,,1122253456.83,722536564.72,19842845.23,,2904341329.33,,,,,,,,929024032.37,,31084941868.55,,943414523.31,,2512382681.52,40984489.33,611042047.22,,7598591557.34,,,,,,,,,,,,,,,,,38683533425.89,793701060.0,,,,2261889695.31,32938280895.31,35200170590.62,73883704016.51,,-336839207.93,,,,,,,,,,,,,15967748024.97,18898203153.95,682089431.99,11574665757.11,1623838222.94,2924184174.56,943414523.31,,,1
|
||||||
|
300750.SZ,20181026,20181026,20180930,1,1,3,2195017400.0,21332400491.65,8854096176.97,638253676.69,,23009873374.81,,4105020050.57,9849744045.57,,453947445.22,,,5286472060.07,,,,,,,,,1368390591.89,45173587344.33,1749328770.25,,984646309.7,,,,,10313102145.17,2612119399.87,,,,,1362641804.84,,100419270.78,176881170.51,902206805.13,,415681574.9,18617027251.15,,,,416495571.63,,,,,,,,,,,,,63790614595.48,3245327066.37,1248978938.95,,,,,,,1704582797.09,,,596544931.31,705588018.28,,,,,,,,,,,826658774.41,,21825445438.14,,,,2821540586.26,42052130.71,360701916.84,,7437101080.2,,,,,,,,,,,,,,,,,29262546518.34,793701060.0,,,,2226764875.78,32301303201.36,34528068077.14,63790614595.48,,75236516.05,,,,,,,,,,,,,13954764096.14,15096667354.42,683644204.57,10313102145.17,2612119399.87,1646424623.68,967479380.02,,,1
|
||||||
|
300750.SZ,20181026,20181026,20180930,1,1,3,2195017400.0,21332400491.65,8854096176.97,638253676.69,,23009873374.81,,4105020050.57,9849744045.57,,453947445.22,,,5286472060.07,,,,,,,,,1368390591.89,45173587344.33,1749328770.25,,984646309.7,,,,,10313102145.17,2612119399.87,,,,,1362641804.84,,100419270.78,176881170.51,902206805.13,,415681574.9,18617027251.15,,,,416495571.63,,,,,,,,,,,,,63790614595.48,3245327066.37,1248978938.95,,,,,,,1704582797.09,,,596544931.31,705588018.28,,,,,,,,,,,826658774.41,,21825445438.14,,,,2821540586.26,42052130.71,360701916.84,,7437101080.2,,,,,,,,,,,,,,,,,29262546518.34,793701060.0,,,,2226764875.78,32301303201.36,34528068077.14,63790614595.48,,75236516.05,,,,,,,,,,,,,13954764096.14,15096667354.42,683644204.57,10313102145.17,2612119399.87,1646424623.68,967479380.02,,,0
|
||||||
|
300750.SZ,20180824,20180824,20180630,1,1,2,2172437000.0,20520157651.05,7415859086.9,638253676.69,,17800002418.59,,2571239620.97,8528717101.73,474148632.84,678003502.29,,64274152.08,4919942324.71,,,,,,,,,2632034286.33,37691162710.81,1729158500.0,,913752605.6,,,,,9819507470.69,2645070047.6,,,,,1384785545.17,,100419270.78,158460787.9,708272329.32,,293403603.49,17752830160.55,,,,22800671.27,,,,,,,,,,,,,55443992871.36,3194631603.51,1401956157.12,,,,,6675843483.7,5740618051.51,349064690.97,,,524449445.7,271459638.63,16260284.94,,283008992.25,,,,,,,,785188697.21,,16047849442.03,,899399594.33,,2018155174.56,34549547.01,425180664.33,,6571916583.74,,,,,,,,,,,,,,,,,22619766025.77,,,,,2005370552.71,30818856292.88,32824226845.59,55443992871.36,,72148878.24,,,,,,,,,,,,,11099956722.7,12416461535.21,538422784.92,9819507470.69,2645070047.6,299269277.19,899399594.33,,,1
|
||||||
|
300750.SZ,20180824,20180824,20180630,1,1,2,2172437000.0,20520157651.05,7415859086.9,638253676.69,,17800002418.59,,2571239620.97,8528717101.73,474148632.84,678003502.29,,64274152.08,4919942324.71,,,,,,,,,2632034286.33,37691162710.81,1729158500.0,,913752605.6,,,,,9819507470.69,2645070047.6,,,,,1384785545.17,,100419270.78,158460787.9,708272329.32,,293403603.49,17752830160.55,,,,22800671.27,,,,,,,,,,,,,55443992871.36,3194631603.51,1401956157.12,,,,,6675843483.7,5740618051.51,349064690.97,,,524449445.7,271459638.63,16260284.94,,283008992.25,,,,,,,,785188697.21,,16047849442.03,,899399594.33,,2018155174.56,34549547.01,425180664.33,,6571916583.74,,,,,,,,,,,,,,,,,22619766025.77,,,,,2005370552.71,30818856292.88,32824226845.59,55443992871.36,,72148878.24,,,,,,,,,,,,,11099956722.7,12416461535.21,538422784.92,9819507470.69,2645070047.6,299269277.19,899399594.33,,,0
|
||||||
|
300750.SZ,20180522,20180522,20180331,1,1,1,1955193267.0,15374442887.79,6918251958.12,638253676.69,,9676141216.63,,7527750188.08,6715688989.42,149376993.55,847303512.7,,47382489.87,4113040896.1,,,,,,,,,1558593622.51,30651507998.01,1962716000.0,,780030501.29,,,,,8446673663.32,3122587039.87,,,,,1390279968.16,,100419270.78,163939750.97,580079605.61,,625001731.36,17171727531.36,,,,16230089.15,,,,,,,,,,,,,47823235529.37,2755256273.24,1163670014.17,,,,,7362937604.85,4308621518.19,518067888.02,,,509591839.94,306609488.43,16269159.28,,296573893.69,,,,,,,,449364718.01,,14931706124.58,,894088692.78,,1787562369.82,69115257.32,404289790.79,,5910312383.95,,,,,,,,,,,,,,,,,20842018508.53,,,,,1843395945.35,25137821075.49,26981217020.84,47823235529.37,,251679285.89,,,,,,,,,,,,,14243439177.5,11671559123.04,196759483.42,8446673663.32,3122587039.87,312843052.97,894088692.78,,,0
|
||||||
|
300750.SZ,20180522,20180522,20171231,1,1,4,1955193267.0,15354587816.94,6504904798.9,638253676.69,,14080936626.3,,5458335290.35,6918521550.9,90630850.1,305835456.79,,52310504.72,3417757092.32,,,,,,,,,2695030983.77,33033102914.27,1961291000.0,,791027220.9,,,,,8219496581.74,2974364031.46,,,,,1408760249.33,,100419270.78,139310483.53,510045198.34,,525068808.1,16629782844.18,,,,13744559.02,,,,,,,,,,,,,49662885758.45,2129095275.13,2245096000.7,,,,,8812715586.2,4978257325.43,203165478.74,,,517308034.99,436196766.94,15205262.28,,317156883.9,,,,,,,,364944599.97,,17890045939.15,,895045177.66,,1789007284.61,68992112.81,419460871.47,,5301600721.68,,,,,,,,,,,,,,,,,23191646660.83,,,,,1769799526.51,24701439571.11,26471239097.62,49662885758.45,,248500011.58,,,,,,,,,,,,,12376856841.25,13790972911.63,142941354.82,8219496581.74,2974364031.46,332362146.18,895045177.66,,,0
|
||||||
|
300750.SZ,20180522,20180522,20171231,1,1,4,1955193267.0,15354587816.94,6504904798.9,638253676.69,,14080936626.3,,5458335290.35,6918521550.9,90630850.1,305835456.79,,52310504.72,3417757092.32,,,,,,,,,2695030983.77,33033102914.27,1961291000.0,,791027220.9,,,,,8219496581.74,2974364031.46,,,,,1408760249.33,,100419270.78,139310483.53,510045198.34,,525068808.1,16629782844.18,,,,13744559.02,,,,,,,,,,,,,49662885758.45,2129095275.13,2245096000.7,,,,,8812715586.2,4978257325.43,203165478.74,,,517308034.99,436196766.94,15205262.28,,317156883.9,,,,,,,,364944599.97,,17890045939.15,,895045177.66,,1789007284.61,68992112.81,419460871.47,,5301600721.68,,,,,,,,,,,,,,,,,23191646660.83,,,,,1769799526.51,24701439571.11,26471239097.62,49662885758.45,,248500011.58,,,,,,,,,,,,,12376856841.25,13790972911.63,142941354.82,8219496581.74,2974364031.46,332362146.18,895045177.66,,,1
|
||||||
|
300750.SZ,20171110,20171110,20170630,1,1,2,1955193267.0,15073392635.47,4992362867.75,299841288.9,,1817625421.27,,2875309020.6,6005154594.85,129673951.35,156199612.05,,89547067.51,3955037968.76,,,,,,,,,11660834659.89,26689382296.28,1547503500.0,,310725425.65,,,,,5635475096.25,4237842734.96,,,,,1162449058.99,,100419270.78,48928917.03,332451118.62,,818438956.14,14194234078.42,,,,,,,,,,,,,,,,,40883616374.7,719950000.0,1257975977.42,,,,,5427777223.94,6190098389.53,192644288.31,,,402945039.76,396746820.17,8666706.59,,361005463.17,,,,,,,,129784955.93,,14367644864.82,,913849883.01,,1268416291.8,82065980.53,377532756.18,,3361814911.52,,,,,,,,,,,,,,,,,17729459776.34,,,,,519861419.41,22634295178.95,23154156598.36,40883616374.7,,313505119.83,,,,,,,,,,,,,8880463615.45,11617875613.47,219221018.86,5635475096.25,4237842734.96,369672169.76,913849883.01,,,0
|
||||||
|
300750.SZ,20171110,20171110,20170630,1,1,2,1955193267.0,15073392635.47,4992362867.75,299841288.9,,1817625421.27,,2875309020.6,6005154594.85,129673951.35,156199612.05,,89547067.51,3955037968.76,,,,,,,,,11660834659.89,26689382296.28,1547503500.0,,310725425.65,,,,,5635475096.25,4237842734.96,,,,,1162449058.99,,100419270.78,48928917.03,332451118.62,,818438956.14,14194234078.42,,,,,,,,,,,,,,,,,40883616374.7,719950000.0,1257975977.42,,,,,5427777223.94,6190098389.53,192644288.31,,,402945039.76,396746820.17,8666706.59,,361005463.17,,,,,,,,129784955.93,,14367644864.82,,913849883.01,,1268416291.8,82065980.53,377532756.18,,3361814911.52,,,,,,,,,,,,,,,,,17729459776.34,,,,,519861419.41,22634295178.95,23154156598.36,40883616374.7,,313505119.83,,,,,,,,,,,,,8880463615.45,11617875613.47,219221018.86,5635475096.25,4237842734.96,369672169.76,913849883.01,,,1
|
||||||
|
300750.SZ,20180522,20180522,20161231,1,1,4,613321800.0,11608553987.09,2965362316.99,299841288.9,,2456530834.16,,570522837.1,7315840024.05,183806946.21,101183102.22,,7564477.11,1359772316.12,,,,,,,,,9760704235.56,21761324772.53,143400000.0,,169658176.39,,,,,3727473865.79,1226129855.44,,,,,621645950.26,,100419270.78,14206421.31,264912007.47,,559144024.11,6826989571.55,,,,,,,,,,,,,,,,,28588314344.08,302000000.0,1226587998.8,,,,,4394039468.71,3173395264.55,87727135.56,,,446249267.28,248297683.21,5776292.16,,360240077.32,,,,,,,,240511234.77,,10182824422.36,,950079201.39,,930580458.65,28130130.54,403581087.31,,2614370877.89,,,,,,,,,,,,,,,,,12797195300.25,,,,,302472760.51,15488646283.32,15791119043.83,28588314344.08,,1566890.34,,,,,,,5400000.0,,,,,,7886362861.15,7567434733.26,191371423.32,3727473865.79,1226129855.44,366016369.48,950079201.39,,,0
|
||||||
|
300750.SZ,20180522,20180522,20161231,1,1,4,613321800.0,11608553987.09,2965362316.99,299841288.9,,2456530834.16,,570522837.1,7315840024.05,183806946.21,101183102.22,,7564477.11,1359772316.12,,,,,,,,,9760704235.56,21761324772.53,143400000.0,,169658176.39,,,,,3727473865.79,1226129855.44,,,,,621645950.26,,100419270.78,14206421.31,264912007.47,,559144024.11,6826989571.55,,,,,,,,,,,,,,,,,28588314344.08,302000000.0,1226587998.8,,,,,4394039468.71,3173395264.55,87727135.56,,,446249267.28,248297683.21,5776292.16,,360240077.32,,,,,,,,240511234.77,,10182824422.36,,950079201.39,,930580458.65,28130130.54,403581087.31,,2614370877.89,,,,,,,,,,,,,,,,,12797195300.25,,,,,302472760.51,15488646283.32,15791119043.83,28588314344.08,,1566890.34,,,,,,,5400000.0,,,,,,7886362861.15,7567434733.26,191371423.32,3727473865.79,1226129855.44,366016369.48,950079201.39,,,1
|
||||||
|
300750.SZ,20161001,20161001,20160630,1,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12726241200.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10186685700.0,,,,,,2539555500.0,,,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
300750.SZ,20161001,20161001,20160630,1,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12726241200.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10186685700.0,,,,,,2539555500.0,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20160729,20160729,20160331,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11042108000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9037644600.0,,,,,,2004463400.0,,,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
300750.SZ,20180522,20180522,20151231,1,1,4,470590000.0,369014163.84,376303017.19,37079169.44,,1292935327.52,,422182294.7,2393930005.73,55484188.21,70469398.58,,,1041611188.85,,,,,,,,,227855161.28,5504467564.87,5000000.0,,,,,,,1313098299.52,474893794.61,,6710.03,,,502758023.88,,100419270.78,6133369.98,135241432.42,,630939035.37,3168489936.59,,,,,,,,,,,,,,,,,8672957501.46,,576558942.87,,,,,1041204473.76,1472399950.48,170045760.44,,,198490932.79,252617557.72,3639309.42,,311755056.01,,,,,,,,1322574459.48,,5349286442.97,,917666570.26,,581118102.95,30220779.54,296337217.09,,1825342669.84,,,,,,,,,,,,,,,,,7174629112.81,,,,,244663210.07,1253665178.58,1498328388.65,8672957501.46,,678828.11,,,,,,,,,,,,,2816112300.43,2513604424.24,55484188.21,1313105009.55,474893794.61,315394365.43,917666570.26,,,0
|
||||||
|
300750.SZ,20180522,20180522,20151231,1,1,4,470590000.0,369014163.84,376303017.19,37079169.44,,1292935327.52,,422182294.7,2393930005.73,55484188.21,70469398.58,,,1041611188.85,,,,,,,,,227855161.28,5504467564.87,5000000.0,,,,,,,1313098299.52,474893794.61,,6710.03,,,502758023.88,,100419270.78,6133369.98,135241432.42,,630939035.37,3168489936.59,,,,,,,,,,,,,,,,,8672957501.46,,576558942.87,,,,,1041204473.76,1472399950.48,170045760.44,,,198490932.79,252617557.72,3639309.42,,311755056.01,,,,,,,,1322574459.48,,5349286442.97,,917666570.26,,581118102.95,30220779.54,296337217.09,,1825342669.84,,,,,,,,,,,,,,,,,7174629112.81,,,,,244663210.07,1253665178.58,1498328388.65,8672957501.46,,678828.11,,,,,,,,,,,,,2816112300.43,2513604424.24,55484188.21,1313105009.55,474893794.61,315394365.43,917666570.26,,,1
|
||||||
|
300750.SZ,20171110,20171110,20141231,1,1,4,200000000.0,,49744909.19,6954380.45,,59580991.01,,,371591280.04,29995923.56,15325513.65,,,312078268.93,,,,,,,,,1104090329.41,1892662306.6,5000000.0,,227224101.96,,,,,242838681.05,174061216.38,,,,,237605481.13,,,302589.41,25097812.88,,70316438.57,982446321.38,,,,,,,,,,,,,,,,,2875108627.98,,197129703.88,,,,,104420606.01,384712991.47,8715160.0,,,21201376.97,30587729.51,92346.79,,62047482.54,,,,,,,,127376000.0,,936283397.17,,1344911122.2,,43656244.08,,214850053.5,,1603417419.78,,,,,,,,,,,,,,,,,2539700816.95,,,,,78524562.99,256883248.04,335407811.03,2875108627.98,,183958.4,,,,,,,,,,,,,371591280.04,489133597.48,29995923.56,242838681.05,174061216.38,62139829.33,1344911122.2,,,0
|
||||||
|
300750.SZ,20171110,20171110,20141231,1,1,4,200000000.0,,49744909.19,6954380.45,,59580991.01,,,371591280.04,29995923.56,15325513.65,,,312078268.93,,,,,,,,,1104090329.41,1892662306.6,5000000.0,,227224101.96,,,,,242838681.05,174061216.38,,,,,237605481.13,,,302589.41,25097812.88,,70316438.57,982446321.38,,,,,,,,,,,,,,,,,2875108627.98,,197129703.88,,,,,104420606.01,384712991.47,8715160.0,,,21201376.97,30587729.51,92346.79,,62047482.54,,,,,,,,127376000.0,,936283397.17,,1344911122.2,,43656244.08,,214850053.5,,1603417419.78,,,,,,,,,,,,,,,,,2539700816.95,,,,,78524562.99,256883248.04,335407811.03,2875108627.98,,183958.4,,,,,,,,,,,,,371591280.04,489133597.48,29995923.56,242838681.05,174061216.38,62139829.33,1344911122.2,,,1
|
||||||
|
52
data/CN/300750.SZ/raw_cash_flow.csv
Normal file
52
data/CN/300750.SZ/raw_cash_flow.csv
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
ts_code,ann_date,f_ann_date,end_date,comp_type,report_type,end_type,net_profit,finan_exp,c_fr_sale_sg,recp_tax_rends,n_depos_incr_fi,n_incr_loans_cb,n_inc_borr_oth_fi,prem_fr_orig_contr,n_incr_insured_dep,n_reinsur_prem,n_incr_disp_tfa,ifc_cash_incr,n_incr_disp_faas,n_incr_loans_oth_bank,n_cap_incr_repur,c_fr_oth_operate_a,c_inf_fr_operate_a,c_paid_goods_s,c_paid_to_for_empl,c_paid_for_taxes,n_incr_clt_loan_adv,n_incr_dep_cbob,c_pay_claims_orig_inco,pay_handling_chrg,pay_comm_insur_plcy,oth_cash_pay_oper_act,st_cash_out_act,n_cashflow_act,oth_recp_ral_inv_act,c_disp_withdrwl_invest,c_recp_return_invest,n_recp_disp_fiolta,n_recp_disp_sobu,stot_inflows_inv_act,c_pay_acq_const_fiolta,c_paid_invest,n_disp_subs_oth_biz,oth_pay_ral_inv_act,n_incr_pledge_loan,stot_out_inv_act,n_cashflow_inv_act,c_recp_borrow,proc_issue_bonds,oth_cash_recp_ral_fnc_act,stot_cash_in_fnc_act,free_cashflow,c_prepay_amt_borr,c_pay_dist_dpcp_int_exp,incl_dvd_profit_paid_sc_ms,oth_cashpay_ral_fnc_act,stot_cashout_fnc_act,n_cash_flows_fnc_act,eff_fx_flu_cash,n_incr_cash_cash_equ,c_cash_equ_beg_period,c_cash_equ_end_period,c_recp_cap_contrib,incl_cash_rec_saims,uncon_invest_loss,prov_depr_assets,depr_fa_coga_dpba,amort_intang_assets,lt_amort_deferred_exp,decr_deferred_exp,incr_acc_exp,loss_disp_fiolta,loss_scr_fa,loss_fv_chg,invest_loss,decr_def_inc_tax_assets,incr_def_inc_tax_liab,decr_inventories,decr_oper_payable,incr_oper_payable,others,im_net_cashflow_oper_act,conv_debt_into_cap,conv_copbonds_due_within_1y,fa_fnc_leases,im_n_incr_cash_equ,net_dism_capital_add,net_cash_rece_sec,credit_impa_loss,use_right_asset_dep,oth_loss_asset,end_bal_cash,beg_bal_cash,end_bal_cash_equ,beg_bal_cash_equ,update_flag
|
||||||
|
300750.SZ,20251021,20251021,20250930,1,1,3,,,338126567000.0,6320906000.0,,,,,,,,,,,,18609171000.0,363056644000.0,224120825000.0,23413386000.0,26742749000.0,,,,,,8119254000.0,282396214000.0,80660430000.0,19691000.0,4443202000.0,1942895000.0,68109000.0,27411000.0,6501309000.0,30087780000.0,31540210000.0,2045273000.0,119537000.0,,63792799000.0,-57291490000.0,30597681000.0,,1125480000.0,74995566000.0,,32237114000.0,33558798000.0,,4923115000.0,70719026000.0,4276539000.0,-621254000.0,27024225000.0,270159734000.0,297183959000.0,43272406000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
300750.SZ,20251021,20251021,20250930,1,1,3,,,338126567000.0,6320906000.0,,,,,,,,,,,,18609171000.0,363056644000.0,224120825000.0,23413386000.0,26742749000.0,,,,,,8119254000.0,282396214000.0,80660430000.0,19691000.0,4443202000.0,1942895000.0,68109000.0,27411000.0,6501309000.0,30087780000.0,31540210000.0,2045273000.0,119537000.0,,63792799000.0,-57291490000.0,30597681000.0,,1125480000.0,74995566000.0,25643519645.9636,32237114000.0,33558798000.0,1714326000.0,4923115000.0,70719026000.0,4276539000.0,-621254000.0,27024225000.0,270159734000.0,297183959000.0,43272406000.0,5488866000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20250731,20250731,20250630,1,1,2,32365447000.0,-774088000.0,222932355000.0,3345011000.0,,,,,,,,,,,,12159654000.0,238437020000.0,139969893000.0,16407674000.0,18804676000.0,,,,,,4567711000.0,179749954000.0,58687066000.0,,2026104000.0,1797958000.0,51763000.0,,3875825000.0,20212919000.0,9817644000.0,,114782000.0,,30145345000.0,-26269519000.0,24037000000.0,,152625000.0,64659939000.0,31658009450.1399,15113934000.0,27220080000.0,606327000.0,1718354000.0,44052368000.0,20607571000.0,600381000.0,53625499000.0,270159734000.0,323785232000.0,40470315000.0,2781185000.0,,2850287000.0,11355579000.0,244874000.0,667604000.0,,,-62178000.0,91385000.0,-178363000.0,-2875693000.0,-2846420000.0,-90990000.0,-13622417000.0,12126707000.0,19114641000.0,,58687066000.0,,,,53625499000.0,,,,105656000.0,,323785232000.0,270159734000.0,,,1
|
||||||
|
300750.SZ,20250415,20250415,20250331,1,1,1,,,111139836000.0,1395114000.0,,,,,,,,,,,,6572116000.0,119107066000.0,69577367000.0,7189748000.0,7120777000.0,,,,,,2350917000.0,86238809000.0,32868257000.0,,1598211000.0,183232000.0,30260000.0,,1811704000.0,10342606000.0,9131508000.0,,108144000.0,,19582258000.0,-17770554000.0,11432923000.0,,119264000.0,11787897000.0,21672458368.5059,4911352000.0,6104208000.0,98000000.0,70925000.0,11086486000.0,701411000.0,341988000.0,16141103000.0,270159734000.0,286300836000.0,235710000.0,235710000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20250315,20250315,20241231,1,1,4,54006794000.0,5165670000.0,417525378000.0,10506188000.0,,,,,,,,,,,,16847851000.0,444879417000.0,285455632000.0,25499653000.0,28529188000.0,,,,,,8404599000.0,347889072000.0,96990345000.0,963920000.0,2028899000.0,1838083000.0,75110000.0,,4906012000.0,31179943000.0,22169451000.0,244022000.0,187907000.0,,53781323000.0,-48875311000.0,30540129000.0,,292179000.0,33392735000.0,,19972240000.0,25807432000.0,496051000.0,2137299000.0,47916971000.0,-14524236000.0,-1596552000.0,31994247000.0,238165487000.0,270159734000.0,2560428000.0,1959694000.0,,8423325000.0,22437872000.0,470401000.0,1790382000.0,,,-19319000.0,257488000.0,-664223000.0,-4384806000.0,-6700359000.0,320345000.0,-16606853000.0,634969000.0,31206935000.0,,96990345000.0,,,,31994247000.0,,,872526000.0,239273000.0,,270159734000.0,238165487000.0,,,0
|
||||||
|
300750.SZ,20250315,20250315,20241231,1,1,4,54006794000.0,5165670000.0,417525378000.0,10506188000.0,,,,,,,,,,,,16847851000.0,444879417000.0,285455632000.0,25499653000.0,28529188000.0,,,,,,8404599000.0,347889072000.0,96990345000.0,963920000.0,2028899000.0,1838083000.0,75110000.0,,4906012000.0,31179943000.0,22169451000.0,244022000.0,187907000.0,,53781323000.0,-48875311000.0,30540129000.0,,292179000.0,33392735000.0,49279270654.9643,19972240000.0,25807432000.0,496051000.0,2137299000.0,47916971000.0,-14524236000.0,-1596552000.0,31994247000.0,238165487000.0,270159734000.0,2560428000.0,1959694000.0,,8423325000.0,22437872000.0,470401000.0,1790382000.0,,,-19319000.0,257488000.0,-664223000.0,-4384806000.0,-6700359000.0,320345000.0,-16606853000.0,634969000.0,31206935000.0,,96990345000.0,,,,31994247000.0,,,872526000.0,239273000.0,,270159734000.0,238165487000.0,,,1
|
||||||
|
300750.SZ,20241019,20241019,20240930,1,1,3,,,317539939100.0,8174888000.0,,,,,,,,,,,,10828118000.0,336542945100.0,220637018600.0,19328624300.0,23235105400.0,,,,,,5898595800.0,269099344000.0,67443601100.0,525584000.0,512532700.0,1472067000.0,55631200.0,,2565814800.0,21268347400.0,28950734900.0,241214500.0,,,50460296800.0,-47894481900.0,17823560900.0,,,19734321900.0,-13691482401.3572,13951582300.0,24858845700.0,496051400.0,1419576600.0,40230004500.0,-20495682600.0,-2265019600.0,-3211583000.0,238165486900.0,234953903900.0,1910761000.0,1488073700.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20241019,20241019,20240930,1,1,3,,,317539939100.0,8174888000.0,,,,,,,,,,,,10828118000.0,336542945100.0,220637018600.0,19328624300.0,23235105400.0,,,,,,5898595800.0,269099344000.0,67443601100.0,525584000.0,512532700.0,1472067000.0,55631200.0,,2565814800.0,21268347400.0,28950734900.0,241214500.0,,,50460296800.0,-47894481900.0,17823560900.0,,,19734321900.0,,13951582300.0,24858845700.0,496051400.0,1419576600.0,40230004500.0,-20495682600.0,-2265019600.0,-3211583000.0,238165486900.0,234953903900.0,1910761000.0,1488073700.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
300750.SZ,20240727,20240727,20240630,1,1,2,24878855300.0,3707393500.0,210078821800.0,5605173900.0,,,,,,,,,,,,7381135500.0,223065131100.0,144250502500.0,13195573200.0,17902671600.0,,,,,,3007429200.0,178356176500.0,44708954600.0,529335100.0,316453600.0,225161100.0,17754100.0,,1088703800.0,13830127900.0,21905527500.0,231440800.0,,,35967096200.0,-34878392400.0,15587835400.0,,,16010907800.0,391545768.4292,10135075800.0,23896998200.0,45880400.0,1154620200.0,35186694200.0,-19175786400.0,-1754412700.0,-11099637000.0,238165486900.0,227065849900.0,423072500.0,423072500.0,,2343369100.0,11284923100.0,214967000.0,647959300.0,,,-11045900.0,41648300.0,24331900.0,-2076994500.0,-3497286300.0,-274667700.0,-3421205200.0,20607642800.0,-10101595900.0,,44708954600.0,,,,-11099637000.0,,,,74912600.0,,227065849900.0,238165486900.0,,,1
|
||||||
|
300750.SZ,20240416,20240416,20240331,1,1,1,,,102413593800.0,3186710600.0,,,,,,,,,,,,4564714700.0,110165019100.0,68969931400.0,5633346700.0,5717762700.0,,,,,,1486067700.0,81807108500.0,28357910600.0,11111000.0,135950700.0,33933800.0,14951800.0,,195947300.0,7081546200.0,70746800.0,210693200.0,740816700.0,,8103803000.0,-7907855700.0,11920790200.0,,,12010688900.0,7575241365.1415,5090698600.0,813200200.0,22940200.0,602526600.0,6506425400.0,5504263600.0,-1011612600.0,24942705900.0,238165486900.0,263108192800.0,89898800.0,89898800.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20240316,20240316,20231231,1,1,4,46761034500.0,3013733800.0,417943222600.0,12739610500.0,,,,,,,,,,,,15724664000.0,446407497100.0,310521178200.0,21140596600.0,17117191500.0,,,,,,4802406300.0,353581372700.0,92826124400.0,1239798700.0,7651158400.0,1711392900.0,12853500.0,3306900.0,10618510400.0,33624896500.0,5649689400.0,321445400.0,210243200.0,,39806274600.0,-29187764200.0,46595746400.0,,366758000.0,50286500800.0,32528281889.0684,23795322000.0,9481092900.0,469828200.0,2293723300.0,35570138100.0,14716362700.0,2181446800.0,80536169700.0,157629317200.0,238165486900.0,3323996400.0,2926448200.0,,5853926900.0,21098130600.0,330992000.0,1099265800.0,,,-16983500.0,55557800.0,-46270400.0,-3825925800.0,-7809038300.0,156446100.0,31029323200.0,-34168243000.0,29013934100.0,,92826124400.0,,,,80536169700.0,,,254041400.0,117593400.0,,238165486900.0,157629317200.0,,,1
|
||||||
|
300750.SZ,20231020,20231020,20230930,1,1,3,,,298649159300.0,10179455400.0,,,,,,,,,,,,10019408600.0,318848023200.0,233164147500.0,15791826300.0,13852837500.0,,,,,,3385519700.0,266194330900.0,52653692300.0,3388378500.0,4803588500.0,1197789500.0,6339500.0,,9396095900.0,26917282900.0,2415394900.0,,547300.0,,29333225100.0,-19937129100.0,39935305000.0,,103628500.0,42049702100.0,8994946044.0122,18289107600.0,8860917300.0,469828200.0,49020400.0,27199045400.0,14850656700.0,1928720700.0,49495940500.0,157629317200.0,207125257700.0,2010768500.0,1876232800.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20230726,20230726,20230630,1,1,2,21473201500.0,345552200.0,202447361600.0,6619428100.0,,,,,,,,,,,,7066371300.0,216133160900.0,156679795700.0,10977957600.0,9392587400.0,,,,,,2012450500.0,179062791200.0,37070369800.0,3156756300.0,4324858000.0,650523900.0,,,8132138200.0,18452610700.0,1796910300.0,,,,20249521000.0,-12117382800.0,23407941000.0,,,24968247700.0,16287996540.7261,10969930700.0,7571774200.0,61328200.0,240759100.0,18782464000.0,6185783700.0,3535293800.0,34674064400.0,157629317200.0,192303381700.0,1560306700.0,1560306700.0,,1681987200.0,9460374100.0,142766900.0,497480800.0,,,-8327400.0,30353500.0,-213283400.0,-1417699300.0,-3109602300.0,-343131000.0,26530336700.0,-7684588600.0,-10687815900.0,,37070369800.0,,,,34674064400.0,,,,67709900.0,,192303381700.0,157629317200.0,,,1
|
||||||
|
300750.SZ,20230726,20230726,20230630,1,1,2,21473201500.0,345552200.0,202447361600.0,6619428100.0,,,,,,,,,,,,7066371300.0,216133160900.0,156679795700.0,10977957600.0,9392587400.0,,,,,,2012450500.0,179062791200.0,37070369800.0,3156756300.0,4324858000.0,650523900.0,,,8132138200.0,18452610700.0,1796910300.0,,,,20249521000.0,-12117382800.0,23407941000.0,,,24968247700.0,18473683340.7261,10969930700.0,7571774200.0,61328200.0,240759100.0,18782464000.0,6185783700.0,3535293800.0,34674064400.0,157629317200.0,192303381700.0,1560306700.0,1560306700.0,,1681987200.0,9460374100.0,142766900.0,497480800.0,,,-8327400.0,30353500.0,-213283400.0,-1417699300.0,-3109602300.0,-343131000.0,26530336700.0,-7684588600.0,-10687815900.0,,37070369800.0,,,,34674064400.0,,,,67709900.0,,192303381700.0,157629317200.0,,,0
|
||||||
|
300750.SZ,20230421,20230421,20230331,1,1,1,,,100373116000.0,2228192200.0,,,,,,,,,,,,3090305100.0,105691613300.0,74461164100.0,4975038100.0,4321756000.0,,,,,,967376600.0,84725334900.0,20966278500.0,641947900.0,4538242300.0,1001598900.0,,,6181789100.0,10465642800.0,1523083000.0,,,,11988725800.0,-5806936600.0,13568065400.0,,,14874732100.0,13095444235.6776,7266142400.0,1026620400.0,61328200.0,1224165000.0,9516927800.0,5357804200.0,-393399200.0,20123746900.0,157629317200.0,177753064100.0,1306666700.0,1306666700.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
300750.SZ,20230421,20230421,20230331,1,1,1,,,100373116000.0,2228192200.0,,,,,,,,,,,,3090305100.0,105691613300.0,74461164100.0,4975038100.0,4321756000.0,,,,,,967376600.0,84725334900.0,20966278500.0,641947900.0,4538242300.0,1001598900.0,,,6181789100.0,10465642800.0,1523083000.0,,,,11988725800.0,-5806936600.0,13568065400.0,,,14874732100.0,13095444235.6776,7266142400.0,1026620400.0,61328200.0,1224165000.0,9516927800.0,5357804200.0,-393399200.0,20123746900.0,157629317200.0,177753064100.0,1306666700.0,1306666700.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20230310,20230310,20221231,1,1,4,33457143500.0,969747300.0,305775248400.0,9478689900.0,,,,,,,,,,,,14557214600.0,329811152800.0,235327104000.0,18157352000.0,10529733400.0,,,,,,4588120100.0,268602309600.0,61208843300.0,1531307500.0,1307996200.0,740372300.0,593900.0,,3580269900.0,48215268100.0,12764660700.0,,6740182400.0,,67720111200.0,-64139841300.0,50957726600.0,,5208177600.0,103621111500.0,26286437536.8799,17605770500.0,3551469400.0,,197440400.0,21354680400.0,82266431200.0,2788148900.0,82123582000.0,75505735200.0,157629317200.0,47455207300.0,2092259300.0,,2826926600.0,11960578600.0,236449600.0,894129200.0,,,5322700.0,37927500.0,-400241300.0,-3044935500.0,-4451227000.0,9145100.0,-39877670300.0,-58697293400.0,115418278300.0,,61208843300.0,,,,82123582000.0,,,1146247900.0,161383600.0,,157629317200.0,75505735200.0,,,0
|
||||||
|
300750.SZ,20230310,20230310,20221231,1,1,4,33457143500.0,969747300.0,305775248400.0,9478689900.0,,,,,,,,,,,,14557214600.0,329811152800.0,235327104000.0,18157352000.0,10529733400.0,,,,,,4588120100.0,268602309600.0,61208843300.0,1531307500.0,1307996200.0,740372300.0,593900.0,,3580269900.0,48215268100.0,12764660700.0,,6740182400.0,,67720111200.0,-64139841300.0,50957726600.0,,5208177600.0,103621111500.0,27236325636.8799,17605770500.0,3551469400.0,,197440400.0,21354680400.0,82266431200.0,2788148900.0,82123582000.0,75505735200.0,157629317200.0,47455207300.0,2092259300.0,,2826926600.0,11960578600.0,236449600.0,894129200.0,,,5322700.0,37927500.0,-400241300.0,-3044935500.0,-4451227000.0,9145100.0,-39877670300.0,-58697293400.0,115418278300.0,,61208843300.0,,,,82123582000.0,,,1146247900.0,161383600.0,,157629317200.0,75505735200.0,,,1
|
||||||
|
300750.SZ,20221022,20221022,20220930,1,1,3,,,192085714500.0,7811257200.0,,,,,,,,,,,,8926725200.0,208823696800.0,159150089400.0,13081486800.0,7285509900.0,,,,,,3338662100.0,182855748200.0,25967948600.0,377572800.0,563479800.0,655282800.0,,,1596335400.0,35722696500.0,8686444400.0,,850000600.0,,45259141500.0,-43662806000.0,35913561100.0,,206959000.0,82948029300.0,4854322020.6801,12923179000.0,3055573400.0,,95957200.0,16074709600.0,66873319700.0,2913476400.0,52091938700.0,75505735200.0,127597674000.0,46827509200.0,1962509400.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20220824,20220824,20220630,1,1,2,9669961200.0,1253855000.0,116064146900.0,5839330400.0,,,,,,,,,,,,5155028000.0,127058505300.0,92698134200.0,8817451600.0,4536876200.0,,,,,,2323700200.0,108376162200.0,18682343000.0,1330627700.0,187379800.0,652012400.0,,,2170019900.0,24699849700.0,5946072300.0,,2441927600.0,,33087849500.0,-30917829600.0,24205364800.0,,265175700.0,70475445400.0,14501860992.3317,7174679900.0,940178200.0,,80993000.0,8195851200.0,62279594200.0,1183477300.0,51227584900.0,75505735200.0,126733320100.0,46004904900.0,1139905100.0,,660999200.0,4964053700.0,82940400.0,233746100.0,,,138600.0,21826700.0,-215568200.0,-2064382300.0,-633149200.0,421012500.0,-35479302600.0,-30610732700.0,70089074700.0,,18682343000.0,,,,51227584900.0,,,,67362000.0,,126733320100.0,75505735200.0,,,1
|
||||||
|
300750.SZ,20220430,20220430,20220331,1,1,1,,,52971346200.0,53002900.0,,,,,,,,,,,,2798736400.0,55823085500.0,40822552900.0,4043971400.0,1760241800.0,,,,,,2120433100.0,48747199100.0,7075886400.0,330775400.0,123878000.0,380027000.0,183000.0,,834863500.0,11607436800.0,2763716600.0,,2928961700.0,,17300115100.0,-16465251700.0,14380644000.0,,262973100.0,14840522500.0,4271684121.0743,1460225400.0,536101900.0,,109860800.0,2106188200.0,12734334300.0,-170008800.0,3174960200.0,75505735200.0,78680695400.0,196905400.0,196905400.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20220422,20220422,20211231,1,1,4,17860730100.0,1580329100.0,130616575600.0,414542800.0,,,,,,,,,,,,14298549300.0,145329667700.0,86393876300.0,9423183000.0,4127789000.0,,,,,,2476810700.0,102421659000.0,42908008700.0,4094314000.0,571745100.0,228638800.0,3223100.0,58414400.0,4956335300.0,43767770800.0,11725718900.0,295800300.0,2948104700.0,,58737394700.0,-53781059400.0,26276582500.0,,3235028400.0,31063023600.0,21236726212.8648,5457907900.0,1568025100.0,,378512600.0,7404445600.0,23658578000.0,-711778200.0,12073749200.0,63431986000.0,75505735200.0,1551412800.0,795200000.0,,2047739400.0,5847138200.0,159202600.0,340253100.0,,,23190300.0,67375700.0,,-1561030800.0,-1232106000.0,215449900.0,-28856721000.0,-27816000500.0,73855678100.0,,42908008700.0,,,,12073749200.0,,,,90030200.0,,75505735200.0,63431986000.0,,,1
|
||||||
|
300750.SZ,20220422,20220422,20211231,1,1,4,17860730100.0,1580329100.0,130616575600.0,414542800.0,,,,,,,,,,,,14298549300.0,145329667700.0,86393876300.0,9423183000.0,4127789000.0,,,,,,2476810700.0,102421659000.0,42908008700.0,4094314000.0,571745100.0,228638800.0,3223100.0,58414400.0,4956335300.0,43767770800.0,11725718900.0,295800300.0,2948104700.0,,58737394700.0,-53781059400.0,26276582500.0,,3235028400.0,31063023600.0,21236726212.8648,5457907900.0,1568025100.0,,378512600.0,7404445600.0,23658578000.0,-711778200.0,12073749200.0,63431986000.0,75505735200.0,1551412800.0,795200000.0,,2047739400.0,5847138200.0,159202600.0,340253100.0,,,23190300.0,67375700.0,,-1561030800.0,-1232106000.0,215449900.0,-28856721000.0,-27816000500.0,73855678100.0,,42908008700.0,,,,12073749200.0,,,,90030200.0,,75505735200.0,63431986000.0,,,0
|
||||||
|
300750.SZ,20211028,20211028,20210930,1,1,3,,,83626746277.27,535346958.22,,,,,,,,,,,,7782116412.72,91944209648.21,51379494480.13,6571571458.45,3480171938.71,,,,,,1826733218.37,63257971095.66,28686238552.55,2938674644.74,37113851.85,164722892.5,1387035.57,58414361.69,3200312786.35,30667430388.32,7449921995.07,177944806.0,1460499766.01,,39755796955.4,-36555484169.05,16682111411.78,,3221088249.26,20723206402.29,11934069869.9773,4283900195.11,1288764640.8,,193522043.25,5766186879.16,14957019523.13,-228684931.08,6859088975.55,63431985986.9,70291074962.45,820006741.25,820006741.25,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20210826,20210826,20210630,1,1,2,5325108289.03,614595263.22,51085024721.36,140585405.15,,,,,,,,,,,,4098937926.36,55324548052.87,21559768798.96,4211528980.82,2523997750.53,,,,,,1287192835.98,29582488366.29,25742059686.58,1746377670.86,31702892.85,59164928.94,227975.57,,1837473468.22,20090694926.23,5568013121.5,162089096.03,1143479615.97,,26964276759.73,-25126803291.51,5744054032.33,,,6319060773.58,10214622538.1769,2174158921.05,475061070.79,,205756669.64,2854976661.48,3464084112.1,-234765497.65,3844575009.52,63431985986.9,67276560996.42,575006741.25,575006741.25,,817370458.03,2549707122.23,72565403.73,106499325.87,,,571920.37,30306302.87,,-257314301.91,-723546283.57,150453314.61,-11317249364.86,-5279233781.91,33520132588.52,,25742059686.58,,,,3844575009.52,,,,14343147.12,,67276560996.42,63431985986.9,,,1
|
||||||
|
300750.SZ,20210430,20210430,20210331,1,1,1,,,19699155644.5,68463823.72,,,,,,,,,,,,1637605513.45,21405224981.67,7311949649.62,1759283573.51,1021292581.76,,,,,,345828625.23,10438354430.12,10966870551.55,1653611877.72,,9257589.83,227975.57,,1663097443.12,8903269558.24,1303423035.72,,269831098.63,,10476523692.59,-8813426249.47,2281243461.99,,27016829.63,2309232792.7,795517931.2821,1738449618.43,315255006.47,,8266665.17,2061971290.07,247261502.63,-43193144.9,2357512659.81,63431985986.9,65789498646.71,972501.08,972501.08,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20210428,20210428,20201231,1,1,4,6103918052.46,772394855.22,54002988575.54,151928522.94,,,,,,,,,,,,6397335867.06,60552252965.54,33461951736.87,4027848128.71,2265587429.63,,,,,,2366963038.37,42122350333.58,18429902631.96,2735874410.58,44779761.91,24087086.33,24649.08,,2804765907.9,13302355759.04,4088418479.98,,466447835.43,,17857222074.45,-15052456166.55,9450920678.78,,13199266407.5,43186548078.44,-3068497270.4043,4743701233.75,898809819.12,7825842.99,112602486.19,5755113539.06,37431434539.38,-576950661.91,40231930342.88,23200055644.02,63431985986.9,20536360992.16,923523424.41,,1169471948.67,4576797794.5,135243814.08,155847906.24,,,9890379.23,47137042.0,-286915936.0,26192466.45,-772834310.15,-5673139.63,-2401630461.19,-3415569969.88,11747641389.69,,18429902631.96,,,,40231930342.88,,,,,,63431985986.9,23200055644.02,,,1
|
||||||
|
300750.SZ,20210428,20210428,20201231,1,1,4,6103918052.46,772394855.22,54002988575.54,151928522.94,,,,,,,,,,,,6397335867.06,60552252965.54,33461951736.87,4027848128.71,2265587429.63,,,,,,2366963038.37,42122350333.58,18429902631.96,2735874410.58,44779761.91,24087086.33,24649.08,,2804765907.9,13302355759.04,4088418479.98,,466447835.43,,17857222074.45,-15052456166.55,9450920678.78,,13199266407.5,43186548078.44,-3068497270.4043,4743701233.75,898809819.12,7825842.99,112602486.19,5755113539.06,37431434539.38,-576950661.91,40231930342.88,23200055644.02,63431985986.9,20536360992.16,923523424.41,,1169471948.67,4576797794.5,135243814.08,155847906.24,,,9890379.23,47137042.0,-286915936.0,26192466.45,-772834310.15,-5673139.63,-2401630461.19,-3415569969.88,11747641389.69,,18429902631.96,,,,40231930342.88,,,,,,63431985986.9,23200055644.02,,,0
|
||||||
|
300750.SZ,20201028,20201028,20200930,1,1,3,,,36371199567.28,114482857.95,,,,,,,,,,,,4825316285.67,41310998710.9,24822097581.29,2823360855.95,1745908648.26,,,,,,1613706843.31,31005073928.81,10305924782.09,1700046486.01,,12374592.63,3684.0,,1712424762.64,8050755719.05,2201534043.13,,40151993.35,,10292441755.53,-8580016992.89,6318374370.91,,13199242930.24,39964978293.31,-7205651306.8712,3594856317.38,749851132.13,,52137357.55,4396844807.06,35568133486.25,97997833.83,37392039109.28,23200055644.02,60592094753.3,20447360992.16,834523424.41,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20200827,20200827,20200630,1,1,2,2143918030.12,217908314.21,24016663944.28,32332645.46,,,,,,,,,,,,2438827143.57,26487823733.31,16188323898.87,1903680069.18,1340543579.11,,,,,,1228723296.81,20661270843.97,5826552889.34,2852419271.07,,1765869.0,,,2854185140.07,5162370937.5,70700000.0,,148983251.15,,5382054188.65,-2527869048.58,4165228444.2,,2997600000.0,7971818444.2,-2911607178.1347,1643262959.49,657716347.49,,370675928.14,2671655235.12,5300163209.08,28838388.11,8627685437.95,23200055644.02,31827741081.97,808990000.0,808990000.0,,460355170.89,2316114146.94,67472468.68,79375064.46,,,,7116807.84,-286915936.0,369373574.54,-271258312.84,-13561794.14,2092973405.33,4116138675.55,-5587341718.38,,5826552889.34,,,,8627685437.95,,,,,,31827741081.97,23200055644.02,,,0
|
||||||
|
300750.SZ,20200827,20200827,20200630,1,1,2,2143918030.12,217908314.21,24016663944.28,32332645.46,,,,,,,,,,,,2438827143.57,26487823733.31,16188323898.87,1903680069.18,1340543579.11,,,,,,1228723296.81,20661270843.97,5826552889.34,2852419271.07,,1765869.0,,,2854185140.07,5162370937.5,70700000.0,,148983251.15,,5382054188.65,-2527869048.58,4165228444.2,,2997600000.0,7971818444.2,-2911607178.1347,1643262959.49,657716347.49,,370675928.14,2671655235.12,5300163209.08,28838388.11,8627685437.95,23200055644.02,31827741081.97,808990000.0,808990000.0,,460355170.89,2316114146.94,67472468.68,79375064.46,,,,7116807.84,-286915936.0,369373574.54,-271258312.84,-13561794.14,2092973405.33,4116138675.55,-5587341718.38,,5826552889.34,,,,8627685437.95,,,,,,31827741081.97,23200055644.02,,,1
|
||||||
|
300750.SZ,20200428,20200428,20200331,1,1,1,,,12250452196.35,10316194.85,,,,,,,,,,,,1641626275.85,13902394667.05,8196211578.47,903620974.34,818014513.49,,,,,,837797285.07,10755644351.37,3146750315.68,876367408.52,,,,,876367408.52,2076740551.31,17200000.0,,172332000.0,,2266272551.31,-1389905142.79,1794510100.02,,2997600000.0,5076600100.02,-2428145279.3035,671702027.85,89478420.27,,357122140.52,1118302588.64,3958297511.38,6655507.93,5721798192.2,23200055644.02,28921853836.22,284490000.0,284490000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20200425,20200425,20191231,1,1,4,5012673897.87,270468281.25,52149078427.56,395686584.53,,,,,,,,,,,,3763244302.06,56308009314.15,33260080970.87,3704062487.97,2688800053.78,,,,,,3183111244.73,42836054757.35,13471954556.8,15477402748.49,0.23,2563085.15,15088255.27,10026813.18,15505080902.32,9626986411.07,907758218.55,,3114021020.85,,13648765650.47,1856315251.85,4616632167.94,,1498800000.0,7333217057.62,-817733.8461,2418452429.42,573302388.77,,173132704.46,3164887522.65,4168329534.97,14801651.37,19511400994.99,3688654649.03,23200055644.02,1217784889.68,721974398.68,,1670005549.8,4137828483.56,113911953.13,157299905.57,,,-1382204.06,18928639.15,-27331582.1,-20752318.89,-838669146.42,50207460.38,-5775387378.74,-4768945377.05,12637959848.72,,13471954556.8,,,,19511400994.99,,,,,,23200055644.02,3688654649.03,,,0
|
||||||
|
300750.SZ,20200425,20200425,20191231,1,1,4,5012673897.87,270468281.25,52149078427.56,395686584.53,,,,,,,,,,,,3763244302.06,56308009314.15,33260080970.87,3704062487.97,2688800053.78,,,,,,3183111244.73,42836054757.35,13471954556.8,15477402748.49,0.23,2563085.15,15088255.27,10026813.18,15505080902.32,9626986411.07,907758218.55,,3114021020.85,,13648765650.47,1856315251.85,4616632167.94,,1498800000.0,7333217057.62,-817733.8461,2418452429.42,573302388.77,,173132704.46,3164887522.65,4168329534.97,14801651.37,19511400994.99,3688654649.03,23200055644.02,1217784889.68,721974398.68,,1670005549.8,4137828483.56,113911953.13,157299905.57,,,-1382204.06,18928639.15,-27331582.1,-20752318.89,-838669146.42,50207460.38,-5775387378.74,-4768945377.05,12637959848.72,,13471954556.8,,,,19511400994.99,,,,,,23200055644.02,3688654649.03,,,1
|
||||||
|
300750.SZ,20191026,20191026,20190930,1,1,3,,,38036360575.38,163298908.7,,,,,,,,,,,,1774836858.05,39974496342.13,23046083793.97,2611212349.97,2332476003.68,,,,,,1659794653.67,29649566801.29,10324929540.84,15178453020.7,,2563085.15,14210702.04,,15195226807.89,6661477871.25,321750000.0,,932156630.0,,7915384501.25,7279842306.64,3058463176.85,,,4001503667.85,596534389.9903,1693048366.19,492320693.78,,62601933.18,2247970993.15,1753532674.7,23661063.46,19381965585.64,3688654649.03,23070620234.67,943040491.0,447230000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
300750.SZ,20191026,20191026,20190930,1,1,3,,,38036360575.38,163298908.7,,,,,,,,,,,,1774836858.05,39974496342.13,23046083793.97,2611212349.97,2332476003.68,,,,,,1659794653.67,29649566801.29,10324929540.84,15178453020.7,,2563085.15,14210702.04,,15195226807.89,6661477871.25,321750000.0,,932156630.0,,7915384501.25,7279842306.64,3058463176.85,,,4001503667.85,1039486288.1869,1693048366.19,492320693.78,,62601933.18,2247970993.15,1753532674.7,23661063.46,19381965585.64,3688654649.03,23070620234.67,943040491.0,447230000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20190824,20190824,20190630,1,1,2,2346495300.44,87744066.16,24838903624.97,109269862.19,,,,,,,,,,,,781516763.62,25729690250.78,13700891263.83,1752894045.03,1655079077.44,,,,,,1344522955.73,18453387342.03,7276302908.75,2657818813.56,,,,,2657818813.56,4623112893.49,90750000.0,,,,4713862893.49,-2056044079.93,1354369492.97,,,1796249492.97,5528716163.5267,1222988045.56,121183356.39,,45862760.81,1390034162.76,406215330.21,15718117.48,5642192276.51,3688654649.03,9330846925.54,441880000.0,441880000.0,,530322585.73,1817060732.44,52188372.72,71233411.93,,,-305715.96,6164952.02,,-8807709.54,-495832311.39,17405342.8,-3575604570.39,-2426304894.46,8706398499.9,148144846.35,7276302908.75,,,,5642192276.51,,,,,,9330846925.54,3688654649.03,,,0
|
||||||
|
300750.SZ,20190824,20190824,20190630,1,1,2,2346495300.44,87744066.16,24838903624.97,109269862.19,,,,,,,,,,,,781516763.62,25729690250.78,13700891263.83,1752894045.03,1655079077.44,,,,,,1344522955.73,18453387342.03,7276302908.75,2657818813.56,,,,,2657818813.56,4623112893.49,90750000.0,,,,4713862893.49,-2056044079.93,1354369492.97,,,1796249492.97,5783236226.2656,1222988045.56,121183356.39,,45862760.81,1390034162.76,406215330.21,15718117.48,5642192276.51,3688654649.03,9330846925.54,441880000.0,441880000.0,,530322585.73,1817060732.44,52188372.72,71233411.93,,,-305715.96,6164952.02,,-8807709.54,-495832311.39,17405342.8,-3575604570.39,-2426304894.46,8706398499.9,,7276302908.75,,,,5642192276.51,,,,,,9330846925.54,3688654649.03,,,1
|
||||||
|
300750.SZ,20190427,20190427,20190331,1,1,1,,,12878552646.43,299432.71,,,,,,,,,,,,421498351.55,13300350430.69,6221938005.9,748693434.59,701069344.37,,,,,,651798444.58,8323499229.44,4976851201.25,14605433.53,,,,,14605433.53,2019864308.52,75250000.0,,626495569.66,,2721609878.18,-2707004444.65,274025394.22,,,715025394.22,4255915886.1405,279493169.29,61759955.59,,24669985.03,365923109.91,349102284.31,-22720393.29,2596228647.62,3688654649.03,6284883296.65,441000000.0,441000000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20190425,20190425,20181231,1,1,4,3735896487.72,262258592.79,33853639616.99,37127687.41,,,,,,,,,,,,2274383357.82,36165150662.22,19041614626.94,2299961469.07,1868081717.0,,,,,,1639227148.68,24848884961.69,11316265700.53,70629509.16,5258600.0,3655688.2,294506.1,,79838303.46,6629274672.98,192025942.3,,12746210861.04,,19567511476.32,-19487673172.86,4123196326.07,,510282473.44,10908434734.88,5771848024.1698,3493721841.0,216119536.13,,155877429.51,3865718806.64,7042715928.24,27440781.07,-1101250763.02,4789905412.05,3688654649.03,6274955935.37,108785163.6,,974912150.01,2125110234.63,95733856.19,83377065.66,,,91538964.57,15782022.0,314247518.1,-184397531.48,-669755258.27,15459358.23,-4371312786.43,-3143244270.65,11851141407.59,119517889.87,11316265700.53,,,,-1101250763.02,,,,,,3688654649.03,4789905412.05,,,0
|
||||||
|
300750.SZ,20190425,20190425,20181231,1,1,4,3735896487.72,262258592.79,33853639616.99,37127687.41,,,,,,,,,,,,2274383357.82,36165150662.22,19041614626.94,2299961469.07,1868081717.0,,,,,,1639227148.68,24848884961.69,11316265700.53,70629509.16,5258600.0,3655688.2,294506.1,,79838303.46,6629274672.98,192025942.3,,12746210861.04,,19567511476.32,-19487673172.86,4123196326.07,,510282473.44,10908434734.88,5771848024.1698,3493721841.0,216119536.13,,155877429.51,3865718806.64,7042715928.24,27440781.07,-1101250763.02,4789905412.05,3688654649.03,6274955935.37,108785163.6,,974912150.01,2125110234.63,95733856.19,83377065.66,,,91538964.57,15782022.0,314247518.1,-184397531.48,-669755258.27,15459358.23,-4371312786.43,-3143244270.65,11851141407.59,,11316265700.53,,,,-1101250763.02,,,,,,3688654649.03,4789905412.05,,,1
|
||||||
|
300750.SZ,20181026,20181026,20180930,1,1,3,,,21070111447.41,301325611.35,,,,,,,,,,,,704920707.06,22076357765.82,12588299955.24,1554320363.04,1269800694.62,,,,,,1060506072.64,16472927085.54,5603430680.28,397786320.4,,3660866.63,,,401447187.03,4003526664.32,188726677.3,,10556014049.83,,14748267391.45,-14346820204.42,3098388086.68,,,9412815605.34,163613248.4859,2282129396.03,154081142.29,,185815261.12,2622025799.44,6790789805.9,24982414.85,-1927617303.39,4789905412.05,2862288108.66,6314427518.66,108785163.6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
300750.SZ,20180824,20180824,20180630,1,1,2,1069893694.3,-97443594.11,11349245325.45,145178535.71,,,,,,,,,,,,560299594.35,12054723455.51,8740027942.34,976570165.74,671456234.75,,,,,,608343009.72,10996397352.55,1058326102.96,216767226.15,,3206903.36,,,219974129.51,2506446403.66,103842000.0,,6573449373.0,,9183737776.66,-8963763647.15,2683586736.64,,,8113178621.7,-2883539480.9055,1688445920.37,93782534.45,,114716247.56,1896944702.38,6216233919.32,5815768.51,-1683387856.36,4789905412.05,3106517555.69,5429591885.06,67650590.0,,207126112.45,934646157.43,46852863.98,36271274.26,,,2444993.47,,,-59838864.61,-198227130.98,-973329.73,-1662466492.98,474319090.22,266011187.56,,1058326102.96,,,,-1683387856.36,,,,,,3106517555.69,4789905412.05,,,0
|
||||||
|
300750.SZ,20180522,20180522,20180331,1,1,1,469264488.71,65166429.44,2561651184.82,136600925.36,,,,,,,,,,,,211514708.3,2909766818.48,4899971184.88,451661730.79,339098883.01,,,,,,488869504.21,6179601302.89,-3269834484.41,4220209248.47,,,,,4220209248.47,1667611627.4,,,151925834.11,,1819537461.51,2400671786.96,997738375.18,,20695110.88,1037619613.06,-4701407794.046,1052569621.31,42973564.05,,66470960.3,1162014145.66,-124394532.6,-13184201.95,-1006741432.0,4789905412.05,3783163980.05,19186127.0,19186127.0,,127717465.75,418689739.66,22774627.17,14666290.5,,,328223.0,,,-27972938.86,-70034407.27,,-606145268.44,-2419349974.35,-1284794230.57,19855070.85,-3269834484.41,,,,-1006741432.0,,,,,,3783163980.05,4789905412.05,,,0
|
||||||
|
300750.SZ,20180522,20180522,20171231,1,1,4,4194056577.66,112588566.26,18872908615.92,21013193.89,,,,,,,,,,,,529176792.58,19423098602.39,12357592298.17,2122637417.2,1493296692.69,,,,,,1108823984.08,17082350392.14,2340748210.25,758831340.52,448002008.14,2565089.09,572921.94,,1209971359.69,7180281117.24,1665503314.78,,656.0,,8845785088.02,-7635813728.33,4476769278.83,,9028894.69,10664444151.52,4099608510.9298,1421628377.86,81600198.58,,228481941.8,1731710518.24,8932733633.28,-13763656.75,3623904458.45,1166000953.6,4789905412.05,6178645978.0,1168645100.0,,244744030.88,1279538608.41,75101189.69,26541967.12,,,78311541.52,,,-1344305303.77,-245133190.87,-2604999.44,-2290181545.88,-5075995986.77,5163299958.56,124786796.88,2340748210.25,,,,3623904458.45,,,,,,4789905412.05,1166000953.6,,,0
|
||||||
|
300750.SZ,20181026,20181026,20170930,1,1,3,,,10333130705.0,18590039.13,,,,,,,,,,,,438765326.08,10790486070.21,9339844151.58,1447940056.29,973528442.38,,,,,,762537994.18,12523850644.43,-1733364574.22,1902846575.98,447302008.14,2565089.09,572921.94,,2353286595.15,5268771842.36,1293525820.0,,33801356.44,,6596099018.8,-4242812423.65,2560246872.03,,2626381.59,8738485131.62,,1367562190.03,58673275.89,,192651364.04,1618886829.96,7119598301.66,3054315.86,1146475619.65,1166000953.6,2312476573.25,6175611878.0,1168645100.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
300750.SZ,20171110,20171110,20170630,1,1,2,2020743800.0,34312300.0,6701189072.6,6314977.79,,,,,,,,,,,,236369322.05,6943873372.44,5680819173.2,954740070.6,544344685.49,,,,,,383613562.34,7563517491.63,-619644119.19,198806392.58,445502008.14,1122943.61,572921.94,,646004266.27,3978747353.07,651932500.0,,1534321000.0,,6165000853.07,-5518996586.8,1515912025.59,,,6599412903.59,-3817342677.722,1109776166.12,25777423.37,,184404131.28,1319957720.77,5279455182.82,2908894.84,-856276628.33,1166000953.6,309724325.27,5083500878.0,73500000.0,,49177200.0,477360300.0,31487700.0,5951300.0,,,2279700.0,,,-1245985200.0,-67539100.0,-997900.0,-2641681800.0,-1366773700.0,2082021300.0,,-619644100.0,,,,,,,,,,,,,,0
|
||||||
|
300750.SZ,20180522,20180522,20170331,1,1,1,24302205.99,15763102.24,3404527894.74,13236437.91,,,,,,,,,,,,362505387.34,3780269719.99,2722235315.54,369852769.21,238870764.39,,,,,,255577266.62,3586536115.76,193733604.23,51615559.94,,,,,51615559.94,2459107491.01,219204000.0,,1501137963.78,,4179449454.79,-4127833894.85,413910040.9,,66308848.89,3990218891.79,,969797476.02,12861203.02,,75330960.74,1057989639.78,2932229252.01,-352048.57,-1002223087.18,1166000953.6,163777866.42,3510000002.0,,,-7807006.14,289187792.31,14656308.34,1939204.66,,,322076.28,,,-85172231.78,-18053126.42,,-1157067016.01,962653382.55,116440384.84,36568527.37,193733604.23,,,,-1002223087.18,,,,,,163777866.42,1166000953.6,,,0
|
||||||
|
300750.SZ,20180522,20180522,20161231,1,1,4,2918436854.29,65609349.18,11524664337.65,1476437.43,,,,,,,,,,,,421522517.2,11947663292.28,5954917349.27,1249671965.87,1559891278.12,,,,,,1074055972.23,9838536565.49,2109126726.79,61944950.69,10027000.0,,5046154.0,,77018104.69,2800818908.69,262828666.62,,9441784763.04,,12505432338.35,-12428414233.66,1930654288.91,,747351550.61,13809851365.52,-10067555462.0948,937312259.12,53696810.21,,1847820297.11,2838829366.44,10971021999.08,-2077449.43,649657042.78,516343910.82,1166000953.6,11131845526.0,7840000.0,,233858870.04,731417250.67,47998770.85,5071074.74,,,158205248.94,,,-76080348.84,-129670575.05,-2090649.0,-320169108.33,-14762136096.64,13031595453.28,207080632.66,2109126726.79,,,,649657042.78,,,,,,1166000953.6,516343910.82,,,0
|
||||||
|
300750.SZ,20180522,20180522,20151231,1,1,4,950581074.45,113184042.2,4153743551.55,670144.46,,,,,,,,,,,,221173494.7,4375587190.71,2302132506.69,437554338.26,474554245.93,,,,,,496812115.82,3711053206.7,664533984.01,1088566666.05,,,,,1088566666.05,1553786649.12,,173225298.0,2900000.0,,1729911947.12,-641345281.07,830867703.13,,893371268.45,1874742721.58,1290805842.4247,628641795.8,69496886.29,,736699312.71,1434837994.8,439904726.78,-800509.91,462292919.81,54050991.01,516343910.82,150503750.0,500000.0,,58641678.66,164100734.24,24986934.33,3237903.35,,,590103.88,,,-1455431.76,-110143619.54,-2194284.46,-697915929.01,-2315594532.87,2476515310.54,,664533984.01,,,,462292919.81,,,,,,516343910.82,54050991.01,,,0
|
||||||
|
300750.SZ,20171110,20171110,20141231,1,1,4,55563800.0,24221600.0,732813440.92,4165547.69,,,,,,,,,,,,11345197.89,748324186.5,601009216.98,98419099.09,28689220.56,,,,,,159111051.94,887228588.57,-138904402.07,3180178.72,,,,,3180178.72,300525204.81,,,976061675.94,,1276586880.75,-1273406702.03,201635144.87,,1556561925.62,1782597070.49,,4760000.0,4752841.5,,307574012.42,317086853.92,1465510216.57,-4995362.09,48203750.38,5847240.63,54050991.01,24400000.0,24400000.0,,2591100.0,44569700.0,22656600.0,64800.0,,,102500.0,,,-16117600.0,-19814600.0,,-220368300.0,-313910300.0,281536200.0,,-138904400.0,,,,,,,,,,,,,,0
|
||||||
|
35
data/CN/300750.SZ/raw_dividends_raw.csv
Normal file
35
data/CN/300750.SZ/raw_dividends_raw.csv
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
end_date,ex_date,div_proc,cash_div
|
||||||
|
20250630,,预案,0.0
|
||||||
|
20250630,20250820,实施,1.007
|
||||||
|
20241231,,预案,0.0
|
||||||
|
20241231,,股东大会通过,0.0
|
||||||
|
20241231,20250422,实施,2.24
|
||||||
|
20241211,,预案,0.0
|
||||||
|
20241211,,股东大会通过,0.0
|
||||||
|
20241211,20250124,实施,1.23
|
||||||
|
20240630,,预案,0.0
|
||||||
|
20231231,,预案,0.0
|
||||||
|
20231231,,股东大会通过,0.0
|
||||||
|
20231231,20240430,实施,5.028
|
||||||
|
20230630,,预案,0.0
|
||||||
|
20221231,,预案,0.0
|
||||||
|
20221231,,股东大会通过,0.0
|
||||||
|
20221231,20230426,实施,2.52
|
||||||
|
20220630,,预案,0.0
|
||||||
|
20220630,,股东大会通过,0.0
|
||||||
|
20220630,20220928,实施,0.6528
|
||||||
|
20211231,,预案,0.0
|
||||||
|
20211231,,股东大会通过,0.0
|
||||||
|
20210630,,预案,0.0
|
||||||
|
20201231,,预案,0.0
|
||||||
|
20201231,,股东大会通过,0.0
|
||||||
|
20201231,20210705,实施,0.240048
|
||||||
|
20200630,,预案,0.0
|
||||||
|
20191231,,预案,0.0
|
||||||
|
20191231,,股东大会通过,0.0
|
||||||
|
20191231,20200604,实施,0.2201281
|
||||||
|
20190630,,预案,0.0
|
||||||
|
20181231,,预案,0.0
|
||||||
|
20181231,,股东大会通过,0.0
|
||||||
|
20181231,20190722,实施,0.142037
|
||||||
|
20180630,,预案,0.0
|
||||||
|
1778
data/CN/300750.SZ/raw_historical_metrics_daily_basic.csv
Normal file
1778
data/CN/300750.SZ/raw_historical_metrics_daily_basic.csv
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,37 @@
|
|||||||
|
ts_code,ann_date,end_date,holder_num
|
||||||
|
300750.SZ,20250731,20250630,226368
|
||||||
|
300750.SZ,20250415,20250331,226327
|
||||||
|
300750.SZ,20250315,20250228,208828
|
||||||
|
300750.SZ,20250315,20241231,212061
|
||||||
|
300750.SZ,20241019,20240930,229043
|
||||||
|
300750.SZ,20240727,20240630,237334
|
||||||
|
300750.SZ,20240416,20240331,250264
|
||||||
|
300750.SZ,20240316,20240229,260219
|
||||||
|
300750.SZ,20240316,20231231,260992
|
||||||
|
300750.SZ,20231020,20230930,233256
|
||||||
|
300750.SZ,20230726,20230630,217464
|
||||||
|
300750.SZ,20230421,20230331,206031
|
||||||
|
300750.SZ,20230310,20230228,195845
|
||||||
|
300750.SZ,20230310,20221231,183317
|
||||||
|
300750.SZ,20221022,20220930,185383
|
||||||
|
300750.SZ,20220824,20220630,150353
|
||||||
|
300750.SZ,20220422,20220331,140911
|
||||||
|
300750.SZ,20220430,20220331,140911
|
||||||
|
300750.SZ,20220422,20211231,141963
|
||||||
|
300750.SZ,20211028,20210930,134193
|
||||||
|
300750.SZ,20210826,20210630,135198
|
||||||
|
300750.SZ,20210430,20210331,182794
|
||||||
|
300750.SZ,20210428,20210331,182794
|
||||||
|
300750.SZ,20210428,20201231,133060
|
||||||
|
300750.SZ,20201028,20200930,131130
|
||||||
|
300750.SZ,20200827,20200630,121586
|
||||||
|
300750.SZ,20200428,20200331,150855
|
||||||
|
300750.SZ,20200425,20200331,150855
|
||||||
|
300750.SZ,20200425,20191231,76710
|
||||||
|
300750.SZ,20191026,20190930,94339
|
||||||
|
300750.SZ,20190824,20190630,80513
|
||||||
|
300750.SZ,20190427,20190331,76045
|
||||||
|
300750.SZ,20190425,20181231,82514
|
||||||
|
300750.SZ,20181026,20180930,99847
|
||||||
|
300750.SZ,20180824,20180630,164739
|
||||||
|
300750.SZ,20180608,20180611,368718
|
||||||
|
53
data/CN/300750.SZ/raw_income_statement.csv
Normal file
53
data/CN/300750.SZ/raw_income_statement.csv
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
ts_code,ann_date,f_ann_date,end_date,report_type,comp_type,end_type,basic_eps,diluted_eps,total_revenue,revenue,int_income,prem_earned,comm_income,n_commis_income,n_oth_income,n_oth_b_income,prem_income,out_prem,une_prem_reser,reins_income,n_sec_tb_income,n_sec_uw_income,n_asset_mg_income,oth_b_income,fv_value_chg_gain,invest_income,ass_invest_income,forex_gain,total_cogs,oper_cost,int_exp,comm_exp,biz_tax_surchg,sell_exp,admin_exp,fin_exp,assets_impair_loss,prem_refund,compens_payout,reser_insur_liab,div_payt,reins_exp,oper_exp,compens_payout_refu,insur_reser_refu,reins_cost_refund,other_bus_cost,operate_profit,non_oper_income,non_oper_exp,nca_disploss,total_profit,income_tax,n_income,n_income_attr_p,minority_gain,oth_compr_income,t_compr_income,compr_inc_attr_p,compr_inc_attr_m_s,ebit,ebitda,insurance_exp,undist_profit,distable_profit,rd_exp,fin_exp_int_exp,fin_exp_int_inc,transfer_surplus_rese,transfer_housing_imprest,transfer_oth,adj_lossgain,withdra_legal_surplus,withdra_legal_pubfund,withdra_biz_devfund,withdra_rese_fund,withdra_oth_ersu,workers_welfare,distr_profit_shrhder,prfshare_payable_dvd,comshare_payable_dvd,capit_comstock_div,continued_net_profit,update_flag
|
||||||
|
300750.SZ,20251021,20251021,20250930,1,1,3,11.02,11.02,283071987000.0,283071987000.0,,,,,,,,,,,,,,,878537000.0,5236818000.0,4943750000.0,,236417478000.0,211427147000.0,,,1843066000.0,2408522000.0,8231715000.0,-7015786000.0,-4077847000.0,,,,,,,,,,,60552312000.0,372284000.0,212195000.0,,60712402000.0,8415535000.0,52296866000.0,49034109000.0,3262757000.0,7455238000.0,59752104000.0,56472049000.0,3280055000.0,51409807000.0,,,,,15067826000.0,2183477000.0,8060682000.0,,,,,,,,,,,,,,,52296866000.0,1
|
||||||
|
300750.SZ,20250731,20250731,20250630,1,1,2,6.92,6.92,178886253000.0,178886253000.0,,,,,,,,,,,,,,,178363000.0,2875693000.0,2981557000.0,,149241453000.0,134123603000.0,,,1245850000.0,1621425000.0,5127530000.0,-5821810000.0,-2498964000.0,,,,,,,,,,,38820520000.0,168476000.0,176496000.0,,38812500000.0,6447053000.0,32365447000.0,30485139000.0,1880308000.0,1376911000.0,33742358000.0,31804164000.0,1938194000.0,30541999000.0,42915712000.0,,,,10094566000.0,1557999000.0,5125146000.0,,,,,,,,,,,,,,,32365447000.0,1
|
||||||
|
300750.SZ,20250415,20250415,20250331,1,1,1,3.18,3.18,84704589000.0,84704589000.0,,,,,,,,,,,,,,,25565000.0,1339222000.0,1469564000.0,,71833284000.0,64030111000.0,,,559098000.0,852316000.0,2623930000.0,-2287911000.0,-1109939000.0,,,,,,,,,,,17340443000.0,108032000.0,73444000.0,,17375031000.0,2513397000.0,14861634000.0,13962558000.0,899076000.0,614450000.0,15476084000.0,14508266000.0,967818000.0,14776292000.0,,,,,4814003000.0,782951000.0,2384036000.0,,,,,,,,,,,,,,,14861634000.0,1
|
||||||
|
300750.SZ,20250415,20250415,20250331,1,1,1,3.18,3.18,84704589000.0,84704589000.0,,,,,,,,,,,,,,,25565000.0,1339222000.0,1469564000.0,,71833284000.0,64030111000.0,,,559098000.0,852316000.0,2623930000.0,-2287911000.0,-1109939000.0,,,,,,,,,,,17340443000.0,108032000.0,73444000.0,,17375031000.0,2513397000.0,14861634000.0,13962558000.0,899076000.0,614450000.0,15476084000.0,14508266000.0,967818000.0,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
300750.SZ,20250315,20250315,20241231,1,1,4,11.58,11.58,362012554000.0,362012554000.0,,,,,,,,,,,,,,,664223000.0,3987823000.0,3743040000.0,,312599750000.0,273518959000.0,,,2057466000.0,3562797000.0,9689839000.0,-4131918000.0,-8423325000.0,,,,,,,,,,,64051799000.0,135422000.0,1005182000.0,,63182039000.0,9175245000.0,54006794000.0,50744682000.0,3262113000.0,-1687613000.0,52319181000.0,48940398000.0,3378782000.0,61464661000.0,86402589000.0,,,,18606756000.0,3879076000.0,9502997000.0,,,,,,,,,,,,,,,54006794000.0,1
|
||||||
|
300750.SZ,20241019,20241019,20240930,1,1,3,8.1894,8.1829,259044748600.0,259044748600.0,,,,,,,,,,,,,,,190410200.0,3127166700.0,2712745400.0,,223014892600.0,186032900900.0,,,1557473800.0,10927707300.0,6774455800.0,-2894208700.0,-6651709400.0,,,,,,,,,,,46125749700.0,142603700.0,547867400.0,,45720486000.0,6987230700.0,38733255300.0,36001073800.0,2732181500.0,-568007300.0,38165248000.0,35252110200.0,2913137800.0,46518082900.0,,,,,13073136100.0,2966060400.0,7126535700.0,,,,,,,,,,,,,,,38733255300.0,1
|
||||||
|
300750.SZ,20240727,20240727,20240630,1,1,2,5.2017,5.1975,166766833600.0,166766833600.0,,,,,,,,,,,,,,,-24331900.0,2076994500.0,1916680600.0,,144640149400.0,122517848800.0,,,973678300.0,7004983100.0,4391272500.0,-1183454700.0,-1913611600.0,,,,,,,,,,,29554566300.0,85083600.0,189697800.0,,29449952100.0,4571096800.0,24878855300.0,22864987400.0,2013867900.0,-1936799500.0,22942055800.0,20773319800.0,2168736000.0,27019052300.0,39241814300.0,,,,8592452400.0,2059047700.0,5009250600.0,,,,,,,,,,,,,,,24878855300.0,1
|
||||||
|
300750.SZ,20240416,20240416,20240331,1,1,1,2.3909,2.389,79770778600.0,79770778600.0,,,,,,,,,,,,,,,-73450400.0,817635400.0,665871400.0,,70391729300.0,58698906300.0,,,574391200.0,3386939900.0,2303072500.0,312941500.0,-507556600.0,,,,,,,,,,,13332747100.0,26663000.0,159187800.0,,13200222200.0,2004579400.0,11195642900.0,10509923200.0,685719700.0,-229046000.0,10966596800.0,10105445100.0,861151800.0,13405371900.0,,,,,4340204800.0,1048364500.0,2632483700.0,,,,,,,,,,,,,,,11195642900.0,1
|
||||||
|
300750.SZ,20240316,20240316,20231231,1,1,4,11.79,11.779,400917044900.0,400917044900.0,,,,,,,,,,,,,,,46270400.0,3189201200.0,3745762000.0,,356718585800.0,309070434000.0,,,1695507700.0,17954440500.0,8461824300.0,-4927697400.0,-5853926900.0,,,,,,,,,,,53718302100.0,503675200.0,307924000.0,,53914053300.0,7153018800.0,46761034500.0,44121248300.0,2639786100.0,-4711859000.0,42049175500.0,39568104200.0,2481071300.0,51182922200.0,73828904000.0,,,,18356108400.0,3446515800.0,8321802100.0,,,,,,,,,,,,,,,46761034500.0,1
|
||||||
|
300750.SZ,20231020,20231020,20230930,1,1,3,7.0958,7.0844,294677250600.0,294677250600.0,,,,,,,,,,,,,,,215302500.0,2189770600.0,1307678000.0,,264479515000.0,230096038100.0,,,1105082900.0,10222106900.0,6917820800.0,-1833890000.0,-2848221100.0,,,,,,,,,,,37015470400.0,416987300.0,266043400.0,,37166414300.0,4650152200.0,32516262100.0,31145473600.0,1370788600.0,-2958450600.0,29557811600.0,28154741800.0,1403069700.0,35611604300.0,,,,,14875734500.0,2317681200.0,5683966700.0,,,,,,,,,,,,,,,32516262100.0,1
|
||||||
|
300750.SZ,20230726,20230726,20230630,1,1,2,4.7201,4.7125,189246041300.0,189246041300.0,,,,,,,,,,,,,,,213283400.0,1417699300.0,568276700.0,,168529510800.0,148305934100.0,,,638811900.0,6699756700.0,4512280500.0,-3159346300.0,-1903493700.0,,,,,,,,,,,25357423300.0,300135500.0,188482100.0,,25469076700.0,3995875200.0,21473201500.0,20717264500.0,755937000.0,-1808645700.0,19664555800.0,18925205800.0,739350000.0,20863805500.0,31032137200.0,,,,9850086700.0,1450307700.0,3627578200.0,,,,,,,,,,,,,,,21473201500.0,1
|
||||||
|
300750.SZ,20230421,20230421,20230331,1,1,1,4.0332,4.0215,89038465300.0,89038465300.0,,,,,,,,,,,,,,,112896900.0,1527471300.0,587107500.0,,80044922600.0,70101011700.0,,,274706600.0,2916572500.0,1851067100.0,-466751900.0,-1092544100.0,,,,,,,,,,,12016687500.0,174634200.0,179823800.0,,12011497900.0,1930890700.0,10080607200.0,9822265100.0,258342100.0,-2911771700.0,7168835500.0,6849115100.0,319720400.0,10986170900.0,,,,,4652229200.0,694811000.0,1723865300.0,,,,,,,,,,,,,,,10080607200.0,1
|
||||||
|
300750.SZ,20230310,20230310,20221231,1,1,4,12.9178,12.8795,328593987500.0,328593987500.0,,,,,,,,,,,,,,,400241300.0,2514538600.0,2614517000.0,,297718806500.0,262049609200.0,,,907484500.0,11099401200.0,6978669400.0,-2799985800.0,-2826926600.0,,,,,,,,,,,36821983000.0,159426800.0,308553600.0,,36672856200.0,3215712700.0,33457143500.0,30729163500.0,2727980100.0,5046510500.0,38503654000.0,35452143600.0,3051510400.0,31406613600.0,44659154600.0,,,,15510453500.0,2132375400.0,3987365200.0,,,,,,,,,,,,,,,33457143500.0,0
|
||||||
|
300750.SZ,20230310,20230310,20221231,1,1,4,12.9178,12.8795,328593987500.0,328593987500.0,,,,,,,,,,,,,,,400241300.0,2514538600.0,2614517000.0,,297718806500.0,262049609200.0,,,907484500.0,11099401200.0,6978669400.0,-2799985800.0,-2826926600.0,,,,,,,,,,,36821983000.0,159426800.0,308553600.0,,36672856200.0,3215712700.0,33457143500.0,30729163500.0,2727980100.0,5046510500.0,38503654000.0,35452143600.0,3051510400.0,31406613600.0,44659154600.0,,,,15510453500.0,2132375400.0,3987365200.0,,,,,,,,,,,,,,,33457143500.0,1
|
||||||
|
300750.SZ,20221022,20221022,20220930,1,1,3,7.4704,7.4317,210340240500.0,210340240500.0,,,,,,,,,,,,,,,262789100.0,2744662400.0,2996607600.0,,192704656100.0,170480855400.0,,,568940800.0,7023199800.0,4471553700.0,-1842082800.0,-910439900.0,,,,,,,,,,,22458644500.0,115030000.0,246559100.0,,22327115300.0,2694951500.0,19632163800.0,17591591700.0,2040572100.0,3855361800.0,23487525600.0,21208643400.0,2278882300.0,18520693500.0,,,,,10576516000.0,1613622800.0,2602105100.0,,,,,,,,,,,,,,,19632163800.0,1
|
||||||
|
300750.SZ,20220824,20220824,20220630,1,1,2,3.5233,3.5047,112971257900.0,112971257900.0,,,,,,,,,,,,,,,215568200.0,1794546100.0,2019612300.0,,104388258600.0,91873351200.0,,,325839300.0,3467585200.0,2650226100.0,-357835300.0,-256621000.0,,,,,,,,,,,11683072000.0,79633500.0,52931500.0,,11709774000.0,2039812900.0,9669961200.0,8168034600.0,1501926500.0,1687656700.0,11357617900.0,10001392700.0,1356225200.0,9318827600.0,14666929800.0,,,,5768093100.0,1046506000.0,1440321000.0,,,,,,,,,,,,,,,9669961200.0,1
|
||||||
|
300750.SZ,20220430,20220430,20220331,1,1,1,0.6439,0.6405,48678419100.0,48678419100.0,,,,,,,,,,,,,,,,460911700.0,575976000.0,,47149190100.0,41627574200.0,,,158282700.0,1533477100.0,1245955100.0,-374100.0,5731600.0,,,,,,,,,,,2456137800.0,40882200.0,16663900.0,,2480356100.0,504896900.0,1975459100.0,1492804600.0,482654500.0,-1562500300.0,412958800.0,574861600.0,-161902800.0,1980534400.0,,,,,2568036600.0,488026200.0,661516300.0,,,,,,,,,,,,,,,1975459100.0,1
|
||||||
|
300750.SZ,20220422,20220422,20211231,1,1,4,6.876,6.8392,130355796400.0,130355796400.0,,,,,,,,,,,,,,,,1232699000.0,575836900.0,,113415030000.0,96093722300.0,,,486534200.0,4367869400.0,3368937100.0,-641200000.0,-2034437800.0,,,,,,,,,,,19823729200.0,183039700.0,119639800.0,,19887129100.0,2026399000.0,17860730100.0,15931317900.0,1929412300.0,3013987200.0,20874717400.0,19012644700.0,1862072600.0,18123376500.0,24560000600.0,,,,7691427600.0,1161100400.0,2323262000.0,,,,,,,,,,,,,,,17860730100.0,1
|
||||||
|
300750.SZ,20220422,20220422,20211231,1,1,4,6.876,6.8392,130355796400.0,130355796400.0,,,,,,,,,,,,,,,,1232699000.0,575836900.0,,113415030000.0,96093722300.0,,,486534200.0,4367869400.0,3368937100.0,-641200000.0,-2034437800.0,,,,,,,,,,,19823729200.0,183039700.0,119639800.0,,19887129100.0,2026399000.0,17860730100.0,15931317900.0,1929412300.0,3013987200.0,20874717400.0,19012644700.0,1862072600.0,18123376500.0,24560000600.0,,,,7691427600.0,1161100400.0,2323262000.0,,,,,,,,,,,,,,,17860730100.0,0
|
||||||
|
300750.SZ,20211028,20211028,20210930,1,1,3,3.3464,3.3323,73361545522.2,73361545522.2,,,,,,,,,,,,,,,,122219105.98,289494823.52,,63738850188.28,53179031934.71,,,333383540.3,2628002721.68,2226934203.99,-498402600.18,-1414630587.72,,,,,,,,,,,10891595620.99,68915266.17,86822687.86,,10873688199.3,1728706695.85,9144981503.45,7751145658.78,1393835844.67,1207017837.53,10351999340.98,8902714769.96,1449284571.02,11684094062.78,,,,,4594923266.82,721680591.36,1566751971.65,,,,,,,,,,,,,,,9144981503.45,1
|
||||||
|
300750.SZ,20210826,20210826,20210630,1,1,2,1.9416,1.9337,44074560629.16,44074560629.16,,,,,,,,,,,,,,,,117184251.12,225874649.39,,38515960372.41,32061735306.82,,,247186341.64,1593220857.92,1425297189.47,-422603555.91,-754103840.97,,,,,,,,,,,6316838359.17,56962628.74,38880638.18,,6334920349.73,1009812060.7,5325108289.03,4483787564.06,841320724.97,824254440.25,6149362729.28,5309066568.03,840296161.25,6545438974.9,9288553973.85,,,,2793753774.44,452359068.1,1070188235.09,,,,,,,,,,,,,,,5325108289.03,1
|
||||||
|
300750.SZ,20210430,20210430,20210331,1,1,1,0.8463,0.843,19166685223.52,19166685223.52,,,,,,,,,,,,,,,,6273485.03,39872868.34,,16759642781.58,13938104773.61,,,108324544.27,691753897.31,717159236.06,-199348756.05,-255909609.04,,,,,,,,,,,2806431714.88,20621617.04,31474885.15,,2795578446.77,451709061.44,2343869385.33,1954417236.62,389452148.71,-235029090.84,2108840294.49,1718301999.99,390538294.5,2856720791.99,,,,,1180785376.9,216287144.99,512078908.29,,,,,,,,,,,,,,,2343869385.33,1
|
||||||
|
300750.SZ,20210428,20210428,20201231,1,1,4,2.4942,2.4848,50319487697.2,50319487697.2,,,,,,,,,,,,,,,286915936.0,-117648607.8,-4027332.09,,44655315480.69,36349153592.22,,,295129893.6,2216709532.73,1768115240.89,-712642421.45,-827489419.04,,,,,,,,,,,6959489551.43,94318062.61,71254204.8,,6982553409.24,878635356.78,6103918052.46,5583338710.38,520579342.08,505828698.82,6609746751.28,6089512016.47,520234734.81,6289688334.33,11157577849.15,,,,3569377694.03,640434316.54,1494600958.67,,,,,,,,,,,,,,,6103918052.46,1
|
||||||
|
300750.SZ,20210428,20210428,20201231,1,1,4,2.4942,2.4848,50319487697.2,50319487697.2,,,,,,,,,,,,,,,286915936.0,-117648607.8,-4027332.09,,44655315480.69,36349153592.22,,,295129893.6,2216709532.73,1768115240.89,-712642421.45,-827489419.04,,,,,,,,,,,6959489551.43,94318062.61,71254204.8,,6982553409.24,878635356.78,6103918052.46,5583338710.38,520579342.08,505828698.82,6609746751.28,6089512016.47,520234734.81,6289688334.33,11157577849.15,,,,3569377694.03,640434316.54,1494600958.67,,,,,,,,,,,,,,,6103918052.46,0
|
||||||
|
300750.SZ,20201028,20201028,20200930,1,1,3,1.5243,1.519,31522480929.97,31522480929.97,,,,,,,,,,,,,,,286915936.0,-343565018.81,-53737069.45,,27956553133.24,22883453805.41,,,174855655.78,1301071521.09,1154240525.66,-691223489.56,-817760655.74,,,,,,,,,,,4428419699.07,51173766.54,45152299.35,,4434441166.26,752230680.19,3682210486.07,3356875043.55,325335442.52,287180494.46,3969390980.53,3629938925.63,339452054.9,5295486705.97,,,,,2120160102.4,386867863.89,1070748621.8,,,,,,,,,,,,,,,3682210486.07,1
|
||||||
|
300750.SZ,20201028,20201028,20200930,1,1,3,1.5243,1.519,31522480929.97,31522480929.97,,,,,,,,,,,,,,,286915936.0,-343565018.81,-53737069.45,,27956553133.24,22883453805.41,,,174855655.78,1301071521.09,1154240525.66,-691223489.56,-817760655.74,,,,,,,,,,,4428419699.07,51173766.54,45152299.35,,4434441166.26,752230680.19,3682210486.07,3356875043.55,325335442.52,287180494.46,3969390980.53,3629938925.63,339452054.9,5295486705.97,,,,,2120160102.4,386867863.89,1070748621.8,,,,,,,,,,,,,,,3682210486.07,0
|
||||||
|
300750.SZ,20200827,20200827,20200630,1,1,2,0.8833,0.8805,18829453132.97,18829453132.97,,,,,,,,,,,,,,,286915936.0,-406292308.07,-88395180.45,,16777260846.52,13717117142.14,,,101445380.16,792140085.18,809663593.83,-401913973.1,-338341629.6,,,,,,,,,,,2594040723.68,25328338.96,22713511.25,,2596655551.39,452737521.27,2143918030.12,1937281090.5,206636939.62,42364310.59,2186282340.71,1967490112.44,218792228.27,2311503122.65,4774464802.73,,,,1298453447.42,256688048.79,623732754.44,,,,,,,,,,,,,,,2143918030.12,0
|
||||||
|
300750.SZ,20200827,20200827,20200630,1,1,2,0.8833,0.8805,18829453132.97,18829453132.97,,,,,,,,,,,,,,,286915936.0,-406292308.07,-88395180.45,,16777260846.52,13717117142.14,,,101445380.16,792140085.18,809663593.83,-401913973.1,-338341629.6,,,,,,,,,,,2594040723.68,25328338.96,22713511.25,,2596655551.39,452737521.27,2143918030.12,1937281090.5,206636939.62,42364310.59,2186282340.71,1967490112.44,218792228.27,2311503122.65,4774464802.73,,,,1298453447.42,256688048.79,623732754.44,,,,,,,,,,,,,,,2143918030.12,1
|
||||||
|
300750.SZ,20200428,20200428,20200331,1,1,1,0.3406,0.3396,9030794052.46,9030794052.46,,,,,,,,,,,,,,,286915936.0,-348146749.47,-29567547.69,,8188919060.9,6764865485.58,,,54015270.55,352566282.28,412747503.97,-139684257.75,-96898077.07,,,,,,,,,,,1106046439.49,7194638.06,16264436.89,,1096976640.66,191963042.83,905013597.83,742043183.2,162970414.63,-118995658.48,786017939.35,651959025.75,134058913.6,1133338722.94,,,,,638663048.54,116204500.18,304532042.79,,,,,,,,,,,,,,,905013597.83,0
|
||||||
|
300750.SZ,20200428,20200428,20200331,1,1,1,0.3406,0.3396,9030794052.46,9030794052.46,,,,,,,,,,,,,,,286915936.0,-348146749.47,-29567547.69,,8188919060.9,6764865485.58,,,54015270.55,352566282.28,412747503.97,-139684257.75,-96898077.07,,,,,,,,,,,1106046439.49,7194638.06,16264436.89,,1096976640.66,191963042.83,905013597.83,742043183.2,162970414.63,-118995658.48,786017939.35,651959025.75,134058913.6,1312818614.89,,,,,638663048.54,116204500.18,304532042.79,,,,,,,,,,,,,,,905013597.83,1
|
||||||
|
300750.SZ,20200425,20200425,20191231,1,1,4,2.0937,2.0887,45788020642.41,45788020642.41,,,,,,,,,,,,,,,27331582.1,-79604902.02,-11899568.84,,40624707856.41,32482760512.62,,,272228105.62,2156553541.51,1832673929.87,-781621299.53,-1434329163.69,,,,,,,,,,,5758793258.1,62428112.63,60456806.48,,5760764564.25,748090666.38,5012673897.87,4560307432.71,452366465.16,957658852.86,5970332750.73,5517966285.57,452366465.16,5722463917.76,10131504260.02,,,,2992107516.52,289254465.49,1078256966.28,,,,,,,,,,,,,,,5012673897.87,0
|
||||||
|
300750.SZ,20200425,20200425,20191231,1,1,4,2.0937,2.0887,45788020642.41,45788020642.41,,,,,,,,,,,,,,,27331582.1,-79604902.02,-11899568.84,,40624707856.41,32482760512.62,,,272228105.62,2156553541.51,1832673929.87,-781621299.53,-1434329163.69,,,,,,,,,,,5758793258.1,62428112.63,60456806.48,,5760764564.25,748090666.38,5012673897.87,4560307432.71,452366465.16,957658852.86,5970332750.73,5517966285.57,452366465.16,5722463917.76,10131504260.02,,,,2992107516.52,289254465.49,1078256966.28,,,,,,,,,,,,,,,5012673897.87,1
|
||||||
|
300750.SZ,20191026,20191026,20190930,1,1,3,1.6002,1.5959,32855706536.08,32855706536.08,,,,,,,,,,,,,,,,-62620220.59,-7917302.55,,28894615247.49,23301405480.87,,,201508967.69,1477529588.94,1629018744.75,-632605668.62,-550692987.35,,,,,,,,,,,4446278015.84,46102640.95,34688668.76,,4457691988.03,697474456.56,3760217531.47,3464305267.56,295912263.91,971764392.34,4731981923.81,4436069659.9,295912263.91,5059302675.96,,,,,2255954070.6,192122654.09,828347798.84,,,,,,,,,,,,,,,3760217531.47,1
|
||||||
|
300750.SZ,20191026,20191026,20190930,1,1,3,1.6002,1.5959,32855706536.08,32855706536.08,,,,,,,,,,,,,,,,-62620220.59,-7917302.55,,28894615247.49,23301405480.87,,,201508967.69,1477529588.94,1629018744.75,-632605668.62,-550692987.35,,,,,,,,,,,4446278015.84,46102640.95,34688668.76,,4457691988.03,697474456.56,3760217531.47,3464305267.56,295912263.91,971764392.34,4731981923.81,4436069659.9,295912263.91,4534188607.12,,,,,2255954070.6,192122654.09,828347798.84,,,,,,,,,,,,,,,3760217531.47,0
|
||||||
|
300750.SZ,20190824,20190824,20190630,1,1,2,0.9674,0.9666,20263844170.44,20263844170.44,,,,,,,,,,,,,,,,-45894420.7,-6203272.34,,17726032155.44,14226726997.42,,,117905051.7,804073640.0,1061946966.06,-428054892.49,-421525991.07,,,,,,,,,,,2812549873.07,10005017.82,17588816.33,,2804966074.56,458470774.12,2346495300.44,2102435142.7,244060157.74,235561659.09,2582056959.53,2337996801.79,244060157.74,2945403830.85,4885886347.94,,,,1413111807.02,119945783.05,532991928.58,,,,,,,,,,,,,,,2346495300.44,0
|
||||||
|
300750.SZ,20190427,20190427,20190331,1,1,1,0.48,0.48,9981855666.38,9981855666.38,,,,,,,,,,,,,,,,16802477.33,2097769.4,,8817890513.83,7116134804.4,,,86639222.05,401176198.42,525048115.72,-110462345.72,36205911.5,,,,,,,,,,,1321125127.01,6548666.78,5256479.6,,1322417314.19,205595113.39,1116822200.8,1047233226.95,69588973.85,161477040.74,1278299241.54,1208710267.69,69588973.85,1426164772.5,,,,,748586098.54,58662867.4,255070916.72,,,,,,,,,,,,,,,1116822200.8,0
|
||||||
|
300750.SZ,20190425,20190425,20181231,1,1,4,1.6412,1.6407,29611265434.22,29611265434.22,,,,,,,,,,,,,,,-314247518.1,184397531.48,-4264014.31,,25729175371.38,19902284153.15,,,171183911.7,1378868425.55,1590659572.27,-279733226.14,974912150.01,,,,,,,,,,,4168476326.68,62303262.42,25966337.17,,4204813251.93,468916764.21,3735896487.72,3387035207.64,348861280.08,-585339219.51,3150557268.21,2801695988.13,348861280.08,4110132051.73,6414353208.21,,,,1991000384.84,204435332.83,565817388.3,,,,,,,,,,,,,,,3735896487.72,0
|
||||||
|
300750.SZ,20190425,20190425,20181231,1,1,4,1.6412,1.6407,29611265434.22,29611265434.22,,,,,,,,,,,,,,,-314247518.1,184397531.48,-4264014.31,,25729175371.38,19902284153.15,,,171183911.7,1378868425.55,1590659572.27,-279733226.14,974912150.01,,,,,,,,,,,4168476326.68,62303262.42,25966337.17,,4204813251.93,468916764.21,3735896487.72,3387035207.64,348861280.08,-585339219.51,3150557268.21,2801695988.13,348861280.08,4110132051.73,6414353208.21,,,,1991000384.84,204435332.83,565817388.3,,,,,,,,,,,,,,,3735896487.72,1
|
||||||
|
300750.SZ,20181026,20181026,20180930,1,1,3,1.17,1.17,19135923760.37,19135923760.37,,,,,,,,,,,,,,,,69427412.54,9583242.07,,16534427281.6,13150477803.26,,,101462647.63,846876034.25,983822491.58,-150717424.86,454657985.55,,,,,,,,,,,3071726107.71,15983636.65,4285602.67,,3083424141.69,441187671.13,2642236470.56,2378500010.06,263736460.5,-208586704.74,2433649765.82,2169913305.32,263736460.5,3467983671.62,,,,,1147847744.19,234936100.17,369419073.26,,,,,,,,,,,,,,,2642236470.56,1
|
||||||
|
300750.SZ,20181026,20181026,20180930,1,1,3,1.17,1.17,19135923760.37,19135923760.37,,,,,,,,,,,,,,,,69427412.54,9583242.07,,16534427281.6,13150477803.26,,,101462647.63,846876034.25,983822491.58,-150717424.86,454657985.55,,,,,,,,,,,3071726107.71,15983636.65,4285602.67,,3083424141.69,441187671.13,2642236470.56,2378500010.06,263736460.5,-208586704.74,2433649765.82,2169913305.32,263736460.5,3467983671.62,,,,,1147847744.19,234936100.17,369419073.26,,,,,,,,,,,,,,,2642236470.56,0
|
||||||
|
300750.SZ,20180824,20180824,20180630,1,1,2,0.4659,,9359580668.12,9359580668.12,,,,,,,,,,,,,,,,59838864.61,20009437.82,,8420213004.66,6431566540.72,,,35368966.71,448795383.07,1320335349.34,-22979347.63,207126112.45,,,,,,,,,,,1215792945.89,8159715.82,3277772.87,,1220674888.84,150781194.54,1069893694.3,910954288.0,158939406.3,-176351133.34,893542560.96,734603154.66,158939406.3,1135419727.12,2153190022.79,,,,,,,,,,,,,,,,,,,,,1069893694.3,0
|
||||||
|
300750.SZ,20180522,20180522,20180331,1,1,1,0.212,,3711641230.77,3711641230.77,,,,,,,,,,,,,,,,27972938.86,12043585.12,,3353698085.04,2495640398.99,,,14792182.15,147749265.04,565033595.37,2765177.74,127717465.75,,,,,,,,,,,539889042.27,3447660.53,2328501.22,,541008201.58,71743712.87,469264488.71,413347159.22,55917329.49,3179274.31,472443763.02,416526433.53,55917329.49,642726969.9,,,,,,,,,,,,,,,,,,,,,,469264488.71,0
|
||||||
|
300750.SZ,20180522,20180522,20171231,1,1,4,2.0084,,19996860806.33,19996860806.33,,,,,,,,,,,,,,,,1344305303.77,-49976783.37,,16875255721.27,12740187148.7,,,95900521.0,795766091.83,2956488278.51,42169650.35,244744030.88,,,,,,,,,,,4832020495.66,18655542.93,2575814.31,,4848100224.28,654043646.62,4194056577.66,3877954869.7,316101707.96,246933121.24,4440989698.9,4124887990.94,316101707.96,3608196383.76,4989378148.98,,,,,,,,,,,,,,,,,,,,,4194056577.66,0
|
||||||
|
300750.SZ,20181026,20181026,20170930,1,1,3,1.33,1.33,11970899899.45,11970899899.45,,,,,,,,,,,,,,,,1344112981.19,-19477989.06,,10402804866.65,7697664142.61,,,44337735.52,504161719.26,905233643.98,57697766.78,115122025.1,,,,,,,,,,,3293200146.4,13549843.33,4540268.55,,3302209721.18,470922060.98,2831287660.2,2570510205.15,260777455.05,344145542.58,3175433202.78,2914655747.73,260777455.05,2071982527.37,,,,,1078587833.4,85878529.21,33616243.84,,,,,,,,,,,,,,,2831287660.2,1
|
||||||
|
300750.SZ,20181026,20181026,20170930,1,1,3,1.33,1.33,11970899899.45,11970899899.45,,,,,,,,,,,,,,,,1344112981.19,-19477989.06,,10402804866.65,7697664142.61,,,44337735.52,504161719.26,905233643.98,57697766.78,115122025.1,,,,,,,,,,,3293200146.4,13549843.33,4540268.55,,3302209721.18,470922060.98,2831287660.2,2570510205.15,260777455.05,344145542.58,3175433202.78,2914655747.73,260777455.05,2124244812.74,,,,,1078587833.4,85878529.21,33616243.84,,,,,,,,,,,,,,,2831287660.2,0
|
||||||
|
300750.SZ,20171110,20171110,20170630,1,1,2,0.974,,6294695149.0,6294695149.0,,,,,,,,,,,,,,,,1245985248.03,-13175301.07,,5484178667.47,3934602921.36,,,24025547.56,269397374.58,1158841331.86,48134260.94,49177231.17,,,,,,,,,,,2328662915.71,6979859.43,2825898.64,2284479.0,2332816876.5,312073095.21,2020743781.29,1856935080.43,163808700.86,311938229.49,2332682010.78,2168873309.92,163808700.86,1179989159.79,1694788459.79,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
300750.SZ,20180522,20180522,20170331,1,1,1,-0.0189,,1454385691.84,1454385691.84,,,,,,,,,,,,,,,,85172231.78,-12978308.38,,1551974320.73,905259335.22,,,4410984.45,74633237.11,538433567.86,29237196.09,,,,,,,,,,,,-12738473.39,43140845.75,31953.67,,30370418.69,13875218.84,16495199.85,-11687915.1,35990121.09,81363.73,24383569.72,-11606551.37,35990121.09,-68351432.8,,,,,,,,,,,,,,,,,,,,,,16495199.85,0
|
||||||
|
300750.SZ,20180522,20180522,20161231,1,1,4,1.8736,,14878985098.12,14878985098.12,,,,,,,,,,,,,,,,76080348.84,21669756.19,,11584739495.37,8376801892.4,,,109215284.54,632190722.09,2152228887.34,80443838.96,233858870.04,,,,,,,,,,,3212120702.65,188974466.62,881463.97,,3400213705.3,481776851.01,2918436854.29,2851821419.26,66615435.03,888062.23,2919324916.52,2852709481.49,66615435.03,3374689441.71,4159176537.97,,,,,,,,,,,,,,,,,,,,,2918436854.29,0
|
||||||
|
300750.SZ,20161001,20161001,20160630,1,1,2,,,4786106400.0,4786106400.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,995792500.0,,,,,,4786106400.0,4786106400.0,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
300750.SZ,20160729,20160729,20160331,1,1,1,,,2088372900.0,2088372900.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,476764100.0,,,,,,2088372900.0,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
300750.SZ,20180522,20180522,20151231,1,1,4,0.7755,,5702884874.34,5702884874.34,,,,,,,,,,,,,,,,1455431.76,-9658518.48,,4658155646.48,3499202013.73,,,39629825.6,330920265.24,620575323.94,109186539.31,58641678.66,,,,,,,,,,,1045594555.74,71190367.14,16752779.33,,1100032143.55,149451069.1,950581074.45,930646375.1,19934699.35,494869.71,951075944.16,931141244.81,19934699.35,1153915767.17,1346241339.09,,,,,,,,,,,,,,,,,,,,,950581074.45,0
|
||||||
|
300750.SZ,20171110,20171110,20141231,1,1,4,,,866786361.55,866786361.55,,,,,,,,,,,,,,,,16117579.09,13024101.96,,866520694.75,643729807.47,,,10300.8,43294226.16,152321605.53,24573664.53,2591090.26,,,,,,,,,,,16383245.89,46216154.07,169330.58,102484.05,62430069.38,6866277.79,55563791.59,54425751.28,1138040.31,183958.4,55747749.99,54609709.68,1138040.31,27430421.59,94721521.59,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
2
data/CN/300750.SZ/raw_market_metrics_daily_basic.csv
Normal file
2
data/CN/300750.SZ/raw_market_metrics_daily_basic.csv
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
ts_code,trade_date,close,turnover_rate,turnover_rate_f,volume_ratio,pe,pe_ttm,pb,ps,ps_ttm,dv_ratio,dv_ttm,total_share,float_share,free_share,total_mv,circ_mv
|
||||||
|
300750.SZ,20251231,367.26,0.3765,0.5701,0.73,33.0287,26.2793,5.3318,4.6298,4.3416,1.3628,1.8399,456361.226,425638.5861,281129.1965,167603223.8608,156320027.1311
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
ts_code,ann_date,end_date,holder_num
|
||||||
|
300750.SZ,20251021,20250930,227474
|
||||||
|
2
data/CN/300750.SZ/raw_market_metrics_stock_basic.csv
Normal file
2
data/CN/300750.SZ/raw_market_metrics_stock_basic.csv
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
name,list_date
|
||||||
|
宁德时代,20180611
|
||||||
|
84
data/CN/300750.SZ/raw_repurchases.csv
Normal file
84
data/CN/300750.SZ/raw_repurchases.csv
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
ts_code,ann_date,end_date,proc,exp_date,vol,amount,high_limit,low_limit
|
||||||
|
300750.SZ,20251010,20250930,实施,,15990782.0,4385504687.9,317.63,231.5
|
||||||
|
300750.SZ,20250902,20250831,实施,,8690006.0,2130545080.93,290.0,231.5
|
||||||
|
300750.SZ,20250506,20250430,实施,,6640986.0,1550809971.05,237.38,231.5
|
||||||
|
300750.SZ,20250425,20250425,实施,,1075275.0,254677939.51,237.38,236.01
|
||||||
|
300750.SZ,20250407,,预案,,,8000000000.0,392.32,
|
||||||
|
300750.SZ,20250224,20250221,完成,,71547.0,1412292.78,19.74,19.74
|
||||||
|
300750.SZ,20241227,,股东大会通过,,,1412292.78,19.74,19.74
|
||||||
|
300750.SZ,20241227,,股东大会通过,,,1412300.0,19.74,19.74
|
||||||
|
300750.SZ,20241030,20241030,完成,,15991524.0,2710713907.1,194.1,146.31
|
||||||
|
300750.SZ,20240909,,预案,,,1412292.78,19.74,19.74
|
||||||
|
300750.SZ,20240909,,预案,,,1412300.0,19.74,19.74
|
||||||
|
300750.SZ,20240801,20240731,实施,,15991524.0,2710713907.1,194.1,146.31
|
||||||
|
300750.SZ,20240701,20240630,实施,,14483830.0,2446006804.38,194.1,146.31
|
||||||
|
300750.SZ,20240618,20240617,完成,,46944.0,926700.0,19.74,19.74
|
||||||
|
300750.SZ,20240618,20240617,完成,,187070.0,3665800.0,19.74,19.53
|
||||||
|
300750.SZ,20240316,,预案,,,926700.0,19.74,19.74
|
||||||
|
300750.SZ,20240316,,预案,,,926700.0,19.74,19.74
|
||||||
|
300750.SZ,20240301,20240229,实施,,11609630.0,1896541059.43,181.16,146.31
|
||||||
|
300750.SZ,20240201,20240131,实施,,10367912.0,1700392748.16,181.16,146.31
|
||||||
|
300750.SZ,20240102,20231231,实施,,9086912.0,1503263150.63,181.16,146.31
|
||||||
|
300750.SZ,20231201,20231130,实施,,4377000.0,764172035.62,181.16,165.39
|
||||||
|
300750.SZ,20231120,20231117,实施,,1043098.0,188400157.46,181.16,179.53
|
||||||
|
300750.SZ,20231031,,预案,,,3000000000.0,294.45,
|
||||||
|
300750.SZ,20231031,,预案,,,3000000000.0,294.45,
|
||||||
|
300750.SZ,20231026,,提议,,,3000000000.0,,
|
||||||
|
300750.SZ,20231026,,预案,,,3000000000.0,,
|
||||||
|
300750.SZ,20230908,,预案,,,3665800.0,19.74,19.53
|
||||||
|
300750.SZ,20230908,,预案,,,3665800.0,19.74,19.53
|
||||||
|
300750.SZ,20230415,20230414,完成,,49240.0,1739161.2,,
|
||||||
|
300750.SZ,20230415,20230414,完成,,80320.0,2840089.6,,35.15
|
||||||
|
300750.SZ,20230415,20230414,完成,,49240.0,1739161.2,,
|
||||||
|
300750.SZ,20230415,20230414,完成,,80320.0,2840089.6,,35.15
|
||||||
|
300750.SZ,20230401,,股东大会通过,,,1739161.2,,
|
||||||
|
300750.SZ,20230401,,股东大会通过,,,2840089.6,,35.15
|
||||||
|
300750.SZ,20230401,,股东大会通过,,,1739161.2,,
|
||||||
|
300750.SZ,20230401,,股东大会通过,,,2840089.6,,35.15
|
||||||
|
300750.SZ,20230310,,预案,,,2840089.6,,35.15
|
||||||
|
300750.SZ,20230310,,预案,,,2840089.6,,35.15
|
||||||
|
300750.SZ,20220908,,预案,,,1739161.2,,
|
||||||
|
300750.SZ,20220908,,预案,,,1739161.2,,
|
||||||
|
300750.SZ,20220822,20220819,完成,,64050.0,2262867.7,,
|
||||||
|
300750.SZ,20220822,20220819,完成,,72240.0,2544799.2,,
|
||||||
|
300750.SZ,20220822,20220819,完成,,64050.0,2262867.7,,
|
||||||
|
300750.SZ,20220822,20220819,完成,,64050.0,2262900.0,,
|
||||||
|
300750.SZ,20220822,20220819,完成,,72240.0,2544799.2,,
|
||||||
|
300750.SZ,20220518,,股东大会通过,,,2262867.7,,35.53
|
||||||
|
300750.SZ,20220518,,股东大会通过,,,2544799.2,,
|
||||||
|
300750.SZ,20220518,,股东大会通过,,,2262867.7,,35.53
|
||||||
|
300750.SZ,20220518,,股东大会通过,,,2262900.0,,35.53
|
||||||
|
300750.SZ,20220518,,股东大会通过,,,2544799.2,,
|
||||||
|
300750.SZ,20220422,,预案,,,2544799.2,,
|
||||||
|
300750.SZ,20220422,,预案,,,2544799.2,,
|
||||||
|
300750.SZ,20210913,,预案,,,2262867.7,,35.53
|
||||||
|
300750.SZ,20210913,,预案,,,2262867.7,,35.53
|
||||||
|
300750.SZ,20210913,,预案,,,2262900.0,,35.53
|
||||||
|
300750.SZ,20210622,20210621,完成,,234010.0,8333884.58,35.53,35.15
|
||||||
|
300750.SZ,20210622,20210621,完成,,232216.0,8253933.71,35.53,35.15
|
||||||
|
300750.SZ,20210622,20210621,完成,,234010.0,8333884.58,35.53,35.15
|
||||||
|
300750.SZ,20210622,20210621,完成,,232216.0,8253933.71,35.53,35.15
|
||||||
|
300750.SZ,20210521,,股东大会通过,,,8253933.71,35.5442,35.5442
|
||||||
|
300750.SZ,20210521,,股东大会通过,,,8333884.58,,35.15
|
||||||
|
300750.SZ,20210521,,股东大会通过,,,8253933.71,35.5442,35.5442
|
||||||
|
300750.SZ,20210521,,股东大会通过,,,8333884.58,,35.15
|
||||||
|
300750.SZ,20210428,,预案,,,8333884.58,,35.15
|
||||||
|
300750.SZ,20210428,,预案,,,8333884.58,,35.15
|
||||||
|
300750.SZ,20200911,,预案,,,8253933.71,35.5442,35.5442
|
||||||
|
300750.SZ,20200911,,预案,,,8253933.71,35.5442,35.5442
|
||||||
|
300750.SZ,20200526,20200522,完成,,1034140.0,36630244.54,,
|
||||||
|
300750.SZ,20200526,20200522,完成,,251780.0,8871401.33,35.2347,35.2347
|
||||||
|
300750.SZ,20200526,20200522,完成,,1034140.0,36630244.54,,
|
||||||
|
300750.SZ,20200526,20200522,完成,,251780.0,8871401.33,35.2347,35.2347
|
||||||
|
300750.SZ,20200519,,股东大会通过,,,36630244.54,,
|
||||||
|
300750.SZ,20200519,,股东大会通过,,,36630244.54,,
|
||||||
|
300750.SZ,20200425,,预案,,,36630244.54,,
|
||||||
|
300750.SZ,20200425,,预案,,,36630244.54,,
|
||||||
|
300750.SZ,20190903,,预案,,,8871401.33,35.2347,35.2347
|
||||||
|
300750.SZ,20190903,,预案,,,8871401.33,35.2347,35.2347
|
||||||
|
300750.SZ,20190712,20190710,完成,,572400.0,20144982.22,,
|
||||||
|
300750.SZ,20190712,20190710,完成,,572400.0,20144982.22,,
|
||||||
|
300750.SZ,20190522,,股东大会通过,,,20144982.22,,
|
||||||
|
300750.SZ,20190522,,股东大会通过,,,20144982.22,,
|
||||||
|
300750.SZ,20190425,,预案,,,20144982.22,,
|
||||||
|
300750.SZ,20190425,,预案,,,20144982.22,,
|
||||||
|
445
data/CN/300750.SZ/report.html
Normal file
445
data/CN/300750.SZ/report.html
Normal file
@ -0,0 +1,445 @@
|
|||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<title>300750.SZ Financial Report</title>
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--bg: #f5f6fa;
|
||||||
|
--card-bg: #ffffff;
|
||||||
|
--header-bg: #f7f8fb;
|
||||||
|
--section-bg: #f0f2f5;
|
||||||
|
--border: #e5e7eb;
|
||||||
|
--text-primary: #111827;
|
||||||
|
--text-secondary: #6b7280;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 32px;
|
||||||
|
background: var(--bg);
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||||
|
color: var(--text-primary);
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.report-container {
|
||||||
|
max-width: 1280px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: var(--card-bg);
|
||||||
|
border-radius: 24px;
|
||||||
|
padding: 32px 40px;
|
||||||
|
box-shadow: 0 24px 60px rgba(15, 23, 42, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin: 0 0 8px;
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin: 0 0 24px;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
font-size: 0.95rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
background: var(--card-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
font-size: 0.95rem;
|
||||||
|
padding: 12px 16px;
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
text-align: right;
|
||||||
|
background: var(--header-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
th:first-child,
|
||||||
|
td:first-child {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-table th,
|
||||||
|
.company-table td {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table thead {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table thead th {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 3;
|
||||||
|
background: var(--card-bg);
|
||||||
|
box-shadow: 0 10px 20px rgba(15, 23, 42, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table thead th:first-child {
|
||||||
|
left: 0;
|
||||||
|
z-index: 4;
|
||||||
|
box-shadow: 16px 0 24px rgba(15, 23, 42, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table th:first-child,
|
||||||
|
.metrics-table td:first-child {
|
||||||
|
width: 180px;
|
||||||
|
min-width: 180px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tbody td:first-child {
|
||||||
|
position: sticky;
|
||||||
|
left: 0;
|
||||||
|
background: var(--card-bg);
|
||||||
|
font-weight: 600;
|
||||||
|
box-shadow: 16px 0 24px rgba(15, 23, 42, 0.04);
|
||||||
|
z-index: 2;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tbody td:not(:first-child) {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tr.other-assets-row td {
|
||||||
|
background: #fff7e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tr.other-assets-row td:first-child {
|
||||||
|
background: #fff7e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tbody tr:hover td {
|
||||||
|
background: #f4efff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-row td {
|
||||||
|
background: #eef1f6;
|
||||||
|
font-weight: 600;
|
||||||
|
text-align: left;
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table .section-row td:first-child {
|
||||||
|
position: sticky;
|
||||||
|
left: 0;
|
||||||
|
z-index: 2;
|
||||||
|
box-shadow: 16px 0 24px rgba(15, 23, 42, 0.08);
|
||||||
|
background: #eef1f6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table .section-label {
|
||||||
|
color: var(--text-primary);
|
||||||
|
background: #eef1f6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-spacer {
|
||||||
|
background: #eef1f6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metric-name {
|
||||||
|
color: var(--text-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-container {
|
||||||
|
overflow-x: auto;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: 16px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-container table {
|
||||||
|
margin-bottom: 0;
|
||||||
|
min-width: 960px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-gap {
|
||||||
|
height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-data {
|
||||||
|
margin-top: 24px;
|
||||||
|
padding: 32px;
|
||||||
|
text-align: center;
|
||||||
|
border: 1px dashed var(--border);
|
||||||
|
border-radius: 16px;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
font-size: 0.95rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-green { background-color: #e6f7eb !important; }
|
||||||
|
.bg-red { background-color: #ffeef0 !important; }
|
||||||
|
.font-red { color: #d32f2f !important; }
|
||||||
|
.font-green { color: #1b873f !important; }
|
||||||
|
.font-blue { color: #2563eb !important; }
|
||||||
|
.italic { font-style: italic !important; }
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
body { padding: 16px; }
|
||||||
|
.report-container { padding: 24px; }
|
||||||
|
table { font-size: 0.85rem; }
|
||||||
|
th,
|
||||||
|
td { padding: 10px 12px; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="report-container">
|
||||||
|
<h1>宁德时代 (300750.SZ) - Financial Report</h1>
|
||||||
|
<p><em>Report generated on: 2026-01-03</em></p>
|
||||||
|
|
||||||
|
<table class="company-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>代码</th>
|
||||||
|
<th>简称</th>
|
||||||
|
<th>上市日期</th>
|
||||||
|
<th>PE</th>
|
||||||
|
<th>PB</th>
|
||||||
|
<th>股息率(%)</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>300750.SZ</td>
|
||||||
|
<td>宁德时代</td>
|
||||||
|
<td>2018-06-11</td>
|
||||||
|
<td>33.03</td>
|
||||||
|
<td>5.33</td>
|
||||||
|
<td>1.84%</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="table-gap"></div>
|
||||||
|
|
||||||
|
<table class="metrics-table" data-table="metrics" data-scrollable="true">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>指标</th>
|
||||||
|
<th>2025Q3</th><th>2024A</th><th>2023A</th><th>2022A</th><th>2021A</th><th>2020A</th><th>2019A</th><th>2018A</th><th>2017A</th><th>2016A</th><th>2015A</th><th>2014A</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="section-row"><td class="section-label">主要指标</td><td class="section-spacer" colspan="12"></td></tr>
|
||||||
|
<tr><td class="metric-name">ROE</td><td>15.60%</td><td>20.55%</td><td>22.32%</td><td>18.68%</td><td>18.85%</td><td>8.70%</td><td>11.96%</td><td>10.28%</td><td>15.70%</td><td>18.41%</td><td>74.23%</td><td>21.19%</td></tr>
|
||||||
|
<tr><td class="metric-name">ROA</td><td>5.47%</td><td>6.45%</td><td>6.15%</td><td>5.11%</td><td>5.18%</td><td>3.56%</td><td>4.50%</td><td>4.58%</td><td>7.81%</td><td>9.98%</td><td>10.73%</td><td>1.89%</td></tr>
|
||||||
|
<tr><td class="metric-name">ROCE/ROIC</td><td>11.87%</td><td>16.58%</td><td>16.87%</td><td>12.81%</td><td>14.82%</td><td>8.07%</td><td>12.35%</td><td>10.67%</td><td>12.26%</td><td>19.55%</td><td>36.60%</td><td>4.72%</td></tr>
|
||||||
|
<tr><td class="metric-name">毛利率</td><td>25.31%</td><td>24.44%</td><td>22.91%</td><td>20.25%</td><td>26.28%</td><td>27.76%</td><td>29.06%</td><td>32.79%</td><td>36.29%</td><td>43.70%</td><td>38.64%</td><td>25.73%</td></tr>
|
||||||
|
<tr><td class="metric-name">净利润率</td><td>17.32%</td><td>14.02%</td><td>11.01%</td><td>9.35%</td><td>12.22%</td><td>11.10%</td><td>9.96%</td><td>11.44%</td><td>19.39%</td><td>19.17%</td><td>16.32%</td><td>6.28%</td></tr>
|
||||||
|
<tr><td class="metric-name">收入(亿)</td><td>2,830.72</td><td>3,620.13</td><td>4,009.17</td><td>3,285.94</td><td>1,303.56</td><td>503.19</td><td>457.88</td><td>296.11</td><td>199.97</td><td>148.79</td><td>57.03</td><td>8.67</td></tr>
|
||||||
|
<tr><td class="metric-name">收入增速</td><td>9.28%</td><td>-9.70%</td><td>22.01%</td><td>152.07%</td><td>159.06%</td><td>9.90%</td><td>54.63%</td><td>48.08%</td><td>34.40%</td><td>160.90%</td><td>557.93%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">净利润(亿)</td><td>490.34</td><td>507.45</td><td>441.21</td><td>307.29</td><td>159.31</td><td>55.83</td><td>45.60</td><td>33.87</td><td>38.78</td><td>28.52</td><td>9.31</td><td>0.54</td></tr>
|
||||||
|
<tr><td class="metric-name">净利润增速</td><td>36.20%</td><td>15.01%</td><td>43.58%</td><td>92.89%</td><td>185.34%</td><td>22.43%</td><td>34.64%</td><td>-12.66%</td><td>35.98%</td><td>206.43%</td><td>1609.94%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">经营净现金流(亿)</td><td>806.60</td><td>969.90</td><td>928.26</td><td>612.09</td><td>429.08</td><td>184.30</td><td>134.72</td><td>113.16</td><td>23.41</td><td>21.09</td><td>6.65</td><td>-1.39</td></tr>
|
||||||
|
<tr><td class="metric-name">资本开支(亿)</td><td>300.88</td><td>311.80</td><td>336.25</td><td>482.15</td><td>437.68</td><td>133.02</td><td>96.27</td><td>66.29</td><td>71.80</td><td>28.01</td><td>15.54</td><td>3.01</td></tr>
|
||||||
|
<tr><td class="metric-name">自由现金流(亿)</td><td>505.73</td><td>658.10</td><td>592.01</td><td>129.94</td><td>-8.60</td><td>51.28</td><td>38.45</td><td>46.87</td><td>-48.40</td><td>-6.92</td><td>-8.89</td><td>-4.39</td></tr>
|
||||||
|
<tr><td class="metric-name">分红(亿)</td><td>-</td><td>152.80</td><td>221.18</td><td>126.72</td><td>-</td><td>5.59</td><td>4.86</td><td>3.12</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">回购(亿)</td><td>-</td><td>129.80</td><td>129.84</td><td>0.32</td><td>0.90</td><td>2.54</td><td>1.39</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">总资产(亿)</td><td>8,960.82</td><td>7,866.58</td><td>7,171.68</td><td>6,009.52</td><td>3,076.67</td><td>1,566.18</td><td>1,013.52</td><td>738.84</td><td>496.63</td><td>285.88</td><td>86.73</td><td>28.75</td></tr>
|
||||||
|
<tr><td class="metric-name">净资产(亿)</td><td>3,142.48</td><td>2,469.30</td><td>1,977.08</td><td>1,644.81</td><td>845.13</td><td>642.07</td><td>381.35</td><td>329.38</td><td>247.01</td><td>154.89</td><td>12.54</td><td>2.57</td></tr>
|
||||||
|
<tr><td class="metric-name">商誉(亿)</td><td>8.91</td><td>8.95</td><td>7.08</td><td>7.04</td><td>5.28</td><td>1.48</td><td>1.48</td><td>1.00</td><td>1.00</td><td>1.00</td><td>1.00</td><td>-</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">费用指标</td><td class="section-spacer" colspan="12"></td></tr>
|
||||||
|
<tr><td class="metric-name">销售费用率</td><td>0.85%</td><td>0.98%</td><td>4.48%</td><td>3.38%</td><td>3.35%</td><td>4.41%</td><td>4.71%</td><td>4.66%</td><td>3.98%</td><td>4.25%</td><td>5.80%</td><td>4.99%</td></tr>
|
||||||
|
<tr><td class="metric-name">管理费用率</td><td>2.91%</td><td>2.68%</td><td>2.11%</td><td>2.12%</td><td>2.58%</td><td>3.51%</td><td>4.00%</td><td>5.37%</td><td>14.78%</td><td>14.46%</td><td>10.88%</td><td>17.57%</td></tr>
|
||||||
|
<tr><td class="metric-name">SG&A比例</td><td>3.76%</td><td>3.66%</td><td>6.59%</td><td>5.50%</td><td>5.94%</td><td>7.92%</td><td>8.71%</td><td>10.03%</td><td>18.76%</td><td>18.71%</td><td>16.68%</td><td>22.57%</td></tr>
|
||||||
|
<tr><td class="metric-name">研发费用率</td><td>5.32%</td><td>5.14%</td><td>4.58%</td><td>4.72%</td><td>5.90%</td><td>7.09%</td><td>6.53%</td><td>6.72%</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">其他费用率</td><td>-1.09%</td><td>1.63%</td><td>0.74%</td><td>0.68%</td><td>2.23%</td><td>1.66%</td><td>3.85%</td><td>4.60%</td><td>-1.87%</td><td>5.82%</td><td>5.64%</td><td>-3.11%</td></tr>
|
||||||
|
<tr><td class="metric-name">折旧费用占比</td><td>-</td><td>6.20%</td><td>5.26%</td><td>3.64%</td><td>4.49%</td><td>9.10%</td><td>9.04%</td><td>7.18%</td><td>6.40%</td><td>4.92%</td><td>2.88%</td><td>5.14%</td></tr>
|
||||||
|
<tr><td class="metric-name">所得税率</td><td>13.86%</td><td>14.52%</td><td>13.27%</td><td>8.77%</td><td>10.19%</td><td>12.58%</td><td>12.99%</td><td>11.15%</td><td>13.49%</td><td>14.17%</td><td>13.59%</td><td>11.00%</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">资产占比</td><td class="section-spacer" colspan="12"></td></tr>
|
||||||
|
<tr><td class="metric-name">现金占比</td><td>36.18%</td><td>38.58%</td><td>36.85%</td><td>31.79%</td><td>28.95%</td><td>43.69%</td><td>31.84%</td><td>37.53%</td><td>28.35%</td><td>8.59%</td><td>14.91%</td><td>2.07%</td></tr>
|
||||||
|
<tr><td class="metric-name">库存占比</td><td>8.95%</td><td>7.61%</td><td>6.34%</td><td>12.76%</td><td>13.07%</td><td>8.44%</td><td>11.33%</td><td>9.58%</td><td>6.88%</td><td>4.76%</td><td>12.01%</td><td>10.85%</td></tr>
|
||||||
|
<tr><td class="metric-name">应收款占比</td><td>7.42%</td><td>8.15%</td><td>8.93%</td><td>9.65%</td><td>7.72%</td><td>7.21%</td><td>8.23%</td><td>8.43%</td><td>13.93%</td><td>25.59%</td><td>27.60%</td><td>12.92%</td></tr>
|
||||||
|
<tr><td class="metric-name">预付款占比</td><td>1.51%</td><td>0.76%</td><td>0.97%</td><td>2.64%</td><td>2.10%</td><td>0.64%</td><td>0.53%</td><td>1.17%</td><td>0.62%</td><td>0.35%</td><td>0.81%</td><td>0.53%</td></tr>
|
||||||
|
<tr><td class="metric-name">固定资产占比</td><td>14.35%</td><td>14.31%</td><td>16.09%</td><td>14.82%</td><td>13.42%</td><td>12.53%</td><td>17.19%</td><td>15.67%</td><td>16.55%</td><td>13.04%</td><td>15.14%</td><td>8.45%</td></tr>
|
||||||
|
<tr><td class="metric-name">长期投资占比</td><td>6.68%</td><td>6.97%</td><td>6.98%</td><td>2.93%</td><td>3.56%</td><td>3.07%</td><td>1.52%</td><td>1.31%</td><td>1.59%</td><td>0.59%</td><td>-</td><td>7.90%</td></tr>
|
||||||
|
<tr><td class="metric-name">商誉占比</td><td>0.10%</td><td>0.11%</td><td>0.10%</td><td>0.12%</td><td>0.17%</td><td>0.09%</td><td>0.15%</td><td>0.14%</td><td>0.20%</td><td>0.35%</td><td>1.16%</td><td>-</td></tr>
|
||||||
|
<tr class="other-assets-row"><td class="metric-name">其他资产占比</td><td>24.80%</td><td>23.51%</td><td>23.75%</td><td>25.30%</td><td>31.02%</td><td>24.32%</td><td>29.22%</td><td>26.19%</td><td>31.87%</td><td>46.72%</td><td>28.37%</td><td>57.27%</td></tr>
|
||||||
|
<tr><td class="metric-name">应付款占比</td><td>14.73%</td><td>16.65%</td><td>16.32%</td><td>15.73%</td><td>15.86%</td><td>9.98%</td><td>10.55%</td><td>9.55%</td><td>10.02%</td><td>11.10%</td><td>16.98%</td><td>13.38%</td></tr>
|
||||||
|
<tr><td class="metric-name">预收款占比</td><td>4.54%</td><td>3.54%</td><td>3.34%</td><td>3.73%</td><td>3.75%</td><td>4.39%</td><td>6.08%</td><td>6.76%</td><td>0.41%</td><td>0.31%</td><td>1.96%</td><td>0.30%</td></tr>
|
||||||
|
<tr><td class="metric-name">短期借款占比</td><td>4.50%</td><td>5.41%</td><td>3.09%</td><td>3.60%</td><td>5.09%</td><td>4.91%</td><td>3.16%</td><td>2.85%</td><td>5.26%</td><td>5.13%</td><td>21.90%</td><td>11.29%</td></tr>
|
||||||
|
<tr><td class="metric-name">长期借款占比</td><td>8.75%</td><td>10.33%</td><td>11.64%</td><td>9.83%</td><td>7.19%</td><td>3.87%</td><td>4.91%</td><td>4.72%</td><td>4.29%</td><td>1.06%</td><td>0.00%</td><td>0.00%</td></tr>
|
||||||
|
<tr><td class="metric-name">运营资产占比</td><td>-1.38%</td><td>-3.67%</td><td>-3.43%</td><td>5.57%</td><td>3.28%</td><td>1.92%</td><td>3.46%</td><td>2.86%</td><td>11.00%</td><td>19.29%</td><td>21.49%</td><td>10.63%</td></tr>
|
||||||
|
<tr><td class="metric-name">有息负债率</td><td>13.25%</td><td>15.74%</td><td>14.73%</td><td>13.44%</td><td>12.28%</td><td>8.78%</td><td>8.07%</td><td>7.58%</td><td>9.54%</td><td>6.19%</td><td>21.90%</td><td>11.29%</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">周转能力</td><td class="section-spacer" colspan="12"></td></tr>
|
||||||
|
<tr><td class="metric-name">存货周转天数</td><td>138</td><td>79</td><td>53</td><td>106</td><td>152</td><td>132</td><td>129</td><td>129</td><td>97</td><td>59</td><td>108</td><td>176</td></tr>
|
||||||
|
<tr><td class="metric-name">应收款周转天数</td><td>85</td><td>64</td><td>58</td><td>64</td><td>66</td><td>81</td><td>66</td><td>76</td><td>126</td><td>179</td><td>153</td><td>156</td></tr>
|
||||||
|
<tr><td class="metric-name">应付款周转天数</td><td>227</td><td>174</td><td>138</td><td>131</td><td>185</td><td>156</td><td>120</td><td>129</td><td>142</td><td>138</td><td>153</td><td>218</td></tr>
|
||||||
|
<tr><td class="metric-name">固定资产周转率</td><td>2.20</td><td>3.22</td><td>3.47</td><td>3.69</td><td>3.16</td><td>2.56</td><td>2.63</td><td>2.56</td><td>2.43</td><td>3.99</td><td>4.34</td><td>3.57</td></tr>
|
||||||
|
<tr><td class="metric-name">总资产周转率</td><td>0.32</td><td>0.46</td><td>0.56</td><td>0.55</td><td>0.42</td><td>0.32</td><td>0.45</td><td>0.40</td><td>0.40</td><td>0.52</td><td>0.66</td><td>0.30</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">人均效率</td><td class="section-spacer" colspan="12"></td></tr>
|
||||||
|
<tr><td class="metric-name">员工人数</td><td>-</td><td>131,988</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">人均创收(万)</td><td>-</td><td>274.28</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">人均创利(万)</td><td>-</td><td>38.45</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">人均薪酬(万)</td><td>-</td><td>19.32</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">市场表现</td><td class="section-spacer" colspan="12"></td></tr>
|
||||||
|
<tr><td class="metric-name">股价</td><td>367.26</td><td>266.00</td><td>163.26</td><td>393.42</td><td>588.00</td><td>351.11</td><td>106.40</td><td>73.80</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">市值(亿)</td><td>16,760</td><td>11,713</td><td>7,182</td><td>9,609</td><td>13,705</td><td>8,179</td><td>2,350</td><td>1,620</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">PE</td><td>33.03</td><td>26.55</td><td>23.37</td><td>60.32</td><td>245.47</td><td>179.35</td><td>69.37</td><td>41.77</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">PB</td><td>5.33</td><td>4.94</td><td>3.98</td><td>6.40</td><td>18.74</td><td>13.33</td><td>6.36</td><td>5.01</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">股东户数</td><td>227,474</td><td>212,061</td><td>260,992</td><td>183,317</td><td>141,963</td><td>133,060</td><td>76,710</td><td>82,514</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
const scrollableTables = document.querySelectorAll('table[data-scrollable="true"]');
|
||||||
|
scrollableTables.forEach(table => {
|
||||||
|
const container = document.createElement('div');
|
||||||
|
container.className = 'table-container';
|
||||||
|
table.parentNode.insertBefore(container, table);
|
||||||
|
container.appendChild(table);
|
||||||
|
});
|
||||||
|
|
||||||
|
const parseValue = (text) => {
|
||||||
|
if (!text || text.trim() === '-') return null;
|
||||||
|
return parseFloat(text.replace(/%|,/g, ''));
|
||||||
|
};
|
||||||
|
|
||||||
|
const highlightIfOverThirtyPercent = (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 30) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const styleRules = {
|
||||||
|
'ROE': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 15) cell.classList.add('bg-green');
|
||||||
|
},
|
||||||
|
'ROA': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 10) cell.classList.add('bg-green');
|
||||||
|
},
|
||||||
|
'毛利率': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 50) cell.classList.add('bg-green');
|
||||||
|
},
|
||||||
|
'净利润率': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null) {
|
||||||
|
if (value > 20) {
|
||||||
|
cell.classList.add('bg-green');
|
||||||
|
} else if (value < 0) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'收入增速': (cell) => {
|
||||||
|
cell.classList.add('italic');
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null) {
|
||||||
|
if (value > 15) {
|
||||||
|
cell.classList.add('bg-green', 'font-green');
|
||||||
|
} else if (value < 0) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
} else {
|
||||||
|
cell.classList.add('font-blue');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'净利润增速': (cell) => {
|
||||||
|
cell.classList.add('italic');
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null) {
|
||||||
|
if (value > 15) {
|
||||||
|
cell.classList.add('bg-green', 'font-green');
|
||||||
|
} else if (value < 0) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
} else {
|
||||||
|
cell.classList.add('font-blue');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'经营净现金流(亿)': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value < 0) cell.classList.add('bg-red', 'font-red');
|
||||||
|
},
|
||||||
|
'应收款周转天数': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 90) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'现金占比': highlightIfOverThirtyPercent,
|
||||||
|
'库存占比': highlightIfOverThirtyPercent,
|
||||||
|
'应收款占比': highlightIfOverThirtyPercent,
|
||||||
|
'预付款占比': highlightIfOverThirtyPercent,
|
||||||
|
'固定资产占比': highlightIfOverThirtyPercent,
|
||||||
|
'长期投资占比': highlightIfOverThirtyPercent,
|
||||||
|
'商誉占比': highlightIfOverThirtyPercent,
|
||||||
|
'其他资产占比': highlightIfOverThirtyPercent
|
||||||
|
};
|
||||||
|
|
||||||
|
const metricsTables = document.querySelectorAll('table[data-table="metrics"]');
|
||||||
|
metricsTables.forEach(table => {
|
||||||
|
let netProfitValues = [];
|
||||||
|
let fcfRow = null;
|
||||||
|
const rows = table.querySelectorAll('tbody tr');
|
||||||
|
rows.forEach(row => {
|
||||||
|
if (row.classList.contains('section-row')) return;
|
||||||
|
const metricCell = row.querySelector('td:first-child');
|
||||||
|
if (!metricCell) return;
|
||||||
|
const metricName = metricCell.textContent.trim();
|
||||||
|
if (metricName === '净利润(亿)') {
|
||||||
|
row.querySelectorAll('td:not(:first-child)').forEach(cell => {
|
||||||
|
netProfitValues.push(parseValue(cell.textContent));
|
||||||
|
});
|
||||||
|
} else if (metricName === '自由现金流(亿)') {
|
||||||
|
fcfRow = row;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
rows.forEach(row => {
|
||||||
|
if (row.classList.contains('section-row')) return;
|
||||||
|
const metricCell = row.querySelector('td:first-child');
|
||||||
|
if (!metricCell) return;
|
||||||
|
const metricName = metricCell.textContent.trim();
|
||||||
|
const cells = row.querySelectorAll('td:not(:first-child)');
|
||||||
|
if (styleRules[metricName]) {
|
||||||
|
cells.forEach(cell => {
|
||||||
|
styleRules[metricName](cell);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (row === fcfRow && netProfitValues.length > 0) {
|
||||||
|
cells.forEach((cell, index) => {
|
||||||
|
const fcfValue = parseValue(cell.textContent);
|
||||||
|
const netProfitValue = netProfitValues[index];
|
||||||
|
if (fcfValue !== null) {
|
||||||
|
if (fcfValue < 0) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
} else if (netProfitValue !== null && fcfValue > netProfitValue) {
|
||||||
|
cell.classList.add('bg-green', 'font-green');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
89
data/CN/300750.SZ/report.md
Normal file
89
data/CN/300750.SZ/report.md
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
# 宁德时代 (300750.SZ) - Financial Report
|
||||||
|
*Report generated on: 2026-01-03*
|
||||||
|
|
||||||
|
| 代码 | 简称 | 上市日期 | PE | PB | 股息率(%) |
|
||||||
|
|:---|:---|:---|:---|:---|:---|
|
||||||
|
| 300750.SZ | 宁德时代 | 2018-06-11 | 33.03 | 5.33 | 1.84% |
|
||||||
|
|
||||||
|
|
||||||
|
## 主要指标
|
||||||
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A | 2018A | 2017A | 2016A | 2015A | 2014A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|
||||||
|
| ROE | 15.60% | 20.55% | 22.32% | 18.68% | 18.85% | 8.70% | 11.96% | 10.28% | 15.70% | 18.41% | 74.23% | 21.19% |
|
||||||
|
| ROA | 5.47% | 6.45% | 6.15% | 5.11% | 5.18% | 3.56% | 4.50% | 4.58% | 7.81% | 9.98% | 10.73% | 1.89% |
|
||||||
|
| ROCE/ROIC | 11.87% | 16.58% | 16.87% | 12.81% | 14.82% | 8.07% | 12.35% | 10.67% | 12.26% | 19.55% | 36.60% | 4.72% |
|
||||||
|
| 毛利率 | 25.31% | 24.44% | 22.91% | 20.25% | 26.28% | 27.76% | 29.06% | 32.79% | 36.29% | 43.70% | 38.64% | 25.73% |
|
||||||
|
| 净利润率 | 17.32% | 14.02% | 11.01% | 9.35% | 12.22% | 11.10% | 9.96% | 11.44% | 19.39% | 19.17% | 16.32% | 6.28% |
|
||||||
|
| 收入(亿) | 2,830.72 | 3,620.13 | 4,009.17 | 3,285.94 | 1,303.56 | 503.19 | 457.88 | 296.11 | 199.97 | 148.79 | 57.03 | 8.67 |
|
||||||
|
| 收入增速 | 9.28% | -9.70% | 22.01% | 152.07% | 159.06% | 9.90% | 54.63% | 48.08% | 34.40% | 160.90% | 557.93% | - |
|
||||||
|
| 净利润(亿) | 490.34 | 507.45 | 441.21 | 307.29 | 159.31 | 55.83 | 45.60 | 33.87 | 38.78 | 28.52 | 9.31 | 0.54 |
|
||||||
|
| 净利润增速 | 36.20% | 15.01% | 43.58% | 92.89% | 185.34% | 22.43% | 34.64% | -12.66% | 35.98% | 206.43% | 1609.94% | - |
|
||||||
|
| 经营净现金流(亿) | 806.60 | 969.90 | 928.26 | 612.09 | 429.08 | 184.30 | 134.72 | 113.16 | 23.41 | 21.09 | 6.65 | -1.39 |
|
||||||
|
| 资本开支(亿) | 300.88 | 311.80 | 336.25 | 482.15 | 437.68 | 133.02 | 96.27 | 66.29 | 71.80 | 28.01 | 15.54 | 3.01 |
|
||||||
|
| 自由现金流(亿) | 505.73 | 658.10 | 592.01 | 129.94 | -8.60 | 51.28 | 38.45 | 46.87 | -48.40 | -6.92 | -8.89 | -4.39 |
|
||||||
|
| 分红(亿) | - | 152.80 | 221.18 | 126.72 | - | 5.59 | 4.86 | 3.12 | - | - | - | - |
|
||||||
|
| 回购(亿) | - | 129.80 | 129.84 | 0.32 | 0.90 | 2.54 | 1.39 | - | - | - | - | - |
|
||||||
|
| 总资产(亿) | 8,960.82 | 7,866.58 | 7,171.68 | 6,009.52 | 3,076.67 | 1,566.18 | 1,013.52 | 738.84 | 496.63 | 285.88 | 86.73 | 28.75 |
|
||||||
|
| 净资产(亿) | 3,142.48 | 2,469.30 | 1,977.08 | 1,644.81 | 845.13 | 642.07 | 381.35 | 329.38 | 247.01 | 154.89 | 12.54 | 2.57 |
|
||||||
|
| 商誉(亿) | 8.91 | 8.95 | 7.08 | 7.04 | 5.28 | 1.48 | 1.48 | 1.00 | 1.00 | 1.00 | 1.00 | - |
|
||||||
|
|
||||||
|
|
||||||
|
## 费用指标
|
||||||
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A | 2018A | 2017A | 2016A | 2015A | 2014A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|
||||||
|
| 销售费用率 | 0.85% | 0.98% | 4.48% | 3.38% | 3.35% | 4.41% | 4.71% | 4.66% | 3.98% | 4.25% | 5.80% | 4.99% |
|
||||||
|
| 管理费用率 | 2.91% | 2.68% | 2.11% | 2.12% | 2.58% | 3.51% | 4.00% | 5.37% | 14.78% | 14.46% | 10.88% | 17.57% |
|
||||||
|
| SG&A比例 | 3.76% | 3.66% | 6.59% | 5.50% | 5.94% | 7.92% | 8.71% | 10.03% | 18.76% | 18.71% | 16.68% | 22.57% |
|
||||||
|
| 研发费用率 | 5.32% | 5.14% | 4.58% | 4.72% | 5.90% | 7.09% | 6.53% | 6.72% | - | - | - | - |
|
||||||
|
| 其他费用率 | -1.09% | 1.63% | 0.74% | 0.68% | 2.23% | 1.66% | 3.85% | 4.60% | -1.87% | 5.82% | 5.64% | -3.11% |
|
||||||
|
| 折旧费用占比 | - | 6.20% | 5.26% | 3.64% | 4.49% | 9.10% | 9.04% | 7.18% | 6.40% | 4.92% | 2.88% | 5.14% |
|
||||||
|
| 所得税率 | 13.86% | 14.52% | 13.27% | 8.77% | 10.19% | 12.58% | 12.99% | 11.15% | 13.49% | 14.17% | 13.59% | 11.00% |
|
||||||
|
|
||||||
|
|
||||||
|
## 资产占比
|
||||||
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A | 2018A | 2017A | 2016A | 2015A | 2014A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|
||||||
|
| 现金占比 | 36.18% | 38.58% | 36.85% | 31.79% | 28.95% | 43.69% | 31.84% | 37.53% | 28.35% | 8.59% | 14.91% | 2.07% |
|
||||||
|
| 库存占比 | 8.95% | 7.61% | 6.34% | 12.76% | 13.07% | 8.44% | 11.33% | 9.58% | 6.88% | 4.76% | 12.01% | 10.85% |
|
||||||
|
| 应收款占比 | 7.42% | 8.15% | 8.93% | 9.65% | 7.72% | 7.21% | 8.23% | 8.43% | 13.93% | 25.59% | 27.60% | 12.92% |
|
||||||
|
| 预付款占比 | 1.51% | 0.76% | 0.97% | 2.64% | 2.10% | 0.64% | 0.53% | 1.17% | 0.62% | 0.35% | 0.81% | 0.53% |
|
||||||
|
| 固定资产占比 | 14.35% | 14.31% | 16.09% | 14.82% | 13.42% | 12.53% | 17.19% | 15.67% | 16.55% | 13.04% | 15.14% | 8.45% |
|
||||||
|
| 长期投资占比 | 6.68% | 6.97% | 6.98% | 2.93% | 3.56% | 3.07% | 1.52% | 1.31% | 1.59% | 0.59% | - | 7.90% |
|
||||||
|
| 商誉占比 | 0.10% | 0.11% | 0.10% | 0.12% | 0.17% | 0.09% | 0.15% | 0.14% | 0.20% | 0.35% | 1.16% | - |
|
||||||
|
| 其他资产占比 | 24.80% | 23.51% | 23.75% | 25.30% | 31.02% | 24.32% | 29.22% | 26.19% | 31.87% | 46.72% | 28.37% | 57.27% |
|
||||||
|
| 应付款占比 | 14.73% | 16.65% | 16.32% | 15.73% | 15.86% | 9.98% | 10.55% | 9.55% | 10.02% | 11.10% | 16.98% | 13.38% |
|
||||||
|
| 预收款占比 | 4.54% | 3.54% | 3.34% | 3.73% | 3.75% | 4.39% | 6.08% | 6.76% | 0.41% | 0.31% | 1.96% | 0.30% |
|
||||||
|
| 短期借款占比 | 4.50% | 5.41% | 3.09% | 3.60% | 5.09% | 4.91% | 3.16% | 2.85% | 5.26% | 5.13% | 21.90% | 11.29% |
|
||||||
|
| 长期借款占比 | 8.75% | 10.33% | 11.64% | 9.83% | 7.19% | 3.87% | 4.91% | 4.72% | 4.29% | 1.06% | 0.00% | 0.00% |
|
||||||
|
| 运营资产占比 | -1.38% | -3.67% | -3.43% | 5.57% | 3.28% | 1.92% | 3.46% | 2.86% | 11.00% | 19.29% | 21.49% | 10.63% |
|
||||||
|
| 有息负债率 | 13.25% | 15.74% | 14.73% | 13.44% | 12.28% | 8.78% | 8.07% | 7.58% | 9.54% | 6.19% | 21.90% | 11.29% |
|
||||||
|
|
||||||
|
|
||||||
|
## 周转能力
|
||||||
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A | 2018A | 2017A | 2016A | 2015A | 2014A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|
||||||
|
| 存货周转天数 | 138 | 79 | 53 | 106 | 152 | 132 | 129 | 129 | 97 | 59 | 108 | 176 |
|
||||||
|
| 应收款周转天数 | 85 | 64 | 58 | 64 | 66 | 81 | 66 | 76 | 126 | 179 | 153 | 156 |
|
||||||
|
| 应付款周转天数 | 227 | 174 | 138 | 131 | 185 | 156 | 120 | 129 | 142 | 138 | 153 | 218 |
|
||||||
|
| 固定资产周转率 | 2.20 | 3.22 | 3.47 | 3.69 | 3.16 | 2.56 | 2.63 | 2.56 | 2.43 | 3.99 | 4.34 | 3.57 |
|
||||||
|
| 总资产周转率 | 0.32 | 0.46 | 0.56 | 0.55 | 0.42 | 0.32 | 0.45 | 0.40 | 0.40 | 0.52 | 0.66 | 0.30 |
|
||||||
|
|
||||||
|
|
||||||
|
## 人均效率
|
||||||
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A | 2018A | 2017A | 2016A | 2015A | 2014A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|
||||||
|
| 员工人数 | - | 131,988 | - | - | - | - | - | - | - | - | - | - |
|
||||||
|
| 人均创收(万) | - | 274.28 | - | - | - | - | - | - | - | - | - | - |
|
||||||
|
| 人均创利(万) | - | 38.45 | - | - | - | - | - | - | - | - | - | - |
|
||||||
|
| 人均薪酬(万) | - | 19.32 | - | - | - | - | - | - | - | - | - | - |
|
||||||
|
|
||||||
|
|
||||||
|
## 市场表现
|
||||||
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A | 2018A | 2017A | 2016A | 2015A | 2014A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|
||||||
|
| 股价 | 367.26 | 266.00 | 163.26 | 393.42 | 588.00 | 351.11 | 106.40 | 73.80 | - | - | - | - |
|
||||||
|
| 市值(亿) | 16,760 | 11,713 | 7,182 | 9,609 | 13,705 | 8,179 | 2,350 | 1,620 | - | - | - | - |
|
||||||
|
| PE | 33.03 | 26.55 | 23.37 | 60.32 | 245.47 | 179.35 | 69.37 | 41.77 | - | - | - | - |
|
||||||
|
| PB | 5.33 | 4.94 | 3.98 | 6.40 | 18.74 | 13.33 | 6.36 | 5.01 | - | - | - | - |
|
||||||
|
| 股东户数 | 227,474 | 212,061 | 260,992 | 183,317 | 141,963 | 133,060 | 76,710 | 82,514 | - | - | - | - |
|
||||||
|
|
||||||
@ -1,2 +1,2 @@
|
|||||||
ts_code,trade_date,close,turnover_rate,turnover_rate_f,volume_ratio,pe,pe_ttm,pb,ps,ps_ttm,dv_ratio,dv_ttm,total_share,float_share,free_share,total_mv,circ_mv
|
ts_code,trade_date,close,turnover_rate,turnover_rate_f,volume_ratio,pe,pe_ttm,pb,ps,ps_ttm,dv_ratio,dv_ttm,total_share,float_share,free_share,total_mv,circ_mv
|
||||||
688334.SH,20251229,19.38,1.1614,1.8225,0.93,26.8299,23.2995,2.1466,7.6849,6.9443,,,31657.9466,15690.4698,9998.6609,613531.0051,304081.3047
|
688334.SH,20251231,19.36,0.9076,1.4243,0.73,26.8022,23.2755,2.1444,7.677,6.9371,,,31657.9466,15690.4698,9998.6609,612897.8462,303767.4953
|
||||||
|
|||||||
|
@ -205,7 +205,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="report-container">
|
<div class="report-container">
|
||||||
<h1>西高院 (688334.SH) - Financial Report</h1>
|
<h1>西高院 (688334.SH) - Financial Report</h1>
|
||||||
<p><em>Report generated on: 2025-12-30</em></p>
|
<p><em>Report generated on: 2026-01-03</em></p>
|
||||||
|
|
||||||
<table class="company-table">
|
<table class="company-table">
|
||||||
<thead>
|
<thead>
|
||||||
@ -223,8 +223,8 @@
|
|||||||
<td>688334.SH</td>
|
<td>688334.SH</td>
|
||||||
<td>西高院</td>
|
<td>西高院</td>
|
||||||
<td>2023-06-19</td>
|
<td>2023-06-19</td>
|
||||||
<td>26.83</td>
|
<td>26.80</td>
|
||||||
<td>2.15</td>
|
<td>2.14</td>
|
||||||
<td>0.00%</td>
|
<td>0.00%</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@ -293,10 +293,10 @@
|
|||||||
<tr><td class="metric-name">人均创利(万)</td><td>-</td><td>32.67</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
<tr><td class="metric-name">人均创利(万)</td><td>-</td><td>32.67</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
<tr><td class="metric-name">人均薪酬(万)</td><td>-</td><td>31.98</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
<tr><td class="metric-name">人均薪酬(万)</td><td>-</td><td>31.98</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
<tr class="section-row"><td class="section-label">市场表现</td><td class="section-spacer" colspan="7"></td></tr>
|
<tr class="section-row"><td class="section-label">市场表现</td><td class="section-spacer" colspan="7"></td></tr>
|
||||||
<tr><td class="metric-name">股价</td><td>19.38</td><td>16.33</td><td>17.33</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
<tr><td class="metric-name">股价</td><td>19.36</td><td>16.33</td><td>17.33</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
<tr><td class="metric-name">市值(亿)</td><td>61.35</td><td>51.70</td><td>54.86</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
<tr><td class="metric-name">市值(亿)</td><td>61.29</td><td>51.70</td><td>54.86</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
<tr><td class="metric-name">PE</td><td>26.83</td><td>31.84</td><td>42.09</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
<tr><td class="metric-name">PE</td><td>26.80</td><td>31.84</td><td>42.09</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
<tr><td class="metric-name">PB</td><td>2.15</td><td>1.88</td><td>1.84</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
<tr><td class="metric-name">PB</td><td>2.14</td><td>1.88</td><td>1.84</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
<tr><td class="metric-name">股东户数</td><td>11,192</td><td>12,364</td><td>15,965</td><td>7</td><td>-</td><td>-</td><td>-</td></tr>
|
<tr><td class="metric-name">股东户数</td><td>11,192</td><td>12,364</td><td>15,965</td><td>7</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
# 西高院 (688334.SH) - Financial Report
|
# 西高院 (688334.SH) - Financial Report
|
||||||
*Report generated on: 2025-12-30*
|
*Report generated on: 2026-01-03*
|
||||||
|
|
||||||
| 代码 | 简称 | 上市日期 | PE | PB | 股息率(%) |
|
| 代码 | 简称 | 上市日期 | PE | PB | 股息率(%) |
|
||||||
|:---|:---|:---|:---|:---|:---|
|
|:---|:---|:---|:---|:---|:---|
|
||||||
| 688334.SH | 西高院 | 2023-06-19 | 26.83 | 2.15 | 0.00% |
|
| 688334.SH | 西高院 | 2023-06-19 | 26.80 | 2.14 | 0.00% |
|
||||||
|
|
||||||
|
|
||||||
## 主要指标
|
## 主要指标
|
||||||
@ -81,9 +81,9 @@
|
|||||||
## 市场表现
|
## 市场表现
|
||||||
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A |
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A |
|
||||||
|:---|--:|--:|--:|--:|--:|--:|--:|
|
|:---|--:|--:|--:|--:|--:|--:|--:|
|
||||||
| 股价 | 19.38 | 16.33 | 17.33 | - | - | - | - |
|
| 股价 | 19.36 | 16.33 | 17.33 | - | - | - | - |
|
||||||
| 市值(亿) | 61.35 | 51.70 | 54.86 | - | - | - | - |
|
| 市值(亿) | 61.29 | 51.70 | 54.86 | - | - | - | - |
|
||||||
| PE | 26.83 | 31.84 | 42.09 | - | - | - | - |
|
| PE | 26.80 | 31.84 | 42.09 | - | - | - | - |
|
||||||
| PB | 2.15 | 1.88 | 1.84 | - | - | - | - |
|
| PB | 2.14 | 1.88 | 1.84 | - | - | - | - |
|
||||||
| 股东户数 | 11,192 | 12,364 | 15,965 | 7 | - | - | - |
|
| 股东户数 | 11,192 | 12,364 | 15,965 | 7 | - | - | - |
|
||||||
|
|
||||||
|
|||||||
12
data/CN/688778.SH/historical_metrics.csv
Normal file
12
data/CN/688778.SH/historical_metrics.csv
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
date_str,Price,PE,PB,MarketCap,Shareholders
|
||||||
|
20250930,83.9,85.7029,4.8332,42343581864.0,14720.0
|
||||||
|
20241231,45.64,36.4088,2.2251,19203988486.0,14740.0
|
||||||
|
20240930,36.74,29.3089,1.8186,15459126577.000002,13770.0
|
||||||
|
20231231,39.64,14.885,1.9711,16679362480.0,13732.0
|
||||||
|
20221231,77.68,42.0398,2.934,23346779541.000004,14462.0
|
||||||
|
20211231,103.35,103.7733,7.2703,25999993794.0,15688.0
|
||||||
|
20201231,,,,,
|
||||||
|
20191231,,,,,
|
||||||
|
20181231,,,,,
|
||||||
|
20171231,,,,,
|
||||||
|
20161231,,,,,
|
||||||
|
37
data/CN/688778.SH/raw_balance_sheet.csv
Normal file
37
data/CN/688778.SH/raw_balance_sheet.csv
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
ts_code,ann_date,f_ann_date,end_date,report_type,comp_type,end_type,total_share,cap_rese,undistr_porfit,surplus_rese,special_rese,money_cap,trad_asset,notes_receiv,accounts_receiv,oth_receiv,prepayment,div_receiv,int_receiv,inventories,amor_exp,nca_within_1y,sett_rsrv,loanto_oth_bank_fi,premium_receiv,reinsur_receiv,reinsur_res_receiv,pur_resale_fa,oth_cur_assets,total_cur_assets,fa_avail_for_sale,htm_invest,lt_eqt_invest,invest_real_estate,time_deposits,oth_assets,lt_rec,fix_assets,cip,const_materials,fixed_assets_disp,produc_bio_assets,oil_and_gas_assets,intan_assets,r_and_d,goodwill,lt_amor_exp,defer_tax_assets,decr_in_disbur,oth_nca,total_nca,cash_reser_cb,depos_in_oth_bfi,prec_metals,deriv_assets,rr_reins_une_prem,rr_reins_outstd_cla,rr_reins_lins_liab,rr_reins_lthins_liab,refund_depos,ph_pledge_loans,refund_cap_depos,indep_acct_assets,client_depos,client_prov,transac_seat_fee,invest_as_receiv,total_assets,lt_borr,st_borr,cb_borr,depos_ib_deposits,loan_oth_bank,trading_fl,notes_payable,acct_payable,adv_receipts,sold_for_repur_fa,comm_payable,payroll_payable,taxes_payable,int_payable,div_payable,oth_payable,acc_exp,deferred_inc,st_bonds_payable,payable_to_reinsurer,rsrv_insur_cont,acting_trading_sec,acting_uw_sec,non_cur_liab_due_1y,oth_cur_liab,total_cur_liab,bond_payable,lt_payable,specific_payables,estimated_liab,defer_tax_liab,defer_inc_non_cur_liab,oth_ncl,total_ncl,depos_oth_bfi,deriv_liab,depos,agency_bus_liab,oth_liab,prem_receiv_adva,depos_received,ph_invest,reser_une_prem,reser_outstd_claims,reser_lins_liab,reser_lthins_liab,indept_acc_liab,pledge_borr,indem_payable,policy_div_payable,total_liab,treasury_share,ordin_risk_reser,forex_differ,invest_loss_unconf,minority_int,total_hldr_eqy_exc_min_int,total_hldr_eqy_inc_min_int,total_liab_hldr_eqy,lt_payroll_payable,oth_comp_income,oth_eqt_tools,oth_eqt_tools_p_shr,lending_funds,acc_receivable,st_fin_payable,payables,hfs_assets,hfs_sales,cost_fin_assets,fair_value_fin_assets,contract_assets,contract_liab,accounts_receiv_bill,accounts_pay,oth_rcv_total,fix_assets_total,cip_total,oth_pay_total,long_pay_total,debt_invest,oth_debt_invest,update_flag
|
||||||
|
688778.SH,20251025,20251025,20250930,1,1,3,504691083.0,5818208533.03,2479844878.66,214820118.68,12282305.61,1545793268.02,500442636.26,1839327.09,3274558318.21,,130703889.23,,,4569106828.6,,,,,,,,,355007697.24,11039334912.82,,,415510546.21,,,,,,,,,,,370513677.49,,,44411168.29,220019183.01,,16911220.86,6373569230.97,,,,,,,,,,,,,,,,,17412904143.79,447616071.43,120400122.89,,,,,3665057664.16,3066752513.67,,,,55164809.04,98888075.08,,,,,,,,,,,64654828.5,20669849.14,7304476725.81,,,,,4384868.99,224181221.79,,681175461.69,,,,,,,,,,,,,,,,,7985652187.5,40681250.74,,,,418377886.29,9008874070.0,9427251956.29,17412904143.79,,19708401.76,,,,,,,,,,,,153327226.04,3276397645.3,6731810177.83,15278233.65,4073431901.54,1223761602.64,59561637.29,,,,0
|
||||||
|
688778.SH,20250821,20250821,20250630,1,1,2,420771001.0,5980998615.03,2254580025.92,214820118.68,10986948.86,1925619331.91,452848488.37,862810.22,2653122909.26,13857820.73,29731089.94,,,3406881668.77,,,,,,,,,331675486.73,9590168002.06,,,415470604.91,,,,,4160461453.53,1024036414.83,1521025.67,,,,373670278.51,,,48384794.99,205801152.05,,26518522.99,6262709682.38,,,,,,,,,,,,,,,,,15852877684.44,462823571.43,1000555.56,,,,,2632467734.77,2587599845.49,,,,37008036.65,73624358.13,0.0,167840164.8,177335582.28,,,,,,,,122969832.77,8200676.86,5865761534.39,,15051000.0,0.0,,4841118.48,225708875.21,,711016587.65,,,,,,,,,,,,,,,,,6576778122.04,40681250.74,,,,414332884.58,8861766677.82,9276099562.4,15852877684.44,,20291219.07,,,,,,,,,,,,57714747.08,2653985719.48,5220067580.26,13857820.73,4160461453.53,1025557440.5,345175747.08,15051000.0,,,0
|
||||||
|
688778.SH,20250426,20250426,20250331,1,1,1,420771001.0,6021816631.03,2240482843.24,214820118.68,9689859.87,1707849630.67,496376102.55,947690.59,1809824299.93,,8768184.65,,,2542453622.12,,,,,,,,,232860256.56,8423965478.58,,,415977451.35,,,,,,,,,,,365729961.7,,,10418654.65,169439229.74,,22718264.2,6136492636.01,,,,,,,,,,,,,,,,,14560458114.59,506008571.43,51015472.22,,,,,2366407210.72,1736793518.57,,,,19501146.6,39430771.84,,,,,,,,,,,98350032.57,29607629.45,4615008442.36,,,,,4473686.47,226952588.46,,755140858.02,,,,,,,,,,,,,,,,,5370149300.38,40681250.74,,,,326391709.65,8863917104.56,9190308814.21,14560458114.59,,-2982098.52,,,,,,,,,,,,220943898.1,1810771990.52,4103200729.29,7837927.77,3610087029.75,1533301175.73,52958762.29,15005500.0,,,0
|
||||||
|
688778.SH,20250426,20250426,20241231,1,1,4,420771001.0,6021816631.03,2123803846.04,214820118.68,6590712.99,1635067409.62,502771663.1,1195272.09,2347613108.04,6351202.73,11962195.59,,,2475618756.49,,,,,,,,,266851450.49,8571406980.55,,,416662417.57,,,,,3521133209.36,1668282052.68,4557771.37,,,,368656890.1,,,11786299.66,159606804.46,,14312989.12,6175794737.1,,,,,,,,,,,,,,,,,14747201717.65,466008571.43,135113287.0,,,,,2507864315.54,2158602215.76,,,,2083891.9,29878259.78,,,50188008.72,,,,,,,,100767693.29,1505170.56,4988619782.67,,15051000.0,0.0,,5563194.82,206843010.88,,696165327.24,,,,,,,,,,,,,,,,,5684785109.91,35686512.11,,,,325036212.13,8737380395.61,9062416607.74,14747201717.65,,-14735402.02,,,,,,,,,,,,2616940.12,2348808380.13,4666466531.3,6351202.73,3521133209.36,1672839824.05,50188008.72,15051000.0,,,0
|
||||||
|
688778.SH,20241026,20241026,20240930,1,1,3,420771001.0,6021798952.03,2012208604.84,199832907.64,10068766.81,1575690496.69,501121089.25,219480.0,2856712366.32,,10319732.67,,,2490601595.32,,,,,,,,,251842832.02,8627631043.92,,,400022531.92,,,,,,,,,,,371662761.09,,,13153944.67,140145132.64,,18549619.2,5984108197.64,,,,,,,,,,,,,,,,,14611739241.56,477808571.43,375258965.26,,,,,2431711657.85,2053239580.59,,,,53861753.51,28513417.24,,,,,,,,,,,94536142.76,3880350.22,5093967391.38,,,,,5558134.61,118401717.01,,632184028.57,,,,,,,,,,,,,,,,,5726151419.95,35686512.11,,,,255136815.67,8630451005.94,8885587821.61,14611739241.56,,1457285.73,,,,,,,,,,,,32054045.53,2856931846.32,4484951238.44,7343219.92,3433040248.22,1594762223.28,20911478.42,24008000.0,,,0
|
||||||
|
688778.SH,20240803,20240803,20240630,1,1,2,420771001.0,6021772433.53,1883807423.11,199832907.64,7580205.59,1745078933.9,460608386.58,2991201.81,2720076645.72,6602374.42,18230598.96,,,2531115018.13,,,,,,,,,285296221.94,8048971243.32,,,400637570.06,,,,,3523795961.19,1456687005.18,2021527.74,,,,371524116.23,,,14521589.67,140060389.38,,21526079.92,5945521409.8,,,,,,,,,,,,,,,,,13994492653.12,429808571.0,670445231.38,,,,,1685385560.02,2129124673.92,,,,35524893.5,28152239.11,,,28790370.09,,,,,,,,45634235.02,5157181.8,4645039378.61,,24054000.0,0.0,,5967980.05,123371606.98,,590972034.78,,,,,,,,,,,,,,,,,5236011413.39,30686900.84,,,,257818217.35,8500663022.38,8758481239.73,13994492653.12,,-2414047.65,,,,,,,,,,,,16824993.77,2723067847.53,3814510233.94,6602374.42,3523795961.19,1458708532.92,28790370.09,24054000.0,,,0
|
||||||
|
688778.SH,20240418,20240418,20240331,1,1,1,420771001.0,6021745915.03,2049921950.92,199832907.64,5177982.21,2275740582.93,500876430.82,,2893769412.77,,16115381.88,,,2078364225.01,,,,,,,,,200580185.86,8595404790.72,,,400755898.78,,,,,,,,,,,374519366.27,,,15889234.65,126804886.81,,14926708.33,5805701621.21,,,,,,,,,,,,,,,,,14401106411.93,760779999.58,815587998.1,,,,,1406075604.9,2178811908.46,,,,21352165.21,19329571.22,,,,,,,,,,,45089308.04,4733223.6,4556879306.42,,,,,6515006.29,123386496.95,,924497513.02,,,,,,,,,,,,,,,,,5481376819.44,30686900.84,,,,257393694.76,8662335897.73,8919729592.49,14401106411.93,,-4426958.23,,,,,,,,,,,,33670026.01,2893769412.77,3584887513.36,11471053.58,3410187410.45,1446324786.87,32229500.88,24008800.0,,,0
|
||||||
|
688778.SH,20240418,20240418,20231231,1,1,4,420771001.0,6021719396.53,1938633235.51,199832907.64,804629.39,1199576265.64,504162210.94,,3498587724.59,5769293.18,10075576.63,,,1963826719.94,,,,,,,,,176475707.88,7832748733.17,,,397211336.32,,,,,3499556801.18,1155352545.11,22698144.44,,,,377542166.79,,,17256879.63,125590126.18,,34889569.2,5648294785.75,,,,,,,,,,,,,,,,,13481043518.92,704659999.58,,,,,,1399871073.03,2274599472.5,,,,4525017.82,14386237.35,,,25636686.53,,,,,,,,33144082.03,13114504.06,3769581831.51,,24054300.0,0.0,,8172130.69,124477636.92,,872111628.59,,,,,,,,,,,,,,,,,4641693460.1,,,,,257787975.43,8581562083.39,8839350058.82,13481043518.92,,-199086.68,,,,,,,,,,,,4304758.19,3498587724.59,3674470545.53,5769293.18,3499556801.18,1178050689.55,25636686.53,24054300.0,,,1
|
||||||
|
688778.SH,20240418,20240418,20231231,1,1,4,420771001.0,6021719396.53,1938633235.51,199832907.64,804629.39,1199576265.64,504162210.94,,3498587724.59,5769293.18,10075576.63,,,1963826719.94,,,,,,,,,176475707.88,7832748733.17,,,397211336.32,,,,,3499556801.18,1155352545.11,22698144.44,,,,377542166.79,,,17256879.63,125590126.18,,34889569.2,5648294785.75,,,,,,,,,,,,,,,,,13481043518.92,704659999.58,,,,,,1399871073.03,2274599472.5,,,,4525017.82,14386237.35,,,25636686.53,,,,,,,,33144082.03,13114504.06,3769581831.51,,24054300.0,0.0,,8172130.69,124477636.92,,872111628.59,,,,,,,,,,,,,,,,,4641693460.1,,,,,257787975.43,8581562083.39,8839350058.82,13481043518.92,,-199086.68,,,,,,,,,,,,4304758.19,3498587724.59,3674470545.53,5769293.18,3499556801.18,1178050689.55,25636686.53,24054300.0,,,0
|
||||||
|
688778.SH,20231025,20231025,20230930,1,1,3,420771001.0,6021660466.54,1868696597.11,154709975.68,,1334892684.78,451014937.1,,3530900109.56,,77740591.6,,,2134257378.86,,,,,,,,,121639085.14,8534952133.7,,,399737910.46,,,,,,,,,,,333458007.05,,,7572011.58,113898110.65,,96203507.43,5351742851.11,,,,,,,,,,,,,,,,,13886694984.81,1103819090.86,50029166.67,,,,,820248680.43,2480723671.52,,,,38275773.38,77731416.82,,,,,,,,,,,375788341.59,16245211.98,3894934129.86,,,,,3090658.55,131347747.61,,1273514422.6,,,,,,,,,,,,,,,,,5168448552.46,,,,,256431441.01,8461814991.34,8718246432.35,13886694984.81,,-4023048.99,,,,,,,,,,,,7814535.69,3530900109.56,3300972351.95,21771032.42,3467272141.06,916958863.04,28077331.78,24008000.0,,,0
|
||||||
|
688778.SH,20230825,20230825,20230630,1,1,2,420771001.0,6021601536.55,1710967174.89,154709975.68,,1597900433.09,201454664.57,,2987388341.95,21258146.22,39772945.39,,,1960109005.71,,,,,,,,,44360472.61,7875924190.64,,,400535887.11,,,,,3553312964.53,384767917.18,1162538.94,,,,336130016.01,,,8908249.62,103824860.97,,224221106.99,5026351337.09,,,,,,,,,,,,,,,,,12902275527.73,1501151405.57,,,,,,295981433.63,2031720276.28,,,,27885610.43,37020714.04,,,30168093.89,,,,,,,,239537917.18,13881292.69,2688589686.47,,24054000.0,0.0,,3230476.91,115320486.84,,1653049356.56,,,,,,,,,,,,,,,,,4341639043.03,,,,,256138870.58,8304497614.12,8560636484.7,12902275527.73,,-3552074.0,,,,,,,,,,,,12394348.33,2987388341.95,2327701709.91,21258146.22,3553312964.53,385930456.12,30168093.89,24054000.0,,,0
|
||||||
|
688778.SH,20230825,20230825,20230630,1,1,2,420771001.0,6021601536.55,1710967174.89,154709975.68,,1597900433.09,201454664.57,,2987388341.95,21258146.22,39772945.39,,,1960109005.71,,,,,,,,,44360472.61,7875924190.64,,,400535887.11,,,,,3553312964.53,384767917.18,1162538.94,,,,336130016.01,,,8908249.62,103824860.97,,224221106.99,5026351337.09,,,,,,,,,,,,,,,,,12902275527.73,1501151405.57,,,,,,295981433.63,2031720276.28,,,,27885610.43,37020714.04,,,30168093.89,,,,,,,,239537917.18,13881292.69,2688589686.47,,24054000.0,0.0,,3230476.91,115320486.84,,1653049356.56,,,,,,,,,,,,,,,,,4341639043.03,,,,,256138870.58,8304497614.12,8560636484.7,12902275527.73,,-3552074.0,,,,,,,,,,,,12394348.33,2987388341.95,2327701709.91,21258146.22,3553312964.53,385930456.12,30168093.89,24054000.0,,,1
|
||||||
|
688778.SH,20230422,20230422,20230331,1,1,1,300550715.0,6141762892.56,1722150085.25,154709975.68,,1580482702.21,300087805.56,,3039266760.95,,43286831.55,,,2771028896.03,,,,,,,,,26621468.78,8997505460.62,,,400909859.42,,,,,,,,,,,280367962.48,,,10244491.66,104818195.73,,77003350.59,4674203817.25,,,,,,,,,,,,,,,,,13671709277.87,1165804246.29,0.0,,,,,1057685550.04,2093879855.28,,,,20253611.29,88165196.59,,,,,,,,,,,581748338.58,13198672.55,3881989545.25,,,,,3370295.26,119821959.31,,1327371143.85,,,,,,,,,,,,,,,,,5209360689.1,,,,,150216133.25,8312132455.52,8462348588.77,13671709277.87,,-7041212.97,,,,,,,,,,,,4289999.49,3039266760.95,3151565405.32,10498623.19,3586978678.53,193481765.22,22768321.43,24008800.0,,,0
|
||||||
|
688778.SH,20230422,20230422,20221231,1,1,4,300550715.0,6141703962.57,1606576984.32,154709975.68,,1016518212.28,450225555.56,,4954899159.13,6117940.83,17145274.8,,,3351688644.71,,,,,,,,,65190158.73,11052268211.11,,,100264507.77,,,,,3637033016.57,177340923.55,2044274.04,,,,280225858.46,,,,105148736.62,,9520705.23,4328097105.81,,,,,,,,,,,,,,,,,15380365316.92,870785472.33,70057750.0,,,,,3038568961.1,2095600006.69,,,,5510765.63,96853300.33,,,23623245.07,,,,,,,,627113259.93,39336009.35,6002179181.29,,24054300.0,0.0,,3510113.61,119336271.79,,1028026698.17,,,,,,,,,,,,,,,,,7030205879.46,,,,,150616320.93,8199543116.53,8350159437.46,15380365316.92,,-3998521.04,,,,,,,,,,,,5515883.19,4954899159.13,5134168967.79,6117940.83,3637033016.57,179385197.59,23623245.07,24054300.0,,,1
|
||||||
|
688778.SH,20230422,20230422,20221231,1,1,4,300550715.0,6141703962.57,1606576984.32,154709975.68,,1016518212.28,450225555.56,,4954899159.13,6117940.83,17145274.8,,,3351688644.71,,,,,,,,,65190158.73,11052268211.11,,,100264507.77,,,,,3637033016.57,177340923.55,2044274.04,,,,280225858.46,,,,105148736.62,,9520705.23,4328097105.81,,,,,,,,,,,,,,,,,15380365316.92,870785472.33,70057750.0,,,,,3038568961.1,2095600006.69,,,,5510765.63,96853300.33,,,23623245.07,,,,,,,,627113259.93,39336009.35,6002179181.29,,24054300.0,0.0,,3510113.61,119336271.79,,1028026698.17,,,,,,,,,,,,,,,,,7030205879.46,,,,,150616320.93,8199543116.53,8350159437.46,15380365316.92,,-3998521.04,,,,,,,,,,,,5515883.19,4954899159.13,5134168967.79,6117940.83,3637033016.57,179385197.59,23623245.07,24054300.0,,,0
|
||||||
|
688778.SH,20221027,20221027,20220930,1,1,3,300550715.0,6185087323.97,1389990119.99,86447320.65,,2351453876.42,,,5073953535.1,,112551416.26,,,3714034719.4,,,,,,,,,101871929.46,12043107989.06,,,,,,,,,,,,,,265836531.66,,,,100162482.43,,30919090.07,4093445621.21,,,,,,,,,,,,,,,,,16136553610.27,1428072507.13,70052500.0,,,,,3603322999.67,2348868061.23,,,,32088069.27,104309459.74,,,,,,,,,,,193831766.39,47642521.6,6448527606.02,,,,,3649931.97,119377319.94,,1582430402.87,,,,,,,,,,,,,,,,,8030958008.89,,,,,148244549.24,7957351052.14,8105595601.38,16136553610.27,,-4724427.47,,,,,,,,,,,,21725775.98,5073953535.1,5952191060.9,15424019.56,3372393995.64,309960485.39,26686452.14,24008000.0,,,0
|
||||||
|
688778.SH,20220728,20220728,20220630,1,1,2,251572267.0,2740472177.12,1063438583.49,86447320.65,,712228108.61,,,4529376013.18,13110490.42,34145657.81,,,3560832200.78,,,,,,,,,173933995.77,9480020802.6,,,,,,,,3379939953.31,205035401.3,6443630.61,,,,240026250.67,,,,99671046.9,,22422124.48,3956497956.45,,,,,,,,,,,,,,,,,13436518759.05,1539492298.61,221255739.79,,,,,3441042930.79,3452596850.72,,,,23348040.85,72855709.38,,,30220087.67,,,,,,,,190636034.1,25847512.55,7462985434.39,,24054000.0,0.0,,3789750.32,120602784.94,,1688550777.33,,,,,,,,,,,,,,,,,9151536211.72,,,,,146095140.38,4138887406.95,4284982547.33,13436518759.05,,-3042941.31,,,,,,,,,,,,5182528.54,4529376013.18,6893639781.51,13110490.42,3379939953.31,211479031.91,30220087.67,24054000.0,,,0
|
||||||
|
688778.SH,20220427,20220427,20220331,1,1,1,251572267.0,2740345477.61,863714904.27,86447320.65,,1101069754.39,100542222.22,,3436873278.72,,50089551.2,,,3597928149.36,,,,,,,,,292908756.7,9049396562.79,,,,,,,,,,,,,,241406634.79,,,,84634501.16,,9379079.79,3931466576.56,,,,,,,,,,,,,,,,,12980863139.35,1762067980.56,252279643.85,,,,,2860307852.01,3522177792.5,,,,16500173.33,46037389.26,,,,,,,,,,,255172170.07,32859202.09,7026278156.39,,,,,3929568.67,115899122.44,,1907123524.78,,,,,,,,,,,,,,,,,8933401681.17,,,,,108255417.25,3939206040.93,4047461458.18,12980863139.35,,-2873928.6,,,,,,,,,,,,10624906.52,3436873278.72,6382485644.51,19602600.19,3041653212.69,550841689.11,30319026.76,24008800.0,,,0
|
||||||
|
688778.SH,20220331,20220331,20211231,1,1,4,251572267.0,2740218778.11,656816278.43,86447320.65,,425014387.51,200542222.22,,2953734709.32,17747849.68,16872654.29,,,2795347589.34,,,,,,,,,279581019.99,6799751280.56,,,,,,,,2796332676.46,473200177.8,40179437.26,,,,242333479.09,,,,85886312.47,,74618577.85,3716694029.79,,,,,,,,,,,,,,,,,10516445310.35,1383336129.18,6380208.52,,,,,1297720378.95,3484571286.14,,,,8728513.13,62796306.83,,,27153295.52,,,,,,,,254635446.17,38469299.5,5190947432.49,,24064300.0,0.0,,4069387.02,120001104.94,,1533289305.71,,,,,,,,,,,,,,,,,6724236738.2,,,,,56325166.9,3735883405.25,3792208572.15,10516445310.35,,828761.06,,,,,,,,,,,,10492697.73,2953734709.32,4782291665.09,17747849.68,2796332676.46,513379615.06,27153295.52,24064300.0,,,0
|
||||||
|
688778.SH,20211029,20211029,20210930,1,1,3,251572267.0,2739821000.61,556697264.25,30211210.62,,1435013449.1,,,1864210088.39,,14772623.97,,,1902430656.58,,,,,,,,,180285784.85,5777108826.95,,,0.0,,,,,,,,,,,243702801.28,,,,66507494.12,,45232940.44,3452190028.33,,,,,,,,,,,,,,,,,9229298855.28,1027414645.85,600591666.67,,,,,995342099.92,2429404927.79,,,,8014959.58,27427598.19,,,,,,,,,,,258823325.86,34270433.81,4418389246.11,,,,,4209205.38,124934337.26,,1180566188.49,,,,,,,,,,,,,,,,,5598955434.6,,,,,54162859.17,3576180561.51,3630343420.68,9229298855.28,,-2121180.97,,,,,,,,,,,,29750463.8,1864210088.39,3424747027.71,26915414.97,2585975097.63,510166188.45,34763770.49,24008000.0,,,1
|
||||||
|
688778.SH,20211029,20211029,20210930,1,1,3,251572267.0,2739821000.61,556697264.25,30211210.62,,1435013449.1,,,1864210088.39,,14772623.97,,,1902430656.58,,,,,,,,,180285784.85,5777108826.95,,,0.0,,,,,,,,,,,243702801.28,,,,66507494.12,,45232940.44,3452190028.33,,,,,,,,,,,,,,,,,9229298855.28,1027414645.85,600591666.67,,,,,995342099.92,2429404927.79,,,,8014959.58,27427598.19,,,,,,,,,,,258823325.86,34270433.81,4418389246.11,,,,,4209205.38,124934337.26,,1180566188.49,,,,,,,,,,,,,,,,,5598955434.6,,,,,54162859.17,3576180561.51,3630343420.68,9229298855.28,,-2121180.97,,,,,,,,,,,,29750463.8,1864210088.39,3424747027.71,26915414.97,2585975097.63,510166188.45,34763770.49,24008000.0,,,0
|
||||||
|
688778.SH,20210804,20210804,20210630,1,1,2,188679200.0,1355637100.18,408613668.14,30211210.62,,165891758.98,,,1790399271.32,,32576460.7,,,1685741587.99,,,,,,,,,165851148.12,4096114781.6,,,,,,,,,,,,,,245071182.29,,,,65770790.58,,82877230.64,3293744972.26,,,,,,,,,,,,,,,,,7389859753.86,949633960.11,1106316183.92,,,,,897748189.53,1874404379.84,,,,5578055.18,28181937.82,,,,,,,,,,,269813191.41,35518184.06,4255579697.55,,,,,4349023.73,122663403.1,,1100700386.94,,,,,,,,,,,,,,,,,5356280084.49,,,,,50538798.04,1983040871.33,2033579669.37,7389859753.86,,-100307.61,,,,,,,,,,,,9745456.37,1790399271.32,2772152569.37,38911829.45,2282206035.24,616608720.69,28274119.42,24054000.0,,,0
|
||||||
|
688778.SH,20210719,20210719,20210331,1,1,1,188679200.0,1372187447.23,269497926.04,30211210.62,,302698033.33,,,1369143049.46,42416555.99,27000108.55,,,1859683758.59,,,,,,,,,137204483.53,4214041918.61,,,4168399.11,,,,,2326394609.57,375425028.94,64870978.92,,,,246441445.66,,,,64093629.07,,37758555.23,3120981891.73,,,,,,,,,,,,,,,,,7335023810.34,1115380614.61,1178463331.84,,,,,509486444.4,2042485978.64,,,,20968157.43,25521091.65,,,87244225.56,,,,,,,,244330122.64,34012396.86,4148909533.59,,24008800.0,,,4488842.08,126437885.61,,1270316142.3,,,,,,,,,,,,,,,,,5419225675.89,,,,,59355861.51,1856442272.94,1915798134.45,7335023810.34,,-4133510.95,,,,,,,,,,,,6397784.57,1369143049.46,2551972423.04,42416555.99,2326394609.57,440296007.86,87244225.56,24008800.0,,,1
|
||||||
|
688778.SH,20210719,20210719,20210331,1,1,1,188679200.0,1372187447.23,269497926.04,30211210.62,,302698033.33,,,1369143049.46,42416555.99,27000108.55,,,1859683758.59,,,,,,,,,137204483.53,4214041918.61,,,4168399.11,,,,,2326394609.57,375425028.94,64870978.92,,,,246441445.66,,,,64093629.07,,37758555.23,3120981891.73,,,,,,,,,,,,,,,,,7335023810.34,1115380614.61,1178463331.84,,,,,509486444.4,2042485978.64,,,,20968157.43,25521091.65,,,87244225.56,,,,,,,,244330122.64,34012396.86,4148909533.59,,24008800.0,,,4488842.08,126437885.61,,1270316142.3,,,,,,,,,,,,,,,,,5419225675.89,,,,,59355861.51,1856442272.94,1915798134.45,7335023810.34,,-4133510.95,,,,,,,,,,,,6397784.57,1369143049.46,2551972423.04,42416555.99,2326394609.57,440296007.86,87244225.56,24008800.0,,,0
|
||||||
|
688778.SH,20210719,20210719,20201231,1,1,4,188679200.0,1372187447.23,157703141.03,30211210.62,,277915563.42,,,1234540796.12,44045894.07,77834786.48,,,1214093975.17,,,,,,,,,143646449.56,3199682391.8,,,4168399.11,,,,,2379475585.04,287718240.5,3034635.28,,,,247810767.85,,,,60071924.12,,39863485.51,3022143037.41,,,,,,,,,,,,,,,,,6221825429.21,1135256887.11,1042688943.47,,,,,426997585.58,1216933928.46,,,,17259766.01,10322947.11,,,150656168.85,,,,,,,,243571130.43,11948922.68,3122315655.13,,24054300.0,,,4628660.43,130361118.12,,1294300965.66,,,,,,,,,,,,,,,,,4416616620.79,,,,,57099191.26,1748109617.16,1805208808.42,6221825429.21,,-671381.72,,,,,,,,,,,,1936262.54,1234540796.12,1643931514.04,44045894.07,2379475585.04,290752875.78,150656168.85,24054300.0,,,0
|
||||||
|
688778.SH,20210719,20210719,20201231,1,1,4,188679200.0,1372187447.23,157703141.03,30211210.62,,277915563.42,,,1234540796.12,44045894.07,77834786.48,,,1214093975.17,,,,,,,,,143646449.56,3199682391.8,,,4168399.11,,,,,2379475585.04,287718240.5,3034635.28,,,,247810767.85,,,,60071924.12,,39863485.51,3022143037.41,,,,,,,,,,,,,,,,,6221825429.21,1135256887.11,1042688943.47,,,,,426997585.58,1216933928.46,,,,17259766.01,10322947.11,,,150656168.85,,,,,,,,243571130.43,11948922.68,3122315655.13,,24054300.0,,,4628660.43,130361118.12,,1294300965.66,,,,,,,,,,,,,,,,,4416616620.79,,,,,57099191.26,1748109617.16,1805208808.42,6221825429.21,,-671381.72,,,,,,,,,,,,1936262.54,1234540796.12,1643931514.04,44045894.07,2379475585.04,290752875.78,150656168.85,24054300.0,,,1
|
||||||
|
688778.SH,20200804,20200804,20200630,1,1,2,188679200.0,1372187447.23,28280871.19,4434618.18,,335696803.63,,,544877820.67,15209476.98,33333664.82,,,726728765.89,,,,,,,,,154141521.79,2376594686.77,,,4168399.11,,,,,2170886245.9,421366951.36,20528085.7,,,,250549412.23,,,,57612913.43,,3408956.24,2928520963.97,,,,,,,,,,,,,,,,,5305115650.74,235081766.61,1766444838.88,,,,,305044327.22,685608476.74,,,,12630193.37,2630804.62,,,262162841.06,,,,,,,,199334066.73,5422390.4,3239517887.46,,45102000.0,,,4908297.14,134409182.93,,419501246.68,,,,,,,,,,,,,,,,,3659019134.14,,,,,52996426.23,1593100090.37,1646096516.6,5305115650.74,,-482046.23,,,,,,,,,,,,239948.44,544877820.67,990652803.96,15209476.98,2170886245.9,441895037.06,262162841.06,45102000.0,,,1
|
||||||
|
688778.SH,20200804,20200804,20200630,1,1,2,188679200.0,1372187447.23,28280871.19,4434618.18,,335696803.63,,,544877820.67,15209476.98,33333664.82,,,726728765.89,,,,,,,,,154141521.79,2376594686.77,,,4168399.11,,,,,2170886245.9,421366951.36,20528085.7,,,,250549412.23,,,,57612913.43,,3408956.24,2928520963.97,,,,,,,,,,,,,,,,,5305115650.74,235081766.61,1766444838.88,,,,,305044327.22,685608476.74,,,,12630193.37,2630804.62,,,262162841.06,,,,,,,,199334066.73,5422390.4,3239517887.46,,45102000.0,,,4908297.14,134409182.93,,419501246.68,,,,,,,,,,,,,,,,,3659019134.14,,,,,52996426.23,1593100090.37,1646096516.6,5305115650.74,,-482046.23,,,,,,,,,,,,239948.44,544877820.67,990652803.96,15209476.98,2170886245.9,441895037.06,262162841.06,45102000.0,,,0
|
||||||
|
688778.SH,20210719,20210719,20191231,1,1,4,170013678.78,950602909.7,349705428.69,44420543.12,,51441116.28,,,659595746.14,29934557.63,21015750.51,,,859942113.12,,,,,,,,,153255848.88,2522597549.44,,,3591492.88,,,,,1997148158.52,502545983.97,2279045.74,,,,253288056.61,,,,56895322.56,,9635842.43,2825383902.71,,,,,,,,,,,,,,,,,5347981452.15,167037351.99,1751453791.66,,,,,338210765.0,881064981.51,2462418.17,,,24634198.68,2707700.97,,,331207875.32,,,,,,,,57197129.74,22579471.5,3411518332.55,,55136000.0,,,5187933.84,141293807.82,,368655093.65,,,,,,,,,,,,,,,,,3780173426.2,,,,,55769691.16,1512038334.79,1567808025.95,5347981452.15,,-2704225.5,,,,,,,,,,,,,659595746.14,1219275746.51,29934557.63,1997148158.52,504825029.71,331207875.32,55136000.0,,,0
|
||||||
|
688778.SH,20210719,20210719,20191231,1,1,4,170013678.78,950602909.7,349705428.69,44420543.12,,51441116.28,,,659595746.14,29934557.63,21015750.51,,,859942113.12,,,,,,,,,153255848.88,2522597549.44,,,3591492.88,,,,,1997148158.52,502545983.97,2279045.74,,,,253288056.61,,,,56895322.56,,9635842.43,2825383902.71,,,,,,,,,,,,,,,,,5347981452.15,167037351.99,1751453791.66,,,,,338210765.0,881064981.51,2462418.17,,,24634198.68,2707700.97,,,331207875.32,,,,,,,,57197129.74,22579471.5,3411518332.55,,55136000.0,,,5187933.84,141293807.82,,368655093.65,,,,,,,,,,,,,,,,,3780173426.2,,,,,55769691.16,1512038334.79,1567808025.95,5347981452.15,,-2704225.5,,,,,,,,,,,,,659595746.14,1219275746.51,29934557.63,1997148158.52,504825029.71,331207875.32,55136000.0,,,1
|
||||||
|
688778.SH,20190823,20190823,20190630,1,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5740547900.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5740547900.0,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20210719,20210719,20181231,1,1,4,100000000.0,402185198.9,217826054.09,26218943.16,466267.74,164511275.72,,318627912.61,881078987.04,73443987.02,343962447.38,,,1590230889.3,,,,,,,,,155741898.13,3527597397.2,,,,,,,,1080492751.4,696414181.64,3701724.88,,,,139440219.17,,,,43234619.26,,58259900.28,2021543396.63,,,,,,,,,,,,,,,,,5549140793.83,104000000.0,1300431310.06,,,,,1094788400.0,675646379.34,7934511.12,,,22060535.29,10957949.8,5731442.31,,1281704588.72,,,,,,,,10000000.0,54183951.66,4463439068.3,,60000000.0,,,5161758.34,106147526.33,,275309284.67,,,,,,,,,,,,,,,,,4738748352.97,,,,,63695976.97,746696463.89,810392440.86,5549140793.83,,,,,,,,,,,,,,,1199706899.65,1770434779.34,73443987.02,1080492751.4,700115906.52,1287436031.03,60000000.0,,,1
|
||||||
|
688778.SH,20190312,20190312,20180630,1,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3754183300.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3036854500.0,,,,,,717328800.0,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20200804,20200804,20171231,1,1,4,100000000.0,400777224.5,144855758.11,19083139.03,2134017.42,109515935.46,,525443273.42,499240298.89,10672021.07,122918781.49,,,1233213290.29,,,,,,,,,78541878.32,2579545478.94,,,,,,,,575026245.5,421709250.76,2887782.05,,,,140451654.77,,,,16080990.15,,38102970.11,1194258893.34,,,,,,,,,,,,,,,,,3773804372.28,4000000.0,390000000.0,,,,,271834000.0,584552099.74,13721502.86,,,21525467.17,49509441.09,2458125.0,,1532674550.5,,,,,,,,,38485672.46,2904760858.82,,60000000.0,,,,75415721.95,,139415721.95,,,,,,,,,,,,,,,,,3044176580.77,,,,,62777652.45,666850139.06,729627791.51,3773804372.28,,,,,,,,,,,,,,,1024683572.31,856386099.74,10672021.07,575026245.5,424597032.81,1535132675.5,60000000.0,,,1
|
||||||
|
688778.SH,20170810,20170810,20170630,1,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2683034200.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2683034200.0,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20170427,20170427,20161231,1,1,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100000000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0,,,,,,100000000.0,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
37
data/CN/688778.SH/raw_cash_flow.csv
Normal file
37
data/CN/688778.SH/raw_cash_flow.csv
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
ts_code,ann_date,f_ann_date,end_date,comp_type,report_type,end_type,net_profit,finan_exp,c_fr_sale_sg,recp_tax_rends,n_depos_incr_fi,n_incr_loans_cb,n_inc_borr_oth_fi,prem_fr_orig_contr,n_incr_insured_dep,n_reinsur_prem,n_incr_disp_tfa,ifc_cash_incr,n_incr_disp_faas,n_incr_loans_oth_bank,n_cap_incr_repur,c_fr_oth_operate_a,c_inf_fr_operate_a,c_paid_goods_s,c_paid_to_for_empl,c_paid_for_taxes,n_incr_clt_loan_adv,n_incr_dep_cbob,c_pay_claims_orig_inco,pay_handling_chrg,pay_comm_insur_plcy,oth_cash_pay_oper_act,st_cash_out_act,n_cashflow_act,oth_recp_ral_inv_act,c_disp_withdrwl_invest,c_recp_return_invest,n_recp_disp_fiolta,n_recp_disp_sobu,stot_inflows_inv_act,c_pay_acq_const_fiolta,c_paid_invest,n_disp_subs_oth_biz,oth_pay_ral_inv_act,n_incr_pledge_loan,stot_out_inv_act,n_cashflow_inv_act,c_recp_borrow,proc_issue_bonds,oth_cash_recp_ral_fnc_act,stot_cash_in_fnc_act,free_cashflow,c_prepay_amt_borr,c_pay_dist_dpcp_int_exp,incl_dvd_profit_paid_sc_ms,oth_cashpay_ral_fnc_act,stot_cashout_fnc_act,n_cash_flows_fnc_act,eff_fx_flu_cash,n_incr_cash_cash_equ,c_cash_equ_beg_period,c_cash_equ_end_period,c_recp_cap_contrib,incl_cash_rec_saims,uncon_invest_loss,prov_depr_assets,depr_fa_coga_dpba,amort_intang_assets,lt_amort_deferred_exp,decr_deferred_exp,incr_acc_exp,loss_disp_fiolta,loss_scr_fa,loss_fv_chg,invest_loss,decr_def_inc_tax_assets,incr_def_inc_tax_liab,decr_inventories,decr_oper_payable,incr_oper_payable,others,im_net_cashflow_oper_act,conv_debt_into_cap,conv_copbonds_due_within_1y,fa_fnc_leases,im_n_incr_cash_equ,net_dism_capital_add,net_cash_rece_sec,credit_impa_loss,use_right_asset_dep,oth_loss_asset,end_bal_cash,beg_bal_cash,end_bal_cash_equ,beg_bal_cash_equ,update_flag
|
||||||
|
688778.SH,20251025,20251025,20250930,1,1,3,,,10198355511.47,42112018.27,,,,,,,,,,,,103893746.14,10344361275.88,8785709021.19,395263775.52,127038127.25,,,,,,139332215.72,9447343139.68,897018136.2,,1214238740.52,3986919.45,,,1218225659.97,488668506.2,1221497257.98,,,,1710165764.18,-491940104.21,210394634.0,,98362983.64,308757617.64,-111814516.7372,277401514.27,288502329.34,,280453605.93,846357449.54,-537599831.9,29680956.41,-102840843.5,1648634111.52,1545793268.02,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20250821,20250821,20250630,1,1,2,305884620.09,5156493.57,6103527439.3,19265719.47,,,,,,,,,,,,75895448.25,6198688607.02,5139678679.61,249266842.54,72206183.52,,,,,,89501913.76,5550653619.43,648034987.59,,560019199.23,3476739.72,,,563495938.95,299592858.22,550997257.98,,,,850590116.2,-287094177.25,91000000.0,,98362983.64,189362983.64,445136670.4675,204109014.27,9743333.22,,79795638.3,293647985.79,-104285002.15,33227198.15,289883006.34,1635736325.57,1925619331.91,,,,8969614.42,201161886.06,6473115.66,3354158.16,,,,1697657.7,-4053631.27,17917613.43,-33837535.8,-1396523.82,-916706646.85,205001371.03,824021972.52,,648034987.59,,,,289883006.34,,,16144384.04,3950867.88,,1925619331.91,1635736325.57,,,1
|
||||||
|
688778.SH,20250426,20250426,20250331,1,1,1,,,2785591853.31,23781.98,,,,,,,,,,,,49611893.93,2835227529.22,2397138799.28,113586952.79,16986063.56,,,,,,34141530.65,2561853346.28,273374182.94,,408998000.0,3476739.72,,,412474739.72,165019949.24,403999000.0,,,,569018949.24,-156544209.52,91000000.0,,,91000000.0,-100528504.8981,136523300.0,4858885.06,0.0,6053881.28,147436066.34,-56436066.34,12388313.97,72782221.05,1635067409.62,1707849630.67,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20250426,20250426,20250331,1,1,1,,,2785591853.31,23781.98,,,,,,,,,,,,49611893.93,2835227529.22,2397138799.28,113586952.79,16986063.56,,,,,,34141530.65,2561853346.28,273374182.94,,408998000.0,3476739.72,,,412474739.72,165019949.24,403999000.0,,,,569018949.24,-156544209.52,91000000.0,,,91000000.0,,136523300.0,4858885.06,0.0,6053881.28,147436066.34,-56436066.34,12388313.97,72782221.05,1635067409.62,1707849630.67,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
688778.SH,20250426,20250426,20241231,1,1,4,488321118.14,46743354.39,9519912802.79,57517.49,,,,,,,,,,,,224636301.88,9744606622.16,7254835304.6,511330436.91,102468158.73,,,,,,122737060.76,7991370961.0,1753235661.16,,1988996000.0,12595707.32,,,2001591707.32,965807934.63,2007967970.68,,,,2973775905.31,-972184197.99,990023300.0,,,1065684200.0,678719158.6646,1035805714.27,326425093.53,,44280325.11,1406511132.91,-340826932.91,-4733386.28,435491143.98,1199576265.64,1635067409.62,75660900.0,75660900.0,,194158465.59,367807450.38,12057787.74,5470579.97,,,,5877278.79,-7518003.31,18178379.54,-31470994.78,-2608935.87,-705950502.14,385685141.37,1023052385.03,,1753235661.16,,,,435491143.98,,,-60327208.5,7973281.22,,1635067409.62,1199576265.64,,,1
|
||||||
|
688778.SH,20241026,20241026,20240930,1,1,3,,,7087639973.57,57632.97,,,,,,,,,,,,71494166.09,7159191772.63,5370289813.86,337422151.57,71701945.51,,,,,,107755773.7,5887169684.64,1272022087.99,,1779997000.0,11752273.54,,,1791749273.54,758350709.3,1779997000.0,,,,2538347709.3,-746598435.76,990023300.0,,,990023300.0,183405487.5758,778845714.27,320429058.26,,42889722.06,1142164494.59,-152141194.59,2831773.41,376114231.05,1199576265.64,1575690496.69,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20240803,20240803,20240630,1,1,2,238436027.58,31281783.4,4766567808.97,39791.27,,,,,,,,,,,,57121136.84,4823728737.08,3524984588.47,219140169.6,50814498.08,,,,,,86102693.1,3881041949.25,942686787.83,,1269998000.0,9558662.57,,,1279556662.57,506228536.57,1229998760.0,,,,1736227296.57,-456670634.0,885023300.0,,,885023300.0,,479060000.0,312656120.78,,32728210.92,824444331.7,60578968.3,-1092453.87,545502668.26,1199576265.64,1745078933.9,,,,60538331.13,183242526.76,6018050.56,2735289.96,,,,394179.22,-3540044.35,4413115.89,-14634231.77,-2204150.64,-627826629.32,891599972.16,202275019.26,,942686787.83,,,,545502668.26,,,-40840441.78,4022413.57,,1745078933.9,1199576265.64,,,0
|
||||||
|
688778.SH,20240803,20240803,20240630,1,1,2,238436027.58,31281783.4,4766567808.97,39791.27,,,,,,,,,,,,57121136.84,4823728737.08,3524984588.47,219140169.6,50814498.08,,,,,,86102693.1,3881041949.25,942686787.83,,1269998000.0,9558662.57,,,1279556662.57,506228536.57,1229998760.0,,,,1736227296.57,-456670634.0,885023300.0,,,885023300.0,472368050.5964,479060000.0,312656120.78,,32728210.92,824444331.7,60578968.3,-1092453.87,545502668.26,1199576265.64,1745078933.9,,,,60538331.13,183242526.76,6018050.56,2735289.96,,,,394179.22,-3540044.35,4413115.89,-14634231.77,-2204150.64,-627826629.32,891599972.16,202275019.26,,942686787.83,,,,545502668.26,,,-40840441.78,4022413.57,,1745078933.9,1199576265.64,,,1
|
||||||
|
688778.SH,20240418,20240418,20240331,1,1,1,,,2460273540.2,16901.69,,,,,,,,,,,,31643533.83,2491933975.72,1822253426.8,104522641.89,26731404.58,,,,,,34246115.37,1987753588.64,504180387.08,,499999000.0,6701922.18,,,506700922.18,275683706.59,500000250.0,,0.0,,775683956.59,-268983034.41,885023300.0,,0.0,885023300.0,132764488.8373,3000000.0,8901222.69,0.0,30830900.84,42732123.53,842291176.47,-1324211.85,1076164317.29,1199576265.64,2275740582.93,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20240418,20240418,20231231,1,1,4,529491777.15,106270457.08,13544969185.54,189783.19,,,,,,,,,,,,139163127.59,13684322096.32,10211449407.98,415120201.27,345390598.57,,,,,,132162183.06,11104122390.88,2580199705.44,,1050811416.67,4622338.92,,,1055433755.59,1145249533.56,1394739000.0,,,,2539988533.56,-1484554777.97,872800000.0,,,977800000.0,1715756451.248,1704400000.0,198164326.08,,6215437.98,1908779764.06,-930979764.06,18392889.95,183058053.36,1016518212.28,1199576265.64,105000000.0,105000000.0,,178565661.45,349928190.47,9219518.08,2969417.87,,,,5904759.36,-4163210.94,-7107457.5,-18139113.45,1427889.22,1209296263.32,2158853595.45,-1873055678.24,,2580199705.44,,,,183058053.36,,,-76517812.99,6450819.72,,1199576265.64,1016518212.28,,,1
|
||||||
|
688778.SH,20231025,20231025,20230930,1,1,3,,,10467104062.85,146609.24,,,,,,,,,,,,110926774.7,10578177446.79,8404738982.67,273972895.77,286569851.36,,,,,,114356238.84,9079637968.64,1498539478.15,,1050811416.67,4622338.92,,,1055433755.59,783327220.89,1344740000.0,,,,2128067220.89,-1072633465.3,852000000.0,,,957000000.0,210758519.33,888600000.0,186159345.83,,5831704.98,1080591050.81,-123591050.81,16059510.46,318374472.5,1016518212.28,1334892684.78,105000000.0,105000000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
688778.SH,20231025,20231025,20230930,1,1,3,,,10467104062.85,146609.24,,,,,,,,,,,,110926774.7,10578177446.79,8404738982.67,273972895.77,286569851.36,,,,,,114356238.84,9079637968.64,1498539478.15,,1050811416.67,4622338.92,,,1055433755.59,783327220.89,1344740000.0,,,,2128067220.89,-1072633465.3,852000000.0,,,957000000.0,804172713.5816,888600000.0,186159345.83,,5831704.98,1080591050.81,-123591050.81,16059510.46,318374472.5,1016518212.28,1334892684.78,105000000.0,105000000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20230825,20230825,20230630,1,1,2,255266071.62,54601385.4,7554353431.31,107955.04,,,,,,,,,,,,66692050.39,7621153436.74,6015882586.56,178481285.98,257006985.32,,,,,,79167789.01,6530538646.87,1090614789.87,,550811416.67,2232282.1,,,553043698.77,584062162.33,594740000.0,,,,1178802162.33,-625758463.56,742000000.0,,,847000000.0,541892847.5576,568200000.0,174474825.72,,2379471.32,745054297.04,101945702.96,14580191.54,581382220.81,1016518212.28,1597900433.09,105000000.0,105000000.0,,95487727.3,173924512.39,3747673.8,1781654.72,,,,2068957.5,,-9631902.28,1452840.51,-279636.7,1296091911.7,2147122539.72,-2830501685.41,,1090614789.87,,,,581382220.81,,,-103548548.23,3031287.83,,1597900433.09,1016518212.28,,,1
|
||||||
|
688778.SH,20230422,20230422,20230331,1,1,1,,,4316666162.25,54863.79,,,,,,,,,,,,34693537.06,4351414563.1,3451563285.74,85248896.27,105399593.19,,,,,,32391685.58,3674603460.78,676811102.32,,450000000.0,2230059.88,,,452230059.88,134341538.79,594740000.0,,,,729081538.79,-276851478.91,402000000.0,,0.0,402000000.0,60289974.7726,222700000.0,12294856.95,,1742485.66,236737342.61,165262657.39,-1257790.87,563964489.93,1016518212.28,1580482702.21,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20230422,20230422,20230331,1,1,1,,,4316666162.25,54863.79,,,,,,,,,,,,34693537.06,4351414563.1,3451563285.74,85248896.27,105399593.19,,,,,,32391685.58,3674603460.78,676811102.32,,450000000.0,2230059.88,,,452230059.88,134341538.79,594740000.0,,,,729081538.79,-276851478.91,402000000.0,,0.0,402000000.0,681689974.7726,222700000.0,12294856.95,,1742485.66,236737342.61,165262657.39,-1257790.87,563964489.93,1016518212.28,1580482702.21,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
688778.SH,20230422,20230422,20221231,1,1,4,1129880515.59,120191224.54,15561092286.68,297597281.58,,,,,,,,,,,,171518574.44,16030208142.7,16723541559.63,336031383.04,391079031.02,,,,,,140986766.58,17591638740.27,-1561430597.57,,303251813.2,2477374.43,4535.5,,305733723.13,650661425.97,650000000.0,,,,1300661425.97,-994927702.84,2333165406.17,,,5913365300.25,-2383625052.1233,2411778233.78,186424842.53,,179740556.82,2777943633.13,3135421667.12,8938215.13,588001581.84,428516630.44,1016518212.28,3580199894.08,85000000.0,,149808467.88,296389110.13,5781446.77,,,,-4535.5,5129425.18,,-5499341.74,-17982000.92,-559273.41,-628607056.11,-3093979995.47,372065771.02,,-1561430597.57,,,,588001581.84,,,102361558.43,3594086.04,,1016518212.28,428516630.44,,,1
|
||||||
|
688778.SH,20230422,20230422,20221231,1,1,4,1129880515.59,120191224.54,15561092286.68,297597281.58,,,,,,,,,,,,171518574.44,16030208142.7,16723541559.63,336031383.04,391079031.02,,,,,,140986766.58,17591638740.27,-1561430597.57,,303251813.2,2477374.43,4535.5,,305733723.13,650661425.97,650000000.0,,,,1300661425.97,-994927702.84,2333165406.17,,,5913365300.25,-2383625052.1233,2411778233.78,186424842.53,,179740556.82,2777943633.13,3135421667.12,8938215.13,588001581.84,428516630.44,1016518212.28,3580199894.08,85000000.0,,149808467.88,296389110.13,5781446.77,,,,-4535.5,5129425.18,,-5499341.74,-17982000.92,-559273.41,-628607056.11,-3093979995.47,372065771.02,,-1561430597.57,,,,588001581.84,,,102361558.43,3594086.04,,1016518212.28,428516630.44,,,0
|
||||||
|
688778.SH,20221027,20221027,20220930,1,1,3,,,10685973810.23,283588668.05,,,,,,,,,,,,127040894.79,11096603373.07,11706738166.87,218908643.8,293300927.75,,,,,,158214602.87,12377162341.29,-1280558968.22,,300000000.0,5729187.63,4535.5,,305733723.13,456697841.67,100000000.0,,,,556697841.67,-250964118.54,1883165406.17,,,5463365300.25,-1478723299.4085,1837778233.78,172333018.04,,4122243.26,2014233495.08,3449131805.17,8830770.5,1926439488.91,425014387.51,2351453876.42,3580199894.08,85000000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20221027,20221027,20220930,1,1,3,,,10685973810.23,283588668.05,,,,,,,,,,,,127040894.79,11096603373.07,11706738166.87,218908643.8,293300927.75,,,,,,158214602.87,12377162341.29,-1280558968.22,,300000000.0,5729187.63,4535.5,,305733723.13,456697841.67,100000000.0,,,,556697841.67,-250964118.54,1883165406.17,,,5463365300.25,-2521538945.6,1837778233.78,172333018.04,,4122243.26,2014233495.08,3449131805.17,8830770.5,1926439488.91,425014387.51,2351453876.42,3580199894.08,85000000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
688778.SH,20220728,20220728,20220630,1,1,2,537063271.42,50666027.26,6014968609.39,204187720.95,,,,,,,,,,,,109316639.16,6328472969.5,5815045585.63,142413044.39,148034350.65,,,,,,67862487.72,6173355468.39,155117501.11,,300000000.0,2477374.43,,,302477374.43,310236406.34,100000000.0,,,,410236406.34,-107759031.91,1083165406.17,,,1168165406.17,150961508.8056,777446751.43,157256578.37,,1289619.26,935992949.06,232172457.11,7682794.79,287213721.1,425014387.51,712228108.61,85000000.0,85000000.0,,164846458.89,138252530.69,2749706.31,0.0,,,0.0,1840747.52,0.0,-1935152.21,-13248352.53,-279636.7,-847483996.57,-2009254800.15,2130716877.5,,155117501.11,,,,287213721.1,,,0.0,1183819.68,,712228108.61,425014387.51,0.0,0.0,1
|
||||||
|
688778.SH,20220427,20220427,20220331,1,1,1,,,2526112830.15,12334377.98,,,,,,,,,,,,74977487.83,2613424695.96,2362586038.05,71144779.33,66045554.23,,,,,,44172677.62,2543949049.23,69475646.73,,200000000.0,1580152.21,,,201580152.21,153549983.27,100000000.0,,,,253549983.27,-51969831.06,832103201.18,,,882103201.18,136999478.7791,207379400.0,15221237.31,,644809.63,223245446.94,658857754.24,-308203.03,676055366.88,425014387.51,1101069754.39,50000000.0,50000000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20220331,20220331,20211231,1,1,4,568137491.16,123429328.39,4990224293.12,58318651.83,,,,,,,,,,,,82535568.49,5131078513.44,4154030691.03,265620315.47,186894602.84,,,,,,92521864.72,4699067474.06,432011039.38,,114293314.34,484075.51,,,114777389.85,556253874.65,300000000.0,,,,856253874.65,-741476484.8,1770381988.6,,,3238718123.02,-12568210.3197,2526278487.66,81523635.77,4500000.0,173696024.37,2781498147.8,457219975.22,-655705.71,147098824.09,277915563.42,425014387.51,1468336134.42,4500000.0,,74960397.3,232895000.28,5477288.76,,,,,6060690.52,,-11210471.23,-26094072.3,-559273.41,-1656214011.47,-2168669804.86,3190858693.08,,432011039.38,,,,147098824.09,,,90514386.09,2425397.07,,425014387.51,277915563.42,,,1
|
||||||
|
688778.SH,20220331,20220331,20211231,1,1,4,568137491.16,123429328.39,4990224293.12,58318651.83,,,,,,,,,,,,82535568.49,5131078513.44,4154030691.03,265620315.47,186894602.84,,,,,,92521864.72,4699067474.06,432011039.38,,114293314.34,484075.51,,,114777389.85,556253874.65,300000000.0,,,,856253874.65,-741476484.8,1770381988.6,,,3238718123.02,-12568210.3197,2526278487.66,81523635.77,4500000.0,173696024.37,2781498147.8,457219975.22,-655705.71,147098824.09,277915563.42,425014387.51,1468336134.42,4500000.0,,74960397.3,232895000.28,5477288.76,,,,,6060690.52,,-11210471.23,-26094072.3,-559273.41,-1656214011.47,-2168669804.86,3190858693.08,,432011039.38,,,,147098824.09,,,90514386.09,2425397.07,,425014387.51,277915563.42,,,0
|
||||||
|
688778.SH,20211029,20211029,20210930,1,1,3,,,3485925713.29,46088941.13,,,,,,,,,,,,52526389.22,3584541043.64,2463491571.8,178562716.59,154345697.74,,,,,,52165506.79,2848565492.92,735975550.72,,,,0.0,,0.0,296383245.54,,,,,296383245.54,-296383245.54,873962788.6,,,2337798923.02,513272096.4696,1401813487.66,62051728.14,,156135500.0,1620000715.8,717798207.22,-292626.72,1157097885.68,277915563.42,1435013449.1,1463836134.42,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20210804,20210804,20210630,1,1,2,,,2123656374.88,35011133.26,,,,,,,,,,,,32170614.77,2190838122.91,1598717700.87,118443305.23,99475539.8,,,,,,38413871.05,1855050416.95,335787705.96,,,,,,,160115703.19,,,,,160115703.19,-160115703.19,563962788.6,,,563962788.6,452466903.8866,660015559.1,41221370.52,,150135500.0,851372429.62,-287409641.02,-286166.19,-112023804.44,277915563.42,165891758.98,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20210719,20210719,20210331,1,1,1,114411526.09,37952651.07,912941976.75,9453556.72,,,,,,,,,,,,39296907.67,961692441.14,779121093.92,46553352.95,42989223.94,,,,,,30931549.92,899595220.73,62097220.41,,,,,,,68944229.06,,,,,68944229.06,-68944229.06,253962788.6,,,253962788.6,21817605.1208,140857142.86,21266861.3,,60000000.0,222124004.16,31838784.44,-209305.88,24782469.91,277915563.42,302698033.33,,,,3500772.42,56466196.47,1369322.19,,,,,1769384.24,,,-5825558.32,-139818.35,-737188375.76,-845164802.15,1427913593.38,,62097220.41,,,,24782469.91,,,7032329.13,,,302698033.33,277915563.42,,,1
|
||||||
|
688778.SH,20210719,20210719,20201231,1,1,4,251637337.2,114394645.43,3038419568.9,57939847.61,,,,,,,,,,,,69782314.55,3166141731.06,2346503512.56,176565500.35,107473340.8,,,,,,138719470.32,2769261824.03,396879907.03,,,,506780.29,,506780.29,333176928.52,,,,,333176928.52,-332670148.23,2922289400.0,,,3089919297.16,45978881.3941,2487571428.58,286552967.0,3000000.0,155000000.0,2929124395.58,160794901.58,1469786.76,226474447.14,51441116.28,277915563.42,167629897.16,3000000.0,,47360230.97,191083013.24,5477288.76,,,,477694.2,9514381.22,,-1103388.89,-3176601.56,-559273.41,-401512093.02,-269338780.61,422354744.44,,396879907.03,,,,226474447.14,,,30270709.06,,,277915563.42,51441116.28,,,1
|
||||||
|
688778.SH,20210719,20210719,20201231,1,1,4,251637337.2,114394645.43,3038419568.9,57939847.61,,,,,,,,,,,,69782314.55,3166141731.06,2346503512.56,176565500.35,107473340.8,,,,,,138719470.32,2769261824.03,396879907.03,,,,506780.29,,506780.29,333176928.52,,,,,333176928.52,-332670148.23,2922289400.0,,,3089919297.16,45978881.3941,2487571428.58,286552967.0,3000000.0,155000000.0,2929124395.58,160794901.58,1469786.76,226474447.14,51441116.28,277915563.42,167629897.16,3000000.0,,47360230.97,191083013.24,5477288.76,,,,477694.2,9514381.22,,-1103388.89,-3176601.56,-559273.41,-401512093.02,-269338780.61,422354744.44,,396879907.03,,,,226474447.14,,,30270709.06,,,277915563.42,51441116.28,,,0
|
||||||
|
688778.SH,20211029,20211029,20200930,1,1,3,,,2092787793.24,56325556.01,,,,,,,,,,,,61906193.62,2211019542.87,1518364943.91,120416567.02,77113641.48,,,,,,104595931.92,1820491084.33,390528458.54,,,,1500.0,,1500.0,267834691.2,,,,,267834691.2,-267833191.2,1525000000.0,,,1692629897.16,,1272571428.58,252644432.53,3000000.0,95000000.0,1620215861.11,72414036.05,2196295.44,197305598.83,51441116.28,248746715.11,167629897.16,3000000.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
688778.SH,20200804,20200804,20200630,1,1,2,92250423.63,46343627.2,1240123774.8,22113477.75,,,,,,,,,,,,30577349.93,1292814602.48,800205390.85,82642425.85,53133931.01,,,,,,42953916.56,978935664.27,313878938.21,,,,1500.0,,1500.0,155690946.19,,,,,155690946.19,-155689446.19,1185000000.0,,,1352629897.16,412884613.4532,960000000.0,232929121.33,3000000.0,35000000.0,1227929121.33,124700775.83,1365419.5,284255687.35,51441116.28,335696803.63,167629897.16,3000000.0,,27930393.28,89000046.67,2738644.38,,,,11525.44,4284214.24,,-1103388.89,-717590.87,-279636.7,105282953.95,305378440.03,-351213371.88,,313878938.21,,,,284255687.35,,,-6027342.27,,,335696803.63,51441116.28,,,1
|
||||||
|
688778.SH,20200804,20200804,20200630,1,1,2,92250423.63,46343627.2,1240123774.8,22113477.75,,,,,,,,,,,,30577349.93,1292814602.48,800205390.85,82642425.85,53133931.01,,,,,,42953916.56,978935664.27,313878938.21,,,,1500.0,,1500.0,155690946.19,,,,,155690946.19,-155689446.19,1185000000.0,,,1352629897.16,412884613.4532,960000000.0,232929121.33,3000000.0,35000000.0,1227929121.33,124700775.83,1365419.5,284255687.35,51441116.28,335696803.63,167629897.16,3000000.0,,27930393.28,89000046.67,2738644.38,,,,11525.44,4284214.24,,-1103388.89,-717590.87,-279636.7,105282953.95,305378440.03,-351213371.88,,313878938.21,,,,284255687.35,,,-6027342.27,,,335696803.63,51441116.28,,,0
|
||||||
|
688778.SH,20210719,20210719,20200331,1,1,1,34582066.81,24675367.33,590326266.21,13019601.56,,,,,,,,,,,,5106664.61,608452532.38,397023743.91,29569511.1,9725913.07,,,,,,22610137.63,458929305.71,149523226.67,,,,,,,118036407.05,,,,,118036407.05,-118036407.05,585000000.0,,,749629897.16,,200000000.0,196463918.38,,12500000.0,408963918.38,340665978.78,1246993.32,373399791.72,51441116.28,424840908.0,164629897.16,,,14706127.52,44037417.54,1369322.19,,,,,60277.71,,105152.64,-2936036.31,-139818.35,54449902.77,45811914.81,-73924634.01,,149523226.67,,,,373399791.72,,,6726166.02,,,424840908.0,51441116.28,,,1
|
||||||
|
688778.SH,20210719,20210719,20191231,1,1,4,142730777.95,109701423.08,3040791932.81,47894804.22,,,,,,,,,,,,146816874.74,3235503611.77,2695959985.17,159385513.12,114526261.24,,,,,,93794652.22,3063666411.75,171837200.02,,,,700100.0,,700100.0,585823275.12,3351250.0,,,,589174525.12,-588474425.12,2010000000.0,,,2629020646.88,-898419626.99,1410000000.0,98377100.83,1500000.0,817490966.8,2325868067.63,303152579.25,414486.41,-113070159.44,164511275.72,51441116.28,619020646.88,1500000.0,,56817227.81,115728870.72,5468793.63,,,,947653.98,277706.17,,328364.56,-13660703.3,26175.5,673471548.37,168818580.04,-1077151762.53,,171837200.02,,,,-113070159.44,,,-11667455.96,,,51441116.28,164511275.72,,,1
|
||||||
|
688778.SH,20210719,20210719,20191231,1,1,4,142730777.95,109701423.08,3040791932.81,47894804.22,,,,,,,,,,,,146816874.74,3235503611.77,2695959985.17,159385513.12,114526261.24,,,,,,93794652.22,3063666411.75,171837200.02,,,,700100.0,,700100.0,585823275.12,3351250.0,,,,589174525.12,-588474425.12,2010000000.0,,,2629020646.88,-898419626.99,1410000000.0,98377100.83,1500000.0,817490966.8,2325868067.63,303152579.25,414486.41,-113070159.44,164511275.72,51441116.28,619020646.88,1500000.0,,56817227.81,115728870.72,5468793.63,,,,947653.98,277706.17,,328364.56,-13660703.3,26175.5,673471548.37,168818580.04,-1077151762.53,,171837200.02,,,,-113070159.44,,,-11667455.96,,,51441116.28,164511275.72,,,0
|
||||||
|
688778.SH,20210719,20210719,20181231,1,1,4,81739174.49,107387619.4,3939876897.35,77722200.03,,,,,,,,,,,,71244859.79,4088843957.17,3579388258.84,126126437.64,116039626.06,,,,,,155793840.51,3977348163.05,111495794.12,,,,,,,612866302.48,,,,,612866302.48,-612866302.48,1360000000.0,,25000000.0,1385000000.0,-612499543.8517,390000000.0,90487021.18,,349213930.05,829700951.23,555299048.77,1066799.85,54995340.26,109515935.46,164511275.72,,,,86581336.59,59692527.17,3072435.6,,,,179084.16,2673930.2,,,-27153629.11,5161758.34,-423476503.79,-566777902.54,784798463.15,,111495794.12,,,,54995340.26,,,,,,164511275.72,109515935.46,,,1
|
||||||
|
688778.SH,20200804,20200804,20171231,1,1,4,173472703.48,43195626.13,696989047.96,39881179.35,,,,,,,,,,,,75229883.77,812100111.08,1182879736.74,84937048.79,44988451.94,,,,,,93161590.8,1405966828.27,-593866717.19,,,,1000.0,,1000.0,379211287.96,,,,,379211287.96,-379210287.96,394000000.0,,692679496.4,1118400267.81,,,34723437.49,,,34723437.49,1083676830.32,-3487725.97,107112099.2,2403836.26,109515935.46,31720771.41,,,15532866.58,45939419.29,1527445.75,,,,3665.64,12844474.24,,,-8147227.81,,-914766546.86,-1174467142.59,1210058639.19,,-593866717.19,,,,107112099.2,,,,,,109515935.46,2403836.26,,,1
|
||||||
|
19
data/CN/688778.SH/raw_dividends_raw.csv
Normal file
19
data/CN/688778.SH/raw_dividends_raw.csv
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
end_date,ex_date,div_proc,cash_div
|
||||||
|
20250630,,预案,0.0
|
||||||
|
20250630,,股东大会通过,0.0
|
||||||
|
20250630,20250910,实施,0.2
|
||||||
|
20241231,,预案,0.0
|
||||||
|
20241231,,股东大会通过,0.0
|
||||||
|
20241231,20250703,实施,0.4
|
||||||
|
20240630,,预案,0.0
|
||||||
|
20231231,,预案,0.0
|
||||||
|
20231231,,股东大会通过,0.0
|
||||||
|
20231231,20240614,实施,0.7
|
||||||
|
20230630,,预案,0.0
|
||||||
|
20221231,,预案,0.0
|
||||||
|
20221231,,股东大会通过,0.0
|
||||||
|
20221231,20230606,实施,0.5
|
||||||
|
20220630,,预案,0.0
|
||||||
|
20211231,,预案,0.0
|
||||||
|
20211231,,股东大会通过,0.0
|
||||||
|
20211231,20220523,实施,0.5
|
||||||
|
1010
data/CN/688778.SH/raw_historical_metrics_daily_basic.csv
Normal file
1010
data/CN/688778.SH/raw_historical_metrics_daily_basic.csv
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,19 @@
|
|||||||
|
ts_code,ann_date,end_date,holder_num
|
||||||
|
688778.SH,20250821,20250630,14720
|
||||||
|
688778.SH,20250426,20250331,14235
|
||||||
|
688778.SH,20250426,20241231,14740
|
||||||
|
688778.SH,20241026,20240930,13770
|
||||||
|
688778.SH,20240803,20240630,14169
|
||||||
|
688778.SH,20240418,20240331,13613
|
||||||
|
688778.SH,20240418,20231231,13732
|
||||||
|
688778.SH,20231025,20230930,13957
|
||||||
|
688778.SH,20230825,20230630,15024
|
||||||
|
688778.SH,20230422,20230331,16033
|
||||||
|
688778.SH,20230422,20221231,14462
|
||||||
|
688778.SH,20221027,20220930,11115
|
||||||
|
688778.SH,20220728,20220630,12073
|
||||||
|
688778.SH,20220427,20220331,14159
|
||||||
|
688778.SH,20220331,20220228,15105
|
||||||
|
688778.SH,20220331,20211231,15688
|
||||||
|
688778.SH,20211029,20210930,15837
|
||||||
|
688778.SH,20210804,20210805,51601
|
||||||
|
44
data/CN/688778.SH/raw_income_statement.csv
Normal file
44
data/CN/688778.SH/raw_income_statement.csv
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
ts_code,ann_date,f_ann_date,end_date,report_type,comp_type,end_type,basic_eps,diluted_eps,total_revenue,revenue,int_income,prem_earned,comm_income,n_commis_income,n_oth_income,n_oth_b_income,prem_income,out_prem,une_prem_reser,reins_income,n_sec_tb_income,n_sec_uw_income,n_asset_mg_income,oth_b_income,fv_value_chg_gain,invest_income,ass_invest_income,forex_gain,total_cogs,oper_cost,int_exp,comm_exp,biz_tax_surchg,sell_exp,admin_exp,fin_exp,assets_impair_loss,prem_refund,compens_payout,reser_insur_liab,div_payt,reins_exp,oper_exp,compens_payout_refu,insur_reser_refu,reins_cost_refund,other_bus_cost,operate_profit,non_oper_income,non_oper_exp,nca_disploss,total_profit,income_tax,n_income,n_income_attr_p,minority_gain,oth_compr_income,t_compr_income,compr_inc_attr_p,compr_inc_attr_m_s,ebit,ebitda,insurance_exp,undist_profit,distable_profit,rd_exp,fin_exp_int_exp,fin_exp_int_inc,transfer_surplus_rese,transfer_housing_imprest,transfer_oth,adj_lossgain,withdra_legal_surplus,withdra_legal_pubfund,withdra_biz_devfund,withdra_rese_fund,withdra_oth_ersu,workers_welfare,distr_profit_shrhder,prfshare_payable_dvd,comshare_payable_dvd,capit_comstock_div,continued_net_profit,update_flag
|
||||||
|
688778.SH,20251025,20251025,20250930,1,1,3,1.1,1.1,13059219222.37,13059219222.37,,,,,,,,,,,,,,,4521696.64,-29919515.1,-3140850.45,,12443937874.6,11753569900.62,,,59882045.95,32215296.78,154605972.9,5831187.58,1215491.3,,,,,,,,,,,616846615.68,985356.14,5519043.5,,612312928.32,56903666.57,555409261.75,552209641.93,3199619.82,43864537.17,599273798.92,586653445.71,12620353.21,646846254.43,,,,,390248834.07,12494954.91,14377717.66,,,,,,,,,,,,,,,555409261.75,1
|
||||||
|
688778.SH,20250821,20250821,20250630,1,1,2,0.61,0.61,7533703523.34,7533703523.34,,,,,,,,,,,,,,,4053631.27,-17917613.43,-3346171.4,,7196593679.48,6780836288.83,,,29651297.4,19200405.52,97500118.71,847932.23,-8969614.42,,,,,,,,,,,340857178.66,431249.75,2227565.36,,339060863.05,33176242.96,305884620.09,306894646.16,-1010026.07,45049252.67,350933872.76,341921267.25,9012605.51,355569093.05,570509120.81,,,,243443638.33,9421000.05,9130042.27,,,,,,,,,,,,,,,305884620.09,1
|
||||||
|
688778.SH,20250426,20250426,20250331,1,1,1,0.28,0.28,2976556152.31,2976556152.31,,,,,,,,,,,,,,,1837712.01,-10525414.68,-1349679.39,,2852536451.49,2691238415.53,,,8196032.92,8128842.91,41470295.68,1788914.6,-31441154.52,,,,,,,,,,,125191607.56,241280.02,1718058.13,,123714829.45,9120051.36,114594778.09,116678997.2,-2084219.11,15052857.49,129647635.58,128432300.7,1215334.88,167109379.35,,,,,98564879.76,5818391.23,4505644.53,,,,,,,,,,,,,,,114594778.09,1
|
||||||
|
688778.SH,20250426,20250426,20250331,1,1,1,0.28,0.28,2976556152.31,2976556152.31,,,,,,,,,,,,,,,1837712.01,-10525414.68,-1349679.39,,2852536451.49,2691238415.53,,,8196032.92,8128842.91,41470295.68,1788914.6,-31441154.52,,,,,,,,,,,125191607.56,241280.02,1718058.13,,123714829.45,9120051.36,114594778.09,116678997.2,-2084219.11,15052857.49,129647635.58,128432300.7,1215334.88,,,,,,98564879.76,5818391.23,4505644.53,,,,,,,,,,,,,,,114594778.09,0
|
||||||
|
688778.SH,20250426,20250426,20241231,1,1,4,1.18,1.18,13296790264.71,13296790264.71,,,,,,,,,,,,,,,7518003.31,-18178379.54,957802.35,,12840071241.11,11999431892.69,,,31179013.8,41624947.13,188447421.39,26835407.2,-194158465.59,,,,,,,,,,,513233262.76,749203.69,6115103.56,,507867362.89,19546244.75,488321118.14,494073837.67,-5752719.53,-16050545.32,472270572.82,479537522.33,-7266949.51,550729046.19,944038145.5,,,,418721301.81,45037590.5,24588099.68,,,,,,,,,,,,,,,488321118.14,0
|
||||||
|
688778.SH,20241026,20241026,20240930,1,1,3,0.87,0.87,9882356287.35,9882356287.35,,,,,,,,,,,,,,,5402083.34,-13599406.03,2811195.6,,9509943428.77,8927906003.07,,,22284593.05,28786387.86,139425671.46,24918733.87,-88239523.75,,,,,,,,,,,387322057.35,462932.58,1694976.48,,386090013.45,21857960.71,364232052.74,367491385.43,-3259332.69,1177973.22,365410025.96,369147757.84,-3737731.88,508677637.66,,,,,312017035.2,37060275.25,19159713.82,,,,,,,,,,,,,,,364232052.74,1
|
||||||
|
688778.SH,20240803,20240803,20240630,1,1,2,0.57,0.57,6300137327.3,6300137327.3,,,,,,,,,,,,,,,3540044.35,-4413115.89,3426233.74,,6069644151.03,5700840306.84,,,15512878.49,17632543.37,88227435.27,20252240.0,-60538331.13,,,,,,,,,,,246442124.91,361657.32,417235.01,,246386547.22,7950519.64,238436027.58,239090203.7,-654176.12,-2234271.12,236201756.46,236875242.73,-673486.27,267567436.45,463585717.3,,,,207480857.71,30871874.19,12819576.84,,,,,,,,,,,,,,,238436027.58,1
|
||||||
|
688778.SH,20240418,20240418,20240331,1,1,1,0.26,0.26,3298786656.17,3298786656.17,,,,,,,,,,,,,,,1709974.24,4870126.19,3544562.46,,3198041938.57,3048187873.72,,,7782995.02,7550555.76,39681438.87,17761661.05,-21314991.97,,,,,,,,,,,114167501.78,137207.99,301370.45,,114003339.32,3419047.02,110584292.3,111288715.41,-704423.11,-4257903.91,106326388.39,107060843.86,-734455.47,146664054.37,,,,,87222232.61,23028065.1,5634227.66,,,,,,,,,,,,,,,110584292.3,1
|
||||||
|
688778.SH,20240418,20240418,20231231,1,1,4,1.25,1.25,17310873278.22,17310873278.22,,,,,,,,,,,,,,,4163210.94,7107457.5,2206828.55,,16845200569.28,15927192080.98,,,38942909.63,32893039.02,192374622.46,87143460.63,-178565661.45,,,,,,,,,,,560381772.08,4476840.99,6275201.24,,558583411.83,29091634.68,529491777.15,527454540.65,2037236.5,3933852.36,533425629.51,531253975.01,2171654.5,636254564.27,1004822510.41,,,,464606608.1,124085924.0,22036950.98,,,,,,,,,,,,,,,529491777.15,1
|
||||||
|
688778.SH,20231025,20231025,20230930,1,1,3,0.98,0.98,13122438075.54,13122438075.54,,,,,,,,,,,,,,,,10648968.74,4733402.69,,12731085161.03,12076406317.17,,,31272142.15,23316503.46,147379271.87,69749655.81,-133917162.14,,,,,,,,,,,450715332.87,766569.98,3194955.02,,448286947.83,35041452.11,413245495.72,412394970.29,850525.43,-59933.3,413185562.42,412370442.34,815120.08,643733182.08,,,,,323985176.47,102585163.92,17120687.96,,,,,,,,,,,,,,,413245495.72,1
|
||||||
|
688778.SH,20230825,20230825,20230630,1,1,2,0.61,0.61,8121442070.41,8121442070.41,,,,,,,,,,,,,,,,9631902.28,5531379.34,,7885658838.0,7500105744.27,,,14938864.83,13714727.11,95553232.09,47458583.57,-95487727.3,,,,,,,,,,,275689224.48,428519.76,2179719.63,,273938024.61,18671952.99,255266071.62,254665548.07,600523.55,368473.14,255634544.76,255111995.11,522549.65,313515905.77,496001034.51,,,,221948507.06,74105037.35,10993321.04,,,,,,,,,,,,,,,255266071.62,1
|
||||||
|
688778.SH,20230422,20230422,20230331,1,1,1,0.38,0.38,3586248672.17,3586248672.17,,,,,,,,,,,,,,,,7871431.72,5905351.65,,3492423800.01,3322413069.52,,,6138355.21,5773097.82,44537519.0,48161420.23,-54803245.67,,,,,,,,,,,120903547.35,209354.24,715224.35,,120397677.24,4577567.7,115820109.54,115573100.93,247008.61,-3689888.22,112130221.32,112530409.0,-400187.68,215996781.53,,,,,111418932.76,44600635.11,4520314.34,,,,,,,,,,,,,,,115820109.54,1
|
||||||
|
688778.SH,20230422,20230422,20221231,1,1,4,4.18,4.18,28751311102.65,28751311102.65,,,,,,,,,,,,,,,,5499341.74,264507.77,,27637697815.06,26277854884.2,,,37137235.62,26323805.64,154979228.63,131922386.44,-149808467.88,,,,,,,,,,,1239753004.76,6242750.3,5281526.07,,1240714228.99,110833713.4,1129880515.59,1120551568.79,9328946.8,-4772037.56,1125108478.03,1115817324.0,9291154.03,1366171513.96,1671936156.9,,,,757310248.22,141835209.11,15185289.59,,,,,,,,,,,,,,,1129880515.59,1
|
||||||
|
688778.SH,20230422,20230422,20221231,1,1,4,4.18,4.18,28751311102.65,28751311102.65,,,,,,,,,,,,,,,,5499341.74,264507.77,,27637697815.06,26277854884.2,,,37137235.62,26323805.64,154979228.63,131922386.44,-149808467.88,,,,,,,,,,,1239753004.76,6242750.3,5281526.07,,1240714228.99,110833713.4,1129880515.59,1120551568.79,9328946.8,-4772037.56,1125108478.03,1115817324.0,9291154.03,1366171513.96,1671936156.9,,,,757310248.22,141835209.11,15185289.59,,,,,,,,,,,,,,,1129880515.59,0
|
||||||
|
688778.SH,20221027,20221027,20220930,1,1,3,3.34,3.34,22029709889.61,22029709889.61,,,,,,,,,,,,,,,,5186965.41,3251813.2,,21173438909.88,20107565483.27,,,28740529.62,18044139.6,131223782.74,101694254.07,-103309693.13,,,,,,,,,,,956477630.69,5936254.04,2288435.68,,960125449.05,94226888.45,865898560.6,858959975.06,6938585.54,-5572391.73,860326168.87,853406786.53,6919382.34,1156294612.48,,,,,571350640.05,101661763.76,8890796.42,,,,,,,,,,,,,,,865898560.6,1
|
||||||
|
688778.SH,20220728,20220728,20220630,1,1,2,2.12,2.12,14302469281.01,14302469281.01,,,,,,,,,,,,,,,,1935152.21,,,13802190481.97,13050176610.4,,,18578960.7,12425928.08,84378213.8,64429670.32,-81999385.13,,,,,,,,,,,587374771.8,5226089.77,1846187.33,,590754674.24,53691402.82,537063271.42,532408438.56,4654832.86,-3756561.75,533306709.67,528536736.19,4769973.48,649869289.91,792055346.59,,,,407354639.78,62117252.75,3857630.11,,,,,,,,,,,,,,,537063271.42,1
|
||||||
|
688778.SH,20220427,20220427,20220331,1,1,1,0.82,0.82,5909071678.49,5909071678.49,,,,,,,,,,,,,,,,1580152.21,,,5750859436.15,5403156385.18,,,10051753.73,6571456.67,37247717.2,41511683.14,-36048489.89,,,,,,,,,,,229558174.47,239630.61,310405.18,,229487399.9,20773664.33,208713735.57,206898625.84,1815109.73,-3587549.04,205126186.53,203195936.18,1930250.35,,,,,,190926100.49,33868695.73,1460870.05,,,,,,,,,,,,,,,208713735.57,0
|
||||||
|
688778.SH,20220427,20220427,20220331,1,1,1,0.82,0.82,5909071678.49,5909071678.49,,,,,,,,,,,,,,,,1580152.21,,,5750859436.15,5403156385.18,,,10051753.73,6571456.67,37247717.2,41511683.14,-36048489.89,,,,,,,,,,,229558174.47,239630.61,310405.18,,229487399.9,20773664.33,208713735.57,206898625.84,1815109.73,-3587549.04,205126186.53,203195936.18,1930250.35,305538195.29,,,,,190926100.49,33868695.73,1460870.05,,,,,,,,,,,,,,,208713735.57,1
|
||||||
|
688778.SH,20220331,20220331,20211231,1,1,4,2.65,2.65,15565760243.3,15565760243.3,,,,,,,,,,,,,,,,11210471.23,,,15006701336.84,14079277712.97,,,22554439.1,29086596.76,130506869.16,127942914.23,-74960397.3,,,,,,,,,,,617522672.64,1514878.73,6139580.26,,612897971.11,44760479.95,568137491.16,555349247.43,12788243.73,1523027.64,569660518.8,556849390.21,12811128.59,734255115.64,975052801.75,,,,451858021.23,118562305.87,4276772.64,,,,,,,,,,,,,,,568137491.16,1
|
||||||
|
688778.SH,20220331,20220331,20211231,1,1,4,2.65,2.65,15565760243.3,15565760243.3,,,,,,,,,,,,,,,,11210471.23,,,15006701336.84,14079277712.97,,,22554439.1,29086596.76,130506869.16,127942914.23,-74960397.3,,,,,,,,,,,617522672.64,1514878.73,6139580.26,,612897971.11,44760479.95,568137491.16,555349247.43,12788243.73,1523027.64,569660518.8,556849390.21,12811128.59,734255115.64,975052801.75,,,,451858021.23,118562305.87,4276772.64,,,,,,,,,,,,,,,568137491.16,0
|
||||||
|
688778.SH,20211029,20211029,20210930,1,1,3,2.04,2.04,10312502889.64,10312502889.64,,,,,,,,,,,,,,,,10184173.5,,,9896621546.25,9327357015.05,,,15143706.3,20985936.4,81410662.51,104734314.87,-31167876.97,,,,,,,,,,,448080105.54,1231277.72,4389750.7,,444921632.56,35239869.2,409681763.36,398994123.22,10687640.14,-1488618.53,408193144.83,397544323.97,10648820.86,573798123.88,,,,,282032486.4,93624540.21,1623216.97,,,,,,,,,,,,,,,409681763.36,1
|
||||||
|
688778.SH,20211029,20211029,20210930,1,1,3,2.04,2.04,10312502889.64,10312502889.64,,,,,,,,,,,,,,,,10184173.5,,,9896621546.25,9327357015.05,,,15143706.3,20985936.4,81410662.51,104734314.87,-31167876.97,,,,,,,,,,,448080105.54,1231277.72,4389750.7,,444921632.56,35239869.2,409681763.36,398994123.22,10687640.14,-1488618.53,408193144.83,397544323.97,10648820.86,,,,,,282032486.4,93624540.21,1623216.97,,,,,,,,,,,,,,,409681763.36,0
|
||||||
|
688778.SH,20210804,20210804,20210630,1,1,2,1.33,,6568279577.46,6568279577.46,,,,,,,,,,,,,,,,10184173.5,,,6312127107.7,5962589610.23,,,9072241.32,12350347.06,48610080.12,73383429.82,-12524122.4,,,,,,,,,,,281848483.28,397976.25,1905037.56,,280341421.97,22309576.77,258031845.2,250910527.11,7121318.09,474515.75,258506360.95,251481601.22,7024759.73,357571862.0,357571862.0,,,,163670425.6,64247116.51,300749.07,,,,,,,,,,,,,,,258031845.2,1
|
||||||
|
688778.SH,20210719,20210719,20210331,1,1,1,0.59,,2906106622.87,2906106622.87,,,,,,,,,,,,,,,,,,,2783258567.59,2625484047.75,,,4371880.3,4945109.56,21706766.76,39286923.12,-3500772.42,,,,,,,,,,,130514297.2,234244.86,1769384.24,,128979157.82,14567631.73,114411526.09,111794785.01,2616741.08,-3822200.06,110589326.03,108332655.78,2256670.25,173301992.74,,,,,76930738.55,33365086.87,156655.54,,,,,,,,,,,,,,,114411526.09,1
|
||||||
|
688778.SH,20210719,20210719,20201231,1,1,4,1.36,1.36,7989637657.15,7989637657.15,,,,,,,,,,,,,,,,1103388.89,1103388.89,,7739340040.17,7152011262.31,,,13642510.77,26681430.66,89978009.11,118211933.36,-47360230.97,,,,,,,,,,,277838341.51,2787877.09,17935821.34,,262690397.26,11053060.06,251637337.2,250546071.8,1091265.4,1015119.22,252652456.42,251322956.32,1329500.1,395424580.18,591984882.18,,,,261183953.93,105930283.21,877589.17,,,,,,,,,,,,,,,251637337.2,0
|
||||||
|
688778.SH,20210719,20210719,20201231,1,1,4,1.36,1.36,7989637657.15,7989637657.15,,,,,,,,,,,,,,,,1103388.89,1103388.89,,7739340040.17,7152011262.31,,,13642510.77,26681430.66,89978009.11,118211933.36,-47360230.97,,,,,,,,,,,277838341.51,2787877.09,17935821.34,,262690397.26,11053060.06,251637337.2,250546071.8,1091265.4,1015119.22,252652456.42,251322956.32,1329500.1,395424580.18,591984882.18,,,,261183953.93,105930283.21,877589.17,,,,,,,,,,,,,,,251637337.2,1
|
||||||
|
688778.SH,20211029,20211029,20200930,1,1,3,0.86,0.86,5192989697.18,5192989697.18,,,,,,,,,,,,,,,,1103388.89,1103388.89,,5039601306.43,4635943996.2,,,7868277.54,33134028.93,60291289.56,78396945.07,-37794325.61,,,,,,,,,,,174898379.91,2534951.91,12748527.53,,164684804.29,11222977.6,153461826.69,156081587.4,-2619760.71,2386333.6,155848160.29,158179649.95,-2331489.66,214221439.2,,,,,161593490.02,76355258.83,578910.89,,,,,,,,,,,,,,,153461826.69,1
|
||||||
|
688778.SH,20211029,20211029,20200930,1,1,3,0.86,0.86,5192989697.18,5192989697.18,,,,,,,,,,,,,,,,1103388.89,1103388.89,,5039601306.43,4635943996.2,,,7868277.54,33134028.93,60291289.56,78396945.07,-37794325.61,,,,,,,,,,,174898379.91,2534951.91,12748527.53,,164684804.29,11222977.6,153461826.69,156081587.4,-2619760.71,2386333.6,155848160.29,158179649.95,-2331489.66,214221439.2,,,,,161593490.02,76355258.83,578910.89,,,,,,,,,,,,,,,153461826.69,0
|
||||||
|
688778.SH,20200804,20200804,20200630,1,1,2,0.53,0.53,3072183824.06,3072183824.06,,,,,,,,,,,,,,,,1103388.89,1103388.89,,2980363045.66,2745827826.3,,,4887532.2,19453973.96,39900660.81,47993542.89,-27930393.28,,,,,,,,,,,103990246.84,2178279.91,12665587.48,,93502939.27,1252515.64,92250423.63,95347209.52,-3096785.89,1289740.97,93540164.6,96313429.53,-2773264.93,178822319.56,270561010.61,,,,100396458.49,49247139.31,473870.81,,,,,,,,,,,,,,,92250423.63,0
|
||||||
|
688778.SH,20200804,20200804,20200630,1,1,2,0.53,0.53,3072183824.06,3072183824.06,,,,,,,,,,,,,,,,1103388.89,1103388.89,,2980363045.66,2745827826.3,,,4887532.2,19453973.96,39900660.81,47993542.89,-27930393.28,,,,,,,,,,,103990246.84,2178279.91,12665587.48,,93502939.27,1252515.64,92250423.63,95347209.52,-3096785.89,1289740.97,93540164.6,96313429.53,-2773264.93,178822319.56,270561010.61,,,,100396458.49,49247139.31,473870.81,,,,,,,,,,,,,,,92250423.63,1
|
||||||
|
688778.SH,20210719,20210719,20200331,1,1,1,0.22,,1449523648.26,1449523648.26,,,,,,,,,,,,,,,,-105152.64,-105152.64,,1412815859.58,1304497378.77,,,2226295.88,5324302.0,17619252.13,25699975.15,-14706127.52,,,,,,,,,,,41519783.29,255090.0,8057289.24,,33717584.05,-864482.76,34582066.81,36891273.24,-2309206.43,1824526.41,36406593.22,38339539.48,-1932946.26,,,,,,36016362.11,25589544.75,361239.87,,,,,,,,,,,,,,,34582066.81,1
|
||||||
|
688778.SH,20210719,20210719,20191231,1,1,4,1.07,1.07,6977723911.27,6977723911.27,,,,,,,,,,,,,,,,-328364.56,-328364.56,,6949478021.0,6415517218.05,,,11278121.99,40139061.23,78228468.49,113738891.83,-56817227.81,,,,,,,,,,,109347502.44,3897973.11,311291.34,,112934184.21,-29796593.74,142730777.95,150080974.56,-7350196.61,-3080485.67,139650292.28,147376749.06,-7726456.78,224362412.81,345560077.16,,,,245426487.56,111688425.83,209613.46,,,,,,,,,,,,,,,142730777.95,1
|
||||||
|
688778.SH,20210719,20210719,20191231,1,1,4,1.07,1.07,6977723911.27,6977723911.27,,,,,,,,,,,,,,,,-328364.56,-328364.56,,6949478021.0,6415517218.05,,,11278121.99,40139061.23,78228468.49,113738891.83,-56817227.81,,,,,,,,,,,109347502.44,3897973.11,311291.34,,112934184.21,-29796593.74,142730777.95,150080974.56,-7350196.61,-3080485.67,139650292.28,147376749.06,-7726456.78,224362412.81,345560077.16,,,,245426487.56,111688425.83,209613.46,,,,,,,,,,,,,,,142730777.95,0
|
||||||
|
688778.SH,20190823,20190823,20190630,1,1,2,,,3295176800.0,3295176800.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3295176800.0,3295176800.0,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20190823,20190823,20190630,1,1,2,,,3295176800.0,3295176800.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3295176800.0,3295176800.0,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
688778.SH,20210719,20210719,20181231,1,1,4,0.8,0.8,7026350478.8,7026350478.8,,,,,,,,,,,,,,,,,,,6949299320.52,6317152631.06,,,9637821.28,25969674.13,64515505.18,113097542.1,86581336.59,,,,,,,,,,,84593052.85,2345948.29,2881102.44,,84057898.7,2318724.21,81739174.49,80106100.11,1633074.38,,81739174.49,80106100.11,1633074.38,197869679.11,260634641.88,,,,332344810.18,118242552.26,295348.44,,,,,,,,,,,,,,,81739174.49,1
|
||||||
|
688778.SH,20190312,20190312,20180630,1,1,2,,,3267087500.0,3267087500.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67280800.0,,,,,,3267087500.0,3267087500.0,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
688778.SH,20190312,20190312,20180630,1,1,2,,,3267087500.0,3267087500.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,67280800.0,,,,,,3267087500.0,3267087500.0,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20200804,20200804,20171231,1,1,4,1.66,1.66,4211441780.41,4211441780.41,,,,,,,,,,,,,,,,,,,3980692154.25,3676771458.96,,,5701299.91,21269980.48,46501604.8,42322531.89,15532866.58,,,,,,,,,,,250579370.75,630155.16,12861664.98,,238347860.93,64875157.45,173472703.48,166057247.41,7415456.07,,173472703.48,166057247.41,7415456.07,308438434.86,355905299.9,,,,172592411.63,36818044.49,1595553.95,,,,,,,,,,,,,,,173472703.48,1
|
||||||
|
688778.SH,20170810,20170810,20170630,1,1,2,,,1676006100.0,1676006100.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,115435300.0,,,,,,1676006100.0,1676006100.0,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
688778.SH,20170810,20170810,20170630,1,1,2,,,1676006100.0,1676006100.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,115435300.0,,,,,,1676006100.0,1676006100.0,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20170427,20170427,20161231,1,1,4,,,0.0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0,,,,,,0.0,0.0,,,,,,,,,,,,,,,,,,,,,,1
|
||||||
|
688778.SH,20170427,20170427,20161231,1,1,4,,,0.0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0,,,,,,0.0,0.0,,,,,,,,,,,,,,,,,,,,,,0
|
||||||
|
2
data/CN/688778.SH/raw_market_metrics_daily_basic.csv
Normal file
2
data/CN/688778.SH/raw_market_metrics_daily_basic.csv
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
ts_code,trade_date,close,turnover_rate,turnover_rate_f,volume_ratio,pe,pe_ttm,pb,ps,ps_ttm,dv_ratio,dv_ttm,total_share,float_share,free_share,total_mv,circ_mv
|
||||||
|
688778.SH,20251231,77.37,1.3395,3.8637,1.24,79.0326,57.5256,4.3344,2.9366,2.3703,,,50469.1083,50469.1083,17496.7565,3904794.9092,3904794.9092
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
ts_code,ann_date,end_date,holder_num
|
||||||
|
688778.SH,20251025,20250930,24627
|
||||||
|
2
data/CN/688778.SH/raw_market_metrics_stock_basic.csv
Normal file
2
data/CN/688778.SH/raw_market_metrics_stock_basic.csv
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
name,list_date
|
||||||
|
厦钨新能,20210805
|
||||||
|
9
data/CN/688778.SH/raw_repurchases.csv
Normal file
9
data/CN/688778.SH/raw_repurchases.csv
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
ts_code,ann_date,end_date,proc,exp_date,vol,amount,high_limit,low_limit
|
||||||
|
688778.SH,20250227,20250227,完成,,1170589.0,40678183.98,42.46,31.26
|
||||||
|
688778.SH,20250206,20250131,实施,,1170589.0,40678183.98,42.46,31.26
|
||||||
|
688778.SH,20240801,20240731,实施,,1049834.0,35683821.52,35.81,31.26
|
||||||
|
688778.SH,20240615,,预案,,,50000000.0,50.3,
|
||||||
|
688778.SH,20240402,20240331,实施,,890978.0,30684586.97,35.81,33.22
|
||||||
|
688778.SH,20240302,20240301,实施,,129640.0,4585614.53,35.81,35.01
|
||||||
|
688778.SH,20240228,,预案,,,50000000.0,51.0,
|
||||||
|
688778.SH,20231221,,提议,,,50000000.0,,
|
||||||
|
445
data/CN/688778.SH/report.html
Normal file
445
data/CN/688778.SH/report.html
Normal file
@ -0,0 +1,445 @@
|
|||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<title>688778.SH Financial Report</title>
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--bg: #f5f6fa;
|
||||||
|
--card-bg: #ffffff;
|
||||||
|
--header-bg: #f7f8fb;
|
||||||
|
--section-bg: #f0f2f5;
|
||||||
|
--border: #e5e7eb;
|
||||||
|
--text-primary: #111827;
|
||||||
|
--text-secondary: #6b7280;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 32px;
|
||||||
|
background: var(--bg);
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||||
|
color: var(--text-primary);
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.report-container {
|
||||||
|
max-width: 1280px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: var(--card-bg);
|
||||||
|
border-radius: 24px;
|
||||||
|
padding: 32px 40px;
|
||||||
|
box-shadow: 0 24px 60px rgba(15, 23, 42, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin: 0 0 8px;
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin: 0 0 24px;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
font-size: 0.95rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
background: var(--card-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
font-size: 0.95rem;
|
||||||
|
padding: 12px 16px;
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
text-align: right;
|
||||||
|
background: var(--header-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
th:first-child,
|
||||||
|
td:first-child {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-table th,
|
||||||
|
.company-table td {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table thead {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table thead th {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 3;
|
||||||
|
background: var(--card-bg);
|
||||||
|
box-shadow: 0 10px 20px rgba(15, 23, 42, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table thead th:first-child {
|
||||||
|
left: 0;
|
||||||
|
z-index: 4;
|
||||||
|
box-shadow: 16px 0 24px rgba(15, 23, 42, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table th:first-child,
|
||||||
|
.metrics-table td:first-child {
|
||||||
|
width: 180px;
|
||||||
|
min-width: 180px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tbody td:first-child {
|
||||||
|
position: sticky;
|
||||||
|
left: 0;
|
||||||
|
background: var(--card-bg);
|
||||||
|
font-weight: 600;
|
||||||
|
box-shadow: 16px 0 24px rgba(15, 23, 42, 0.04);
|
||||||
|
z-index: 2;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tbody td:not(:first-child) {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tr.other-assets-row td {
|
||||||
|
background: #fff7e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tr.other-assets-row td:first-child {
|
||||||
|
background: #fff7e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tbody tr:hover td {
|
||||||
|
background: #f4efff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-row td {
|
||||||
|
background: #eef1f6;
|
||||||
|
font-weight: 600;
|
||||||
|
text-align: left;
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table .section-row td:first-child {
|
||||||
|
position: sticky;
|
||||||
|
left: 0;
|
||||||
|
z-index: 2;
|
||||||
|
box-shadow: 16px 0 24px rgba(15, 23, 42, 0.08);
|
||||||
|
background: #eef1f6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table .section-label {
|
||||||
|
color: var(--text-primary);
|
||||||
|
background: #eef1f6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-spacer {
|
||||||
|
background: #eef1f6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metric-name {
|
||||||
|
color: var(--text-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-container {
|
||||||
|
overflow-x: auto;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: 16px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-container table {
|
||||||
|
margin-bottom: 0;
|
||||||
|
min-width: 960px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-gap {
|
||||||
|
height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-data {
|
||||||
|
margin-top: 24px;
|
||||||
|
padding: 32px;
|
||||||
|
text-align: center;
|
||||||
|
border: 1px dashed var(--border);
|
||||||
|
border-radius: 16px;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
font-size: 0.95rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-green { background-color: #e6f7eb !important; }
|
||||||
|
.bg-red { background-color: #ffeef0 !important; }
|
||||||
|
.font-red { color: #d32f2f !important; }
|
||||||
|
.font-green { color: #1b873f !important; }
|
||||||
|
.font-blue { color: #2563eb !important; }
|
||||||
|
.italic { font-style: italic !important; }
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
body { padding: 16px; }
|
||||||
|
.report-container { padding: 24px; }
|
||||||
|
table { font-size: 0.85rem; }
|
||||||
|
th,
|
||||||
|
td { padding: 10px 12px; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="report-container">
|
||||||
|
<h1>厦钨新能 (688778.SH) - Financial Report</h1>
|
||||||
|
<p><em>Report generated on: 2026-01-03</em></p>
|
||||||
|
|
||||||
|
<table class="company-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>代码</th>
|
||||||
|
<th>简称</th>
|
||||||
|
<th>上市日期</th>
|
||||||
|
<th>PE</th>
|
||||||
|
<th>PB</th>
|
||||||
|
<th>股息率(%)</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>688778.SH</td>
|
||||||
|
<td>厦钨新能</td>
|
||||||
|
<td>2021-08-05</td>
|
||||||
|
<td>79.03</td>
|
||||||
|
<td>4.33</td>
|
||||||
|
<td>0.00%</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="table-gap"></div>
|
||||||
|
|
||||||
|
<table class="metrics-table" data-table="metrics" data-scrollable="true">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>指标</th>
|
||||||
|
<th>2025Q3</th><th>2024A</th><th>2023A</th><th>2022A</th><th>2021A</th><th>2020A</th><th>2019A</th><th>2018A</th><th>2017A</th><th>2016A</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="section-row"><td class="section-label">主要指标</td><td class="section-spacer" colspan="10"></td></tr>
|
||||||
|
<tr><td class="metric-name">ROE</td><td>6.13%</td><td>5.65%</td><td>6.15%</td><td>13.67%</td><td>14.87%</td><td>14.33%</td><td>9.93%</td><td>10.73%</td><td>24.90%</td><td>0.00%</td></tr>
|
||||||
|
<tr><td class="metric-name">ROA</td><td>3.17%</td><td>3.35%</td><td>3.91%</td><td>7.29%</td><td>5.28%</td><td>4.03%</td><td>2.81%</td><td>1.44%</td><td>4.40%</td><td>0.00%</td></tr>
|
||||||
|
<tr><td class="metric-name">ROCE/ROIC</td><td>6.71%</td><td>5.83%</td><td>6.83%</td><td>13.99%</td><td>13.65%</td><td>9.48%</td><td>6.43%</td><td>9.16%</td><td>29.07%</td><td>0.00%</td></tr>
|
||||||
|
<tr><td class="metric-name">毛利率</td><td>10.00%</td><td>9.76%</td><td>7.99%</td><td>8.60%</td><td>9.55%</td><td>10.48%</td><td>8.06%</td><td>10.09%</td><td>12.70%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">净利润率</td><td>4.23%</td><td>3.72%</td><td>3.05%</td><td>3.90%</td><td>3.57%</td><td>3.14%</td><td>2.15%</td><td>1.14%</td><td>3.94%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">收入(亿)</td><td>130.59</td><td>132.97</td><td>173.11</td><td>287.51</td><td>155.66</td><td>79.90</td><td>69.78</td><td>70.26</td><td>42.11</td><td>0.00</td></tr>
|
||||||
|
<tr><td class="metric-name">收入增速</td><td>32.15%</td><td>-23.19%</td><td>-39.79%</td><td>84.71%</td><td>94.82%</td><td>14.50%</td><td>-0.69%</td><td>66.84%</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">净利润(亿)</td><td>5.52</td><td>4.94</td><td>5.27</td><td>11.21</td><td>5.55</td><td>2.51</td><td>1.50</td><td>0.80</td><td>1.66</td><td>0.00</td></tr>
|
||||||
|
<tr><td class="metric-name">净利润增速</td><td>50.26%</td><td>-6.33%</td><td>-52.93%</td><td>101.77%</td><td>121.66%</td><td>66.94%</td><td>87.35%</td><td>-51.76%</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">经营净现金流(亿)</td><td>8.97</td><td>17.53</td><td>25.80</td><td>-15.61</td><td>4.32</td><td>3.97</td><td>1.72</td><td>1.11</td><td>-5.94</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">资本开支(亿)</td><td>4.89</td><td>9.66</td><td>11.45</td><td>6.51</td><td>5.56</td><td>3.33</td><td>5.86</td><td>6.13</td><td>3.79</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">自由现金流(亿)</td><td>4.08</td><td>7.87</td><td>14.35</td><td>-22.12</td><td>-1.24</td><td>0.64</td><td>-4.14</td><td>-5.01</td><td>-9.73</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">分红(亿)</td><td>-</td><td>2.02</td><td>2.95</td><td>2.10</td><td>1.26</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">回购(亿)</td><td>-</td><td>1.71</td><td>0.50</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">总资产(亿)</td><td>174.13</td><td>147.47</td><td>134.81</td><td>153.80</td><td>105.16</td><td>62.22</td><td>53.48</td><td>55.49</td><td>37.74</td><td>1.00</td></tr>
|
||||||
|
<tr><td class="metric-name">净资产(亿)</td><td>90.09</td><td>87.37</td><td>85.82</td><td>82.00</td><td>37.36</td><td>17.48</td><td>15.12</td><td>7.47</td><td>6.67</td><td>1.00</td></tr>
|
||||||
|
<tr><td class="metric-name">商誉(亿)</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">费用指标</td><td class="section-spacer" colspan="10"></td></tr>
|
||||||
|
<tr><td class="metric-name">销售费用率</td><td>0.25%</td><td>0.31%</td><td>0.19%</td><td>0.09%</td><td>0.19%</td><td>0.33%</td><td>0.58%</td><td>0.37%</td><td>0.51%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">管理费用率</td><td>1.18%</td><td>1.42%</td><td>1.11%</td><td>0.54%</td><td>0.84%</td><td>1.13%</td><td>1.12%</td><td>0.92%</td><td>1.10%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">SG&A比例</td><td>1.43%</td><td>1.73%</td><td>1.30%</td><td>0.63%</td><td>1.03%</td><td>1.46%</td><td>1.70%</td><td>1.29%</td><td>1.61%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">研发费用率</td><td>2.99%</td><td>3.15%</td><td>2.68%</td><td>2.63%</td><td>2.90%</td><td>3.27%</td><td>3.52%</td><td>4.73%</td><td>4.10%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">其他费用率</td><td>1.35%</td><td>1.16%</td><td>0.96%</td><td>1.44%</td><td>2.05%</td><td>2.62%</td><td>0.69%</td><td>2.94%</td><td>3.05%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">折旧费用占比</td><td>-</td><td>2.77%</td><td>2.02%</td><td>1.03%</td><td>1.50%</td><td>2.39%</td><td>1.66%</td><td>0.85%</td><td>1.09%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">所得税率</td><td>9.29%</td><td>3.85%</td><td>5.21%</td><td>8.93%</td><td>7.30%</td><td>4.21%</td><td>-26.38%</td><td>2.76%</td><td>27.22%</td><td>-</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">资产占比</td><td class="section-spacer" colspan="10"></td></tr>
|
||||||
|
<tr><td class="metric-name">现金占比</td><td>8.88%</td><td>11.09%</td><td>8.90%</td><td>6.61%</td><td>4.04%</td><td>4.47%</td><td>0.96%</td><td>2.96%</td><td>2.90%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">库存占比</td><td>26.24%</td><td>16.79%</td><td>14.57%</td><td>21.79%</td><td>26.58%</td><td>19.51%</td><td>16.08%</td><td>28.66%</td><td>32.68%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">应收款占比</td><td>18.81%</td><td>15.92%</td><td>25.95%</td><td>32.22%</td><td>28.09%</td><td>19.84%</td><td>12.33%</td><td>15.88%</td><td>13.23%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">预付款占比</td><td>0.75%</td><td>0.08%</td><td>0.07%</td><td>0.11%</td><td>0.16%</td><td>1.25%</td><td>0.39%</td><td>6.20%</td><td>3.26%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">固定资产占比</td><td>-</td><td>23.88%</td><td>25.96%</td><td>23.65%</td><td>26.59%</td><td>38.24%</td><td>37.34%</td><td>19.47%</td><td>15.24%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">长期投资占比</td><td>2.39%</td><td>2.83%</td><td>2.95%</td><td>0.65%</td><td>-</td><td>0.07%</td><td>0.07%</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">商誉占比</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr class="other-assets-row"><td class="metric-name">其他资产占比</td><td>42.94%</td><td>29.42%</td><td>21.60%</td><td>14.97%</td><td>14.54%</td><td>16.62%</td><td>32.82%</td><td>26.83%</td><td>32.70%</td><td>100.00%</td></tr>
|
||||||
|
<tr><td class="metric-name">应付款占比</td><td>17.61%</td><td>14.64%</td><td>16.87%</td><td>13.63%</td><td>33.13%</td><td>19.56%</td><td>16.47%</td><td>12.18%</td><td>15.49%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">预收款占比</td><td>0.88%</td><td>0.02%</td><td>0.03%</td><td>0.04%</td><td>0.10%</td><td>0.03%</td><td>0.05%</td><td>0.14%</td><td>0.36%</td><td>0.00%</td></tr>
|
||||||
|
<tr><td class="metric-name">短期借款占比</td><td>1.06%</td><td>1.60%</td><td>0.25%</td><td>4.53%</td><td>2.48%</td><td>20.67%</td><td>33.82%</td><td>23.62%</td><td>10.33%</td><td>0.00%</td></tr>
|
||||||
|
<tr><td class="metric-name">长期借款占比</td><td>2.57%</td><td>3.16%</td><td>5.23%</td><td>5.66%</td><td>13.15%</td><td>18.25%</td><td>3.12%</td><td>1.87%</td><td>0.11%</td><td>0.00%</td></tr>
|
||||||
|
<tr><td class="metric-name">运营资产占比</td><td>27.30%</td><td>18.13%</td><td>23.69%</td><td>40.46%</td><td>21.59%</td><td>21.02%</td><td>12.29%</td><td>38.41%</td><td>33.31%</td><td>0.00%</td></tr>
|
||||||
|
<tr><td class="metric-name">有息负债率</td><td>3.63%</td><td>4.76%</td><td>5.47%</td><td>10.19%</td><td>15.64%</td><td>38.92%</td><td>36.94%</td><td>25.49%</td><td>10.44%</td><td>0.00%</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">周转能力</td><td class="section-spacer" colspan="10"></td></tr>
|
||||||
|
<tr><td class="metric-name">存货周转天数</td><td>141</td><td>75</td><td>45</td><td>46</td><td>72</td><td>61</td><td>48</td><td>91</td><td>122</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">应收款周转天数</td><td>91</td><td>64</td><td>73</td><td>62</td><td>69</td><td>56</td><td>34</td><td>45</td><td>43</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">应付款周转天数</td><td>95</td><td>65</td><td>52</td><td>29</td><td>90</td><td>62</td><td>50</td><td>39</td><td>58</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">固定资产周转率</td><td>-</td><td>3.78</td><td>4.95</td><td>7.91</td><td>5.57</td><td>3.36</td><td>3.49</td><td>6.50</td><td>7.32</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">总资产周转率</td><td>0.75</td><td>0.90</td><td>1.28</td><td>1.87</td><td>1.48</td><td>1.28</td><td>1.30</td><td>1.27</td><td>1.12</td><td>0.00</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">人均效率</td><td class="section-spacer" colspan="10"></td></tr>
|
||||||
|
<tr><td class="metric-name">员工人数</td><td>-</td><td>3,344</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">人均创收(万)</td><td>-</td><td>397.63</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">人均创利(万)</td><td>-</td><td>14.77</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">人均薪酬(万)</td><td>-</td><td>15.29</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">市场表现</td><td class="section-spacer" colspan="10"></td></tr>
|
||||||
|
<tr><td class="metric-name">股价</td><td>77.37</td><td>45.64</td><td>39.64</td><td>77.68</td><td>103.35</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">市值(亿)</td><td>390.48</td><td>192.04</td><td>166.79</td><td>233.47</td><td>260.00</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">PE</td><td>79.03</td><td>36.41</td><td>14.88</td><td>42.04</td><td>103.77</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">PB</td><td>4.33</td><td>2.23</td><td>1.97</td><td>2.93</td><td>7.27</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">股东户数</td><td>24,627</td><td>14,740</td><td>13,732</td><td>14,462</td><td>15,688</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
const scrollableTables = document.querySelectorAll('table[data-scrollable="true"]');
|
||||||
|
scrollableTables.forEach(table => {
|
||||||
|
const container = document.createElement('div');
|
||||||
|
container.className = 'table-container';
|
||||||
|
table.parentNode.insertBefore(container, table);
|
||||||
|
container.appendChild(table);
|
||||||
|
});
|
||||||
|
|
||||||
|
const parseValue = (text) => {
|
||||||
|
if (!text || text.trim() === '-') return null;
|
||||||
|
return parseFloat(text.replace(/%|,/g, ''));
|
||||||
|
};
|
||||||
|
|
||||||
|
const highlightIfOverThirtyPercent = (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 30) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const styleRules = {
|
||||||
|
'ROE': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 15) cell.classList.add('bg-green');
|
||||||
|
},
|
||||||
|
'ROA': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 10) cell.classList.add('bg-green');
|
||||||
|
},
|
||||||
|
'毛利率': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 50) cell.classList.add('bg-green');
|
||||||
|
},
|
||||||
|
'净利润率': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null) {
|
||||||
|
if (value > 20) {
|
||||||
|
cell.classList.add('bg-green');
|
||||||
|
} else if (value < 0) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'收入增速': (cell) => {
|
||||||
|
cell.classList.add('italic');
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null) {
|
||||||
|
if (value > 15) {
|
||||||
|
cell.classList.add('bg-green', 'font-green');
|
||||||
|
} else if (value < 0) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
} else {
|
||||||
|
cell.classList.add('font-blue');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'净利润增速': (cell) => {
|
||||||
|
cell.classList.add('italic');
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null) {
|
||||||
|
if (value > 15) {
|
||||||
|
cell.classList.add('bg-green', 'font-green');
|
||||||
|
} else if (value < 0) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
} else {
|
||||||
|
cell.classList.add('font-blue');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'经营净现金流(亿)': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value < 0) cell.classList.add('bg-red', 'font-red');
|
||||||
|
},
|
||||||
|
'应收款周转天数': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 90) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'现金占比': highlightIfOverThirtyPercent,
|
||||||
|
'库存占比': highlightIfOverThirtyPercent,
|
||||||
|
'应收款占比': highlightIfOverThirtyPercent,
|
||||||
|
'预付款占比': highlightIfOverThirtyPercent,
|
||||||
|
'固定资产占比': highlightIfOverThirtyPercent,
|
||||||
|
'长期投资占比': highlightIfOverThirtyPercent,
|
||||||
|
'商誉占比': highlightIfOverThirtyPercent,
|
||||||
|
'其他资产占比': highlightIfOverThirtyPercent
|
||||||
|
};
|
||||||
|
|
||||||
|
const metricsTables = document.querySelectorAll('table[data-table="metrics"]');
|
||||||
|
metricsTables.forEach(table => {
|
||||||
|
let netProfitValues = [];
|
||||||
|
let fcfRow = null;
|
||||||
|
const rows = table.querySelectorAll('tbody tr');
|
||||||
|
rows.forEach(row => {
|
||||||
|
if (row.classList.contains('section-row')) return;
|
||||||
|
const metricCell = row.querySelector('td:first-child');
|
||||||
|
if (!metricCell) return;
|
||||||
|
const metricName = metricCell.textContent.trim();
|
||||||
|
if (metricName === '净利润(亿)') {
|
||||||
|
row.querySelectorAll('td:not(:first-child)').forEach(cell => {
|
||||||
|
netProfitValues.push(parseValue(cell.textContent));
|
||||||
|
});
|
||||||
|
} else if (metricName === '自由现金流(亿)') {
|
||||||
|
fcfRow = row;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
rows.forEach(row => {
|
||||||
|
if (row.classList.contains('section-row')) return;
|
||||||
|
const metricCell = row.querySelector('td:first-child');
|
||||||
|
if (!metricCell) return;
|
||||||
|
const metricName = metricCell.textContent.trim();
|
||||||
|
const cells = row.querySelectorAll('td:not(:first-child)');
|
||||||
|
if (styleRules[metricName]) {
|
||||||
|
cells.forEach(cell => {
|
||||||
|
styleRules[metricName](cell);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (row === fcfRow && netProfitValues.length > 0) {
|
||||||
|
cells.forEach((cell, index) => {
|
||||||
|
const fcfValue = parseValue(cell.textContent);
|
||||||
|
const netProfitValue = netProfitValues[index];
|
||||||
|
if (fcfValue !== null) {
|
||||||
|
if (fcfValue < 0) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
} else if (netProfitValue !== null && fcfValue > netProfitValue) {
|
||||||
|
cell.classList.add('bg-green', 'font-green');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
89
data/CN/688778.SH/report.md
Normal file
89
data/CN/688778.SH/report.md
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
# 厦钨新能 (688778.SH) - Financial Report
|
||||||
|
*Report generated on: 2026-01-03*
|
||||||
|
|
||||||
|
| 代码 | 简称 | 上市日期 | PE | PB | 股息率(%) |
|
||||||
|
|:---|:---|:---|:---|:---|:---|
|
||||||
|
| 688778.SH | 厦钨新能 | 2021-08-05 | 79.03 | 4.33 | 0.00% |
|
||||||
|
|
||||||
|
|
||||||
|
## 主要指标
|
||||||
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A | 2018A | 2017A | 2016A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|
||||||
|
| ROE | 6.13% | 5.65% | 6.15% | 13.67% | 14.87% | 14.33% | 9.93% | 10.73% | 24.90% | 0.00% |
|
||||||
|
| ROA | 3.17% | 3.35% | 3.91% | 7.29% | 5.28% | 4.03% | 2.81% | 1.44% | 4.40% | 0.00% |
|
||||||
|
| ROCE/ROIC | 6.71% | 5.83% | 6.83% | 13.99% | 13.65% | 9.48% | 6.43% | 9.16% | 29.07% | 0.00% |
|
||||||
|
| 毛利率 | 10.00% | 9.76% | 7.99% | 8.60% | 9.55% | 10.48% | 8.06% | 10.09% | 12.70% | - |
|
||||||
|
| 净利润率 | 4.23% | 3.72% | 3.05% | 3.90% | 3.57% | 3.14% | 2.15% | 1.14% | 3.94% | - |
|
||||||
|
| 收入(亿) | 130.59 | 132.97 | 173.11 | 287.51 | 155.66 | 79.90 | 69.78 | 70.26 | 42.11 | 0.00 |
|
||||||
|
| 收入增速 | 32.15% | -23.19% | -39.79% | 84.71% | 94.82% | 14.50% | -0.69% | 66.84% | - | - |
|
||||||
|
| 净利润(亿) | 5.52 | 4.94 | 5.27 | 11.21 | 5.55 | 2.51 | 1.50 | 0.80 | 1.66 | 0.00 |
|
||||||
|
| 净利润增速 | 50.26% | -6.33% | -52.93% | 101.77% | 121.66% | 66.94% | 87.35% | -51.76% | - | - |
|
||||||
|
| 经营净现金流(亿) | 8.97 | 17.53 | 25.80 | -15.61 | 4.32 | 3.97 | 1.72 | 1.11 | -5.94 | - |
|
||||||
|
| 资本开支(亿) | 4.89 | 9.66 | 11.45 | 6.51 | 5.56 | 3.33 | 5.86 | 6.13 | 3.79 | - |
|
||||||
|
| 自由现金流(亿) | 4.08 | 7.87 | 14.35 | -22.12 | -1.24 | 0.64 | -4.14 | -5.01 | -9.73 | - |
|
||||||
|
| 分红(亿) | - | 2.02 | 2.95 | 2.10 | 1.26 | - | - | - | - | - |
|
||||||
|
| 回购(亿) | - | 1.71 | 0.50 | - | - | - | - | - | - | - |
|
||||||
|
| 总资产(亿) | 174.13 | 147.47 | 134.81 | 153.80 | 105.16 | 62.22 | 53.48 | 55.49 | 37.74 | 1.00 |
|
||||||
|
| 净资产(亿) | 90.09 | 87.37 | 85.82 | 82.00 | 37.36 | 17.48 | 15.12 | 7.47 | 6.67 | 1.00 |
|
||||||
|
| 商誉(亿) | - | - | - | - | - | - | - | - | - | - |
|
||||||
|
|
||||||
|
|
||||||
|
## 费用指标
|
||||||
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A | 2018A | 2017A | 2016A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|
||||||
|
| 销售费用率 | 0.25% | 0.31% | 0.19% | 0.09% | 0.19% | 0.33% | 0.58% | 0.37% | 0.51% | - |
|
||||||
|
| 管理费用率 | 1.18% | 1.42% | 1.11% | 0.54% | 0.84% | 1.13% | 1.12% | 0.92% | 1.10% | - |
|
||||||
|
| SG&A比例 | 1.43% | 1.73% | 1.30% | 0.63% | 1.03% | 1.46% | 1.70% | 1.29% | 1.61% | - |
|
||||||
|
| 研发费用率 | 2.99% | 3.15% | 2.68% | 2.63% | 2.90% | 3.27% | 3.52% | 4.73% | 4.10% | - |
|
||||||
|
| 其他费用率 | 1.35% | 1.16% | 0.96% | 1.44% | 2.05% | 2.62% | 0.69% | 2.94% | 3.05% | - |
|
||||||
|
| 折旧费用占比 | - | 2.77% | 2.02% | 1.03% | 1.50% | 2.39% | 1.66% | 0.85% | 1.09% | - |
|
||||||
|
| 所得税率 | 9.29% | 3.85% | 5.21% | 8.93% | 7.30% | 4.21% | -26.38% | 2.76% | 27.22% | - |
|
||||||
|
|
||||||
|
|
||||||
|
## 资产占比
|
||||||
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A | 2018A | 2017A | 2016A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|
||||||
|
| 现金占比 | 8.88% | 11.09% | 8.90% | 6.61% | 4.04% | 4.47% | 0.96% | 2.96% | 2.90% | - |
|
||||||
|
| 库存占比 | 26.24% | 16.79% | 14.57% | 21.79% | 26.58% | 19.51% | 16.08% | 28.66% | 32.68% | - |
|
||||||
|
| 应收款占比 | 18.81% | 15.92% | 25.95% | 32.22% | 28.09% | 19.84% | 12.33% | 15.88% | 13.23% | - |
|
||||||
|
| 预付款占比 | 0.75% | 0.08% | 0.07% | 0.11% | 0.16% | 1.25% | 0.39% | 6.20% | 3.26% | - |
|
||||||
|
| 固定资产占比 | - | 23.88% | 25.96% | 23.65% | 26.59% | 38.24% | 37.34% | 19.47% | 15.24% | - |
|
||||||
|
| 长期投资占比 | 2.39% | 2.83% | 2.95% | 0.65% | - | 0.07% | 0.07% | - | - | - |
|
||||||
|
| 商誉占比 | - | - | - | - | - | - | - | - | - | - |
|
||||||
|
| 其他资产占比 | 42.94% | 29.42% | 21.60% | 14.97% | 14.54% | 16.62% | 32.82% | 26.83% | 32.70% | 100.00% |
|
||||||
|
| 应付款占比 | 17.61% | 14.64% | 16.87% | 13.63% | 33.13% | 19.56% | 16.47% | 12.18% | 15.49% | - |
|
||||||
|
| 预收款占比 | 0.88% | 0.02% | 0.03% | 0.04% | 0.10% | 0.03% | 0.05% | 0.14% | 0.36% | 0.00% |
|
||||||
|
| 短期借款占比 | 1.06% | 1.60% | 0.25% | 4.53% | 2.48% | 20.67% | 33.82% | 23.62% | 10.33% | 0.00% |
|
||||||
|
| 长期借款占比 | 2.57% | 3.16% | 5.23% | 5.66% | 13.15% | 18.25% | 3.12% | 1.87% | 0.11% | 0.00% |
|
||||||
|
| 运营资产占比 | 27.30% | 18.13% | 23.69% | 40.46% | 21.59% | 21.02% | 12.29% | 38.41% | 33.31% | 0.00% |
|
||||||
|
| 有息负债率 | 3.63% | 4.76% | 5.47% | 10.19% | 15.64% | 38.92% | 36.94% | 25.49% | 10.44% | 0.00% |
|
||||||
|
|
||||||
|
|
||||||
|
## 周转能力
|
||||||
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A | 2018A | 2017A | 2016A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|
||||||
|
| 存货周转天数 | 141 | 75 | 45 | 46 | 72 | 61 | 48 | 91 | 122 | - |
|
||||||
|
| 应收款周转天数 | 91 | 64 | 73 | 62 | 69 | 56 | 34 | 45 | 43 | - |
|
||||||
|
| 应付款周转天数 | 95 | 65 | 52 | 29 | 90 | 62 | 50 | 39 | 58 | - |
|
||||||
|
| 固定资产周转率 | - | 3.78 | 4.95 | 7.91 | 5.57 | 3.36 | 3.49 | 6.50 | 7.32 | - |
|
||||||
|
| 总资产周转率 | 0.75 | 0.90 | 1.28 | 1.87 | 1.48 | 1.28 | 1.30 | 1.27 | 1.12 | 0.00 |
|
||||||
|
|
||||||
|
|
||||||
|
## 人均效率
|
||||||
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A | 2018A | 2017A | 2016A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|
||||||
|
| 员工人数 | - | 3,344 | - | - | - | - | - | - | - | - |
|
||||||
|
| 人均创收(万) | - | 397.63 | - | - | - | - | - | - | - | - |
|
||||||
|
| 人均创利(万) | - | 14.77 | - | - | - | - | - | - | - | - |
|
||||||
|
| 人均薪酬(万) | - | 15.29 | - | - | - | - | - | - | - | - |
|
||||||
|
|
||||||
|
|
||||||
|
## 市场表现
|
||||||
|
| 指标 | 2025Q3 | 2024A | 2023A | 2022A | 2021A | 2020A | 2019A | 2018A | 2017A | 2016A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
|
||||||
|
| 股价 | 77.37 | 45.64 | 39.64 | 77.68 | 103.35 | - | - | - | - | - |
|
||||||
|
| 市值(亿) | 390.48 | 192.04 | 166.79 | 233.47 | 260.00 | - | - | - | - | - |
|
||||||
|
| PE | 79.03 | 36.41 | 14.88 | 42.04 | 103.77 | - | - | - | - | - |
|
||||||
|
| PB | 4.33 | 2.23 | 1.97 | 2.93 | 7.27 | - | - | - | - | - |
|
||||||
|
| 股东户数 | 24,627 | 14,740 | 13,732 | 14,462 | 15,688 | - | - | - | - | - |
|
||||||
|
|
||||||
@ -3,4 +3,3 @@ cash_equi_short_term_inve_oas,accou_and_notes_recei_oas,inventories_oas,ppe_net_
|
|||||||
343159000000.0,48203000000.0,440000000.0,133283000000.0,589410000000.0,196127000000.0,58485000000.0,48526000000.0,127335000000.0,1042000000.0,100097000000.0,291004000000.0,277107000000.0,1780995000000.0,973548000000.0,31265000000.0,20241231
|
343159000000.0,48203000000.0,440000000.0,133283000000.0,589410000000.0,196127000000.0,58485000000.0,48526000000.0,127335000000.0,1042000000.0,100097000000.0,291004000000.0,277107000000.0,1780995000000.0,973548000000.0,31265000000.0,20241231
|
||||||
379155000000.0,46606000000.0,456000000.0,104458000000.0,460591000000.0,177727000000.0,47691000000.0,25561000000.0,115109000000.0,669000000.0,86168000000.0,309388000000.0,292920000000.0,1577246000000.0,808591000000.0,27824000000.0,20231231
|
379155000000.0,46606000000.0,456000000.0,104458000000.0,460591000000.0,177727000000.0,47691000000.0,25561000000.0,115109000000.0,669000000.0,86168000000.0,309388000000.0,292920000000.0,1577246000000.0,808591000000.0,27824000000.0,20231231
|
||||||
290756000000.0,45467000000.0,2333000000.0,103777000000.0,431451000000.0,161802000000.0,17934000000.0,5981000000.0,102827000000.0,816000000.0,82216000000.0,330761000000.0,312337000000.0,1578131000000.0,721391000000.0,24393000000.0,20221231
|
290756000000.0,45467000000.0,2333000000.0,103777000000.0,431451000000.0,161802000000.0,17934000000.0,5981000000.0,102827000000.0,816000000.0,82216000000.0,330761000000.0,312337000000.0,1578131000000.0,721391000000.0,24393000000.0,20221231
|
||||||
264101000000.0,49331000000.0,1063000000.0,106033000000.0,467251000000.0,171376000000.0,24449000000.0,13540000000.0,109470000000.0,649000000.0,87846000000.0,299027000000.0,282526000000.0,1612364000000.0,806299000000.0,18714000000.0,20211231
|
|
||||||
|
|||||||
|
@ -3,4 +3,3 @@ net_cash_flows_from_oa_oas,purchase_of_ppe_and_ia_oas,dividends_paid_oas,end_dat
|
|||||||
258521000000.0,96048000000.0,28859000000.0,20241231
|
258521000000.0,96048000000.0,28859000000.0,20241231
|
||||||
221962000000.0,47407000000.0,20983000000.0,20231231
|
221962000000.0,47407000000.0,20983000000.0,20231231
|
||||||
146091000000.0,50850000000.0,12952000000.0,20221231
|
146091000000.0,50850000000.0,12952000000.0,20221231
|
||||||
175186000000.0,62165000000.0,12503000000.0,20211231
|
|
||||||
|
|||||||
|
@ -2,4 +2,3 @@ date_str,dividends
|
|||||||
20241231,38104168998.825
|
20241231,38104168998.825
|
||||||
20231231,29163521377.441
|
20231231,29163521377.441
|
||||||
20221231,20700985117.366
|
20221231,20700985117.366
|
||||||
20211231,13226708445.273
|
|
||||||
|
|||||||
|
@ -1,6 +1,6 @@
|
|||||||
date_str,employee_count
|
date_str,employee_count
|
||||||
|
20261231,111221.0
|
||||||
20251231,111221.0
|
20251231,111221.0
|
||||||
20241231,110558.0
|
20241231,110558.0
|
||||||
20231231,105417.0
|
20231231,105417.0
|
||||||
20221231,108436.0
|
20221231,108436.0
|
||||||
20211231,112771.0
|
|
||||||
|
|||||||
|
@ -3,4 +3,3 @@ date_str,PE,PB,MarketCap,Price
|
|||||||
20241231,0.0,0.0,3562280981362.7,388.01076
|
20241231,0.0,0.0,3562280981362.7,388.01076
|
||||||
20231231,0.0,0.0,2523103788380.7,266.066192
|
20231231,0.0,0.0,2523103788380.7,266.066192
|
||||||
20221231,0.0,0.0,2854854121108.1,298.35218
|
20221231,0.0,0.0,2854854121108.1,298.35218
|
||||||
20211231,0.0,0.0,3588534115921.0,362.52384
|
|
||||||
|
|||||||
|
@ -3,4 +3,3 @@ revenue_oas,gross_profit_oas,sga_expenses_oas,selling_marketing_expenses_oas,ga_
|
|||||||
660257000000.0,349246000000.0,149149000000.0,36388000000.0,112761000000.0,45018000000.0,194073000000.0,208099000000.0,20241231
|
660257000000.0,349246000000.0,149149000000.0,36388000000.0,112761000000.0,45018000000.0,194073000000.0,208099000000.0,20241231
|
||||||
609015000000.0,293109000000.0,137736000000.0,34211000000.0,103525000000.0,43276000000.0,115216000000.0,160074000000.0,20231231
|
609015000000.0,293109000000.0,137736000000.0,34211000000.0,103525000000.0,43276000000.0,115216000000.0,160074000000.0,20231231
|
||||||
554552000000.0,238746000000.0,135925000000.0,29229000000.0,106696000000.0,21516000000.0,188243000000.0,227114000000.0,20221231
|
554552000000.0,238746000000.0,135925000000.0,29229000000.0,106696000000.0,21516000000.0,188243000000.0,227114000000.0,20221231
|
||||||
560118000000.0,245944000000.0,130441000000.0,40594000000.0,89847000000.0,20252000000.0,224822000000.0,264970000000.0,20211231
|
|
||||||
|
|||||||
|
@ -1,6 +1,6 @@
|
|||||||
date_str,repurchases
|
date_str,repurchases
|
||||||
20251231,76796598544.2
|
20261231,1271296551.4
|
||||||
|
20251231,80610335058.2
|
||||||
20241231,112003383926.44
|
20241231,112003383926.44
|
||||||
20231231,49432707948.16
|
20231231,49432707948.16
|
||||||
20221231,33794068650.24
|
20221231,33794068650.24
|
||||||
20211231,2598776231.78
|
|
||||||
|
|||||||
|
@ -205,7 +205,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="report-container">
|
<div class="report-container">
|
||||||
<h1>腾讯控股有限公司 (00700.HK) - Financial Report</h1>
|
<h1>腾讯控股有限公司 (00700.HK) - Financial Report</h1>
|
||||||
<p><em>Report generated on: 2025-12-21</em></p>
|
<p><em>Report generated on: 2026-01-03</em></p>
|
||||||
|
|
||||||
<table class="company-table">
|
<table class="company-table">
|
||||||
<thead>
|
<thead>
|
||||||
@ -240,68 +240,68 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>指标</th>
|
<th>指标</th>
|
||||||
<th>2025H1</th><th>2024A</th><th>2023A</th><th>2022A</th><th>2021A</th>
|
<th>2025H1</th><th>2024A</th><th>2023A</th><th>2022A</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr class="section-row"><td class="section-label">主要指标</td><td class="section-spacer" colspan="5"></td></tr>
|
<tr class="section-row"><td class="section-label">主要指标</td><td class="section-spacer" colspan="4"></td></tr>
|
||||||
<tr><td class="metric-name">ROE</td><td>9.28%</td><td>19.93%</td><td>14.25%</td><td>26.09%</td><td>27.88%</td></tr>
|
<tr><td class="metric-name">ROE</td><td>9.28%</td><td>19.93%</td><td>14.25%</td><td>26.09%</td></tr>
|
||||||
<tr><td class="metric-name">ROA</td><td>5.14%</td><td>10.90%</td><td>7.30%</td><td>11.93%</td><td>13.94%</td></tr>
|
<tr><td class="metric-name">ROA</td><td>5.14%</td><td>10.90%</td><td>7.30%</td><td>11.93%</td></tr>
|
||||||
<tr><td class="metric-name">ROCE/ROIC</td><td>6.21%</td><td>12.62%</td><td>10.79%</td><td>16.36%</td><td>18.58%</td></tr>
|
<tr><td class="metric-name">ROCE/ROIC</td><td>6.21%</td><td>12.62%</td><td>10.79%</td><td>16.36%</td></tr>
|
||||||
<tr><td class="metric-name">毛利率</td><td>56.38%</td><td>52.90%</td><td>48.13%</td><td>43.05%</td><td>43.91%</td></tr>
|
<tr><td class="metric-name">毛利率</td><td>56.38%</td><td>52.90%</td><td>48.13%</td><td>43.05%</td></tr>
|
||||||
<tr><td class="metric-name">净利润率</td><td>28.38%</td><td>29.39%</td><td>18.92%</td><td>33.95%</td><td>40.14%</td></tr>
|
<tr><td class="metric-name">净利润率</td><td>28.38%</td><td>29.39%</td><td>18.92%</td><td>33.95%</td></tr>
|
||||||
<tr><td class="metric-name">收入(亿)</td><td>3,645.26</td><td>6,602.57</td><td>6,090.15</td><td>5,545.52</td><td>5,601.18</td></tr>
|
<tr><td class="metric-name">收入(亿)</td><td>3,645.26</td><td>6,602.57</td><td>6,090.15</td><td>5,545.52</td></tr>
|
||||||
<tr><td class="metric-name">收入增速</td><td>-</td><td>8.41%</td><td>9.82%</td><td>-0.99%</td><td>-</td></tr>
|
<tr><td class="metric-name">收入增速</td><td>-</td><td>8.41%</td><td>9.82%</td><td>-</td></tr>
|
||||||
<tr><td class="metric-name">净利润(亿)</td><td>1,034.49</td><td>1,940.73</td><td>1,152.16</td><td>1,882.43</td><td>2,248.22</td></tr>
|
<tr><td class="metric-name">净利润(亿)</td><td>1,034.49</td><td>1,940.73</td><td>1,152.16</td><td>1,882.43</td></tr>
|
||||||
<tr><td class="metric-name">净利润增速</td><td>-</td><td>68.44%</td><td>-38.79%</td><td>-16.27%</td><td>-</td></tr>
|
<tr><td class="metric-name">净利润增速</td><td>-</td><td>68.44%</td><td>-38.79%</td><td>-</td></tr>
|
||||||
<tr><td class="metric-name">经营净现金流(亿)</td><td>1,512.65</td><td>2,585.21</td><td>2,219.62</td><td>1,460.91</td><td>1,751.86</td></tr>
|
<tr><td class="metric-name">经营净现金流(亿)</td><td>1,512.65</td><td>2,585.21</td><td>2,219.62</td><td>1,460.91</td></tr>
|
||||||
<tr><td class="metric-name">资本开支(亿)</td><td>574.57</td><td>960.48</td><td>474.07</td><td>508.50</td><td>621.65</td></tr>
|
<tr><td class="metric-name">资本开支(亿)</td><td>574.57</td><td>960.48</td><td>474.07</td><td>508.50</td></tr>
|
||||||
<tr><td class="metric-name">自由现金流(亿)</td><td>938.08</td><td>1,624.73</td><td>1,745.55</td><td>952.41</td><td>1,130.21</td></tr>
|
<tr><td class="metric-name">自由现金流(亿)</td><td>938.08</td><td>1,624.73</td><td>1,745.55</td><td>952.41</td></tr>
|
||||||
<tr><td class="metric-name">分红(亿)</td><td>375.35</td><td>288.59</td><td>209.83</td><td>129.52</td><td>125.03</td></tr>
|
<tr><td class="metric-name">分红(亿)</td><td>375.35</td><td>288.59</td><td>209.83</td><td>129.52</td></tr>
|
||||||
<tr><td class="metric-name">回购(亿)</td><td>-</td><td>1,120.03</td><td>494.33</td><td>337.94</td><td>25.99</td></tr>
|
<tr><td class="metric-name">回购(亿)</td><td>-</td><td>1,120.03</td><td>494.33</td><td>337.94</td></tr>
|
||||||
<tr><td class="metric-name">总资产(亿)</td><td>20,133.10</td><td>17,809.95</td><td>15,772.46</td><td>15,781.31</td><td>16,123.64</td></tr>
|
<tr><td class="metric-name">总资产(亿)</td><td>20,133.10</td><td>17,809.95</td><td>15,772.46</td><td>15,781.31</td></tr>
|
||||||
<tr><td class="metric-name">净资产(亿)</td><td>11,146.39</td><td>9,735.48</td><td>8,085.91</td><td>7,213.91</td><td>8,062.99</td></tr>
|
<tr><td class="metric-name">净资产(亿)</td><td>11,146.39</td><td>9,735.48</td><td>8,085.91</td><td>7,213.91</td></tr>
|
||||||
<tr><td class="metric-name">商誉(亿)</td><td>2,158.32</td><td>1,961.27</td><td>1,777.27</td><td>1,618.02</td><td>1,713.76</td></tr>
|
<tr><td class="metric-name">商誉(亿)</td><td>2,158.32</td><td>1,961.27</td><td>1,777.27</td><td>1,618.02</td></tr>
|
||||||
<tr class="section-row"><td class="section-label">费用指标</td><td class="section-spacer" colspan="5"></td></tr>
|
<tr class="section-row"><td class="section-label">费用指标</td><td class="section-spacer" colspan="4"></td></tr>
|
||||||
<tr><td class="metric-name">销售费用率</td><td>4.74%</td><td>5.51%</td><td>5.62%</td><td>5.27%</td><td>7.25%</td></tr>
|
<tr><td class="metric-name">销售费用率</td><td>4.74%</td><td>5.51%</td><td>5.62%</td><td>5.27%</td></tr>
|
||||||
<tr><td class="metric-name">管理费用率</td><td>17.99%</td><td>17.08%</td><td>17.00%</td><td>19.24%</td><td>16.04%</td></tr>
|
<tr><td class="metric-name">管理费用率</td><td>17.99%</td><td>17.08%</td><td>17.00%</td><td>19.24%</td></tr>
|
||||||
<tr><td class="metric-name">SG&A比例</td><td>22.73%</td><td>22.59%</td><td>22.62%</td><td>24.51%</td><td>23.29%</td></tr>
|
<tr><td class="metric-name">SG&A比例</td><td>22.73%</td><td>22.59%</td><td>22.62%</td><td>24.51%</td></tr>
|
||||||
<tr><td class="metric-name">研发费用率</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
<tr><td class="metric-name">研发费用率</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
<tr><td class="metric-name">其他费用率</td><td>5.27%</td><td>0.91%</td><td>6.59%</td><td>-15.40%</td><td>-19.52%</td></tr>
|
<tr><td class="metric-name">其他费用率</td><td>5.27%</td><td>0.91%</td><td>6.59%</td><td>-15.40%</td></tr>
|
||||||
<tr><td class="metric-name">折旧费用占比</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
<tr><td class="metric-name">折旧费用占比</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
<tr><td class="metric-name">所得税率</td><td>19.51%</td><td>18.83%</td><td>27.30%</td><td>10.26%</td><td>8.26%</td></tr>
|
<tr><td class="metric-name">所得税率</td><td>19.51%</td><td>18.83%</td><td>27.30%</td><td>10.26%</td></tr>
|
||||||
<tr class="section-row"><td class="section-label">资产占比</td><td class="section-spacer" colspan="5"></td></tr>
|
<tr class="section-row"><td class="section-label">资产占比</td><td class="section-spacer" colspan="4"></td></tr>
|
||||||
<tr><td class="metric-name">现金占比</td><td>18.90%</td><td>19.27%</td><td>24.04%</td><td>18.42%</td><td>16.38%</td></tr>
|
<tr><td class="metric-name">现金占比</td><td>18.90%</td><td>19.27%</td><td>24.04%</td><td>18.42%</td></tr>
|
||||||
<tr><td class="metric-name">库存占比</td><td>0.02%</td><td>0.02%</td><td>0.03%</td><td>0.15%</td><td>0.07%</td></tr>
|
<tr><td class="metric-name">库存占比</td><td>0.02%</td><td>0.02%</td><td>0.03%</td><td>0.15%</td></tr>
|
||||||
<tr><td class="metric-name">应收款占比</td><td>2.55%</td><td>2.71%</td><td>2.95%</td><td>2.88%</td><td>3.06%</td></tr>
|
<tr><td class="metric-name">应收款占比</td><td>2.55%</td><td>2.71%</td><td>2.95%</td><td>2.88%</td></tr>
|
||||||
<tr><td class="metric-name">预付款占比</td><td>1.34%</td><td>1.76%</td><td>1.76%</td><td>1.55%</td><td>1.16%</td></tr>
|
<tr><td class="metric-name">预付款占比</td><td>1.34%</td><td>1.76%</td><td>1.76%</td><td>1.55%</td></tr>
|
||||||
<tr><td class="metric-name">固定资产占比</td><td>8.58%</td><td>7.48%</td><td>6.62%</td><td>6.58%</td><td>6.58%</td></tr>
|
<tr><td class="metric-name">固定资产占比</td><td>8.58%</td><td>7.48%</td><td>6.62%</td><td>6.58%</td></tr>
|
||||||
<tr><td class="metric-name">长期投资占比</td><td>35.10%</td><td>33.09%</td><td>29.20%</td><td>27.34%</td><td>28.98%</td></tr>
|
<tr><td class="metric-name">长期投资占比</td><td>35.10%</td><td>33.09%</td><td>29.20%</td><td>27.34%</td></tr>
|
||||||
<tr><td class="metric-name">商誉占比</td><td>10.72%</td><td>11.01%</td><td>11.27%</td><td>10.25%</td><td>10.63%</td></tr>
|
<tr><td class="metric-name">商誉占比</td><td>10.72%</td><td>11.01%</td><td>11.27%</td><td>10.25%</td></tr>
|
||||||
<tr class="other-assets-row"><td class="metric-name">其他资产占比</td><td>22.80%</td><td>24.66%</td><td>24.12%</td><td>32.83%</td><td>33.15%</td></tr>
|
<tr class="other-assets-row"><td class="metric-name">其他资产占比</td><td>22.80%</td><td>24.66%</td><td>24.12%</td><td>32.83%</td></tr>
|
||||||
<tr><td class="metric-name">应付款占比</td><td>7.12%</td><td>7.15%</td><td>7.30%</td><td>6.52%</td><td>6.79%</td></tr>
|
<tr><td class="metric-name">应付款占比</td><td>7.12%</td><td>7.15%</td><td>7.30%</td><td>6.52%</td></tr>
|
||||||
<tr><td class="metric-name">预收款占比</td><td>0.00%</td><td>0.00%</td><td>0.00%</td><td>0.00%</td><td>0.00%</td></tr>
|
<tr><td class="metric-name">预收款占比</td><td>0.00%</td><td>0.00%</td><td>0.00%</td><td>0.00%</td></tr>
|
||||||
<tr><td class="metric-name">短期借款占比</td><td>6.09%</td><td>6.01%</td><td>4.64%</td><td>1.52%</td><td>2.36%</td></tr>
|
<tr><td class="metric-name">短期借款占比</td><td>6.09%</td><td>6.01%</td><td>4.64%</td><td>1.52%</td></tr>
|
||||||
<tr><td class="metric-name">长期借款占比</td><td>32.68%</td><td>31.90%</td><td>38.19%</td><td>40.75%</td><td>36.07%</td></tr>
|
<tr><td class="metric-name">长期借款占比</td><td>32.68%</td><td>31.90%</td><td>38.19%</td><td>40.75%</td></tr>
|
||||||
<tr><td class="metric-name">运营资产占比</td><td>-3.22%</td><td>-2.66%</td><td>-2.55%</td><td>-1.94%</td><td>-2.50%</td></tr>
|
<tr><td class="metric-name">运营资产占比</td><td>-3.22%</td><td>-2.66%</td><td>-2.55%</td><td>-1.94%</td></tr>
|
||||||
<tr><td class="metric-name">有息负债率</td><td>38.77%</td><td>37.91%</td><td>42.83%</td><td>42.27%</td><td>38.42%</td></tr>
|
<tr><td class="metric-name">有息负债率</td><td>38.77%</td><td>37.91%</td><td>42.83%</td><td>42.27%</td></tr>
|
||||||
<tr class="section-row"><td class="section-label">周转能力</td><td class="section-spacer" colspan="5"></td></tr>
|
<tr class="section-row"><td class="section-label">周转能力</td><td class="section-spacer" colspan="4"></td></tr>
|
||||||
<tr><td class="metric-name">存货周转天数</td><td>0</td><td>0</td><td>0</td><td>2</td><td>1</td></tr>
|
<tr><td class="metric-name">存货周转天数</td><td>0</td><td>0</td><td>0</td><td>2</td></tr>
|
||||||
<tr><td class="metric-name">应收款周转天数</td><td>25</td><td>26</td><td>27</td><td>29</td><td>32</td></tr>
|
<tr><td class="metric-name">应收款周转天数</td><td>25</td><td>26</td><td>27</td><td>29</td></tr>
|
||||||
<tr><td class="metric-name">应付款周转天数</td><td>164</td><td>149</td><td>132</td><td>118</td><td>127</td></tr>
|
<tr><td class="metric-name">应付款周转天数</td><td>164</td><td>149</td><td>132</td><td>118</td></tr>
|
||||||
<tr><td class="metric-name">固定资产周转率</td><td>4.22</td><td>4.95</td><td>5.83</td><td>5.34</td><td>5.28</td></tr>
|
<tr><td class="metric-name">固定资产周转率</td><td>4.22</td><td>4.95</td><td>5.83</td><td>5.34</td></tr>
|
||||||
<tr><td class="metric-name">总资产周转率</td><td>0.36</td><td>0.37</td><td>0.39</td><td>0.35</td><td>0.35</td></tr>
|
<tr><td class="metric-name">总资产周转率</td><td>0.36</td><td>0.37</td><td>0.39</td><td>0.35</td></tr>
|
||||||
<tr class="section-row"><td class="section-label">人均效率</td><td class="section-spacer" colspan="5"></td></tr>
|
<tr class="section-row"><td class="section-label">人均效率</td><td class="section-spacer" colspan="4"></td></tr>
|
||||||
<tr><td class="metric-name">员工人数</td><td>-</td><td>110,558</td><td>105,417</td><td>108,436</td><td>112,771</td></tr>
|
<tr><td class="metric-name">员工人数</td><td>-</td><td>110,558</td><td>105,417</td><td>108,436</td></tr>
|
||||||
<tr><td class="metric-name">人均创收(万)</td><td>-</td><td>597.20</td><td>577.72</td><td>511.41</td><td>496.69</td></tr>
|
<tr><td class="metric-name">人均创收(万)</td><td>-</td><td>597.20</td><td>577.72</td><td>511.41</td></tr>
|
||||||
<tr><td class="metric-name">人均创利(万)</td><td>-</td><td>175.54</td><td>109.30</td><td>173.60</td><td>199.36</td></tr>
|
<tr><td class="metric-name">人均创利(万)</td><td>-</td><td>175.54</td><td>109.30</td><td>173.60</td></tr>
|
||||||
<tr><td class="metric-name">人均薪酬(万)</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
<tr><td class="metric-name">人均薪酬(万)</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
<tr class="section-row"><td class="section-label">市场表现</td><td class="section-spacer" colspan="5"></td></tr>
|
<tr class="section-row"><td class="section-label">市场表现</td><td class="section-spacer" colspan="4"></td></tr>
|
||||||
<tr><td class="metric-name">股价</td><td>467.83</td><td>388.01</td><td>266.07</td><td>298.35</td><td>362.52</td></tr>
|
<tr><td class="metric-name">股价</td><td>467.83</td><td>388.01</td><td>266.07</td><td>298.35</td></tr>
|
||||||
<tr><td class="metric-name">市值(亿)</td><td>42,043</td><td>35,623</td><td>25,231</td><td>28,549</td><td>35,885</td></tr>
|
<tr><td class="metric-name">市值(亿)</td><td>42,043</td><td>35,623</td><td>25,231</td><td>28,549</td></tr>
|
||||||
<tr><td class="metric-name">PE</td><td>20.32</td><td>18.36</td><td>21.90</td><td>15.17</td><td>15.96</td></tr>
|
<tr><td class="metric-name">PE</td><td>20.32</td><td>18.36</td><td>21.90</td><td>15.17</td></tr>
|
||||||
<tr><td class="metric-name">PB</td><td>3.77</td><td>3.66</td><td>3.12</td><td>3.96</td><td>4.45</td></tr>
|
<tr><td class="metric-name">PB</td><td>3.77</td><td>3.66</td><td>3.12</td><td>3.96</td></tr>
|
||||||
<tr><td class="metric-name">股东户数</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
<tr><td class="metric-name">股东户数</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
# 腾讯控股有限公司 (00700.HK) - Financial Report
|
# 腾讯控股有限公司 (00700.HK) - Financial Report
|
||||||
*Report generated on: 2025-12-21*
|
*Report generated on: 2026-01-03*
|
||||||
|
|
||||||
| 代码 | 简称 | 上市日期 | 年结日 | 市值(亿) | PE | PB | 股息率(%) |
|
| 代码 | 简称 | 上市日期 | 年结日 | 市值(亿) | PE | PB | 股息率(%) |
|
||||||
|:---|:---|:---|:---|:---|:---|:---|:---|
|
|:---|:---|:---|:---|:---|:---|:---|:---|
|
||||||
@ -7,83 +7,83 @@
|
|||||||
|
|
||||||
|
|
||||||
## 主要指标
|
## 主要指标
|
||||||
| 指标 | 2025H1 | 2024A | 2023A | 2022A | 2021A |
|
| 指标 | 2025H1 | 2024A | 2023A | 2022A |
|
||||||
|:---|--:|--:|--:|--:|--:|
|
|:---|--:|--:|--:|--:|
|
||||||
| ROE | 9.28% | 19.93% | 14.25% | 26.09% | 27.88% |
|
| ROE | 9.28% | 19.93% | 14.25% | 26.09% |
|
||||||
| ROA | 5.14% | 10.90% | 7.30% | 11.93% | 13.94% |
|
| ROA | 5.14% | 10.90% | 7.30% | 11.93% |
|
||||||
| ROCE/ROIC | 6.21% | 12.62% | 10.79% | 16.36% | 18.58% |
|
| ROCE/ROIC | 6.21% | 12.62% | 10.79% | 16.36% |
|
||||||
| 毛利率 | 56.38% | 52.90% | 48.13% | 43.05% | 43.91% |
|
| 毛利率 | 56.38% | 52.90% | 48.13% | 43.05% |
|
||||||
| 净利润率 | 28.38% | 29.39% | 18.92% | 33.95% | 40.14% |
|
| 净利润率 | 28.38% | 29.39% | 18.92% | 33.95% |
|
||||||
| 收入(亿) | 3,645.26 | 6,602.57 | 6,090.15 | 5,545.52 | 5,601.18 |
|
| 收入(亿) | 3,645.26 | 6,602.57 | 6,090.15 | 5,545.52 |
|
||||||
| 收入增速 | - | 8.41% | 9.82% | -0.99% | - |
|
| 收入增速 | - | 8.41% | 9.82% | - |
|
||||||
| 净利润(亿) | 1,034.49 | 1,940.73 | 1,152.16 | 1,882.43 | 2,248.22 |
|
| 净利润(亿) | 1,034.49 | 1,940.73 | 1,152.16 | 1,882.43 |
|
||||||
| 净利润增速 | - | 68.44% | -38.79% | -16.27% | - |
|
| 净利润增速 | - | 68.44% | -38.79% | - |
|
||||||
| 经营净现金流(亿) | 1,512.65 | 2,585.21 | 2,219.62 | 1,460.91 | 1,751.86 |
|
| 经营净现金流(亿) | 1,512.65 | 2,585.21 | 2,219.62 | 1,460.91 |
|
||||||
| 资本开支(亿) | 574.57 | 960.48 | 474.07 | 508.50 | 621.65 |
|
| 资本开支(亿) | 574.57 | 960.48 | 474.07 | 508.50 |
|
||||||
| 自由现金流(亿) | 938.08 | 1,624.73 | 1,745.55 | 952.41 | 1,130.21 |
|
| 自由现金流(亿) | 938.08 | 1,624.73 | 1,745.55 | 952.41 |
|
||||||
| 分红(亿) | 375.35 | 288.59 | 209.83 | 129.52 | 125.03 |
|
| 分红(亿) | 375.35 | 288.59 | 209.83 | 129.52 |
|
||||||
| 回购(亿) | - | 1,120.03 | 494.33 | 337.94 | 25.99 |
|
| 回购(亿) | - | 1,120.03 | 494.33 | 337.94 |
|
||||||
| 总资产(亿) | 20,133.10 | 17,809.95 | 15,772.46 | 15,781.31 | 16,123.64 |
|
| 总资产(亿) | 20,133.10 | 17,809.95 | 15,772.46 | 15,781.31 |
|
||||||
| 净资产(亿) | 11,146.39 | 9,735.48 | 8,085.91 | 7,213.91 | 8,062.99 |
|
| 净资产(亿) | 11,146.39 | 9,735.48 | 8,085.91 | 7,213.91 |
|
||||||
| 商誉(亿) | 2,158.32 | 1,961.27 | 1,777.27 | 1,618.02 | 1,713.76 |
|
| 商誉(亿) | 2,158.32 | 1,961.27 | 1,777.27 | 1,618.02 |
|
||||||
|
|
||||||
|
|
||||||
## 费用指标
|
## 费用指标
|
||||||
| 指标 | 2025H1 | 2024A | 2023A | 2022A | 2021A |
|
| 指标 | 2025H1 | 2024A | 2023A | 2022A |
|
||||||
|:---|--:|--:|--:|--:|--:|
|
|:---|--:|--:|--:|--:|
|
||||||
| 销售费用率 | 4.74% | 5.51% | 5.62% | 5.27% | 7.25% |
|
| 销售费用率 | 4.74% | 5.51% | 5.62% | 5.27% |
|
||||||
| 管理费用率 | 17.99% | 17.08% | 17.00% | 19.24% | 16.04% |
|
| 管理费用率 | 17.99% | 17.08% | 17.00% | 19.24% |
|
||||||
| SG&A比例 | 22.73% | 22.59% | 22.62% | 24.51% | 23.29% |
|
| SG&A比例 | 22.73% | 22.59% | 22.62% | 24.51% |
|
||||||
| 研发费用率 | - | - | - | - | - |
|
| 研发费用率 | - | - | - | - |
|
||||||
| 其他费用率 | 5.27% | 0.91% | 6.59% | -15.40% | -19.52% |
|
| 其他费用率 | 5.27% | 0.91% | 6.59% | -15.40% |
|
||||||
| 折旧费用占比 | - | - | - | - | - |
|
| 折旧费用占比 | - | - | - | - |
|
||||||
| 所得税率 | 19.51% | 18.83% | 27.30% | 10.26% | 8.26% |
|
| 所得税率 | 19.51% | 18.83% | 27.30% | 10.26% |
|
||||||
|
|
||||||
|
|
||||||
## 资产占比
|
## 资产占比
|
||||||
| 指标 | 2025H1 | 2024A | 2023A | 2022A | 2021A |
|
| 指标 | 2025H1 | 2024A | 2023A | 2022A |
|
||||||
|:---|--:|--:|--:|--:|--:|
|
|:---|--:|--:|--:|--:|
|
||||||
| 现金占比 | 18.90% | 19.27% | 24.04% | 18.42% | 16.38% |
|
| 现金占比 | 18.90% | 19.27% | 24.04% | 18.42% |
|
||||||
| 库存占比 | 0.02% | 0.02% | 0.03% | 0.15% | 0.07% |
|
| 库存占比 | 0.02% | 0.02% | 0.03% | 0.15% |
|
||||||
| 应收款占比 | 2.55% | 2.71% | 2.95% | 2.88% | 3.06% |
|
| 应收款占比 | 2.55% | 2.71% | 2.95% | 2.88% |
|
||||||
| 预付款占比 | 1.34% | 1.76% | 1.76% | 1.55% | 1.16% |
|
| 预付款占比 | 1.34% | 1.76% | 1.76% | 1.55% |
|
||||||
| 固定资产占比 | 8.58% | 7.48% | 6.62% | 6.58% | 6.58% |
|
| 固定资产占比 | 8.58% | 7.48% | 6.62% | 6.58% |
|
||||||
| 长期投资占比 | 35.10% | 33.09% | 29.20% | 27.34% | 28.98% |
|
| 长期投资占比 | 35.10% | 33.09% | 29.20% | 27.34% |
|
||||||
| 商誉占比 | 10.72% | 11.01% | 11.27% | 10.25% | 10.63% |
|
| 商誉占比 | 10.72% | 11.01% | 11.27% | 10.25% |
|
||||||
| 其他资产占比 | 22.80% | 24.66% | 24.12% | 32.83% | 33.15% |
|
| 其他资产占比 | 22.80% | 24.66% | 24.12% | 32.83% |
|
||||||
| 应付款占比 | 7.12% | 7.15% | 7.30% | 6.52% | 6.79% |
|
| 应付款占比 | 7.12% | 7.15% | 7.30% | 6.52% |
|
||||||
| 预收款占比 | 0.00% | 0.00% | 0.00% | 0.00% | 0.00% |
|
| 预收款占比 | 0.00% | 0.00% | 0.00% | 0.00% |
|
||||||
| 短期借款占比 | 6.09% | 6.01% | 4.64% | 1.52% | 2.36% |
|
| 短期借款占比 | 6.09% | 6.01% | 4.64% | 1.52% |
|
||||||
| 长期借款占比 | 32.68% | 31.90% | 38.19% | 40.75% | 36.07% |
|
| 长期借款占比 | 32.68% | 31.90% | 38.19% | 40.75% |
|
||||||
| 运营资产占比 | -3.22% | -2.66% | -2.55% | -1.94% | -2.50% |
|
| 运营资产占比 | -3.22% | -2.66% | -2.55% | -1.94% |
|
||||||
| 有息负债率 | 38.77% | 37.91% | 42.83% | 42.27% | 38.42% |
|
| 有息负债率 | 38.77% | 37.91% | 42.83% | 42.27% |
|
||||||
|
|
||||||
|
|
||||||
## 周转能力
|
## 周转能力
|
||||||
| 指标 | 2025H1 | 2024A | 2023A | 2022A | 2021A |
|
| 指标 | 2025H1 | 2024A | 2023A | 2022A |
|
||||||
|:---|--:|--:|--:|--:|--:|
|
|:---|--:|--:|--:|--:|
|
||||||
| 存货周转天数 | 0 | 0 | 0 | 2 | 1 |
|
| 存货周转天数 | 0 | 0 | 0 | 2 |
|
||||||
| 应收款周转天数 | 25 | 26 | 27 | 29 | 32 |
|
| 应收款周转天数 | 25 | 26 | 27 | 29 |
|
||||||
| 应付款周转天数 | 164 | 149 | 132 | 118 | 127 |
|
| 应付款周转天数 | 164 | 149 | 132 | 118 |
|
||||||
| 固定资产周转率 | 4.22 | 4.95 | 5.83 | 5.34 | 5.28 |
|
| 固定资产周转率 | 4.22 | 4.95 | 5.83 | 5.34 |
|
||||||
| 总资产周转率 | 0.36 | 0.37 | 0.39 | 0.35 | 0.35 |
|
| 总资产周转率 | 0.36 | 0.37 | 0.39 | 0.35 |
|
||||||
|
|
||||||
|
|
||||||
## 人均效率
|
## 人均效率
|
||||||
| 指标 | 2025H1 | 2024A | 2023A | 2022A | 2021A |
|
| 指标 | 2025H1 | 2024A | 2023A | 2022A |
|
||||||
|:---|--:|--:|--:|--:|--:|
|
|:---|--:|--:|--:|--:|
|
||||||
| 员工人数 | - | 110,558 | 105,417 | 108,436 | 112,771 |
|
| 员工人数 | - | 110,558 | 105,417 | 108,436 |
|
||||||
| 人均创收(万) | - | 597.20 | 577.72 | 511.41 | 496.69 |
|
| 人均创收(万) | - | 597.20 | 577.72 | 511.41 |
|
||||||
| 人均创利(万) | - | 175.54 | 109.30 | 173.60 | 199.36 |
|
| 人均创利(万) | - | 175.54 | 109.30 | 173.60 |
|
||||||
| 人均薪酬(万) | - | - | - | - | - |
|
| 人均薪酬(万) | - | - | - | - |
|
||||||
|
|
||||||
|
|
||||||
## 市场表现
|
## 市场表现
|
||||||
| 指标 | 2025H1 | 2024A | 2023A | 2022A | 2021A |
|
| 指标 | 2025H1 | 2024A | 2023A | 2022A |
|
||||||
|:---|--:|--:|--:|--:|--:|
|
|:---|--:|--:|--:|--:|
|
||||||
| 股价 | 467.83 | 388.01 | 266.07 | 298.35 | 362.52 |
|
| 股价 | 467.83 | 388.01 | 266.07 | 298.35 |
|
||||||
| 市值(亿) | 42,043 | 35,623 | 25,231 | 28,549 | 35,885 |
|
| 市值(亿) | 42,043 | 35,623 | 25,231 | 28,549 |
|
||||||
| PE | 20.32 | 18.36 | 21.90 | 15.17 | 15.96 |
|
| PE | 20.32 | 18.36 | 21.90 | 15.17 |
|
||||||
| PB | 3.77 | 3.66 | 3.12 | 3.96 | 4.45 |
|
| PB | 3.77 | 3.66 | 3.12 | 3.96 |
|
||||||
| 股东户数 | - | - | - | - | - |
|
| 股东户数 | - | - | - | - |
|
||||||
|
|
||||||
|
|||||||
445
data/JP/2503.T/report.html
Normal file
445
data/JP/2503.T/report.html
Normal file
@ -0,0 +1,445 @@
|
|||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<title>2503.T Financial Report</title>
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--bg: #f5f6fa;
|
||||||
|
--card-bg: #ffffff;
|
||||||
|
--header-bg: #f7f8fb;
|
||||||
|
--section-bg: #f0f2f5;
|
||||||
|
--border: #e5e7eb;
|
||||||
|
--text-primary: #111827;
|
||||||
|
--text-secondary: #6b7280;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 32px;
|
||||||
|
background: var(--bg);
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||||
|
color: var(--text-primary);
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.report-container {
|
||||||
|
max-width: 1280px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background: var(--card-bg);
|
||||||
|
border-radius: 24px;
|
||||||
|
padding: 32px 40px;
|
||||||
|
box-shadow: 0 24px 60px rgba(15, 23, 42, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
margin: 0 0 8px;
|
||||||
|
font-size: 28px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin: 0 0 24px;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
font-size: 0.95rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
background: var(--card-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
font-size: 0.95rem;
|
||||||
|
padding: 12px 16px;
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
text-align: right;
|
||||||
|
background: var(--header-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
th:first-child,
|
||||||
|
td:first-child {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-table th,
|
||||||
|
.company-table td {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table thead {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table thead th {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 3;
|
||||||
|
background: var(--card-bg);
|
||||||
|
box-shadow: 0 10px 20px rgba(15, 23, 42, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table thead th:first-child {
|
||||||
|
left: 0;
|
||||||
|
z-index: 4;
|
||||||
|
box-shadow: 16px 0 24px rgba(15, 23, 42, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table th:first-child,
|
||||||
|
.metrics-table td:first-child {
|
||||||
|
width: 180px;
|
||||||
|
min-width: 180px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tbody td:first-child {
|
||||||
|
position: sticky;
|
||||||
|
left: 0;
|
||||||
|
background: var(--card-bg);
|
||||||
|
font-weight: 600;
|
||||||
|
box-shadow: 16px 0 24px rgba(15, 23, 42, 0.04);
|
||||||
|
z-index: 2;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tbody td:not(:first-child) {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tr.other-assets-row td {
|
||||||
|
background: #fff7e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tr.other-assets-row td:first-child {
|
||||||
|
background: #fff7e0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table tbody tr:hover td {
|
||||||
|
background: #f4efff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-row td {
|
||||||
|
background: #eef1f6;
|
||||||
|
font-weight: 600;
|
||||||
|
text-align: left;
|
||||||
|
border-bottom: 1px solid var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table .section-row td:first-child {
|
||||||
|
position: sticky;
|
||||||
|
left: 0;
|
||||||
|
z-index: 2;
|
||||||
|
box-shadow: 16px 0 24px rgba(15, 23, 42, 0.08);
|
||||||
|
background: #eef1f6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metrics-table .section-label {
|
||||||
|
color: var(--text-primary);
|
||||||
|
background: #eef1f6 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-spacer {
|
||||||
|
background: #eef1f6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.metric-name {
|
||||||
|
color: var(--text-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-container {
|
||||||
|
overflow-x: auto;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: 16px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-container table {
|
||||||
|
margin-bottom: 0;
|
||||||
|
min-width: 960px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-gap {
|
||||||
|
height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-data {
|
||||||
|
margin-top: 24px;
|
||||||
|
padding: 32px;
|
||||||
|
text-align: center;
|
||||||
|
border: 1px dashed var(--border);
|
||||||
|
border-radius: 16px;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
font-size: 0.95rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-green { background-color: #e6f7eb !important; }
|
||||||
|
.bg-red { background-color: #ffeef0 !important; }
|
||||||
|
.font-red { color: #d32f2f !important; }
|
||||||
|
.font-green { color: #1b873f !important; }
|
||||||
|
.font-blue { color: #2563eb !important; }
|
||||||
|
.italic { font-style: italic !important; }
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
body { padding: 16px; }
|
||||||
|
.report-container { padding: 24px; }
|
||||||
|
table { font-size: 0.85rem; }
|
||||||
|
th,
|
||||||
|
td { padding: 10px 12px; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="report-container">
|
||||||
|
<h1>麒麟控股株式会社 (2503.T) - Financial Report</h1>
|
||||||
|
<p><em>Report generated on: 2026-01-03</em></p>
|
||||||
|
|
||||||
|
<table class="company-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>代码</th>
|
||||||
|
<th>简称</th>
|
||||||
|
<th>上市日期</th>
|
||||||
|
<th>PE</th>
|
||||||
|
<th>PB</th>
|
||||||
|
<th>股息率(%)</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>2503.T</td>
|
||||||
|
<td>麒麟控股株式会社</td>
|
||||||
|
<td>1949-05-16</td>
|
||||||
|
<td>0.00</td>
|
||||||
|
<td>0.00</td>
|
||||||
|
<td>0.00%</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="table-gap"></div>
|
||||||
|
|
||||||
|
<table class="metrics-table" data-table="metrics" data-scrollable="true">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>指标</th>
|
||||||
|
<th>2026A</th><th>2025A</th><th>2024A</th><th>2023A</th><th>2022A</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="section-row"><td class="section-label">主要指标</td><td class="section-spacer" colspan="5"></td></tr>
|
||||||
|
<tr><td class="metric-name">ROE</td><td>-</td><td>-</td><td>4.93%</td><td>9.95%</td><td>11.33%</td></tr>
|
||||||
|
<tr><td class="metric-name">ROA</td><td>-</td><td>-</td><td>1.74%</td><td>3.93%</td><td>4.37%</td></tr>
|
||||||
|
<tr><td class="metric-name">ROCE/ROIC</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">毛利率</td><td>-</td><td>-</td><td>45.59%</td><td>45.14%</td><td>45.53%</td></tr>
|
||||||
|
<tr><td class="metric-name">净利润率</td><td>-</td><td>-</td><td>2.49%</td><td>5.28%</td><td>5.58%</td></tr>
|
||||||
|
<tr><td class="metric-name">收入(亿)</td><td>-</td><td>-</td><td>1,084.61</td><td>1,075.36</td><td>1,041.03</td></tr>
|
||||||
|
<tr><td class="metric-name">收入增速</td><td>-</td><td>-</td><td>0.86%</td><td>3.30%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">净利润(亿)</td><td>-</td><td>-</td><td>27.00</td><td>56.78</td><td>58.09</td></tr>
|
||||||
|
<tr><td class="metric-name">净利润增速</td><td>-</td><td>-</td><td>-52.45%</td><td>-2.25%</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">经营净现金流(亿)</td><td>-</td><td>-</td><td>112.64</td><td>102.38</td><td>70.94</td></tr>
|
||||||
|
<tr><td class="metric-name">资本开支(亿)</td><td>-</td><td>-</td><td>83.76</td><td>57.34</td><td>51.53</td></tr>
|
||||||
|
<tr><td class="metric-name">自由现金流(亿)</td><td>-</td><td>-</td><td>28.88</td><td>45.04</td><td>19.40</td></tr>
|
||||||
|
<tr><td class="metric-name">分红(亿)</td><td>-</td><td>-</td><td>27.05</td><td>28.97</td><td>28.14</td></tr>
|
||||||
|
<tr><td class="metric-name">回购(亿)</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">总资产(亿)</td><td>-</td><td>-</td><td>1,555.76</td><td>1,445.77</td><td>1,330.29</td></tr>
|
||||||
|
<tr><td class="metric-name">净资产(亿)</td><td>-</td><td>-</td><td>548.03</td><td>570.62</td><td>512.81</td></tr>
|
||||||
|
<tr><td class="metric-name">商誉(亿)</td><td>-</td><td>-</td><td>538.53</td><td>349.71</td><td>256.62</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">费用指标</td><td class="section-spacer" colspan="5"></td></tr>
|
||||||
|
<tr><td class="metric-name">销售费用率</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">管理费用率</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">SG&A比例</td><td>-</td><td>-</td><td>31.60%</td><td>31.72%</td><td>32.18%</td></tr>
|
||||||
|
<tr><td class="metric-name">研发费用率</td><td>-</td><td>-</td><td>4.96%</td><td>3.98%</td><td>3.73%</td></tr>
|
||||||
|
<tr><td class="metric-name">其他费用率</td><td>-</td><td>-</td><td>6.53%</td><td>4.16%</td><td>4.03%</td></tr>
|
||||||
|
<tr><td class="metric-name">折旧费用占比</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">所得税率</td><td>-</td><td>-</td><td>48.08%</td><td>29.26%</td><td>30.02%</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">资产占比</td><td class="section-spacer" colspan="5"></td></tr>
|
||||||
|
<tr><td class="metric-name">现金占比</td><td>-</td><td>-</td><td>3.79%</td><td>4.89%</td><td>3.79%</td></tr>
|
||||||
|
<tr><td class="metric-name">库存占比</td><td>-</td><td>-</td><td>10.70%</td><td>11.53%</td><td>11.41%</td></tr>
|
||||||
|
<tr><td class="metric-name">应收款占比</td><td>-</td><td>-</td><td>14.35%</td><td>14.77%</td><td>15.31%</td></tr>
|
||||||
|
<tr><td class="metric-name">预付款占比</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr><td class="metric-name">固定资产占比</td><td>-</td><td>-</td><td>20.10%</td><td>20.66%</td><td>22.05%</td></tr>
|
||||||
|
<tr><td class="metric-name">长期投资占比</td><td>-</td><td>-</td><td>3.08%</td><td>3.67%</td><td>4.07%</td></tr>
|
||||||
|
<tr><td class="metric-name">商誉占比</td><td>-</td><td>-</td><td>34.61%</td><td>24.19%</td><td>19.29%</td></tr>
|
||||||
|
<tr class="other-assets-row"><td class="metric-name">其他资产占比</td><td>100.00%</td><td>100.00%</td><td>13.36%</td><td>20.29%</td><td>24.07%</td></tr>
|
||||||
|
<tr><td class="metric-name">应付款占比</td><td>-</td><td>-</td><td>4.83%</td><td>4.78%</td><td>4.74%</td></tr>
|
||||||
|
<tr><td class="metric-name">预收款占比</td><td>-</td><td>-</td><td>0.00%</td><td>0.00%</td><td>0.00%</td></tr>
|
||||||
|
<tr><td class="metric-name">短期借款占比</td><td>-</td><td>-</td><td>2.33%</td><td>3.51%</td><td>4.50%</td></tr>
|
||||||
|
<tr><td class="metric-name">长期借款占比</td><td>-</td><td>-</td><td>46.48%</td><td>38.73%</td><td>32.15%</td></tr>
|
||||||
|
<tr><td class="metric-name">运营资产占比</td><td>0.00%</td><td>0.00%</td><td>20.22%</td><td>21.52%</td><td>21.99%</td></tr>
|
||||||
|
<tr><td class="metric-name">有息负债率</td><td>-</td><td>-</td><td>48.81%</td><td>42.24%</td><td>36.65%</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">周转能力</td><td class="section-spacer" colspan="5"></td></tr>
|
||||||
|
<tr><td class="metric-name">存货周转天数</td><td>-</td><td>-</td><td>102</td><td>103</td><td>97</td></tr>
|
||||||
|
<tr><td class="metric-name">应收款周转天数</td><td>-</td><td>-</td><td>75</td><td>72</td><td>71</td></tr>
|
||||||
|
<tr><td class="metric-name">应付款周转天数</td><td>-</td><td>-</td><td>46</td><td>42</td><td>40</td></tr>
|
||||||
|
<tr><td class="metric-name">固定资产周转率</td><td>-</td><td>-</td><td>3.47</td><td>3.60</td><td>3.55</td></tr>
|
||||||
|
<tr><td class="metric-name">总资产周转率</td><td>-</td><td>-</td><td>0.70</td><td>0.74</td><td>0.78</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">人均效率</td><td class="section-spacer" colspan="5"></td></tr>
|
||||||
|
<tr><td class="metric-name">员工人数</td><td>31,934</td><td>31,934</td><td>31,934</td><td>30,538</td><td>29,515</td></tr>
|
||||||
|
<tr><td class="metric-name">人均创收(万)</td><td>-</td><td>-</td><td>339.64</td><td>352.14</td><td>352.71</td></tr>
|
||||||
|
<tr><td class="metric-name">人均创利(万)</td><td>-</td><td>-</td><td>8.46</td><td>18.59</td><td>19.68</td></tr>
|
||||||
|
<tr><td class="metric-name">人均薪酬(万)</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
<tr class="section-row"><td class="section-label">市场表现</td><td class="section-spacer" colspan="5"></td></tr>
|
||||||
|
<tr><td class="metric-name">股价</td><td>105.03</td><td>105.03</td><td>95.04</td><td>104.09</td><td>105.23</td></tr>
|
||||||
|
<tr><td class="metric-name">市值(亿)</td><td>959.97</td><td>959.97</td><td>868.66</td><td>951.38</td><td>961.80</td></tr>
|
||||||
|
<tr><td class="metric-name">PE</td><td>-</td><td>-</td><td>32.17</td><td>16.76</td><td>16.56</td></tr>
|
||||||
|
<tr><td class="metric-name">PB</td><td>-</td><td>-</td><td>1.59</td><td>1.67</td><td>1.88</td></tr>
|
||||||
|
<tr><td class="metric-name">股东户数</td><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
const scrollableTables = document.querySelectorAll('table[data-scrollable="true"]');
|
||||||
|
scrollableTables.forEach(table => {
|
||||||
|
const container = document.createElement('div');
|
||||||
|
container.className = 'table-container';
|
||||||
|
table.parentNode.insertBefore(container, table);
|
||||||
|
container.appendChild(table);
|
||||||
|
});
|
||||||
|
|
||||||
|
const parseValue = (text) => {
|
||||||
|
if (!text || text.trim() === '-') return null;
|
||||||
|
return parseFloat(text.replace(/%|,/g, ''));
|
||||||
|
};
|
||||||
|
|
||||||
|
const highlightIfOverThirtyPercent = (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 30) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const styleRules = {
|
||||||
|
'ROE': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 15) cell.classList.add('bg-green');
|
||||||
|
},
|
||||||
|
'ROA': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 10) cell.classList.add('bg-green');
|
||||||
|
},
|
||||||
|
'毛利率': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 50) cell.classList.add('bg-green');
|
||||||
|
},
|
||||||
|
'净利润率': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null) {
|
||||||
|
if (value > 20) {
|
||||||
|
cell.classList.add('bg-green');
|
||||||
|
} else if (value < 0) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'收入增速': (cell) => {
|
||||||
|
cell.classList.add('italic');
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null) {
|
||||||
|
if (value > 15) {
|
||||||
|
cell.classList.add('bg-green', 'font-green');
|
||||||
|
} else if (value < 0) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
} else {
|
||||||
|
cell.classList.add('font-blue');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'净利润增速': (cell) => {
|
||||||
|
cell.classList.add('italic');
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null) {
|
||||||
|
if (value > 15) {
|
||||||
|
cell.classList.add('bg-green', 'font-green');
|
||||||
|
} else if (value < 0) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
} else {
|
||||||
|
cell.classList.add('font-blue');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'经营净现金流(亿)': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value < 0) cell.classList.add('bg-red', 'font-red');
|
||||||
|
},
|
||||||
|
'应收款周转天数': (cell) => {
|
||||||
|
const value = parseValue(cell.textContent);
|
||||||
|
if (value !== null && value > 90) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'现金占比': highlightIfOverThirtyPercent,
|
||||||
|
'库存占比': highlightIfOverThirtyPercent,
|
||||||
|
'应收款占比': highlightIfOverThirtyPercent,
|
||||||
|
'预付款占比': highlightIfOverThirtyPercent,
|
||||||
|
'固定资产占比': highlightIfOverThirtyPercent,
|
||||||
|
'长期投资占比': highlightIfOverThirtyPercent,
|
||||||
|
'商誉占比': highlightIfOverThirtyPercent,
|
||||||
|
'其他资产占比': highlightIfOverThirtyPercent
|
||||||
|
};
|
||||||
|
|
||||||
|
const metricsTables = document.querySelectorAll('table[data-table="metrics"]');
|
||||||
|
metricsTables.forEach(table => {
|
||||||
|
let netProfitValues = [];
|
||||||
|
let fcfRow = null;
|
||||||
|
const rows = table.querySelectorAll('tbody tr');
|
||||||
|
rows.forEach(row => {
|
||||||
|
if (row.classList.contains('section-row')) return;
|
||||||
|
const metricCell = row.querySelector('td:first-child');
|
||||||
|
if (!metricCell) return;
|
||||||
|
const metricName = metricCell.textContent.trim();
|
||||||
|
if (metricName === '净利润(亿)') {
|
||||||
|
row.querySelectorAll('td:not(:first-child)').forEach(cell => {
|
||||||
|
netProfitValues.push(parseValue(cell.textContent));
|
||||||
|
});
|
||||||
|
} else if (metricName === '自由现金流(亿)') {
|
||||||
|
fcfRow = row;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
rows.forEach(row => {
|
||||||
|
if (row.classList.contains('section-row')) return;
|
||||||
|
const metricCell = row.querySelector('td:first-child');
|
||||||
|
if (!metricCell) return;
|
||||||
|
const metricName = metricCell.textContent.trim();
|
||||||
|
const cells = row.querySelectorAll('td:not(:first-child)');
|
||||||
|
if (styleRules[metricName]) {
|
||||||
|
cells.forEach(cell => {
|
||||||
|
styleRules[metricName](cell);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (row === fcfRow && netProfitValues.length > 0) {
|
||||||
|
cells.forEach((cell, index) => {
|
||||||
|
const fcfValue = parseValue(cell.textContent);
|
||||||
|
const netProfitValue = netProfitValues[index];
|
||||||
|
if (fcfValue !== null) {
|
||||||
|
if (fcfValue < 0) {
|
||||||
|
cell.classList.add('bg-red', 'font-red');
|
||||||
|
} else if (netProfitValue !== null && fcfValue > netProfitValue) {
|
||||||
|
cell.classList.add('bg-green', 'font-green');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
89
data/JP/2503.T/report.md
Normal file
89
data/JP/2503.T/report.md
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
# 麒麟控股株式会社 (2503.T) - Financial Report
|
||||||
|
*Report generated on: 2026-01-03*
|
||||||
|
|
||||||
|
| 代码 | 简称 | 上市日期 | PE | PB | 股息率(%) |
|
||||||
|
|:---|:---|:---|:---|:---|:---|
|
||||||
|
| 2503.T | 麒麟控股株式会社 | 1949-05-16 | 0.00 | 0.00 | 0.00% |
|
||||||
|
|
||||||
|
|
||||||
|
## 主要指标
|
||||||
|
| 指标 | 2026A | 2025A | 2024A | 2023A | 2022A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|
|
||||||
|
| ROE | - | - | 4.93% | 9.95% | 11.33% |
|
||||||
|
| ROA | - | - | 1.74% | 3.93% | 4.37% |
|
||||||
|
| ROCE/ROIC | - | - | - | - | - |
|
||||||
|
| 毛利率 | - | - | 45.59% | 45.14% | 45.53% |
|
||||||
|
| 净利润率 | - | - | 2.49% | 5.28% | 5.58% |
|
||||||
|
| 收入(亿) | - | - | 1,084.61 | 1,075.36 | 1,041.03 |
|
||||||
|
| 收入增速 | - | - | 0.86% | 3.30% | - |
|
||||||
|
| 净利润(亿) | - | - | 27.00 | 56.78 | 58.09 |
|
||||||
|
| 净利润增速 | - | - | -52.45% | -2.25% | - |
|
||||||
|
| 经营净现金流(亿) | - | - | 112.64 | 102.38 | 70.94 |
|
||||||
|
| 资本开支(亿) | - | - | 83.76 | 57.34 | 51.53 |
|
||||||
|
| 自由现金流(亿) | - | - | 28.88 | 45.04 | 19.40 |
|
||||||
|
| 分红(亿) | - | - | 27.05 | 28.97 | 28.14 |
|
||||||
|
| 回购(亿) | - | - | - | - | - |
|
||||||
|
| 总资产(亿) | - | - | 1,555.76 | 1,445.77 | 1,330.29 |
|
||||||
|
| 净资产(亿) | - | - | 548.03 | 570.62 | 512.81 |
|
||||||
|
| 商誉(亿) | - | - | 538.53 | 349.71 | 256.62 |
|
||||||
|
|
||||||
|
|
||||||
|
## 费用指标
|
||||||
|
| 指标 | 2026A | 2025A | 2024A | 2023A | 2022A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|
|
||||||
|
| 销售费用率 | - | - | - | - | - |
|
||||||
|
| 管理费用率 | - | - | - | - | - |
|
||||||
|
| SG&A比例 | - | - | 31.60% | 31.72% | 32.18% |
|
||||||
|
| 研发费用率 | - | - | 4.96% | 3.98% | 3.73% |
|
||||||
|
| 其他费用率 | - | - | 6.53% | 4.16% | 4.03% |
|
||||||
|
| 折旧费用占比 | - | - | - | - | - |
|
||||||
|
| 所得税率 | - | - | 48.08% | 29.26% | 30.02% |
|
||||||
|
|
||||||
|
|
||||||
|
## 资产占比
|
||||||
|
| 指标 | 2026A | 2025A | 2024A | 2023A | 2022A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|
|
||||||
|
| 现金占比 | - | - | 3.79% | 4.89% | 3.79% |
|
||||||
|
| 库存占比 | - | - | 10.70% | 11.53% | 11.41% |
|
||||||
|
| 应收款占比 | - | - | 14.35% | 14.77% | 15.31% |
|
||||||
|
| 预付款占比 | - | - | - | - | - |
|
||||||
|
| 固定资产占比 | - | - | 20.10% | 20.66% | 22.05% |
|
||||||
|
| 长期投资占比 | - | - | 3.08% | 3.67% | 4.07% |
|
||||||
|
| 商誉占比 | - | - | 34.61% | 24.19% | 19.29% |
|
||||||
|
| 其他资产占比 | 100.00% | 100.00% | 13.36% | 20.29% | 24.07% |
|
||||||
|
| 应付款占比 | - | - | 4.83% | 4.78% | 4.74% |
|
||||||
|
| 预收款占比 | - | - | 0.00% | 0.00% | 0.00% |
|
||||||
|
| 短期借款占比 | - | - | 2.33% | 3.51% | 4.50% |
|
||||||
|
| 长期借款占比 | - | - | 46.48% | 38.73% | 32.15% |
|
||||||
|
| 运营资产占比 | 0.00% | 0.00% | 20.22% | 21.52% | 21.99% |
|
||||||
|
| 有息负债率 | - | - | 48.81% | 42.24% | 36.65% |
|
||||||
|
|
||||||
|
|
||||||
|
## 周转能力
|
||||||
|
| 指标 | 2026A | 2025A | 2024A | 2023A | 2022A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|
|
||||||
|
| 存货周转天数 | - | - | 102 | 103 | 97 |
|
||||||
|
| 应收款周转天数 | - | - | 75 | 72 | 71 |
|
||||||
|
| 应付款周转天数 | - | - | 46 | 42 | 40 |
|
||||||
|
| 固定资产周转率 | - | - | 3.47 | 3.60 | 3.55 |
|
||||||
|
| 总资产周转率 | - | - | 0.70 | 0.74 | 0.78 |
|
||||||
|
|
||||||
|
|
||||||
|
## 人均效率
|
||||||
|
| 指标 | 2026A | 2025A | 2024A | 2023A | 2022A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|
|
||||||
|
| 员工人数 | 31,934 | 31,934 | 31,934 | 30,538 | 29,515 |
|
||||||
|
| 人均创收(万) | - | - | 339.64 | 352.14 | 352.71 |
|
||||||
|
| 人均创利(万) | - | - | 8.46 | 18.59 | 19.68 |
|
||||||
|
| 人均薪酬(万) | - | - | - | - | - |
|
||||||
|
|
||||||
|
|
||||||
|
## 市场表现
|
||||||
|
| 指标 | 2026A | 2025A | 2024A | 2023A | 2022A |
|
||||||
|
|:---|--:|--:|--:|--:|--:|
|
||||||
|
| 股价 | 105.03 | 105.03 | 95.04 | 104.09 | 105.23 |
|
||||||
|
| 市值(亿) | 959.97 | 959.97 | 868.66 | 951.38 | 961.80 |
|
||||||
|
| PE | - | - | 32.17 | 16.76 | 16.56 |
|
||||||
|
| PB | - | - | 1.59 | 1.67 | 1.88 |
|
||||||
|
| 股东户数 | - | - | - | - | - |
|
||||||
|
|
||||||
41
frontend/.gitignore
vendored
Normal file
41
frontend/.gitignore
vendored
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
/node_modules
|
||||||
|
/.pnp
|
||||||
|
.pnp.*
|
||||||
|
.yarn/*
|
||||||
|
!.yarn/patches
|
||||||
|
!.yarn/plugins
|
||||||
|
!.yarn/releases
|
||||||
|
!.yarn/versions
|
||||||
|
|
||||||
|
# testing
|
||||||
|
/coverage
|
||||||
|
|
||||||
|
# next.js
|
||||||
|
/.next/
|
||||||
|
/out/
|
||||||
|
|
||||||
|
# production
|
||||||
|
/build
|
||||||
|
|
||||||
|
# misc
|
||||||
|
.DS_Store
|
||||||
|
*.pem
|
||||||
|
|
||||||
|
# debug
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
.pnpm-debug.log*
|
||||||
|
|
||||||
|
# env files (can opt-in for committing if needed)
|
||||||
|
.env*
|
||||||
|
|
||||||
|
# vercel
|
||||||
|
.vercel
|
||||||
|
|
||||||
|
# typescript
|
||||||
|
*.tsbuildinfo
|
||||||
|
next-env.d.ts
|
||||||
36
frontend/README.md
Normal file
36
frontend/README.md
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
First, run the development server:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
# or
|
||||||
|
yarn dev
|
||||||
|
# or
|
||||||
|
pnpm dev
|
||||||
|
# or
|
||||||
|
bun dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
||||||
|
|
||||||
|
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
|
||||||
|
|
||||||
|
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
|
||||||
|
|
||||||
|
## Learn More
|
||||||
|
|
||||||
|
To learn more about Next.js, take a look at the following resources:
|
||||||
|
|
||||||
|
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
|
||||||
|
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
|
||||||
|
|
||||||
|
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
|
||||||
|
|
||||||
|
## Deploy on Vercel
|
||||||
|
|
||||||
|
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
|
||||||
|
|
||||||
|
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
|
||||||
22
frontend/components.json
Normal file
22
frontend/components.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://ui.shadcn.com/schema.json",
|
||||||
|
"style": "new-york",
|
||||||
|
"rsc": true,
|
||||||
|
"tsx": true,
|
||||||
|
"tailwind": {
|
||||||
|
"config": "",
|
||||||
|
"css": "src/app/globals.css",
|
||||||
|
"baseColor": "neutral",
|
||||||
|
"cssVariables": true,
|
||||||
|
"prefix": ""
|
||||||
|
},
|
||||||
|
"iconLibrary": "lucide",
|
||||||
|
"aliases": {
|
||||||
|
"components": "@/components",
|
||||||
|
"utils": "@/lib/utils",
|
||||||
|
"ui": "@/components/ui",
|
||||||
|
"lib": "@/lib",
|
||||||
|
"hooks": "@/hooks"
|
||||||
|
},
|
||||||
|
"registries": {}
|
||||||
|
}
|
||||||
23
frontend/components/nav-header.tsx
Normal file
23
frontend/components/nav-header.tsx
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
"use client"
|
||||||
|
|
||||||
|
import Link from "next/link"
|
||||||
|
import { MonitorPlay } from "lucide-react"
|
||||||
|
|
||||||
|
export function NavHeader() {
|
||||||
|
return (
|
||||||
|
<header className="flex h-14 items-center gap-4 border-b bg-muted/40 px-6 lg:h-[60px]">
|
||||||
|
<Link className="flex items-center gap-2 font-semibold" href="/">
|
||||||
|
<MonitorPlay className="h-6 w-6" />
|
||||||
|
<span className="">Stock Analysis AI</span>
|
||||||
|
</Link>
|
||||||
|
<nav className="ml-auto flex items-center gap-4 sm:gap-6">
|
||||||
|
<Link className="text-sm font-medium hover:underline underline-offset-4" href="/">
|
||||||
|
Dashboard
|
||||||
|
</Link>
|
||||||
|
<Link className="text-sm font-medium hover:underline underline-offset-4" href="/config">
|
||||||
|
Configuration
|
||||||
|
</Link>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
)
|
||||||
|
}
|
||||||
18
frontend/eslint.config.mjs
Normal file
18
frontend/eslint.config.mjs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import { defineConfig, globalIgnores } from "eslint/config";
|
||||||
|
import nextVitals from "eslint-config-next/core-web-vitals";
|
||||||
|
import nextTs from "eslint-config-next/typescript";
|
||||||
|
|
||||||
|
const eslintConfig = defineConfig([
|
||||||
|
...nextVitals,
|
||||||
|
...nextTs,
|
||||||
|
// Override default ignores of eslint-config-next.
|
||||||
|
globalIgnores([
|
||||||
|
// Default ignores of eslint-config-next:
|
||||||
|
".next/**",
|
||||||
|
"out/**",
|
||||||
|
"build/**",
|
||||||
|
"next-env.d.ts",
|
||||||
|
]),
|
||||||
|
]);
|
||||||
|
|
||||||
|
export default eslintConfig;
|
||||||
7
frontend/next.config.ts
Normal file
7
frontend/next.config.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import type { NextConfig } from "next";
|
||||||
|
|
||||||
|
const nextConfig: NextConfig = {
|
||||||
|
/* config options here */
|
||||||
|
};
|
||||||
|
|
||||||
|
export default nextConfig;
|
||||||
9082
frontend/package-lock.json
generated
Normal file
9082
frontend/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
43
frontend/package.json
Normal file
43
frontend/package.json
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"name": "frontend",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "next dev",
|
||||||
|
"build": "next build",
|
||||||
|
"start": "next start",
|
||||||
|
"lint": "eslint"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@hookform/resolvers": "^5.2.2",
|
||||||
|
"@radix-ui/react-dialog": "^1.1.15",
|
||||||
|
"@radix-ui/react-label": "^2.1.8",
|
||||||
|
"@radix-ui/react-select": "^2.2.6",
|
||||||
|
"@radix-ui/react-slot": "^1.2.4",
|
||||||
|
"@radix-ui/react-tabs": "^1.1.13",
|
||||||
|
"class-variance-authority": "^0.7.1",
|
||||||
|
"clsx": "^2.1.1",
|
||||||
|
"lucide-react": "^0.562.0",
|
||||||
|
"next": "16.1.1",
|
||||||
|
"react": "19.2.3",
|
||||||
|
"react-dom": "19.2.3",
|
||||||
|
"react-hook-form": "^7.69.0",
|
||||||
|
"react-markdown": "^10.1.0",
|
||||||
|
"remark-gfm": "^4.0.1",
|
||||||
|
"tailwind-merge": "^3.4.0",
|
||||||
|
"tailwindcss-animate": "^1.0.7",
|
||||||
|
"zod": "^4.3.4"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@tailwindcss/postcss": "^4",
|
||||||
|
"@tailwindcss/typography": "^0.5.19",
|
||||||
|
"@types/node": "^20",
|
||||||
|
"@types/react": "^19",
|
||||||
|
"@types/react-dom": "^19",
|
||||||
|
"eslint": "^9",
|
||||||
|
"eslint-config-next": "16.1.1",
|
||||||
|
"tailwindcss": "^4",
|
||||||
|
"tw-animate-css": "^1.4.0",
|
||||||
|
"typescript": "^5"
|
||||||
|
}
|
||||||
|
}
|
||||||
7
frontend/postcss.config.mjs
Normal file
7
frontend/postcss.config.mjs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
const config = {
|
||||||
|
plugins: {
|
||||||
|
"@tailwindcss/postcss": {},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default config;
|
||||||
1
frontend/public/file.svg
Normal file
1
frontend/public/file.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
|
||||||
|
After Width: | Height: | Size: 391 B |
1
frontend/public/globe.svg
Normal file
1
frontend/public/globe.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
1
frontend/public/next.svg
Normal file
1
frontend/public/next.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
1
frontend/public/vercel.svg
Normal file
1
frontend/public/vercel.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
|
||||||
|
After Width: | Height: | Size: 128 B |
1
frontend/public/window.svg
Normal file
1
frontend/public/window.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
|
||||||
|
After Width: | Height: | Size: 385 B |
123
frontend/src/app/analysis/[id]/page.tsx
Normal file
123
frontend/src/app/analysis/[id]/page.tsx
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
"use client"
|
||||||
|
|
||||||
|
import { useEffect, useState, use } from "react"
|
||||||
|
import { getReport } from "@/lib/api"
|
||||||
|
import { Badge } from "@/components/ui/badge"
|
||||||
|
import { Card, CardContent } from "@/components/ui/card"
|
||||||
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
|
||||||
|
import { MarkdownRenderer } from "@/components/markdown-renderer"
|
||||||
|
import { Loader2, RefreshCcw, ExternalLink } from "lucide-react"
|
||||||
|
import { Button } from "@/components/ui/button"
|
||||||
|
|
||||||
|
export default function AnalysisPage({ params }: { params: Promise<{ id: string }> }) {
|
||||||
|
// Correct way to handle params in Next.js 15+ is async, but we can unwrap or use hook
|
||||||
|
// If using 'use client', params corresponds to props which might be a Promise in newer Next.
|
||||||
|
// Let's use `use(params)` pattern if React 19, or standard access.
|
||||||
|
// Assuming standard Next.js 14/15 behavior for now: props are async.
|
||||||
|
|
||||||
|
// Safety check for React version or just wait for it.
|
||||||
|
// simpler:
|
||||||
|
const unwrappedParams = use(params);
|
||||||
|
const reportId = parseInt(unwrappedParams.id)
|
||||||
|
|
||||||
|
const [report, setReport] = useState<any>(null)
|
||||||
|
const [loading, setLoading] = useState(true)
|
||||||
|
|
||||||
|
// Polling logic
|
||||||
|
useEffect(() => {
|
||||||
|
let interval: NodeJS.Timeout;
|
||||||
|
|
||||||
|
const fetchReport = async () => {
|
||||||
|
try {
|
||||||
|
const data = await getReport(reportId)
|
||||||
|
setReport(data)
|
||||||
|
|
||||||
|
if (data.status === "pending" || data.status === "in_progress") {
|
||||||
|
// Poll every 3 seconds
|
||||||
|
interval = setTimeout(fetchReport, 3000)
|
||||||
|
} else {
|
||||||
|
setLoading(false)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e)
|
||||||
|
setLoading(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fetchReport()
|
||||||
|
|
||||||
|
return () => clearTimeout(interval)
|
||||||
|
}, [reportId])
|
||||||
|
|
||||||
|
if (loading && !report) return <div className="flex h-screen items-center justify-center"><Loader2 className="animate-spin h-8 w-8 text-primary" /></div>
|
||||||
|
|
||||||
|
if (!report) return <div className="p-8">未找到报告。</div>
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="container mx-auto py-8 px-4 space-y-6 max-w-7xl">
|
||||||
|
<div className="flex flex-col gap-4 md:flex-row md:items-center md:justify-between">
|
||||||
|
<div>
|
||||||
|
<h1 className="text-3xl font-bold tracking-tight">{report.company_name}</h1>
|
||||||
|
<p className="text-muted-foreground mt-2">
|
||||||
|
{report.market} {report.symbol} · {new Date(report.created_at).toLocaleString('zh-CN')}
|
||||||
|
{report.ai_model && <span className="ml-2">· 模型: {report.ai_model}</span>}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center gap-4">
|
||||||
|
<Badge variant={
|
||||||
|
report.status === "completed" ? "default" :
|
||||||
|
report.status === "in_progress" ? "secondary" :
|
||||||
|
report.status === "failed" ? "destructive" : "outline"
|
||||||
|
}>
|
||||||
|
{report.status === "in_progress" ? (
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<Loader2 className="h-3 w-3 animate-spin" /> 进行中
|
||||||
|
</div>
|
||||||
|
) : report.status === "completed" ? "已完成" : report.status === "failed" ? "失败" : report.status === "pending" ? "待处理" : report.status}
|
||||||
|
</Badge>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Tabs defaultValue="financial_data" className="space-y-4">
|
||||||
|
<TabsList className="bg-muted/50 p-1 flex-wrap h-auto">
|
||||||
|
<TabsTrigger value="financial_data">财务数据</TabsTrigger>
|
||||||
|
{report.sections?.map((s: any) => {
|
||||||
|
const nameMap: Record<string, string> = {
|
||||||
|
'company_profile': '公司简介',
|
||||||
|
'fundamental_analysis': '基本面分析',
|
||||||
|
'insider_analysis': '内部人士分析',
|
||||||
|
'bullish_analysis': '看涨分析',
|
||||||
|
'bearish_analysis': '看跌分析'
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<TabsTrigger key={s.section_name} value={s.section_name} className="capitalize">
|
||||||
|
{nameMap[s.section_name] || s.section_name.replace(/_/g, " ")}
|
||||||
|
</TabsTrigger>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
{report.sections?.length === 0 && report.status !== "in_progress" && <TabsTrigger value="empty" disabled>无内容</TabsTrigger>}
|
||||||
|
</TabsList>
|
||||||
|
|
||||||
|
<TabsContent value="financial_data" className="min-h-[500px]">
|
||||||
|
<Card className="h-[800px]">
|
||||||
|
<iframe
|
||||||
|
src={`http://localhost:8000/api/reports/${report.id}/html`}
|
||||||
|
className="w-full h-full border-0 rounded-md"
|
||||||
|
title="分析仪表板"
|
||||||
|
/>
|
||||||
|
</Card>
|
||||||
|
</TabsContent>
|
||||||
|
|
||||||
|
{report.sections?.map((s: any) => (
|
||||||
|
<TabsContent key={s.section_name} value={s.section_name} className="min-h-[500px]">
|
||||||
|
<Card>
|
||||||
|
<CardContent className="p-6 md:p-8">
|
||||||
|
<MarkdownRenderer content={s.content} />
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</TabsContent>
|
||||||
|
))}
|
||||||
|
</Tabs>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
134
frontend/src/app/config/page.tsx
Normal file
134
frontend/src/app/config/page.tsx
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
"use client"
|
||||||
|
|
||||||
|
import { useState, useEffect } from "react"
|
||||||
|
import { getConfig, updateConfig } from "@/lib/api"
|
||||||
|
import { Card, CardContent, CardHeader, CardTitle, CardDescription, CardFooter } from "@/components/ui/card"
|
||||||
|
import { Input } from "@/components/ui/input"
|
||||||
|
import { Button } from "@/components/ui/button"
|
||||||
|
import { Label } from "@/components/ui/label"
|
||||||
|
import { Textarea } from "@/components/ui/textarea"
|
||||||
|
import { Loader2 } from "lucide-react"
|
||||||
|
|
||||||
|
export default function ConfigPage() {
|
||||||
|
const [config, setConfig] = useState<any>({})
|
||||||
|
const [loading, setLoading] = useState(true)
|
||||||
|
const [saving, setSaving] = useState(false)
|
||||||
|
const [message, setMessage] = useState("")
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getConfig().then(setConfig).catch(console.error).finally(() => setLoading(false))
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
const handleSave = async (key: string, value: string) => {
|
||||||
|
setSaving(true)
|
||||||
|
try {
|
||||||
|
await updateConfig(key, value)
|
||||||
|
setMessage(`Saved ${key}`)
|
||||||
|
// Update local state
|
||||||
|
setConfig((prev: any) => ({ ...prev, [key]: value }))
|
||||||
|
} catch (e) {
|
||||||
|
setMessage("Error saving settings")
|
||||||
|
} finally {
|
||||||
|
setSaving(false)
|
||||||
|
setTimeout(() => setMessage(""), 3000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (loading) return <div className="p-8 flex justify-center"><Loader2 className="animate-spin" /></div>
|
||||||
|
|
||||||
|
const prompts = [
|
||||||
|
"company_profile", "fundamental_analysis", "insider_analysis", "bullish_analysis", "bearish_analysis"
|
||||||
|
]
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="container mx-auto py-10 space-y-8 max-w-4xl">
|
||||||
|
<h1 className="text-3xl font-bold">配置</h1>
|
||||||
|
|
||||||
|
<Card>
|
||||||
|
<CardHeader>
|
||||||
|
<CardTitle>系统设置</CardTitle>
|
||||||
|
<CardDescription>配置 API 密钥和数据库连接。</CardDescription>
|
||||||
|
</CardHeader>
|
||||||
|
<CardContent className="space-y-4">
|
||||||
|
<div className="space-y-2">
|
||||||
|
<Label>Gemini API 密钥</Label>
|
||||||
|
<div className="flex gap-2">
|
||||||
|
<Input
|
||||||
|
type="password"
|
||||||
|
value={config["GEMINI_API_KEY"] || ""}
|
||||||
|
onChange={(e) => setConfig({ ...config, "GEMINI_API_KEY": e.target.value })}
|
||||||
|
placeholder="****************"
|
||||||
|
/>
|
||||||
|
<Button onClick={() => handleSave("GEMINI_API_KEY", config["GEMINI_API_KEY"])}>保存</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="space-y-2">
|
||||||
|
<Label>AI 模型</Label>
|
||||||
|
<div className="flex gap-2">
|
||||||
|
<select
|
||||||
|
className="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
|
||||||
|
value={config["AI_MODEL"] || "gemini-2.0-flash"}
|
||||||
|
onChange={(e) => setConfig({ ...config, "AI_MODEL": e.target.value })}
|
||||||
|
>
|
||||||
|
<option value="gemini-2.0-flash">Gemini 2.0 Flash</option>
|
||||||
|
<option value="gemini-2.5-flash">Gemini 2.5 Flash</option>
|
||||||
|
<option value="gemini-3-flash">Gemini 3 Flash</option>
|
||||||
|
<option value="gemini-3-pro">Gemini 3 Pro</option>
|
||||||
|
<option value="custom">自定义模型...</option>
|
||||||
|
</select>
|
||||||
|
<Button onClick={() => handleSave("AI_MODEL", config["AI_MODEL"])}>保存</Button>
|
||||||
|
</div>
|
||||||
|
{config["AI_MODEL"] === "custom" && (
|
||||||
|
<div className="mt-2">
|
||||||
|
<Input
|
||||||
|
placeholder="输入自定义模型名称,例如:gemini-1.5-pro"
|
||||||
|
value={config["AI_MODEL_CUSTOM"] || ""}
|
||||||
|
onChange={(e) => {
|
||||||
|
setConfig({ ...config, "AI_MODEL_CUSTOM": e.target.value, "AI_MODEL": e.target.value })
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<p className="text-xs text-muted-foreground">
|
||||||
|
选择用于分析的 AI 模型。推荐使用 Gemini 2.0 Flash 以获得最佳性能和速度。
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
|
||||||
|
<Card>
|
||||||
|
<CardHeader>
|
||||||
|
<CardTitle>分析提示词</CardTitle>
|
||||||
|
<CardDescription>自定义每个分析步骤使用的提示词。</CardDescription>
|
||||||
|
</CardHeader>
|
||||||
|
<CardContent className="space-y-6">
|
||||||
|
{prompts.map(key => (
|
||||||
|
<div key={key} className="space-y-2">
|
||||||
|
<Label className="capitalize">{key.replace(/_/g, " ")}</Label>
|
||||||
|
<div className="flex flex-col gap-2">
|
||||||
|
<Textarea
|
||||||
|
className="min-h-[150px] font-mono text-sm"
|
||||||
|
value={config[`PROMPT_${key.toUpperCase()}`] || ""}
|
||||||
|
onChange={(e) => setConfig({ ...config, [`PROMPT_${key.toUpperCase()}`]: e.target.value })}
|
||||||
|
placeholder={`Enter prompt for ${key}...`}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
className="w-fit"
|
||||||
|
variant="outline"
|
||||||
|
onClick={() => handleSave(`PROMPT_${key.toUpperCase()}`, config[`PROMPT_${key.toUpperCase()}`])}
|
||||||
|
>
|
||||||
|
保存 {key.replace(/_/g, " ")}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
|
||||||
|
{message && <div className="fixed bottom-4 right-4 bg-primary text-primary-foreground px-4 py-2 rounded shadow-lg animate-in fade-in slide-in-from-bottom-5">
|
||||||
|
{message.replace('Saved', '已保存').replace('Error saving settings', '保存设置时出错')}
|
||||||
|
</div>}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
BIN
frontend/src/app/favicon.ico
Normal file
BIN
frontend/src/app/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
126
frontend/src/app/globals.css
Normal file
126
frontend/src/app/globals.css
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
@import "tailwindcss";
|
||||||
|
@plugin "@tailwindcss/typography";
|
||||||
|
|
||||||
|
@custom-variant dark (&:is(.dark *));
|
||||||
|
|
||||||
|
@theme inline {
|
||||||
|
--color-background: var(--background);
|
||||||
|
--color-foreground: var(--foreground);
|
||||||
|
--font-sans: var(--font-geist-sans);
|
||||||
|
--font-mono: var(--font-geist-mono);
|
||||||
|
--color-sidebar-ring: var(--sidebar-ring);
|
||||||
|
--color-sidebar-border: var(--sidebar-border);
|
||||||
|
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
||||||
|
--color-sidebar-accent: var(--sidebar-accent);
|
||||||
|
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
||||||
|
--color-sidebar-primary: var(--sidebar-primary);
|
||||||
|
--color-sidebar-foreground: var(--sidebar-foreground);
|
||||||
|
--color-sidebar: var(--sidebar);
|
||||||
|
--color-chart-5: var(--chart-5);
|
||||||
|
--color-chart-4: var(--chart-4);
|
||||||
|
--color-chart-3: var(--chart-3);
|
||||||
|
--color-chart-2: var(--chart-2);
|
||||||
|
--color-chart-1: var(--chart-1);
|
||||||
|
--color-ring: var(--ring);
|
||||||
|
--color-input: var(--input);
|
||||||
|
--color-border: var(--border);
|
||||||
|
--color-destructive: var(--destructive);
|
||||||
|
--color-accent-foreground: var(--accent-foreground);
|
||||||
|
--color-accent: var(--accent);
|
||||||
|
--color-muted-foreground: var(--muted-foreground);
|
||||||
|
--color-muted: var(--muted);
|
||||||
|
--color-secondary-foreground: var(--secondary-foreground);
|
||||||
|
--color-secondary: var(--secondary);
|
||||||
|
--color-primary-foreground: var(--primary-foreground);
|
||||||
|
--color-primary: var(--primary);
|
||||||
|
--color-popover-foreground: var(--popover-foreground);
|
||||||
|
--color-popover: var(--popover);
|
||||||
|
--color-card-foreground: var(--card-foreground);
|
||||||
|
--color-card: var(--card);
|
||||||
|
--radius-sm: calc(var(--radius) - 4px);
|
||||||
|
--radius-md: calc(var(--radius) - 2px);
|
||||||
|
--radius-lg: var(--radius);
|
||||||
|
--radius-xl: calc(var(--radius) + 4px);
|
||||||
|
--radius-2xl: calc(var(--radius) + 8px);
|
||||||
|
--radius-3xl: calc(var(--radius) + 12px);
|
||||||
|
--radius-4xl: calc(var(--radius) + 16px);
|
||||||
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--radius: 0.625rem;
|
||||||
|
--background: oklch(1 0 0);
|
||||||
|
--foreground: oklch(0.145 0 0);
|
||||||
|
--card: oklch(1 0 0);
|
||||||
|
--card-foreground: oklch(0.145 0 0);
|
||||||
|
--popover: oklch(1 0 0);
|
||||||
|
--popover-foreground: oklch(0.145 0 0);
|
||||||
|
--primary: oklch(0.205 0 0);
|
||||||
|
--primary-foreground: oklch(0.985 0 0);
|
||||||
|
--secondary: oklch(0.97 0 0);
|
||||||
|
--secondary-foreground: oklch(0.205 0 0);
|
||||||
|
--muted: oklch(0.97 0 0);
|
||||||
|
--muted-foreground: oklch(0.556 0 0);
|
||||||
|
--accent: oklch(0.97 0 0);
|
||||||
|
--accent-foreground: oklch(0.205 0 0);
|
||||||
|
--destructive: oklch(0.577 0.245 27.325);
|
||||||
|
--border: oklch(0.922 0 0);
|
||||||
|
--input: oklch(0.922 0 0);
|
||||||
|
--ring: oklch(0.708 0 0);
|
||||||
|
--chart-1: oklch(0.646 0.222 41.116);
|
||||||
|
--chart-2: oklch(0.6 0.118 184.704);
|
||||||
|
--chart-3: oklch(0.398 0.07 227.392);
|
||||||
|
--chart-4: oklch(0.828 0.189 84.429);
|
||||||
|
--chart-5: oklch(0.769 0.188 70.08);
|
||||||
|
--sidebar: oklch(0.985 0 0);
|
||||||
|
--sidebar-foreground: oklch(0.145 0 0);
|
||||||
|
--sidebar-primary: oklch(0.205 0 0);
|
||||||
|
--sidebar-primary-foreground: oklch(0.985 0 0);
|
||||||
|
--sidebar-accent: oklch(0.97 0 0);
|
||||||
|
--sidebar-accent-foreground: oklch(0.205 0 0);
|
||||||
|
--sidebar-border: oklch(0.922 0 0);
|
||||||
|
--sidebar-ring: oklch(0.708 0 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark {
|
||||||
|
--background: oklch(0.145 0 0);
|
||||||
|
--foreground: oklch(0.985 0 0);
|
||||||
|
--card: oklch(0.205 0 0);
|
||||||
|
--card-foreground: oklch(0.985 0 0);
|
||||||
|
--popover: oklch(0.205 0 0);
|
||||||
|
--popover-foreground: oklch(0.985 0 0);
|
||||||
|
--primary: oklch(0.922 0 0);
|
||||||
|
--primary-foreground: oklch(0.205 0 0);
|
||||||
|
--secondary: oklch(0.269 0 0);
|
||||||
|
--secondary-foreground: oklch(0.985 0 0);
|
||||||
|
--muted: oklch(0.269 0 0);
|
||||||
|
--muted-foreground: oklch(0.708 0 0);
|
||||||
|
--accent: oklch(0.269 0 0);
|
||||||
|
--accent-foreground: oklch(0.985 0 0);
|
||||||
|
--destructive: oklch(0.704 0.191 22.216);
|
||||||
|
--border: oklch(1 0 0 / 10%);
|
||||||
|
--input: oklch(1 0 0 / 15%);
|
||||||
|
--ring: oklch(0.556 0 0);
|
||||||
|
--chart-1: oklch(0.488 0.243 264.376);
|
||||||
|
--chart-2: oklch(0.696 0.17 162.48);
|
||||||
|
--chart-3: oklch(0.769 0.188 70.08);
|
||||||
|
--chart-4: oklch(0.627 0.265 303.9);
|
||||||
|
--chart-5: oklch(0.645 0.246 16.439);
|
||||||
|
--sidebar: oklch(0.205 0 0);
|
||||||
|
--sidebar-foreground: oklch(0.985 0 0);
|
||||||
|
--sidebar-primary: oklch(0.488 0.243 264.376);
|
||||||
|
--sidebar-primary-foreground: oklch(0.985 0 0);
|
||||||
|
--sidebar-accent: oklch(0.269 0 0);
|
||||||
|
--sidebar-accent-foreground: oklch(0.985 0 0);
|
||||||
|
--sidebar-border: oklch(1 0 0 / 10%);
|
||||||
|
--sidebar-ring: oklch(0.556 0 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@layer base {
|
||||||
|
* {
|
||||||
|
@apply border-border outline-ring/50;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
@apply bg-background text-foreground;
|
||||||
|
}
|
||||||
|
}
|
||||||
26
frontend/src/app/layout.tsx
Normal file
26
frontend/src/app/layout.tsx
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import { Inter } from "next/font/google"; // Using Inter for now as safe default or stick to Geist
|
||||||
|
import "./globals.css";
|
||||||
|
import { NavHeader } from "@/components/nav-header";
|
||||||
|
|
||||||
|
const inter = Inter({ subsets: ["latin"] });
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "Stock Analysis App",
|
||||||
|
description: "AI Powered Stock Analysis",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function RootLayout({
|
||||||
|
children,
|
||||||
|
}: Readonly<{
|
||||||
|
children: React.ReactNode;
|
||||||
|
}>) {
|
||||||
|
return (
|
||||||
|
<html lang="en">
|
||||||
|
<body className={inter.className}>
|
||||||
|
<NavHeader />
|
||||||
|
<main>{children}</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
22
frontend/src/app/page.tsx
Normal file
22
frontend/src/app/page.tsx
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import { SearchStock } from "@/components/search-stock"
|
||||||
|
import { HistoryList } from "@/components/history-list"
|
||||||
|
|
||||||
|
export default function Home() {
|
||||||
|
return (
|
||||||
|
<div className="flex flex-col gap-8 p-8 max-w-7xl mx-auto">
|
||||||
|
<div className="flex flex-col gap-4">
|
||||||
|
<h1 className="text-3xl font-bold tracking-tight">股票分析</h1>
|
||||||
|
<p className="text-muted-foreground">
|
||||||
|
输入公司名称或股票代码,开始全面的AI驱动的分析。
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<SearchStock />
|
||||||
|
|
||||||
|
<div className="flex flex-col gap-4 mt-8">
|
||||||
|
<h2 className="text-2xl font-bold tracking-tight">最近的报告</h2>
|
||||||
|
<HistoryList />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
59
frontend/src/components/history-list.tsx
Normal file
59
frontend/src/components/history-list.tsx
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
"use client"
|
||||||
|
|
||||||
|
import { useEffect, useState } from "react"
|
||||||
|
import Link from "next/link"
|
||||||
|
import { getReports } from "@/lib/api"
|
||||||
|
import { Badge } from "@/components/ui/badge"
|
||||||
|
import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"
|
||||||
|
import { Loader2 } from "lucide-react"
|
||||||
|
|
||||||
|
export function HistoryList() {
|
||||||
|
const [reports, setReports] = useState<any[]>([])
|
||||||
|
const [loading, setLoading] = useState(true)
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getReports().then(setReports).catch(console.error).finally(() => setLoading(false))
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
if (loading) return <Loader2 className="animate-spin text-muted-foreground" />
|
||||||
|
|
||||||
|
if (reports.length === 0) return <div className="text-muted-foreground">没有找到历史记录。</div>
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="grid gap-4 md:grid-cols-2 lg:grid-cols-3">
|
||||||
|
{reports.map((report: any) => (
|
||||||
|
<Link key={report.id} href={`/analysis/${report.id}`}>
|
||||||
|
<Card className="hover:shadow-lg transition-shadow cursor-pointer">
|
||||||
|
<CardHeader>
|
||||||
|
<CardTitle className="text-lg">{report.company_name}</CardTitle>
|
||||||
|
<CardDescription>
|
||||||
|
{report.market} {report.symbol}
|
||||||
|
</CardDescription>
|
||||||
|
</CardHeader>
|
||||||
|
<CardContent>
|
||||||
|
<div className="flex items-center justify-between">
|
||||||
|
<span className="text-sm text-muted-foreground">
|
||||||
|
{new Date(report.created_at).toLocaleString('zh-CN')}
|
||||||
|
</span>
|
||||||
|
<Badge variant={
|
||||||
|
report.status === "completed" ? "default" :
|
||||||
|
report.status === "in_progress" ? "secondary" :
|
||||||
|
report.status === "failed" ? "destructive" : "outline"
|
||||||
|
}>
|
||||||
|
{report.status === "completed" ? "已完成" :
|
||||||
|
report.status === "in_progress" ? "进行中" :
|
||||||
|
report.status === "failed" ? "失败" : "待处理"}
|
||||||
|
</Badge>
|
||||||
|
</div>
|
||||||
|
{report.ai_model && (
|
||||||
|
<div className="mt-2 text-xs text-muted-foreground">
|
||||||
|
模型: {report.ai_model}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</Link>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
12
frontend/src/components/markdown-renderer.tsx
Normal file
12
frontend/src/components/markdown-renderer.tsx
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import ReactMarkdown from 'react-markdown'
|
||||||
|
import remarkGfm from 'remark-gfm'
|
||||||
|
|
||||||
|
export function MarkdownRenderer({ content }: { content: string }) {
|
||||||
|
return (
|
||||||
|
<article className="prose prose-slate max-w-none dark:prose-invert">
|
||||||
|
<ReactMarkdown remarkPlugins={[remarkGfm]}>
|
||||||
|
{content}
|
||||||
|
</ReactMarkdown>
|
||||||
|
</article>
|
||||||
|
)
|
||||||
|
}
|
||||||
23
frontend/src/components/nav-header.tsx
Normal file
23
frontend/src/components/nav-header.tsx
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
"use client"
|
||||||
|
|
||||||
|
import Link from "next/link"
|
||||||
|
import { MonitorPlay } from "lucide-react"
|
||||||
|
|
||||||
|
export function NavHeader() {
|
||||||
|
return (
|
||||||
|
<header className="flex h-14 items-center gap-4 border-b bg-muted/40 px-6 lg:h-[60px]">
|
||||||
|
<Link className="flex items-center gap-2 font-semibold" href="/">
|
||||||
|
<MonitorPlay className="h-6 w-6" />
|
||||||
|
<span className="">股票分析 AI</span>
|
||||||
|
</Link>
|
||||||
|
<nav className="ml-auto flex items-center gap-4 sm:gap-6">
|
||||||
|
<Link className="text-sm font-medium hover:underline underline-offset-4" href="/">
|
||||||
|
主页
|
||||||
|
</Link>
|
||||||
|
<Link className="text-sm font-medium hover:underline underline-offset-4" href="/config">
|
||||||
|
配置
|
||||||
|
</Link>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
)
|
||||||
|
}
|
||||||
89
frontend/src/components/search-stock.tsx
Normal file
89
frontend/src/components/search-stock.tsx
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
"use client"
|
||||||
|
|
||||||
|
import { useState } from "react"
|
||||||
|
import { searchStock, startAnalysis } from "@/lib/api"
|
||||||
|
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
|
||||||
|
import { Input } from "@/components/ui/input"
|
||||||
|
import { Button } from "@/components/ui/button"
|
||||||
|
import { Search, Loader2 } from "lucide-react"
|
||||||
|
import { useRouter } from "next/navigation"
|
||||||
|
|
||||||
|
export function SearchStock() {
|
||||||
|
const [query, setQuery] = useState("")
|
||||||
|
const [results, setResults] = useState<{ market: string; symbol: string; company_name: string }[]>([])
|
||||||
|
const [loading, setLoading] = useState(false)
|
||||||
|
const [error, setError] = useState("")
|
||||||
|
const router = useRouter()
|
||||||
|
|
||||||
|
const handleSearch = async () => {
|
||||||
|
if (!query.trim()) return
|
||||||
|
setLoading(true)
|
||||||
|
setError("")
|
||||||
|
setResults([])
|
||||||
|
|
||||||
|
try {
|
||||||
|
const data = await searchStock(query)
|
||||||
|
setResults(data)
|
||||||
|
} catch (err: any) {
|
||||||
|
setError(err.message || "搜索失败")
|
||||||
|
} finally {
|
||||||
|
setLoading(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleAnalyze = async (result: { market: string; symbol: string; company_name: string }) => {
|
||||||
|
setLoading(true)
|
||||||
|
try {
|
||||||
|
const report = await startAnalysis(result.market, result.symbol, result.company_name)
|
||||||
|
router.push(`/analysis/${report.id}`)
|
||||||
|
} catch (err: any) {
|
||||||
|
setError(err.message || "启动分析失败")
|
||||||
|
} finally {
|
||||||
|
setLoading(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Card className="w-full max-w-2xl">
|
||||||
|
<CardHeader>
|
||||||
|
<CardTitle>开始新的分析</CardTitle>
|
||||||
|
</CardHeader>
|
||||||
|
<CardContent className="space-y-4">
|
||||||
|
<div className="flex gap-2">
|
||||||
|
<Input
|
||||||
|
placeholder="输入公司名称(例如:腾讯)或代码(例如:700)"
|
||||||
|
value={query}
|
||||||
|
onChange={(e) => setQuery(e.target.value)}
|
||||||
|
onKeyDown={(e) => e.key === "Enter" && handleSearch()}
|
||||||
|
/>
|
||||||
|
<Button onClick={handleSearch} disabled={loading}>
|
||||||
|
{loading ? <Loader2 className="animate-spin" /> : <Search />}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{error && <div className="text-red-500 text-sm">{error}</div>}
|
||||||
|
|
||||||
|
{results.length > 0 && (
|
||||||
|
<div className="space-y-2">
|
||||||
|
{results.length > 1 && (
|
||||||
|
<div className="text-sm text-muted-foreground">找到 {results.length} 个结果,请选择:</div>
|
||||||
|
)}
|
||||||
|
{results.map((result, index) => (
|
||||||
|
<div key={index} className="bg-muted p-4 rounded-md space-y-2 border hover:border-primary transition-colors">
|
||||||
|
<div className="font-medium text-lg">{result.company_name}</div>
|
||||||
|
<div className="text-sm text-muted-foreground">
|
||||||
|
市场: {result.market} | 代码: {result.symbol}
|
||||||
|
</div>
|
||||||
|
<div className="pt-2">
|
||||||
|
<Button onClick={() => handleAnalyze(result)} disabled={loading} className="w-full">
|
||||||
|
{loading ? "正在启动分析..." : "运行分析"}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
)
|
||||||
|
}
|
||||||
46
frontend/src/components/ui/badge.tsx
Normal file
46
frontend/src/components/ui/badge.tsx
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
import * as React from "react"
|
||||||
|
import { Slot } from "@radix-ui/react-slot"
|
||||||
|
import { cva, type VariantProps } from "class-variance-authority"
|
||||||
|
|
||||||
|
import { cn } from "@/lib/utils"
|
||||||
|
|
||||||
|
const badgeVariants = cva(
|
||||||
|
"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
||||||
|
{
|
||||||
|
variants: {
|
||||||
|
variant: {
|
||||||
|
default:
|
||||||
|
"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
||||||
|
secondary:
|
||||||
|
"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
||||||
|
destructive:
|
||||||
|
"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
||||||
|
outline:
|
||||||
|
"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
defaultVariants: {
|
||||||
|
variant: "default",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
function Badge({
|
||||||
|
className,
|
||||||
|
variant,
|
||||||
|
asChild = false,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<"span"> &
|
||||||
|
VariantProps<typeof badgeVariants> & { asChild?: boolean }) {
|
||||||
|
const Comp = asChild ? Slot : "span"
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Comp
|
||||||
|
data-slot="badge"
|
||||||
|
className={cn(badgeVariants({ variant }), className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export { Badge, badgeVariants }
|
||||||
62
frontend/src/components/ui/button.tsx
Normal file
62
frontend/src/components/ui/button.tsx
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
import * as React from "react"
|
||||||
|
import { Slot } from "@radix-ui/react-slot"
|
||||||
|
import { cva, type VariantProps } from "class-variance-authority"
|
||||||
|
|
||||||
|
import { cn } from "@/lib/utils"
|
||||||
|
|
||||||
|
const buttonVariants = cva(
|
||||||
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
||||||
|
{
|
||||||
|
variants: {
|
||||||
|
variant: {
|
||||||
|
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
||||||
|
destructive:
|
||||||
|
"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
||||||
|
outline:
|
||||||
|
"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
|
||||||
|
secondary:
|
||||||
|
"bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
||||||
|
ghost:
|
||||||
|
"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
||||||
|
link: "text-primary underline-offset-4 hover:underline",
|
||||||
|
},
|
||||||
|
size: {
|
||||||
|
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
||||||
|
sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
|
||||||
|
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
||||||
|
icon: "size-9",
|
||||||
|
"icon-sm": "size-8",
|
||||||
|
"icon-lg": "size-10",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
defaultVariants: {
|
||||||
|
variant: "default",
|
||||||
|
size: "default",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
function Button({
|
||||||
|
className,
|
||||||
|
variant = "default",
|
||||||
|
size = "default",
|
||||||
|
asChild = false,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<"button"> &
|
||||||
|
VariantProps<typeof buttonVariants> & {
|
||||||
|
asChild?: boolean
|
||||||
|
}) {
|
||||||
|
const Comp = asChild ? Slot : "button"
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Comp
|
||||||
|
data-slot="button"
|
||||||
|
data-variant={variant}
|
||||||
|
data-size={size}
|
||||||
|
className={cn(buttonVariants({ variant, size, className }))}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export { Button, buttonVariants }
|
||||||
92
frontend/src/components/ui/card.tsx
Normal file
92
frontend/src/components/ui/card.tsx
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
import * as React from "react"
|
||||||
|
|
||||||
|
import { cn } from "@/lib/utils"
|
||||||
|
|
||||||
|
function Card({ className, ...props }: React.ComponentProps<"div">) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
data-slot="card"
|
||||||
|
className={cn(
|
||||||
|
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
data-slot="card-header"
|
||||||
|
className={cn(
|
||||||
|
"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
data-slot="card-title"
|
||||||
|
className={cn("leading-none font-semibold", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
data-slot="card-description"
|
||||||
|
className={cn("text-muted-foreground text-sm", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function CardAction({ className, ...props }: React.ComponentProps<"div">) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
data-slot="card-action"
|
||||||
|
className={cn(
|
||||||
|
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function CardContent({ className, ...props }: React.ComponentProps<"div">) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
data-slot="card-content"
|
||||||
|
className={cn("px-6", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
data-slot="card-footer"
|
||||||
|
className={cn("flex items-center px-6 [.border-t]:pt-6", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
Card,
|
||||||
|
CardHeader,
|
||||||
|
CardFooter,
|
||||||
|
CardTitle,
|
||||||
|
CardAction,
|
||||||
|
CardDescription,
|
||||||
|
CardContent,
|
||||||
|
}
|
||||||
167
frontend/src/components/ui/form.tsx
Normal file
167
frontend/src/components/ui/form.tsx
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
"use client"
|
||||||
|
|
||||||
|
import * as React from "react"
|
||||||
|
import type * as LabelPrimitive from "@radix-ui/react-label"
|
||||||
|
import { Slot } from "@radix-ui/react-slot"
|
||||||
|
import {
|
||||||
|
Controller,
|
||||||
|
FormProvider,
|
||||||
|
useFormContext,
|
||||||
|
useFormState,
|
||||||
|
type ControllerProps,
|
||||||
|
type FieldPath,
|
||||||
|
type FieldValues,
|
||||||
|
} from "react-hook-form"
|
||||||
|
|
||||||
|
import { cn } from "@/lib/utils"
|
||||||
|
import { Label } from "@/components/ui/label"
|
||||||
|
|
||||||
|
const Form = FormProvider
|
||||||
|
|
||||||
|
type FormFieldContextValue<
|
||||||
|
TFieldValues extends FieldValues = FieldValues,
|
||||||
|
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
|
||||||
|
> = {
|
||||||
|
name: TName
|
||||||
|
}
|
||||||
|
|
||||||
|
const FormFieldContext = React.createContext<FormFieldContextValue>(
|
||||||
|
{} as FormFieldContextValue
|
||||||
|
)
|
||||||
|
|
||||||
|
const FormField = <
|
||||||
|
TFieldValues extends FieldValues = FieldValues,
|
||||||
|
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
|
||||||
|
>({
|
||||||
|
...props
|
||||||
|
}: ControllerProps<TFieldValues, TName>) => {
|
||||||
|
return (
|
||||||
|
<FormFieldContext.Provider value={{ name: props.name }}>
|
||||||
|
<Controller {...props} />
|
||||||
|
</FormFieldContext.Provider>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const useFormField = () => {
|
||||||
|
const fieldContext = React.useContext(FormFieldContext)
|
||||||
|
const itemContext = React.useContext(FormItemContext)
|
||||||
|
const { getFieldState } = useFormContext()
|
||||||
|
const formState = useFormState({ name: fieldContext.name })
|
||||||
|
const fieldState = getFieldState(fieldContext.name, formState)
|
||||||
|
|
||||||
|
if (!fieldContext) {
|
||||||
|
throw new Error("useFormField should be used within <FormField>")
|
||||||
|
}
|
||||||
|
|
||||||
|
const { id } = itemContext
|
||||||
|
|
||||||
|
return {
|
||||||
|
id,
|
||||||
|
name: fieldContext.name,
|
||||||
|
formItemId: `${id}-form-item`,
|
||||||
|
formDescriptionId: `${id}-form-item-description`,
|
||||||
|
formMessageId: `${id}-form-item-message`,
|
||||||
|
...fieldState,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type FormItemContextValue = {
|
||||||
|
id: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const FormItemContext = React.createContext<FormItemContextValue>(
|
||||||
|
{} as FormItemContextValue
|
||||||
|
)
|
||||||
|
|
||||||
|
function FormItem({ className, ...props }: React.ComponentProps<"div">) {
|
||||||
|
const id = React.useId()
|
||||||
|
|
||||||
|
return (
|
||||||
|
<FormItemContext.Provider value={{ id }}>
|
||||||
|
<div
|
||||||
|
data-slot="form-item"
|
||||||
|
className={cn("grid gap-2", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
</FormItemContext.Provider>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function FormLabel({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof LabelPrimitive.Root>) {
|
||||||
|
const { error, formItemId } = useFormField()
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Label
|
||||||
|
data-slot="form-label"
|
||||||
|
data-error={!!error}
|
||||||
|
className={cn("data-[error=true]:text-destructive", className)}
|
||||||
|
htmlFor={formItemId}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function FormControl({ ...props }: React.ComponentProps<typeof Slot>) {
|
||||||
|
const { error, formItemId, formDescriptionId, formMessageId } = useFormField()
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Slot
|
||||||
|
data-slot="form-control"
|
||||||
|
id={formItemId}
|
||||||
|
aria-describedby={
|
||||||
|
!error
|
||||||
|
? `${formDescriptionId}`
|
||||||
|
: `${formDescriptionId} ${formMessageId}`
|
||||||
|
}
|
||||||
|
aria-invalid={!!error}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function FormDescription({ className, ...props }: React.ComponentProps<"p">) {
|
||||||
|
const { formDescriptionId } = useFormField()
|
||||||
|
|
||||||
|
return (
|
||||||
|
<p
|
||||||
|
data-slot="form-description"
|
||||||
|
id={formDescriptionId}
|
||||||
|
className={cn("text-muted-foreground text-sm", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function FormMessage({ className, ...props }: React.ComponentProps<"p">) {
|
||||||
|
const { error, formMessageId } = useFormField()
|
||||||
|
const body = error ? String(error?.message ?? "") : props.children
|
||||||
|
|
||||||
|
if (!body) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<p
|
||||||
|
data-slot="form-message"
|
||||||
|
id={formMessageId}
|
||||||
|
className={cn("text-destructive text-sm", className)}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
{body}
|
||||||
|
</p>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
useFormField,
|
||||||
|
Form,
|
||||||
|
FormItem,
|
||||||
|
FormLabel,
|
||||||
|
FormControl,
|
||||||
|
FormDescription,
|
||||||
|
FormMessage,
|
||||||
|
FormField,
|
||||||
|
}
|
||||||
21
frontend/src/components/ui/input.tsx
Normal file
21
frontend/src/components/ui/input.tsx
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import * as React from "react"
|
||||||
|
|
||||||
|
import { cn } from "@/lib/utils"
|
||||||
|
|
||||||
|
function Input({ className, type, ...props }: React.ComponentProps<"input">) {
|
||||||
|
return (
|
||||||
|
<input
|
||||||
|
type={type}
|
||||||
|
data-slot="input"
|
||||||
|
className={cn(
|
||||||
|
"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
||||||
|
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
||||||
|
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export { Input }
|
||||||
24
frontend/src/components/ui/label.tsx
Normal file
24
frontend/src/components/ui/label.tsx
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
"use client"
|
||||||
|
|
||||||
|
import * as React from "react"
|
||||||
|
import * as LabelPrimitive from "@radix-ui/react-label"
|
||||||
|
|
||||||
|
import { cn } from "@/lib/utils"
|
||||||
|
|
||||||
|
function Label({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof LabelPrimitive.Root>) {
|
||||||
|
return (
|
||||||
|
<LabelPrimitive.Root
|
||||||
|
data-slot="label"
|
||||||
|
className={cn(
|
||||||
|
"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export { Label }
|
||||||
190
frontend/src/components/ui/select.tsx
Normal file
190
frontend/src/components/ui/select.tsx
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
"use client"
|
||||||
|
|
||||||
|
import * as React from "react"
|
||||||
|
import * as SelectPrimitive from "@radix-ui/react-select"
|
||||||
|
import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react"
|
||||||
|
|
||||||
|
import { cn } from "@/lib/utils"
|
||||||
|
|
||||||
|
function Select({
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SelectPrimitive.Root>) {
|
||||||
|
return <SelectPrimitive.Root data-slot="select" {...props} />
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectGroup({
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SelectPrimitive.Group>) {
|
||||||
|
return <SelectPrimitive.Group data-slot="select-group" {...props} />
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectValue({
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SelectPrimitive.Value>) {
|
||||||
|
return <SelectPrimitive.Value data-slot="select-value" {...props} />
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectTrigger({
|
||||||
|
className,
|
||||||
|
size = "default",
|
||||||
|
children,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
|
||||||
|
size?: "sm" | "default"
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<SelectPrimitive.Trigger
|
||||||
|
data-slot="select-trigger"
|
||||||
|
data-size={size}
|
||||||
|
className={cn(
|
||||||
|
"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
<SelectPrimitive.Icon asChild>
|
||||||
|
<ChevronDownIcon className="size-4 opacity-50" />
|
||||||
|
</SelectPrimitive.Icon>
|
||||||
|
</SelectPrimitive.Trigger>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectContent({
|
||||||
|
className,
|
||||||
|
children,
|
||||||
|
position = "item-aligned",
|
||||||
|
align = "center",
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SelectPrimitive.Content>) {
|
||||||
|
return (
|
||||||
|
<SelectPrimitive.Portal>
|
||||||
|
<SelectPrimitive.Content
|
||||||
|
data-slot="select-content"
|
||||||
|
className={cn(
|
||||||
|
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
|
||||||
|
position === "popper" &&
|
||||||
|
"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
position={position}
|
||||||
|
align={align}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
<SelectScrollUpButton />
|
||||||
|
<SelectPrimitive.Viewport
|
||||||
|
className={cn(
|
||||||
|
"p-1",
|
||||||
|
position === "popper" &&
|
||||||
|
"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</SelectPrimitive.Viewport>
|
||||||
|
<SelectScrollDownButton />
|
||||||
|
</SelectPrimitive.Content>
|
||||||
|
</SelectPrimitive.Portal>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectLabel({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SelectPrimitive.Label>) {
|
||||||
|
return (
|
||||||
|
<SelectPrimitive.Label
|
||||||
|
data-slot="select-label"
|
||||||
|
className={cn("text-muted-foreground px-2 py-1.5 text-xs", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectItem({
|
||||||
|
className,
|
||||||
|
children,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SelectPrimitive.Item>) {
|
||||||
|
return (
|
||||||
|
<SelectPrimitive.Item
|
||||||
|
data-slot="select-item"
|
||||||
|
className={cn(
|
||||||
|
"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
data-slot="select-item-indicator"
|
||||||
|
className="absolute right-2 flex size-3.5 items-center justify-center"
|
||||||
|
>
|
||||||
|
<SelectPrimitive.ItemIndicator>
|
||||||
|
<CheckIcon className="size-4" />
|
||||||
|
</SelectPrimitive.ItemIndicator>
|
||||||
|
</span>
|
||||||
|
<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
|
||||||
|
</SelectPrimitive.Item>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectSeparator({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SelectPrimitive.Separator>) {
|
||||||
|
return (
|
||||||
|
<SelectPrimitive.Separator
|
||||||
|
data-slot="select-separator"
|
||||||
|
className={cn("bg-border pointer-events-none -mx-1 my-1 h-px", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectScrollUpButton({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {
|
||||||
|
return (
|
||||||
|
<SelectPrimitive.ScrollUpButton
|
||||||
|
data-slot="select-scroll-up-button"
|
||||||
|
className={cn(
|
||||||
|
"flex cursor-default items-center justify-center py-1",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
<ChevronUpIcon className="size-4" />
|
||||||
|
</SelectPrimitive.ScrollUpButton>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectScrollDownButton({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {
|
||||||
|
return (
|
||||||
|
<SelectPrimitive.ScrollDownButton
|
||||||
|
data-slot="select-scroll-down-button"
|
||||||
|
className={cn(
|
||||||
|
"flex cursor-default items-center justify-center py-1",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
<ChevronDownIcon className="size-4" />
|
||||||
|
</SelectPrimitive.ScrollDownButton>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
Select,
|
||||||
|
SelectContent,
|
||||||
|
SelectGroup,
|
||||||
|
SelectItem,
|
||||||
|
SelectLabel,
|
||||||
|
SelectScrollDownButton,
|
||||||
|
SelectScrollUpButton,
|
||||||
|
SelectSeparator,
|
||||||
|
SelectTrigger,
|
||||||
|
SelectValue,
|
||||||
|
}
|
||||||
139
frontend/src/components/ui/sheet.tsx
Normal file
139
frontend/src/components/ui/sheet.tsx
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
"use client"
|
||||||
|
|
||||||
|
import * as React from "react"
|
||||||
|
import * as SheetPrimitive from "@radix-ui/react-dialog"
|
||||||
|
import { XIcon } from "lucide-react"
|
||||||
|
|
||||||
|
import { cn } from "@/lib/utils"
|
||||||
|
|
||||||
|
function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {
|
||||||
|
return <SheetPrimitive.Root data-slot="sheet" {...props} />
|
||||||
|
}
|
||||||
|
|
||||||
|
function SheetTrigger({
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {
|
||||||
|
return <SheetPrimitive.Trigger data-slot="sheet-trigger" {...props} />
|
||||||
|
}
|
||||||
|
|
||||||
|
function SheetClose({
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SheetPrimitive.Close>) {
|
||||||
|
return <SheetPrimitive.Close data-slot="sheet-close" {...props} />
|
||||||
|
}
|
||||||
|
|
||||||
|
function SheetPortal({
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SheetPrimitive.Portal>) {
|
||||||
|
return <SheetPrimitive.Portal data-slot="sheet-portal" {...props} />
|
||||||
|
}
|
||||||
|
|
||||||
|
function SheetOverlay({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {
|
||||||
|
return (
|
||||||
|
<SheetPrimitive.Overlay
|
||||||
|
data-slot="sheet-overlay"
|
||||||
|
className={cn(
|
||||||
|
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SheetContent({
|
||||||
|
className,
|
||||||
|
children,
|
||||||
|
side = "right",
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SheetPrimitive.Content> & {
|
||||||
|
side?: "top" | "right" | "bottom" | "left"
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<SheetPortal>
|
||||||
|
<SheetOverlay />
|
||||||
|
<SheetPrimitive.Content
|
||||||
|
data-slot="sheet-content"
|
||||||
|
className={cn(
|
||||||
|
"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
|
||||||
|
side === "right" &&
|
||||||
|
"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
|
||||||
|
side === "left" &&
|
||||||
|
"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
|
||||||
|
side === "top" &&
|
||||||
|
"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
|
||||||
|
side === "bottom" &&
|
||||||
|
"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
<SheetPrimitive.Close className="ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none">
|
||||||
|
<XIcon className="size-4" />
|
||||||
|
<span className="sr-only">Close</span>
|
||||||
|
</SheetPrimitive.Close>
|
||||||
|
</SheetPrimitive.Content>
|
||||||
|
</SheetPortal>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SheetHeader({ className, ...props }: React.ComponentProps<"div">) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
data-slot="sheet-header"
|
||||||
|
className={cn("flex flex-col gap-1.5 p-4", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SheetFooter({ className, ...props }: React.ComponentProps<"div">) {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
data-slot="sheet-footer"
|
||||||
|
className={cn("mt-auto flex flex-col gap-2 p-4", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SheetTitle({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SheetPrimitive.Title>) {
|
||||||
|
return (
|
||||||
|
<SheetPrimitive.Title
|
||||||
|
data-slot="sheet-title"
|
||||||
|
className={cn("text-foreground font-semibold", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SheetDescription({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<typeof SheetPrimitive.Description>) {
|
||||||
|
return (
|
||||||
|
<SheetPrimitive.Description
|
||||||
|
data-slot="sheet-description"
|
||||||
|
className={cn("text-muted-foreground text-sm", className)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
Sheet,
|
||||||
|
SheetTrigger,
|
||||||
|
SheetClose,
|
||||||
|
SheetContent,
|
||||||
|
SheetHeader,
|
||||||
|
SheetFooter,
|
||||||
|
SheetTitle,
|
||||||
|
SheetDescription,
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user