mns-scheduler 1.3.6.0__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 (177) hide show
  1. mns_scheduler-1.4.1.5/PKG-INFO +3 -0
  2. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/base/sync_company_base_info_api.py +82 -8
  3. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/base/sync_company_hold_info_api.py +2 -5
  4. mns_scheduler-1.4.1.5/mns_scheduler/company_info/base/sync_company_product_area_industry.py +161 -0
  5. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/constant/company_constant_data.py +3 -0
  6. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py +27 -27
  7. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/finance/xue_qiu/sync_xue_qiu_fiance_data.py +4 -5
  8. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/irm/stock_irm_cninfo_service.py +3 -2
  9. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/kpl/selection/symbol/sync_kpl_concept_symbol_choose_reason_api.py +3 -0
  10. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py +4 -0
  11. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +17 -4
  12. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zz_task/data_sync_task.py +14 -4
  13. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5/mns_scheduler.egg-info}/PKG-INFO +1 -1
  14. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler.egg-info/SOURCES.txt +0 -2
  15. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/setup.py +2 -2
  16. mns-scheduler-1.3.6.0/mns_scheduler/company_info/base/sync_company_product_area_industry.py +0 -62
  17. mns-scheduler-1.3.6.0/mns_scheduler/debt/kzz_bond_info_sync.py +0 -33
  18. mns-scheduler-1.3.6.0/mns_scheduler/zz_task/__init__.py +0 -7
  19. mns-scheduler-1.3.6.0/mns_scheduler.egg-info/PKG-INFO +0 -3
  20. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/README.md +0 -0
  21. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/__init__.py +0 -0
  22. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/__init__.py +0 -0
  23. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/announce/__init__.py +0 -0
  24. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/announce/company_announce_sync_service.py +0 -0
  25. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/base/__init__.py +0 -0
  26. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/clean/__init__.py +0 -0
  27. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/clean/company_info_clean_api.py +0 -0
  28. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/constant/__init__.py +0 -0
  29. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/de_list_stock/__init__.py +0 -0
  30. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/de_list_stock/de_list_stock_service.py +0 -0
  31. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/em_stock_info/__init__.py +0 -0
  32. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/remark/__init__.py +0 -0
  33. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/company_info/remark/company_remark_info_sync.py +0 -0
  34. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/__init__.py +0 -0
  35. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/clean/__init__.py +0 -0
  36. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
  37. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/clean/ths_concept_clean_api.py +0 -0
  38. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/__init__.py +0 -0
  39. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/common/__init__.py +0 -0
  40. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +0 -0
  41. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
  42. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/detaill/__init__.py +0 -0
  43. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py +0 -0
  44. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/sync_new_index/__init__.py +0 -0
  45. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +0 -0
  46. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/update_concept_info/__init__.py +0 -0
  47. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
  48. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +0 -0
  49. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/__init__.py +0 -0
  50. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/col_move_service.py +0 -0
  51. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/db_status.py +0 -0
  52. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/__init__.py +0 -0
  53. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/col_move_script.py +0 -0
  54. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/db_move/__init__.py +0 -0
  55. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/db_move/col_move_one_service.py +0 -0
  56. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/sync/__init__.py +0 -0
  57. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/sync/local_mongo_util.py +0 -0
  58. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/sync/remote_data_sync_to_local.py +0 -0
  59. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/sync/remote_mongo_util.py +0 -0
  60. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/sync/sync_hui_ce_test_data.py +0 -0
  61. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/sync/sync_hui_ce_test_data_01.py +0 -0
  62. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/update/__init__.py +0 -0
  63. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/db/script/update/update_col_field.py +0 -0
  64. {mns-scheduler-1.3.6.0/mns_scheduler/debt → mns_scheduler-1.4.1.5/mns_scheduler/dt}/__init__.py +0 -0
  65. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
  66. {mns-scheduler-1.3.6.0/mns_scheduler/dt → mns_scheduler-1.4.1.5/mns_scheduler/finance}/__init__.py +0 -0
  67. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/finance/em/__init__.py +0 -0
  68. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/finance/em/em_financial_asset_liability_sync_service_api.py +0 -0
  69. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/finance/em/em_financial_profit_sync_service_api.py +0 -0
  70. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/finance/em/finance_common_api.py +0 -0
  71. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/finance/sync_financial_report_service_task.py +0 -0
  72. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/finance/xue_qiu/__init__.py +0 -0
  73. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/finance/xue_qiu/down_load_xueqiu_report_api.py +0 -0
  74. {mns-scheduler-1.3.6.0/mns_scheduler/finance → mns_scheduler-1.4.1.5/mns_scheduler/hk}/__init__.py +0 -0
  75. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
  76. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/hk/hk_industry_info_sync_service_api.py +0 -0
  77. {mns-scheduler-1.3.6.0/mns_scheduler/hk → mns_scheduler-1.4.1.5/mns_scheduler/industry}/__init__.py +0 -0
  78. {mns-scheduler-1.3.6.0/mns_scheduler/industry → mns_scheduler-1.4.1.5/mns_scheduler/industry/ths}/__init__.py +0 -0
  79. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/industry/ths/ths_industry_index_service.py +0 -0
  80. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/industry/ths/ths_industry_sync_service.py +0 -0
  81. {mns-scheduler-1.3.6.0/mns_scheduler/industry/ths → mns_scheduler-1.4.1.5/mns_scheduler/irm}/__init__.py +0 -0
  82. {mns-scheduler-1.3.6.0/mns_scheduler/irm → mns_scheduler-1.4.1.5/mns_scheduler/irm/api}/__init__.py +0 -0
  83. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +0 -0
  84. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +0 -0
  85. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/__init__.py +0 -0
  86. {mns-scheduler-1.3.6.0/mns_scheduler/irm/api → mns_scheduler-1.4.1.5/mns_scheduler/k_line/clean}/__init__.py +0 -0
  87. {mns-scheduler-1.3.6.0/mns_scheduler/k_line/clean → mns_scheduler-1.4.1.5/mns_scheduler/k_line/clean/daily}/__init__.py +0 -0
  88. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +0 -0
  89. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/clean/daily/daily_k_line_service.py +0 -0
  90. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
  91. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/clean/k_line_info_clean_task.py +0 -0
  92. {mns-scheduler-1.3.6.0/mns_scheduler/k_line/clean/daily → mns_scheduler-1.4.1.5/mns_scheduler/k_line/clean/week_month}/__init__.py +0 -0
  93. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +0 -0
  94. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +0 -0
  95. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/common/__init__.py +0 -0
  96. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/common/k_line_common_api.py +0 -0
  97. {mns-scheduler-1.3.6.0/mns_scheduler/k_line/clean/week_month → mns_scheduler-1.4.1.5/mns_scheduler/k_line/hot_stocks}/__init__.py +0 -0
  98. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +0 -0
  99. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/month_week_daily/__init__.py +0 -0
  100. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/month_week_daily/bfq_k_line_sync.py +0 -0
  101. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/month_week_daily/daily_week_month_line_sync.py +0 -0
  102. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/sync_status/__init__.py +0 -0
  103. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/sync_status/k_line_sync_status_check.py +0 -0
  104. {mns-scheduler-1.3.6.0/mns_scheduler/k_line/hot_stocks → mns_scheduler-1.4.1.5/mns_scheduler/k_line/test}/__init__.py +0 -0
  105. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/test/k_line_info_clean_his_data.py +0 -0
  106. {mns-scheduler-1.3.6.0/mns_scheduler/k_line/test → mns_scheduler-1.4.1.5/mns_scheduler/k_line/year_quarter}/__init__.py +0 -0
  107. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/k_line/year_quarter/year_quarter_line_sync.py +0 -0
  108. {mns-scheduler-1.3.6.0/mns_scheduler/k_line/year_quarter → mns_scheduler-1.4.1.5/mns_scheduler/kpl}/__init__.py +0 -0
  109. {mns-scheduler-1.3.6.0/mns_scheduler/kpl → mns_scheduler-1.4.1.5/mns_scheduler/kpl/selection}/__init__.py +0 -0
  110. {mns-scheduler-1.3.6.0/mns_scheduler/kpl/selection → mns_scheduler-1.4.1.5/mns_scheduler/kpl/selection/index}/__init__.py +0 -0
  111. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
  112. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
  113. {mns-scheduler-1.3.6.0/mns_scheduler/kpl/selection/index → mns_scheduler-1.4.1.5/mns_scheduler/kpl/selection/symbol}/__init__.py +0 -0
  114. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
  115. {mns-scheduler-1.3.6.0/mns_scheduler/kpl/selection/symbol → mns_scheduler-1.4.1.5/mns_scheduler/kpl/selection/total}/__init__.py +0 -0
  116. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
  117. {mns-scheduler-1.3.6.0/mns_scheduler/kpl/selection/total → mns_scheduler-1.4.1.5/mns_scheduler/lhb}/__init__.py +0 -0
  118. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/lhb/stock_lhb_sync_service.py +0 -0
  119. {mns-scheduler-1.3.6.0/mns_scheduler/lhb → mns_scheduler-1.4.1.5/mns_scheduler/open}/__init__.py +0 -0
  120. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/open/sync_one_day_open_data_to_db_service.py +0 -0
  121. {mns-scheduler-1.3.6.0/mns_scheduler/open → mns_scheduler-1.4.1.5/mns_scheduler/risk}/__init__.py +0 -0
  122. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/compliance/__init__.py +0 -0
  123. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +0 -0
  124. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/financial/__init__.py +0 -0
  125. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/financial/annual_report_audit_check_api.py +0 -0
  126. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/financial/net_assets_check_api.py +0 -0
  127. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/financial/profit_income_check_api.py +0 -0
  128. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +0 -0
  129. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/financial_report_risk_check_api.py +0 -0
  130. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/major_violations/__init__.py +0 -0
  131. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py +0 -0
  132. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/self/__init__.py +0 -0
  133. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/self/wei_pan_stock_api.py +0 -0
  134. {mns-scheduler-1.3.6.0/mns_scheduler/risk → mns_scheduler-1.4.1.5/mns_scheduler/risk/test}/__init__.py +0 -0
  135. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/test/fix_blask_list.py +0 -0
  136. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/transactions/__init__.py +0 -0
  137. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/risk/transactions/transactions_check_api.py +0 -0
  138. {mns-scheduler-1.3.6.0/mns_scheduler/risk/test → mns_scheduler-1.4.1.5/mns_scheduler/self_choose}/__init__.py +0 -0
  139. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/self_choose/ths_self_choose_service.py +0 -0
  140. {mns-scheduler-1.3.6.0/mns_scheduler/self_choose → mns_scheduler-1.4.1.5/mns_scheduler/trade}/__init__.py +0 -0
  141. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
  142. {mns-scheduler-1.3.6.0/mns_scheduler/trade → mns_scheduler-1.4.1.5/mns_scheduler/trade/auto_login}/__init__.py +0 -0
  143. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/auto_login/trader_auto_service.py +0 -0
  144. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
  145. {mns-scheduler-1.3.6.0/mns_scheduler/trade/auto_login → mns_scheduler-1.4.1.5/mns_scheduler/trade/balance}/__init__.py +0 -0
  146. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/balance/ths_account_balance_service.py +0 -0
  147. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/sync_position_api.py +0 -0
  148. {mns-scheduler-1.3.6.0/mns_scheduler/trade/balance → mns_scheduler-1.4.1.5/mns_scheduler/trade/task}/__init__.py +0 -0
  149. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/task/trader_task_service.py +0 -0
  150. {mns-scheduler-1.3.6.0/mns_scheduler/trade/task → mns_scheduler-1.4.1.5/mns_scheduler/trade/tfp}/__init__.py +0 -0
  151. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/trade/tfp/stock_tfp_info_sync.py +0 -0
  152. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zb/__init__.py +0 -0
  153. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
  154. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/__init__.py +0 -0
  155. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/connected_boards/__init__.py +0 -0
  156. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py +0 -0
  157. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/export/__init__.py +0 -0
  158. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/export/export_kcx_high_chg_open_data_to_excel.py +0 -0
  159. {mns-scheduler-1.3.6.0/mns_scheduler/trade/tfp → mns_scheduler-1.4.1.5/mns_scheduler/zt/high_chg}/__init__.py +0 -0
  160. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +0 -0
  161. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +0 -0
  162. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/open_data/__init__.py +0 -0
  163. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +0 -0
  164. {mns-scheduler-1.3.6.0/mns_scheduler/zt/high_chg → mns_scheduler-1.4.1.5/mns_scheduler/zt/script}/__init__.py +0 -0
  165. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/script/fix_error_deal_day.py +0 -0
  166. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +0 -0
  167. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +0 -0
  168. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/script/sync_now_higt_chg_zt.py +0 -0
  169. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/zt_pool/__init__.py +0 -0
  170. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py +0 -0
  171. {mns-scheduler-1.3.6.0/mns_scheduler/zt/script → mns_scheduler-1.4.1.5/mns_scheduler/zz_task}/__init__.py +0 -0
  172. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zz_task/compensation/__init__.py +0 -0
  173. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zz_task/compensation/compensate_task.py +0 -0
  174. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler/zz_task/compensation/compensate_task_one_day.py +0 -0
  175. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler.egg-info/dependency_links.txt +0 -0
  176. {mns-scheduler-1.3.6.0 → mns_scheduler-1.4.1.5}/mns_scheduler.egg-info/top_level.txt +0 -0
  177. {mns-scheduler-1.3.6.0 → 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
@@ -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()
@@ -445,4 +518,5 @@ if __name__ == '__main__':
445
518
  # un_report_company_info = mongodb_util.find_query_data(db_name_constant.COMPANY_INFO, query)
446
519
  # symbol_list = list(un_report_company_info['symbol'])
447
520
  sync_company_base_info(None)
448
- # 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,49 +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.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)
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)
69
69
  logger.info("同步东方财富a,etf,kzz,us,hk,信息完成")
