mns-scheduler 1.3.3.5__tar.gz → 1.4.1.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. mns_scheduler-1.4.1.5/PKG-INFO +3 -0
  2. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/announce/company_announce_sync_service.py +10 -5
  3. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/base/sync_company_base_info_api.py +97 -20
  4. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/base/sync_company_hold_info_api.py +2 -5
  5. mns_scheduler-1.4.1.5/mns_scheduler/company_info/base/sync_company_product_area_industry.py +161 -0
  6. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/constant/company_constant_data.py +3 -0
  7. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py +27 -28
  8. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/clean/ths_concept_clean_api.py +3 -6
  9. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/sync/remote_data_sync_to_local.py +33 -4
  10. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/sync/sync_hui_ce_test_data.py +15 -3
  11. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/sync/sync_hui_ce_test_data_01.py +3 -2
  12. mns_scheduler-1.4.1.5/mns_scheduler/finance/em/__init__.py +7 -0
  13. {mns-scheduler-1.3.3.5/mns_scheduler/finance → mns_scheduler-1.4.1.5/mns_scheduler/finance/em}/em_financial_asset_liability_sync_service_api.py +1 -1
  14. {mns-scheduler-1.3.3.5/mns_scheduler/finance → mns_scheduler-1.4.1.5/mns_scheduler/finance/em}/em_financial_profit_sync_service_api.py +5 -3
  15. mns-scheduler-1.3.3.5/mns_scheduler/finance/sync_financial_report_service_api.py → mns_scheduler-1.4.1.5/mns_scheduler/finance/sync_financial_report_service_task.py +79 -26
  16. mns_scheduler-1.4.1.5/mns_scheduler/finance/xue_qiu/__init__.py +7 -0
  17. mns_scheduler-1.4.1.5/mns_scheduler/finance/xue_qiu/down_load_xueqiu_report_api.py +77 -0
  18. mns_scheduler-1.4.1.5/mns_scheduler/finance/xue_qiu/sync_xue_qiu_fiance_data.py +161 -0
  19. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/irm/stock_irm_cninfo_service.py +9 -5
  20. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/common/k_line_common_api.py +1 -1
  21. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/month_week_daily/daily_week_month_line_sync.py +2 -2
  22. mns_scheduler-1.4.1.5/mns_scheduler/k_line/sync_status/__init__.py +7 -0
  23. mns_scheduler-1.4.1.5/mns_scheduler/k_line/sync_status/k_line_sync_status_check.py +54 -0
  24. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +1 -2
  25. mns_scheduler-1.4.1.5/mns_scheduler/kpl/selection/symbol/sync_kpl_concept_symbol_choose_reason_api.py +108 -0
  26. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +5 -0
  27. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +1 -1
  28. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/self_choose/ths_self_choose_service.py +7 -13
  29. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/auto_login/trader_auto_service.py +5 -3
  30. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/task/trader_task_service.py +25 -8
  31. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/tfp/stock_tfp_info_sync.py +4 -1
  32. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +1 -1
  33. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +1 -1
  34. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py +4 -0
  35. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py +1 -1
  36. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +17 -4
  37. mns_scheduler-1.4.1.5/mns_scheduler/zz_task/compensation/__init__.py +0 -0
  38. mns_scheduler-1.4.1.5/mns_scheduler/zz_task/compensation/compensate_task.py +161 -0
  39. mns_scheduler-1.4.1.5/mns_scheduler/zz_task/compensation/compensate_task_one_day.py +142 -0
  40. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zz_task/data_sync_task.py +40 -32
  41. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5/mns_scheduler.egg-info}/PKG-INFO +1 -1
  42. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler.egg-info/SOURCES.txt +16 -9
  43. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/setup.py +2 -2
  44. mns-scheduler-1.3.3.5/mns_scheduler/big_deal/ths_big_deal_sync.py +0 -98
  45. mns-scheduler-1.3.3.5/mns_scheduler/debt/kzz_bond_info_sync.py +0 -33
  46. mns-scheduler-1.3.3.5/mns_scheduler/zt/script/__init__.py +0 -7
  47. mns-scheduler-1.3.3.5/mns_scheduler/zz_task/__init__.py +0 -7
  48. mns-scheduler-1.3.3.5/mns_scheduler.egg-info/PKG-INFO +0 -3
  49. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/README.md +0 -0
  50. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/__init__.py +0 -0
  51. {mns-scheduler-1.3.3.5/mns_scheduler/big_deal → mns_scheduler-1.4.1.5/mns_scheduler/company_info}/__init__.py +0 -0
  52. {mns-scheduler-1.3.3.5/mns_scheduler/company_info → mns_scheduler-1.4.1.5/mns_scheduler/company_info/announce}/__init__.py +0 -0
  53. {mns-scheduler-1.3.3.5/mns_scheduler/company_info/announce → mns_scheduler-1.4.1.5/mns_scheduler/company_info/base}/__init__.py +0 -0
  54. {mns-scheduler-1.3.3.5/mns_scheduler/company_info/base → mns_scheduler-1.4.1.5/mns_scheduler/company_info/clean}/__init__.py +0 -0
  55. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/clean/company_info_clean_api.py +0 -0
  56. {mns-scheduler-1.3.3.5/mns_scheduler/company_info/clean → mns_scheduler-1.4.1.5/mns_scheduler/company_info/constant}/__init__.py +0 -0
  57. {mns-scheduler-1.3.3.5/mns_scheduler/company_info/constant → mns_scheduler-1.4.1.5/mns_scheduler/company_info/de_list_stock}/__init__.py +0 -0
  58. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/de_list_stock/de_list_stock_service.py +0 -0
  59. {mns-scheduler-1.3.3.5/mns_scheduler/company_info/de_list_stock → mns_scheduler-1.4.1.5/mns_scheduler/company_info/em_stock_info}/__init__.py +0 -0
  60. {mns-scheduler-1.3.3.5/mns_scheduler/company_info/em_stock_info → mns_scheduler-1.4.1.5/mns_scheduler/company_info/remark}/__init__.py +0 -0
  61. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/remark/company_remark_info_sync.py +0 -0
  62. {mns-scheduler-1.3.3.5/mns_scheduler/company_info/remark → mns_scheduler-1.4.1.5/mns_scheduler/concept}/__init__.py +0 -0
  63. {mns-scheduler-1.3.3.5/mns_scheduler/concept → mns_scheduler-1.4.1.5/mns_scheduler/concept/clean}/__init__.py +0 -0
  64. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
  65. {mns-scheduler-1.3.3.5/mns_scheduler/concept/clean → mns_scheduler-1.4.1.5/mns_scheduler/concept/ths}/__init__.py +0 -0
  66. {mns-scheduler-1.3.3.5/mns_scheduler/concept/ths → mns_scheduler-1.4.1.5/mns_scheduler/concept/ths/common}/__init__.py +0 -0
  67. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +0 -0
  68. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
  69. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/detaill/__init__.py +0 -0
  70. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py +0 -0
  71. {mns-scheduler-1.3.3.5/mns_scheduler/concept/ths/common → mns_scheduler-1.4.1.5/mns_scheduler/concept/ths/sync_new_index}/__init__.py +0 -0
  72. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +0 -0
  73. {mns-scheduler-1.3.3.5/mns_scheduler/concept/ths/sync_new_index → mns_scheduler-1.4.1.5/mns_scheduler/concept/ths/update_concept_info}/__init__.py +0 -0
  74. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
  75. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +0 -0
  76. {mns-scheduler-1.3.3.5/mns_scheduler/concept/ths/update_concept_info → mns_scheduler-1.4.1.5/mns_scheduler/db}/__init__.py +0 -0
  77. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/db/col_move_service.py +0 -0
  78. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/db/db_status.py +0 -0
  79. {mns-scheduler-1.3.3.5/mns_scheduler/db → mns_scheduler-1.4.1.5/mns_scheduler/db/script}/__init__.py +0 -0
  80. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/col_move_script.py +0 -0
  81. {mns-scheduler-1.3.3.5/mns_scheduler/db/script → mns_scheduler-1.4.1.5/mns_scheduler/db/script/db_move}/__init__.py +0 -0
  82. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/db_move/col_move_one_service.py +0 -0
  83. {mns-scheduler-1.3.3.5/mns_scheduler/db/script/db_move → mns_scheduler-1.4.1.5/mns_scheduler/db/script/sync}/__init__.py +0 -0
  84. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/sync/local_mongo_util.py +0 -0
  85. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/sync/remote_mongo_util.py +0 -0
  86. {mns-scheduler-1.3.3.5/mns_scheduler/db/script/sync → mns_scheduler-1.4.1.5/mns_scheduler/db/script/update}/__init__.py +0 -0
  87. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/update/update_col_field.py +0 -0
  88. {mns-scheduler-1.3.3.5/mns_scheduler/db/script/update → mns_scheduler-1.4.1.5/mns_scheduler/dt}/__init__.py +0 -0
  89. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
  90. {mns-scheduler-1.3.3.5/mns_scheduler/debt → mns_scheduler-1.4.1.5/mns_scheduler/finance}/__init__.py +0 -0
  91. {mns-scheduler-1.3.3.5/mns_scheduler/finance → mns_scheduler-1.4.1.5/mns_scheduler/finance/em}/finance_common_api.py +0 -0
  92. {mns-scheduler-1.3.3.5/mns_scheduler/dt → mns_scheduler-1.4.1.5/mns_scheduler/hk}/__init__.py +0 -0
  93. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
  94. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/hk/hk_industry_info_sync_service_api.py +0 -0
  95. {mns-scheduler-1.3.3.5/mns_scheduler/finance → mns_scheduler-1.4.1.5/mns_scheduler/industry}/__init__.py +0 -0
  96. {mns-scheduler-1.3.3.5/mns_scheduler/hk → mns_scheduler-1.4.1.5/mns_scheduler/industry/ths}/__init__.py +0 -0
  97. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/industry/ths/ths_industry_index_service.py +0 -0
  98. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/industry/ths/ths_industry_sync_service.py +0 -0
  99. {mns-scheduler-1.3.3.5/mns_scheduler/industry → mns_scheduler-1.4.1.5/mns_scheduler/irm}/__init__.py +0 -0
  100. {mns-scheduler-1.3.3.5/mns_scheduler/industry/ths → mns_scheduler-1.4.1.5/mns_scheduler/irm/api}/__init__.py +0 -0
  101. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +0 -0
  102. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +0 -0
  103. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/__init__.py +0 -0
  104. {mns-scheduler-1.3.3.5/mns_scheduler/irm → mns_scheduler-1.4.1.5/mns_scheduler/k_line/clean}/__init__.py +0 -0
  105. {mns-scheduler-1.3.3.5/mns_scheduler/irm/api → mns_scheduler-1.4.1.5/mns_scheduler/k_line/clean/daily}/__init__.py +0 -0
  106. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +0 -0
  107. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/clean/daily/daily_k_line_service.py +0 -0
  108. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
  109. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/clean/k_line_info_clean_task.py +0 -0
  110. {mns-scheduler-1.3.3.5/mns_scheduler/k_line/clean → mns_scheduler-1.4.1.5/mns_scheduler/k_line/clean/week_month}/__init__.py +0 -0
  111. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +0 -0
  112. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +0 -0
  113. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/common/__init__.py +0 -0
  114. {mns-scheduler-1.3.3.5/mns_scheduler/k_line/clean/daily → mns_scheduler-1.4.1.5/mns_scheduler/k_line/hot_stocks}/__init__.py +0 -0
  115. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +0 -0
  116. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/month_week_daily/__init__.py +0 -0
  117. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/month_week_daily/bfq_k_line_sync.py +0 -0
  118. {mns-scheduler-1.3.3.5/mns_scheduler/k_line/clean/week_month → mns_scheduler-1.4.1.5/mns_scheduler/k_line/test}/__init__.py +0 -0
  119. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/test/k_line_info_clean_his_data.py +0 -0
  120. {mns-scheduler-1.3.3.5/mns_scheduler/k_line/hot_stocks → mns_scheduler-1.4.1.5/mns_scheduler/k_line/year_quarter}/__init__.py +0 -0
  121. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/year_quarter/year_quarter_line_sync.py +0 -0
  122. {mns-scheduler-1.3.3.5/mns_scheduler/k_line/test → mns_scheduler-1.4.1.5/mns_scheduler/kpl}/__init__.py +0 -0
  123. {mns-scheduler-1.3.3.5/mns_scheduler/k_line/year_quarter → mns_scheduler-1.4.1.5/mns_scheduler/kpl/selection}/__init__.py +0 -0
  124. {mns-scheduler-1.3.3.5/mns_scheduler/kpl → mns_scheduler-1.4.1.5/mns_scheduler/kpl/selection/index}/__init__.py +0 -0
  125. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
  126. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
  127. {mns-scheduler-1.3.3.5/mns_scheduler/kpl/selection → mns_scheduler-1.4.1.5/mns_scheduler/kpl/selection/symbol}/__init__.py +0 -0
  128. {mns-scheduler-1.3.3.5/mns_scheduler/kpl/selection/index → mns_scheduler-1.4.1.5/mns_scheduler/kpl/selection/total}/__init__.py +0 -0
  129. {mns-scheduler-1.3.3.5/mns_scheduler/kpl/selection/symbol → mns_scheduler-1.4.1.5/mns_scheduler/lhb}/__init__.py +0 -0
  130. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/lhb/stock_lhb_sync_service.py +0 -0
  131. {mns-scheduler-1.3.3.5/mns_scheduler/kpl/selection/total → mns_scheduler-1.4.1.5/mns_scheduler/open}/__init__.py +0 -0
  132. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/open/sync_one_day_open_data_to_db_service.py +0 -0
  133. {mns-scheduler-1.3.3.5/mns_scheduler/lhb → mns_scheduler-1.4.1.5/mns_scheduler/risk}/__init__.py +0 -0
  134. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/compliance/__init__.py +0 -0
  135. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/financial/__init__.py +0 -0
  136. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/financial/annual_report_audit_check_api.py +0 -0
  137. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/financial/net_assets_check_api.py +0 -0
  138. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/financial/profit_income_check_api.py +0 -0
  139. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +0 -0
  140. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/financial_report_risk_check_api.py +0 -0
  141. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/major_violations/__init__.py +0 -0
  142. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py +0 -0
  143. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/self/__init__.py +0 -0
  144. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/self/wei_pan_stock_api.py +0 -0
  145. {mns-scheduler-1.3.3.5/mns_scheduler/open → mns_scheduler-1.4.1.5/mns_scheduler/risk/test}/__init__.py +0 -0
  146. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/test/fix_blask_list.py +0 -0
  147. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/transactions/__init__.py +0 -0
  148. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/transactions/transactions_check_api.py +0 -0
  149. {mns-scheduler-1.3.3.5/mns_scheduler/risk → mns_scheduler-1.4.1.5/mns_scheduler/self_choose}/__init__.py +0 -0
  150. {mns-scheduler-1.3.3.5/mns_scheduler/risk/test → mns_scheduler-1.4.1.5/mns_scheduler/trade}/__init__.py +0 -0
  151. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
  152. {mns-scheduler-1.3.3.5/mns_scheduler/self_choose → mns_scheduler-1.4.1.5/mns_scheduler/trade/auto_login}/__init__.py +0 -0
  153. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
  154. {mns-scheduler-1.3.3.5/mns_scheduler/trade → mns_scheduler-1.4.1.5/mns_scheduler/trade/balance}/__init__.py +0 -0
  155. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/balance/ths_account_balance_service.py +0 -0
  156. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/sync_position_api.py +0 -0
  157. {mns-scheduler-1.3.3.5/mns_scheduler/trade/auto_login → mns_scheduler-1.4.1.5/mns_scheduler/trade/task}/__init__.py +0 -0
  158. {mns-scheduler-1.3.3.5/mns_scheduler/trade/balance → mns_scheduler-1.4.1.5/mns_scheduler/trade/tfp}/__init__.py +0 -0
  159. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zb/__init__.py +0 -0
  160. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
  161. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/__init__.py +0 -0
  162. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/connected_boards/__init__.py +0 -0
  163. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py +0 -0
  164. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/export/__init__.py +0 -0
  165. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/export/export_kcx_high_chg_open_data_to_excel.py +0 -0
  166. {mns-scheduler-1.3.3.5/mns_scheduler/trade/task → mns_scheduler-1.4.1.5/mns_scheduler/zt/high_chg}/__init__.py +0 -0
  167. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +0 -0
  168. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +0 -0
  169. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/open_data/__init__.py +0 -0
  170. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +0 -0
  171. {mns-scheduler-1.3.3.5/mns_scheduler/trade/tfp → mns_scheduler-1.4.1.5/mns_scheduler/zt/script}/__init__.py +0 -0
  172. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/script/fix_error_deal_day.py +0 -0
  173. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/script/sync_now_higt_chg_zt.py +0 -0
  174. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/zt_pool/__init__.py +0 -0
  175. {mns-scheduler-1.3.3.5/mns_scheduler/zt/high_chg → mns_scheduler-1.4.1.5/mns_scheduler/zz_task}/__init__.py +0 -0
  176. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler.egg-info/dependency_links.txt +0 -0
  177. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/mns_scheduler.egg-info/top_level.txt +0 -0
  178. {mns-scheduler-1.3.3.5 → mns_scheduler-1.4.1.5}/setup.cfg +0 -0
@@ -0,0 +1,3 @@
1
+ Metadata-Version: 2.1
2
+ Name: mns_scheduler
3
+ Version: 1.4.1.5
@@ -17,21 +17,25 @@ mongodb_util = MongodbUtil('27017')
17
17
  # 同步最新公告
18
18
  # eq-f1001 业绩预告 eq-f1002 重大事项 eq-f1003 股份变动公告
19
19
 
20
- def sync_company_announce():
21
- page_size = 10
20
+ def sync_company_announce(symbol_list):
21
+ page_size = 100
22
22
  announce_type_list = ['all', 'eq-f1003', 'eq-f1001', 'eq-f1002']
23
23
  for announce_type_one in announce_type_list:
24
24
  try:
25
- get_company_announce(announce_type_one, page_size)
25
+ get_company_announce(announce_type_one, page_size, symbol_list)
26
26
  except BaseException as e:
27
27
  logger.error("更新公告出现异常:{}", e)
28
28
  logger.info("同步到公告信息完成")
29
29
 
30
30
 
31
- def get_company_announce(announce_type, page_size):
31
+ def get_company_announce(announce_type, page_size, symbol_list):
32
32
  company_all_df = company_common_service_new_api.get_company_all_info_info()
33
33
  de_list_company = company_common_service_new_api.get_de_list_company()