70
70
 
71
71
 
@@ -16,6 +16,7 @@ import time
16
16
  import mns_common.utils.data_frame_util as data_frame_util
17
17
  import mns_common.component.cookie.cookie_info_service as cookie_info_service
18
18
  from datetime import datetime
19
+ import mns_common.component.em.em_stock_info_api as em_stock_info_api
19
20
 
20
21
  mongodb_util_27017 = MongodbUtil('27017')
21
22
 
@@ -25,9 +26,7 @@ mongodb_util_27017 = MongodbUtil('27017')
25
26
  # balance 资产负债
26
27
  # 同步所有股票 报表
27
28
  def sync_all_stocks_report():
28
- em_a_stock_info_df = mongodb_util_27017.find_all_data('em_a_stock_info')
29
- em_a_stock_info_df = em_a_stock_info_df[~em_a_stock_info_df['symbol'].astype(str).str.startswith(('8', '4'))]
30
-
29
+ em_a_stock_info_df = em_stock_info_api.get_a_stock_info()
31
30
  em_a_stock_info_df = common_service_fun_api.add_pre_prefix(em_a_stock_info_df)
32
31
  # 或等效写法 df['A'].str[0:6]
33
32
 
@@ -124,7 +123,7 @@ def save_one_symbol_data(stock_one, report_type_list, xue_qiu_cookie, save_tag,
124
123
 
125
124
  if symbol in fail_list:
126
125
  fail_list.remove(symbol)
127
- logger.info("同步完成数据:{}:{}", symbol, name)
126
+ logger.info("同步财务数据完成:{}:{}", symbol, name, report_name)
128
127
  except BaseException as e:
129
128
  logger.error("同步错误:{},异常信息:{}", symbol, e)
130
129
  fail_list.append(symbol)
@@ -132,7 +131,7 @@ def save_one_symbol_data(stock_one, report_type_list, xue_qiu_cookie, save_tag,
132
131
 
133
132
 
134
133
  def sync_xue_qiu_very_period_report(report_name, symbol):
135
- em_a_stock_info_df = mongodb_util_27017.find_all_data('em_a_stock_info')
134
+ em_a_stock_info_df = em_stock_info_api.get_a_stock_info()
136
135
  if symbol is not None:
137
136
  em_a_stock_info_df = em_a_stock_info_df.loc[em_a_stock_info_df['symbol'] == symbol]
138
137
  em_a_stock_info_df = common_service_fun_api.add_pre_prefix(em_a_stock_info_df)
@@ -130,7 +130,7 @@ def sync_symbols_interactive_questions(symbol_list):
130
130
  real_time_quotes_all_stocks = common_service_fun_api.classify_symbol(real_time_quotes_all_stocks)
131
131
  real_time_quotes_all_stocks = real_time_quotes_all_stocks.sort_values(by=['chg'], ascending=False)
132
132
  fail_symbol_list = []
133
- if symbol_list is not None:
133
+ if len(symbol_list) != 0:
134
134
  real_time_quotes_all_stocks = real_time_quotes_all_stocks.loc[
135
135
  real_time_quotes_all_stocks['symbol'].isin(symbol_list)]
136
136
  for stock_one in real_time_quotes_all_stocks.itertuples():
@@ -193,7 +193,8 @@ def save_new_data(stock_irm_cninfo_df):
193
193
 
194
194
 
195
195
  if __name__ == '__main__':
196
+ sync_symbols_interactive_questions([])
196
197
  get_stock_irm_cninfo_sh_api('688778')
197
198
  fail_symbol_list_01 = ['000638', '002886', '688778', '688766', '688733', '688778', '688793', '688787']
198
199
  # get_stock_irm_cninfo_sh_api('603633')
199
- sync_symbols_interactive_questions(fail_symbol_list_01)
200
+ # sync_symbols_interactive_questions(None)
@@ -63,6 +63,9 @@ def update_symbol_new_concept_reason(plate_code, kpl_symbol_list):
63
63
  new_values = {"$set": {"long": choose_reason}}
64
64
  mongodb_util.update_many(update_query, new_values,
65
65
  db_name_constant.KPL_BEST_CHOOSE_INDEX_DETAIL)
66
+ # 更新今日新增概念列表 入选原因
67
+ mongodb_util.update_many(update_query, new_values,
68
+ db_name_constant.TODAY_NEW_CONCEPT_LIST)
66
69
  except BaseException as e:
67
70
  logger.error("更新开票啦入选原因异常:{},{},{}", symbol, plate_code, e)
68
71
 
@@ -20,6 +20,7 @@ import mns_common.component.em.em_real_time_quotes_api as em_real_time_quotes_ap
20
20
  from datetime import datetime
21
21
  import mns_common.api.ths.company.ths_company_info_api as ths_company_info_api
22
22
  import mns_common.component.cookie.cookie_info_service as cookie_info_service
23
+ import mns_common.api.ths.zt.ths_stock_zt_pool_api as ths_stock_zt_pool_api
23
24
 
24
25
  '''
25
26
  东方财富涨停池
@@ -97,6 +98,9 @@ def save_zt_info(str_day):
97
98
 
98
99
  zt_analysis = ths_company_info_api.get_company_hot_info(stock_one.symbol,
99
100
  cookie_info_service.get_ths_cookie())
101
+ if zt_analysis == '':
102
+ zt_analysis = ths_stock_zt_pool_api.zt_analyse(stock_one.symbol)
103
+
100
104
  stock_em_zt_pool_df_data.loc[
101
105
  stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'zt_analysis'] = zt_analysis
102
106
 
@@ -14,9 +14,15 @@ from loguru import logger
14
14
 
15
15
 
16
16
  def update_null_zt_reason(str_day):
17
- query = {"str_day": str_day, "$or": [{"zt_reason": "0", },
17
+ query = {"str_day": str_day, "$or": [{"zt_reason": "0"},
18
18
  {"zt_reason": ""},
19
- {"zt_reason": float('nan')}]}
19
+ {"zt_reason": float('nan')},
20
+
21
+ {"zt_analysis": "0"},
22
+ {"zt_analysis": ""},
23
+ {"zt_analysis": float('nan')},
24
+
25
+ ]}
20
26
  stock_zt_pool_df_null_zt_reason = mongodb_util.find_query_data('stock_zt_pool', query)
21
27
  if data_frame_util.is_empty(stock_zt_pool_df_null_zt_reason):
22
28
  return None
@@ -30,11 +36,18 @@ def update_null_zt_reason(str_day):
30
36
  ths_pool_zt_reason_one_df = ths_zt_pool_df_data.loc[
31
37
  ths_zt_pool_df_data['symbol'] == stock_zt_one.symbol]
32
38
  if data_frame_util.is_not_empty(ths_pool_zt_reason_one_df):
39
+ # 涨停原因
33
40
  stock_zt_pool_df_one_df = stock_zt_pool_df_null_zt_reason.loc[
34
41
  stock_zt_pool_df_null_zt_reason['symbol'] == stock_zt_one.symbol]
35
42
  stock_zt_pool_df_one_df['zt_reason'] = list(ths_pool_zt_reason_one_df['zt_reason'])[0]
43
+
44
+ # 涨停分析
45
+ zt_analysis = ths_stock_zt_pool_api.zt_analyse(stock_zt_one.symbol)
46
+ stock_zt_pool_df_one_df['zt_analysis'] = zt_analysis
47
+
36
48
  mongodb_util.save_mongo(stock_zt_pool_df_one_df, 'stock_zt_pool')
37
- no_reason_list.remove(stock_zt_one.symbol)
49
+ if stock_zt_one.symbol in no_reason_list:
50
+ no_reason_list.remove(stock_zt_one.symbol)
38
51
  except BaseException as e:
39
52
  logger.error("出现异常:{},{}", stock_zt_one.symbol, e)
40
53
  continue
@@ -44,4 +57,4 @@ def update_null_zt_reason(str_day):
44
57
 
45
58
 
46
59
  if __name__ == '__main__':
47
- update_null_zt_reason('2024-12-12')
60
+ update_null_zt_reason('2025-11-03')
@@ -61,6 +61,7 @@ import mns_scheduler.trade.tfp.stock_tfp_info_sync as stock_tfp_info_sync
61
61
  import mns_scheduler.industry.ths.ths_industry_sync_service as ths_industry_sync_service
62
62
  import mns_scheduler.k_line.year_quarter.year_quarter_line_sync as year_quarter_line_sync
63
63
  import mns_scheduler.k_line.sync_status.k_line_sync_status_check as k_line_sync_status_check
64
+ import mns_scheduler.company_info.base.sync_company_product_area_industry as sync_company_product_area_industry_api
64
65
 
65
66
 
66
67
  # 同步交易日期任务完成
@@ -353,7 +354,7 @@ def sync_all_interactive_questions():
353
354
  tag = bool(1 - trade_date_common_service_api.is_trade_day(str_day))
354
355
  if tag:
355
356
  logger.info('同步互动回答')
356
- stock_irm_cninfo_service.sync_all_interactive_questions(None)
357
+ stock_irm_cninfo_service.sync_symbols_interactive_questions([])
357
358
 
358
359
 
359
360
  # # 重开定时任务同步
@@ -445,6 +446,11 @@ def check_k_line_sync_count():
445
446
  k_line_sync_status_check.check_k_line_sync_count()
446
447
 
447
448
 
449
+ # 同步公司产品区域信息
450
+ def sync_company_product_area_industry():
451
+ sync_company_product_area_industry_api.sync_company_product_area_industry_task(None)
452
+
453
+
448
454
  # # 定义BlockingScheduler
449
455
  blockingScheduler = BlockingScheduler()
450
456
 
@@ -468,10 +474,10 @@ blockingScheduler.add_job(sync_position, 'cron', hour='0,08,09', minute='14')
468
474
  blockingScheduler.add_job(update_company_base_info, 'cron', hour='08,18', minute='05')
469
475
 
470
476
  # 同步互动回答
471
- blockingScheduler.add_job(sync_all_interactive_questions, 'cron', hour='08,12,17', minute='06')
477
+ blockingScheduler.add_job(sync_all_interactive_questions, 'cron', hour='06,17', minute='30')
472
478
 
473
479
  # 同步十大流通股东信息
474
- blockingScheduler.add_job(sync_stock_gdfx_free_top_10_one_day, 'cron', hour='08,22', minute='23')
480
+ blockingScheduler.add_job(sync_stock_gdfx_free_top_10_one_day, 'cron', hour='06,18', minute='05')
475
481
 
476
482
  # 同步港股公司和行业信息
477
483
  blockingScheduler.add_job(sync_hk_company_industry_info, 'cron', hour='08,15', minute='10')
@@ -562,8 +568,12 @@ blockingScheduler.add_job(sync_all_kpl_plate_info, 'interval', minutes=5, max_in
562
568
  # check 前复权k线和下一个交易日策略k线数据同步状态
563
569
  blockingScheduler.add_job(check_k_line_sync_count, 'cron', hour='0,23', minute='10')
564
570
 
571
+ # 同步公司产品区域信息
572
+ blockingScheduler.add_job(sync_company_product_area_industry, 'cron', day_of_week='sat,sun', hour='10,20',
573
+ minute='10')
574
+
565
575
  print('定时任务启动成功')
566
576
  blockingScheduler.start()
567
577
  #
568
578
  # if __name__ == '__main__':
569
- # generate_new_day_k_line_info()
579
+ # sync_company_product_area_industry()
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.3.6.0
3
+ Version: 1.4.1.5
@@ -52,8 +52,6 @@ mns_scheduler/db/script/sync/sync_hui_ce_test_data.py
52
52
  mns_scheduler/db/script/sync/sync_hui_ce_test_data_01.py
53
53
  mns_scheduler/db/script/update/__init__.py
54
54
  mns_scheduler/db/script/update/update_col_field.py
55
- mns_scheduler/debt/__init__.py
56
- mns_scheduler/debt/kzz_bond_info_sync.py
57
55
  mns_scheduler/dt/__init__.py
58
56
  mns_scheduler/dt/stock_dt_pool_sync.py
59
57
  mns_scheduler/finance/__init__.py
@@ -1,8 +1,8 @@
1
1
  from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
- name='mns-scheduler',
5
- version='1.3.6.0',
4
+ name='mns_scheduler',
5
+ version='1.4.1.5',
6
6
  packages=find_packages(),
7
7
  install_requires=[], # 如果有依赖项,可以在这里列出
8
8
  )