34
34
  company_all_df = company_all_df.loc[~(company_all_df['symbol'].isin(de_list_company))]
35
+
36
+ if symbol_list is not None:
37
+ company_all_df = company_all_df.loc[(company_all_df['symbol'].isin(symbol_list))]
38
+
35
39
  for stock_one in company_all_df.itertuples():
36
40
  try:
37
41
  symbol = stock_one.symbol
@@ -51,10 +55,11 @@ def get_company_announce(announce_type, page_size):
51
55
  ths_company_announce_result['_id'] = ths_company_announce_result['guid'] + '_' + \
52
56
  ths_company_announce_result['seq'] + "_" + announce_type
53
57
  mongodb_util.save_mongo(ths_company_announce_result, db_name_constant.COMPANY_ANNOUNCE_INFO)
58
+ logger.info("更新公告完成:{},{}", symbol, stock_one.name)
54
59
 
55
60
  except BaseException as e:
56
61
  logger.error("更新公告出现异常:{}", e)
57
62
 
58
63
 
59
64
  if __name__ == '__main__':
60
- sync_company_announce()
65
+ sync_company_announce(None)
@@ -37,25 +37,92 @@ result = []
37
37
  # 计算实际流通比例
38
38
  def calculate_circulation_ratio(symbol):
39
39
  query = {"symbol": symbol}
40
- stock_gdfx_free_top_10 = mongodb_util.descend_query(query, 'stock_gdfx_free_top_10', "period", 10)
41
- if stock_gdfx_free_top_10.shape[0] == 0:
40
+ stock_gdfx_free_top_1 = mongodb_util.descend_query(query, 'stock_gdfx_free_top_10', "period", 1)
41
+ if stock_gdfx_free_top_1.shape[0] == 0:
42
42
  mv_circulation_ratio = 1
43
43
  else:
44
+ period_time = list(stock_gdfx_free_top_1['period'])[0]
45
+
46
+ query_free = {'symbol': symbol, 'period': period_time}
47
+ stock_gdfx_free_top_10 = mongodb_util.find_query_data('stock_gdfx_free_top_10', query_free)
48
+
49
+ stock_gdfx_free_top_10['shares_number_str'] = stock_gdfx_free_top_10['shares_number'].astype(str)
50
+
51
+ stock_gdfx_free_top_10['id_key'] = stock_gdfx_free_top_10['symbol'] + '_' + stock_gdfx_free_top_10[
52
+ 'period'] + '_' + stock_gdfx_free_top_10.shares_number_str
53
+
54
+ stock_gdfx_free_top_10.drop_duplicates('id_key', keep='last', inplace=True)
55
+
44
56
  # 排除香港结算公司 大于5%减持不用发公告 香港中央结算 HKSCC
45
57
  stock_gdfx_free_top_10['is_hk'] = stock_gdfx_free_top_10['shareholder_name'].apply(
46
58
  lambda shareholder_name: "HK" if shareholder_name.startswith('香港中央结算') or shareholder_name.startswith(
47
59
  'HKSCC') else "A")
48
60
 
49
- # 持股大于5% # 排除香港结算公司 大于5%减持不用发公告 香港中央结算 HKSCC
50
- stock_gdfx_free_top_10 = stock_gdfx_free_top_10.loc[
61
+ # 持股大于5% 减持需要发公告
62
+ # 排除香港结算公司不发公共 小于5%减持不用发公告
63
+ # 香港中央结算 HKSCC
64
+ stock_free_top_greater_than_5 = stock_gdfx_free_top_10.loc[
51
65
  (stock_gdfx_free_top_10['circulation_ratio'] >= 5) & (stock_gdfx_free_top_10['is_hk'] == 'A')]
52
66
 
53
- circulation_ratio = sum(stock_gdfx_free_top_10['circulation_ratio'])
67
+ stock_free_qfii = stock_gdfx_free_top_10.loc[stock_gdfx_free_top_10['shareholder_nature'] == 'QFII']
68
+
69
+ share_holder_sync_day = list(stock_gdfx_free_top_10['create_day'])[0]
70
+
71
+ # qfii 数量
72
+ qfii_number = stock_free_qfii.shape[0]
73
+ # qfii 类型
74
+ qfii_type = set_qfii_type(qfii_number, stock_free_qfii.copy())
75
+
76
+ circulation_ratio = sum(stock_free_top_greater_than_5['circulation_ratio'])
54
77
  mv_circulation_ratio = round((100 - circulation_ratio) / 100, 2)
55
78
  # 防止错误数据
56
79
  if mv_circulation_ratio < 0:
57
80
  mv_circulation_ratio = 1
58
- return mv_circulation_ratio
81
+
82
+ result_dict = {
83
+ 'mv_circulation_ratio': mv_circulation_ratio,
84
+ 'qfii_type': qfii_type,
85
+ 'qfii_number': qfii_number,
86
+ 'share_holder_sync_day': share_holder_sync_day
87
+
88
+ }
89
+ return result_dict
90
+
91
+
92
+ def set_qfii_type(qfii_number, stock_free_qfii):
93
+ if qfii_number > 0:
94
+ stock_free_qfii['new_change'] = stock_free_qfii['change']
95
+ stock_free_qfii.loc[stock_free_qfii['change_ratio'] == 0, 'new_change'] = 0
96
+ stock_free_qfii.loc[stock_free_qfii['change'] == '新进', 'new_change'] = \
97
+ stock_free_qfii['shares_number']
98
+ stock_free_qfii['new_change'] = stock_free_qfii['new_change'].astype(float)
99
+
100
+ stock_free_qfii_new_in = stock_free_qfii.loc[stock_free_qfii['change'] == '新进']
101
+ if data_frame_util.is_not_empty(stock_free_qfii_new_in):
102
+ qfii_type = 1
103
+ return qfii_type
104
+
105
+ stock_free_qfii_add = stock_free_qfii.loc[
106
+ (~stock_free_qfii['change'].isin(['不变', '新进'])) & (stock_free_qfii['new_change'] > 0)]
107
+
108
+ if data_frame_util.is_not_empty(stock_free_qfii_add):
109
+ qfii_type = 2
110
+ return qfii_type
111
+
112
+ stock_free_qfii_not_change = stock_free_qfii.loc[stock_free_qfii['change'] == '不变']
113
+
114
+ if data_frame_util.is_not_empty(stock_free_qfii_not_change):
115
+ qfii_type = 3
116
+ return qfii_type
117
+
118
+ stock_free_qfii_reduce = stock_free_qfii.loc[
119
+ (~stock_free_qfii['change'].isin(['不变', '新进'])) & (stock_free_qfii['new_change'] < 0)]
120
+
121
+ if data_frame_util.is_not_empty(stock_free_qfii_reduce):
122
+ qfii_type = 4
123
+ return qfii_type
124
+ else:
125
+ return 0
59
126
 
60
127
 
61
128
  def get_east_money_stock_info():
@@ -201,7 +268,13 @@ def single_thread_sync_company_info(east_money_stock_info,
201
268
  company_info_type['total_mv_sp'] = company_one.total_mv_sp
202
269
  company_info_type['flow_mv_level'] = company_one.flow_mv_level
203
270
  company_info_type['classification'] = company_one.classification
204
- company_info_type['mv_circulation_ratio'] = calculate_circulation_ratio(company_one.symbol)
271
+
272
+ result_dict = calculate_circulation_ratio(company_one.symbol)
273
+ company_info_type['mv_circulation_ratio'] = result_dict['mv_circulation_ratio']
274
+ company_info_type['qfii_type'] = result_dict['qfii_type']
275
+ company_info_type['qfii_number'] = result_dict['qfii_number']
276
+ company_info_type['share_holder_sync_day'] = result_dict['share_holder_sync_day']
277
+
205
278
  # 获取同花顺最新概念
206
279
  company_info_type = ths_concept_common_service_api.set_ths_concept(company_one.symbol, company_info_type)
207
280
  now_date = datetime.now()
@@ -395,17 +468,20 @@ def save_sw_data(company_info_type):
395
468
  def get_recent_year_income(symbol, company_info_type, exist_company_df):
396
469
  now_date = datetime.now()
397
470
  hour = now_date.hour
398
- if hour <= 15:
399
- exist_company_one_df = exist_company_df.loc[exist_company_df['_id'] == symbol]
400
- if data_frame_util.is_not_empty(exist_company_one_df):
401
- company_info_type['operate_profit'] = list(exist_company_one_df['operate_profit'])[0]
402
- company_info_type['total_operate_income'] = list(exist_company_one_df['total_operate_income'])[0]
403
- company_info_type['operate_date_name'] = ''
404
- else:
405
- company_info_type['operate_profit'] = 0
406
- company_info_type['total_operate_income'] = 0
407
- company_info_type['operate_date_name'] = ''
408
- return company_info_type
471
+ # if hour <= 15:
472
+ # exist_company_one_df = exist_company_df.loc[exist_company_df['_id'] == symbol]
473
+ # if data_frame_util.is_not_empty(exist_company_one_df):
474
+ # company_info_type['operate_profit'] = list(exist_company_one_df['operate_profit'])[0]
475
+ # company_info_type['total_operate_income'] = list(exist_company_one_df['total_operate_income'])[0]
476
+ # if 'operate_date_name' in exist_company_one_df:
477
+ # company_info_type['operate_date_name'] = list(exist_company_one_df['total_operate_income'])[0]
478
+ # else:
479
+ # company_info_type['operate_date_name'] = '暂无年报'
480
+ # else:
481
+ # company_info_type['operate_profit'] = 0
482
+ # company_info_type['total_operate_income'] = 0
483
+ # company_info_type['operate_date_name'] = '暂无年报'
484
+ # return company_info_type
409
485
  query = {'symbol': symbol, "REPORT_TYPE": "年报"}
410
486
  em_stock_profit = mongodb_util.descend_query(query, db_name_constant.EM_STOCK_PROFIT, 'REPORT_DATE', 1)
411
487
  if data_frame_util.is_not_empty(em_stock_profit):
@@ -420,7 +496,7 @@ def get_recent_year_income(symbol, company_info_type, exist_company_df):
420
496
  else:
421
497
  company_info_type['operate_profit'] = 0
422
498
  company_info_type['total_operate_income'] = 0
423
- company_info_type['operate_date_name'] = ''
499
+ company_info_type['operate_date_name'] = '暂无年报'
424
500
  company_info_type['operate_profit'] = round(
425
501
  company_info_type['operate_profit'] / common_service_fun_api.HUNDRED_MILLION, 2)
426
502
  company_info_type['total_operate_income'] = round(
@@ -442,4 +518,5 @@ if __name__ == '__main__':
442
518
  # un_report_company_info = mongodb_util.find_query_data(db_name_constant.COMPANY_INFO, query)
443
519
  # symbol_list = list(un_report_company_info['symbol'])
444
520
  sync_company_base_info(None)
445
- # group_by_industry()
521
+ sync_company_base_info(['688211', '601600', '920821', '920579', '688371', '920367'])
522
+
@@ -27,11 +27,8 @@ def sync_company_hold_info(symbol):
27
27
  now_date = datetime.now()
28
28
  sync_str_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
29
29
  if data_frame_util.is_not_empty(company_hold_info_df):
30
- query = {'symbol': symbol}
31
- result = mongodb_util.remove_data(query, db_name_constant.COMPANY_HOLDING_INFO)
32
- if result.acknowledged:
33
- company_hold_info_df['sync_str_date'] = sync_str_date
34
- mongodb_util.insert_mongo(company_hold_info_df, db_name_constant.COMPANY_HOLDING_INFO)
30
+ company_hold_info_df['sync_str_date'] = sync_str_date
31
+ mongodb_util.insert_mongo(company_hold_info_df, db_name_constant.COMPANY_HOLDING_INFO)
35
32
  except BaseException as e:
36
33
  logger.error("同步公司控股子公司信息:{},{}", symbol, e)
37
34
 
@@ -0,0 +1,161 @@
1
+ import os
2
+ import sys
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 17
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+ import mns_common.component.em.em_stock_info_api as em_stock_info_api
9
+ import mns_common.component.common_service_fun_api as common_service_fun_api
10
+ import mns_common.api.ths.company.company_product_area_industry_index_query as company_product_area_industry_index_query
11
+ from loguru import logger
12
+ from mns_common.db.MongodbUtil import MongodbUtil
13
+ import mns_common.constant.db_name_constant as db_name_constant
14
+ import mns_common.utils.data_frame_util as data_frame_util
15
+ import pandas as pd
16
+ from datetime import datetime
17
+
18
+ mongodb_util = MongodbUtil('27017')
19
+
20
+
21
+ def sync_company_product_area_industry_task(symbol):
22
+ now_date = datetime.now()
23
+ now_year = now_date.year
24
+ now_month = now_date.month
25
+
26
+ if now_month in [1, 2, 3, 4]:
27
+ period_time_year = str(now_year - 1) + "-12-31"
28
+ sync_company_product_area_industry(symbol, period_time_year)
29
+
30
+ if now_month in [4, 5, 6]:
31
+ period_time_one = str(now_year) + "-03-31"
32
+ sync_company_product_area_industry(symbol, period_time_one)
33
+
34
+ elif now_month in [7, 8, 9]:
35
+ period_time_two = str(now_year) + "-06-30"
36
+ sync_company_product_area_industry(symbol, period_time_two)
37
+
38
+ elif now_month in [10, 11, 12]:
39
+ period_time_three = str(now_year) + "-09-30"
40
+ sync_company_product_area_industry(symbol, period_time_three)
41
+
42
+
43
+ def sync_company_product_area_industry(symbol, date):
44
+ real_time_quotes_all_stocks = em_stock_info_api.get_a_stock_info()
45
+ real_time_quotes_all_stocks = common_service_fun_api.classify_symbol(real_time_quotes_all_stocks)
46
+ if symbol is not None:
47
+ real_time_quotes_all_stocks = real_time_quotes_all_stocks.loc[real_time_quotes_all_stocks['symbol'] == symbol]
48
+ for stock_one in real_time_quotes_all_stocks.itertuples():
49
+ try:
50
+ symbol = stock_one.symbol
51
+
52
+ classification = stock_one.classification
53
+ if classification in ['H', 'K']:
54
+ market = '17'
55
+ elif classification in ['S', 'C']:
56
+ market = '33'
57
+ elif classification in ['X']:
58
+ market = '151'
59
+
60
+ company_product_area_industry_list = company_product_area_industry_index_query.company_product_area_industry(
61
+ symbol, market, date)
62
+ for company_one in company_product_area_industry_list:
63
+ try:
64
+ analysis_type = company_one['analysis_type']
65
+ time_operate_index_item_list = company_one['time_operate_index_item_list']
66
+ time_operate_index_item_df = pd.DataFrame(time_operate_index_item_list)
67
+ if data_frame_util.is_empty(time_operate_index_item_df):
68
+ continue
69
+ time_operate_index_item_df['symbol'] = symbol
70
+ time_operate_index_item_df['analysis_type'] = analysis_type
71
+
72
+ time_operate_index_item_df['_id'] = symbol + '_' + time_operate_index_item_df[
73
+ 'time'] + '_' + analysis_type
74
+ handle_industry_area_product(time_operate_index_item_df, symbol)
75
+ except BaseException as e:
76
+ logger.error("同步经营数据异常:{},{}", symbol, e)
77
+
78
+ logger.info("同步经营数据完成:{}", stock_one.symbol)
79
+ except BaseException as e:
80
+ logger.error("同步经营数据:{},{}", stock_one.symbol, e)
81
+
82
+
83
+ def handle_industry_area_product(time_operate_index_item_df, symbol):
84
+ if data_frame_util.is_empty(time_operate_index_item_df):
85
+ return None
86
+
87
+ for business_one in time_operate_index_item_df.itertuples():
88
+ time = business_one.time
89
+ analysis_type = business_one.analysis_type
90
+
91
+ product_index_item_list = business_one.product_index_item_list
92
+ for product_one in product_index_item_list:
93
+ try:
94
+ # 初始化数据
95
+ income_amount = 0
96
+ income_percent = 0
97
+ cost_amount = 0
98
+ cost_percent = 0
99
+ gross_profit_amount = 0
100
+ gross_profit_percent = 0
101
+ gross_profit_rate_amount = 0
102
+ gross_profit_rate_percent = 0
103
+
104
+ product_name = product_one['product_name']
105
+ index_analysis_list = product_one['index_analysis_list']
106
+ for index_one in index_analysis_list:
107
+ try:
108
+ index_id = index_one['index_id']
109
+ if index_id == 'income':
110
+ income_amount = index_one['index_value']
111
+ income_percent = index_one['account']
112
+ elif index_id == 'cost':
113
+ cost_amount = index_one['index_value']
114
+ cost_percent = index_one['account']
115
+ elif index_id == 'gross_profit':
116
+ gross_profit_amount = index_one['index_value']
117
+ gross_profit_percent = index_one['account']
118
+
119
+ elif index_id == 'gross_profit_rate':
120
+ gross_profit_rate_amount = index_one['index_value']
121
+ gross_profit_rate_percent = index_one['account']
122
+ except BaseException as e:
123
+ logger.error("同步经营数据异常:{},{}", symbol, e)
124
+
125
+ id_key = symbol + '_' + time + '_' + analysis_type + '_' + product_name
126
+ result_dict = {
127
+ '_id': id_key,
128
+ 'symbol': symbol,
129
+ 'time': time,
130
+ 'analysis_type': analysis_type,
131
+ 'product_name': product_name,
132
+
133
+ 'income_amount': income_amount,
134
+ 'income_percent': income_percent,
135
+
136
+ 'cost_amount': cost_amount,
137
+ 'cost_percent': cost_percent,
138
+
139
+ 'gross_profit_amount': gross_profit_amount,
140
+ 'gross_profit_percent': gross_profit_percent,
141
+
142
+ 'gross_profit_rate_amount': gross_profit_rate_amount,
143
+ 'gross_profit_rate_percent': gross_profit_rate_percent,
144
+ }
145
+ result_dict_df = pd.DataFrame(result_dict, index=[1])
146
+ mongodb_util.save_mongo(result_dict_df, db_name_constant.COMPANY_BUSINESS_INFO)
147
+ except BaseException as e:
148
+ logger.error("同步经营数据异常:{},{}", symbol, e)
149
+
150
+
151
+ if __name__ == '__main__':
152
+ sync_company_product_area_industry('300211', '2025-09-30')
153
+ # sync_company_product_area_industry('002323')
154
+ # sync_company_product_area_industry('300901')
155
+ # sync_company_product_area_industry('603225')
156
+ # sync_company_product_area_industry('688039')
157
+ # sync_company_product_area_industry('600849')
158
+ # sync_company_product_area_industry('000508')
159
+ # sync_company_product_area_industry('810011')
160
+
161
+ sync_company_product_area_industry(None, None)
@@ -443,6 +443,9 @@ def filed_sort(company_info):
443
443
  "final_controller_name",
444
444
  "final_controller_rate",
445
445
  "mv_circulation_ratio",
446
+ 'qfii_type',
447
+ 'qfii_number',
448
+ 'share_holder_sync_day',
446
449
  "flow_mv_sp",
447
450
  "total_mv_sp",
448
451
  "now_price",
@@ -6,12 +6,14 @@ end = file_path.index('mns') + 17
6
6
  project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
8
 
9
- import mns_common.component.proxies.proxy_common_api as proxy_common_api
9
+ import mns_common.api.akshare.stock_zb_pool as stock_zb_pool
10
10
  from mns_common.db.MongodbUtil import MongodbUtil
11
11
  from loguru import logger
12
- import mns_common.api.em.real_time.east_money_stock_a_v2_api as east_money_stock_a_v2_api
12
+ import mns_common.api.em.real_time.real_time_quotes_repeat_api as real_time_quotes_repeat_api
13
13
  import mns_common.api.em.real_time.east_money_debt_api as east_money_debt_api
14
14
  import mns_common.api.em.real_time.east_money_etf_api as east_money_etf_api
15
+ import mns_common.api.em.real_time.east_money_stock_a_v2_api as east_money_stock_a_v2_api
16
+
15
17
  import mns_common.api.em.real_time.east_money_stock_hk_api as east_money_stock_hk_api
16
18
  import mns_common.constant.extra_income_db_name as extra_income_db_name
17
19
  import mns_common.component.cookie.cookie_info_service as cookie_info_service
@@ -23,50 +25,47 @@ mongodb_util = MongodbUtil('27017')
23
25
 
24
26
  def sync_all_em_stock_info():
25
27
  logger.info("同步东方财富a,etf,kzz,us,hk,信息开始")
26
- proxy_ip = proxy_common_api.generate_proxy_ip_api(5)
27
- proxies = {"https": proxy_ip}
28
+
28
29
  try:
29
30
  # 这里需要使用详情接口 获取全量数据
30
- em_a_stock_info_df = east_money_stock_a_v2_api.get_all_real_time_quotes(proxies)
31
+ em_a_stock_info_df = east_money_stock_a_v2_api.get_stock_real_time_quotes(10, 10)
31
32
  em_a_stock_info_df['_id'] = em_a_stock_info_df['symbol']
32
33
  mongodb_util.save_mongo(em_a_stock_info_df, extra_income_db_name.EM_A_STOCK_INFO)
33
34
  except BaseException as e:
34
35
  logger.error("同步东方财富A股信息异常:{}", e)
35
36
  try:
36
- em_etf_info = east_money_etf_api.get_etf_real_time_quotes(proxies)
37
- em_etf_info['_id'] = em_etf_info['symbol']
37
+ em_etf_info = east_money_etf_api.get_etf_real_time_quotes(30, 6)
38
38
  mongodb_util.save_mongo(em_etf_info, extra_income_db_name.EM_ETF_INFO)
39
39
  except BaseException as e:
40
40
  logger.error("同步东方财富ETF信息异常:{}", e)
41
41
 
42
42
  try:
43
- em_kzz_info = east_money_debt_api.get_debt_real_time_quotes(proxies)
43
+ em_kzz_info = east_money_debt_api.get_kzz_real_time_quotes(30, 6)
44
44
 
45
45
  em_kzz_info['_id'] = em_kzz_info['symbol']
46
46
  mongodb_util.save_mongo(em_kzz_info, extra_income_db_name.EM_KZZ_INFO)
47
47
  except BaseException as e:
48
48
  logger.error("同步东方财富可转债信息异常:{}", e)
49
49
 
50
- em_cookie = cookie_info_service.get_em_cookie()
51
- try:
52
- em_hk_stock_info = east_money_stock_hk_api.get_hk_real_time_quotes(em_cookie, proxies)
53
- em_hk_stock_info['_id'] = em_hk_stock_info['symbol']
54
- mongodb_util.save_mongo(em_hk_stock_info, extra_income_db_name.EM_HK_STOCK_INFO)
55
- except BaseException as e:
56
- logger.error("同步东方财富港股信息异常:{}", e)
57
-
58
- try:
59
- em_cookie = cookie_info_service.get_em_cookie()
60
- em_us_stock_info = east_money_stock_us_api.get_us_stock_real_time_quotes(em_cookie, proxies)
61
- em_us_stock_info['_id'] = em_us_stock_info['symbol']
62
- mongodb_util.save_mongo(em_us_stock_info, extra_income_db_name.EM_US_STOCK_INFO)
63
- em_us_etf_info = em_us_stock_info.loc[(em_us_stock_info['amount'] != 0) & (em_us_stock_info['total_mv'] == 0)]
64
- em_us_etf_info = em_us_etf_info.loc[em_us_etf_info['amount'] > 10000000]
65
- em_us_etf_info = em_us_etf_info.sort_values(by=['amount'], ascending=False)
66
- mongodb_util.save_mongo(em_us_etf_info, extra_income_db_name.EM_US_ETF_INFO)
67
-
68
- except BaseException as e:
69
- logger.error("同步东方财富美股信息异常:{}", e)
50
+ # em_cookie = cookie_info_service.get_em_cookie()
51
+ # try:
52
+ # em_hk_stock_info = east_money_stock_hk_api.get_hk_real_time_quotes(em_cookie, proxies)
53
+ # em_hk_stock_info['_id'] = em_hk_stock_info['symbol']
54
+ # mongodb_util.save_mongo(em_hk_stock_info, extra_income_db_name.EM_HK_STOCK_INFO)
55
+ # except BaseException as e:
56
+ # logger.error("同步东方财富港股信息异常:{}", e)
57
+ #
58
+ # try:
59
+ # em_cookie = cookie_info_service.get_em_cookie()
60
+ # em_us_stock_info = east_money_stock_us_api.get_us_stock_real_time_quotes(em_cookie, proxies)
61
+ # em_us_stock_info['_id'] = em_us_stock_info['symbol']
62
+ # mongodb_util.save_mongo(em_us_stock_info, extra_income_db_name.EM_US_STOCK_INFO)
63
+ # em_us_etf_info = em_us_stock_info.loc[(em_us_stock_info['amount'] != 0) & (em_us_stock_info['total_mv'] == 0)]
64
+ # em_us_etf_info = em_us_etf_info.sort_values(by=['amount'], ascending=False)
65
+ # mongodb_util.save_mongo(em_us_etf_info, extra_income_db_name.EM_US_ETF_INFO)
66
+ #
67
+ # except BaseException as e:
68
+ # logger.error("同步东方财富美股信息异常:{}", e)
70
69
  logger.info("同步东方财富a,etf,kzz,us,hk,信息完成")
71
70
 
72
71
 
@@ -7,7 +7,7 @@ project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
8
  from mns_common.db.MongodbUtil import MongodbUtil
9
9
  import pandas as pd
10
- import mns_common.utils.data_frame_util as data_frame_util
10
+ import mns_common.api.ths.concept.web.ths_concept_index_web as ths_concept_index_web
11
11
  import time
12
12
  from loguru import logger
13
13
  import mns_common.component.company.company_common_service_api as company_common_service_api
@@ -107,10 +107,7 @@ def update_null_name():
107
107
  exist_url = concept_one.url
108
108
 
109
109
  if name == '':
110
- concept_name_df = ths_concept_index_app.get_new_concept_from_app_search(concept_code)
111
- if data_frame_util.is_empty(concept_name_df):
112
- continue
113
- concept_name = list(concept_name_df['concept_name'])[0]
110
+ concept_name = ths_concept_index_web.get_concept_name(concept_code)
114
111
  query_concept = {"symbol": concept_code}
115
112
  new_values = {'$set': {"name": concept_name}}
116
113
  mongodb_util.update_one_query(query_concept, new_values, 'ths_concept_list')
@@ -131,7 +128,7 @@ def update_null_name():
131
128
 
132
129
 
133
130
  if __name__ == '__main__':
134
- update_one_concept_relevance_industry(886095)
131
+ # update_one_concept_relevance_industry(886095)
135
132
  update_null_name()
136
133
  logger.info("开始")
137
134
  update_ths_concept_info()
@@ -15,12 +15,15 @@ remote_mongodb_util = RemoteMongodbUtil('27017')
15
15
  local_mongodb_util = LocalMongodbUtil('27017')
16
16
 
17
17
  col_list = [
18
+ 'em_a_stock_info',
19
+ 'em_etf_info',
20
+ 'em_kzz_info',
21
+ 'em_hk_stock_info',
18
22
  'company_info',
19
23
  'company_remark_info',
20
24
  'company_holding_info',
21
25
  'industry_concept_remark',
22
26
  'trade_date_list',
23
- 'company_info',
24
27
  'de_list_stock',
25
28
  'kpl_best_choose_index',
26
29
  'kpl_best_choose_index_detail',
@@ -31,9 +34,11 @@ col_list = [
31
34
  'self_choose_stock',
32
35
  'stock_account_info',
33
36
  'ths_concept_list',
34
- 'stock_zt_pool',
37
+ 'stock_zt_pool_five',
35
38
  'ths_stock_concept_detail',
36
- 'stock_high_chg_pool'
39
+ 'stock_high_chg_pool',
40
+ 'today_new_concept_list',
41
+ 'ths_stock_concept_detail_app'
37
42
  ]
38
43
 
39
44
 
@@ -53,6 +58,20 @@ def remote_data():
53
58
  logger.error("同步失败:{},{}", e, col)
54
59
 
55
60
 
61
+ def sync_zt_data(str_day):
62
+ col = 'stock_zt_pool'
63
+ try:
64
+ query = {'str_day': str_day}
65
+ col_df = remote_mongodb_util.find_query_data(col, query)
66
+ if data_frame_util.is_not_empty(col_df):
67
+ col_df.replace([np.inf, -np.inf], 0, inplace=True)
68
+ local_mongodb_util.save_mongo(col_df, col)
69
+
70
+ logger.info("同步集合完成:{}", col)
71
+ except BaseException as e:
72
+ logger.error("同步失败:{},{}", e, col)
73
+
74
+
56
75
  def sync_open_data():
57
76
  query = {"$and": [{'trade_date': {"$gte": "2025-03-21"}}, {'trade_date': {"$lte": "2025-04-02"}}]}
58
77
  trade_date_list_df = remote_mongodb_util.find_query_data('trade_date_list', query)
@@ -72,5 +91,15 @@ def sync_open_data():
72
91
 
73
92
 
74
93
  if __name__ == '__main__':
75
- sync_open_data()
94
+ sync_zt_data('2025-09-17')
95
+ # sync_zt_data('2025-09-02')
96
+ remote_data()
97
+ # sync_zt_data('2025-08-26')
98
+ # sync_zt_data('2025-08-25')
99
+ # sync_zt_data('2025-08-26')
100
+ # remote_data()
101
+ # sync_zt_data('2025-07-23')
102
+ # sync_zt_data('2025-07-24')
103
+ # sync_zt_data('2025-07-25')
104
+ # sync_open_data()
76
105
  # remote_data()
@@ -14,8 +14,18 @@ remote_mongodb_util = RemoteMongodbUtil('27017')
14
14
  local_mongodb_util = LocalMongodbUtil('27017')
15
15
 
16
16
 
17
+ def create_index(db_name):
18
+ local_mongodb_util.create_index(db_name, [("symbol", 1)])
19
+
20
+ local_mongodb_util.create_index(db_name, [("str_now_date", 1)])
21
+
22
+ local_mongodb_util.create_index(db_name, [("symbol", 1), ("number", 1)])
23
+
24
+
17
25
  def sync_real_time_data(str_day, min_number, max_number):
18
26
  db_name = 'realtime_quotes_now_' + str_day
27
+ # 创建索引
28
+ create_index(db_name)
19
29
  while min_number <= max_number:
20
30
  query = {'number': min_number}
21
31
  data_df = remote_mongodb_util.find_query_data(db_name, query)
@@ -29,16 +39,18 @@ def sync_k_line(str_day):
29
39
  db_name = 'k_line_info'
30
40
  data_df = remote_mongodb_util.find_query_data(db_name, query)
31
41
  try:
32
- local_mongodb_util.save_mongo(data_df, db_name)
42
+ local_mongodb_util.insert_mongo(data_df, db_name)
33
43
  except BaseException as e:
34
44
  logger.error("出现异常:{}", e)
35
45
  pass
36
46
 
37
47
 
38
48
  if __name__ == '__main__':
39
-
40
- str_day_01 = '2025-06-25'
49
+ str_day_01 = '2025-09-10'
41
50
  sync_k_line(str_day_01)
51
+
52
+ # sync_real_time_data(str_day_01, 1, 2500)
53
+
42
54
  # sync_k_line(str_day_01)
43
55
  # sync_k_line('2024-11-13')
44
56
  # sync_k_line('2024-11-12')
@@ -37,8 +37,9 @@ def sync_k_line(str_day):
37
37
 
38
38
 
39
39
  if __name__ == '__main__':
40
- str_day_01 = '2025-02-27'
41
- sync_k_line(str_day_01)
40
+ sync_k_line('2025-08-27')
41
+ # sync_k_line('2025-07-24')
42
+ # sync_k_line('2025-07-25')
42
43
  # sync_k_line(str_day_01)
43
44
  # sync_k_line('2024-11-13')
44
45
  # sync_k_line('2024-11-12')
@@ -0,0 +1,7 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 16
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
@@ -7,7 +7,7 @@ project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
8
  import akshare as ak
9
9
  from mns_common.db.MongodbUtil import MongodbUtil
10
- import mns_scheduler.finance.finance_common_api as finance_common_api
10
+ import mns_scheduler.finance.em.finance_common_api as finance_common_api
11
11
  import mns_common.constant.db_name_constant as db_name_constant
12
12
 
13
13
  mongodb_util = MongodbUtil('27017')