mns-scheduler 1.4.7.4__tar.gz → 1.4.8.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 (186) hide show
  1. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/PKG-INFO +1 -1
  2. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py +1 -1
  3. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/clean/ths_concept_clean_api.py +62 -19
  4. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/sync/remote_data_sync_to_local.py +4 -5
  5. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/sync_financial_report_service_task.py +15 -14
  6. mns_scheduler-1.4.7.4/mns_scheduler/finance/xue_qiu/sync_xue_qiu_fiance_data.py → mns_scheduler-1.4.8.5/mns_scheduler/finance/xue_qiu/sync_xue_qiu_finance_data.py +17 -7
  7. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/theme/kpl_theme_sync_service.py +4 -2
  8. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/tfp/stock_tfp_info_sync.py +27 -6
  9. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zb/stock_zb_pool_sync.py +1 -1
  10. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zz_task/data_sync_task.py +9 -7
  11. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler.egg-info/PKG-INFO +1 -1
  12. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler.egg-info/SOURCES.txt +1 -1
  13. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/setup.py +1 -1
  14. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/README.md +0 -0
  15. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/__init__.py +0 -0
  16. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/auto_da_ban/__init__.py +0 -0
  17. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/auto_da_ban/auto_da_ban_service.py +0 -0
  18. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/__init__.py +0 -0
  19. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/clean/__init__.py +0 -0
  20. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/clean/company_info_clean_api.py +0 -0
  21. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/common/__init__.py +0 -0
  22. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/common/company_common_query_service.py +0 -0
  23. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/constant/__init__.py +0 -0
  24. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/constant/company_constant_data.py +0 -0
  25. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/de_list_stock/__init__.py +0 -0
  26. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/de_list_stock/de_list_stock_service.py +0 -0
  27. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/em_stock_info/__init__.py +0 -0
  28. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/em_stock_info/clean_em_us_hk_stock_info.py +0 -0
  29. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/sync/__init__.py +0 -0
  30. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/sync/company_info_set_service.py +0 -0
  31. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/sync/sync_company_info_task.py +0 -0
  32. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/__init__.py +0 -0
  33. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/company_announce_info_task.py +0 -0
  34. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/company_base_info_task.py +0 -0
  35. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/company_business_info_task.py +0 -0
  36. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/company_hold_info_task.py +0 -0
  37. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/company_industry_info_task.py +0 -0
  38. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/company_total_task.py +0 -0
  39. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/__init__.py +0 -0
  40. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/clean/__init__.py +0 -0
  41. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
  42. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/__init__.py +0 -0
  43. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/common/__init__.py +0 -0
  44. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +0 -0
  45. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
  46. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/detaill/__init__.py +0 -0
  47. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py +0 -0
  48. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/sync_new_index/__init__.py +0 -0
  49. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +0 -0
  50. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/update_concept_info/__init__.py +0 -0
  51. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
  52. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +0 -0
  53. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/__init__.py +0 -0
  54. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/col_move_service.py +0 -0
  55. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/db_status.py +0 -0
  56. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/__init__.py +0 -0
  57. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/col_move_script.py +0 -0
  58. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/db_move/__init__.py +0 -0
  59. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/db_move/col_move_one_service.py +0 -0
  60. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/sync/__init__.py +0 -0
  61. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/sync/local_mongo_util.py +0 -0
  62. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/sync/remote_mongo_util.py +0 -0
  63. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/sync/sync_hui_ce_test_data.py +0 -0
  64. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/sync/sync_hui_ce_test_data_01.py +0 -0
  65. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/update/__init__.py +0 -0
  66. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/update/update_col_field.py +0 -0
  67. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/dt/__init__.py +0 -0
  68. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
  69. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/__init__.py +0 -0
  70. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/em/__init__.py +0 -0
  71. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/em/em_financial_asset_liability_sync_service_api.py +0 -0
  72. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/em/em_financial_profit_sync_service_api.py +0 -0
  73. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/em/finance_common_api.py +0 -0
  74. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/xue_qiu/__init__.py +0 -0
  75. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/xue_qiu/down_load_xueqiu_report_api.py +0 -0
  76. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/hk/__init__.py +0 -0
  77. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
  78. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/hk/hk_industry_info_sync_service_api.py +0 -0
  79. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/industry/__init__.py +0 -0
  80. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/industry/ths/__init__.py +0 -0
  81. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/industry/ths/ths_industry_index_service.py +0 -0
  82. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/industry/ths/ths_industry_sync_service.py +0 -0
  83. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/irm/__init__.py +0 -0
  84. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/irm/api/__init__.py +0 -0
  85. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +0 -0
  86. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +0 -0
  87. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/irm/stock_irm_cninfo_service.py +0 -0
  88. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/irm/stock_question_id_service.py +0 -0
  89. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/__init__.py +0 -0
  90. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/__init__.py +0 -0
  91. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/daily/__init__.py +0 -0
  92. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +0 -0
  93. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/daily/daily_k_line_service.py +0 -0
  94. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
  95. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/k_line_info_clean_task.py +0 -0
  96. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/week_month/__init__.py +0 -0
  97. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +0 -0
  98. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +0 -0
  99. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/common/__init__.py +0 -0
  100. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/common/k_line_common_api.py +0 -0
  101. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/hot_stocks/__init__.py +0 -0
  102. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +0 -0
  103. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/month_week_daily/__init__.py +0 -0
  104. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/month_week_daily/bfq_k_line_sync.py +0 -0
  105. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/month_week_daily/daily_week_month_line_sync.py +0 -0
  106. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/sync_status/__init__.py +0 -0
  107. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/sync_status/k_line_sync_status_check.py +0 -0
  108. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/test/__init__.py +0 -0
  109. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/test/k_line_info_clean_his_data.py +0 -0
  110. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/year_quarter/__init__.py +0 -0
  111. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/year_quarter/year_quarter_line_sync.py +0 -0
  112. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/__init__.py +0 -0
  113. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/__init__.py +0 -0
  114. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/index/__init__.py +0 -0
  115. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
  116. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
  117. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/symbol/__init__.py +0 -0
  118. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
  119. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/symbol/sync_kpl_concept_symbol_choose_reason_api.py +0 -0
  120. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/total/__init__.py +0 -0
  121. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
  122. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/theme/__init__.py +0 -0
  123. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/lhb/__init__.py +0 -0
  124. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/lhb/stock_lhb_sync_service.py +0 -0
  125. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/open/__init__.py +0 -0
  126. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/open/sync_one_day_open_data_to_db_service.py +0 -0
  127. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/__init__.py +0 -0
  128. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/compliance/__init__.py +0 -0
  129. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +0 -0
  130. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/financial/__init__.py +0 -0
  131. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/financial/annual_report_audit_check_api.py +0 -0
  132. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/financial/net_assets_check_api.py +0 -0
  133. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/financial/profit_income_check_api.py +0 -0
  134. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +0 -0
  135. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/financial_report_risk_check_api.py +0 -0
  136. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/major_violations/__init__.py +0 -0
  137. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py +0 -0
  138. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/self/__init__.py +0 -0
  139. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/self/wei_pan_stock_api.py +0 -0
  140. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/test/__init__.py +0 -0
  141. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/test/fix_blask_list.py +0 -0
  142. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/transactions/__init__.py +0 -0
  143. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/transactions/transactions_check_api.py +0 -0
  144. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/self_choose/__init__.py +0 -0
  145. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/self_choose/ths_self_choose_service.py +0 -0
  146. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/__init__.py +0 -0
  147. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
  148. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/auto_login/__init__.py +0 -0
  149. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/auto_login/trader_auto_service.py +0 -0
  150. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
  151. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/balance/__init__.py +0 -0
  152. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/balance/ths_account_balance_service.py +0 -0
  153. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/sync_position_api.py +0 -0
  154. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/task/__init__.py +0 -0
  155. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/task/trader_task_service.py +0 -0
  156. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/tfp/__init__.py +0 -0
  157. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zb/__init__.py +0 -0
  158. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/__init__.py +0 -0
  159. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/connected_boards/__init__.py +0 -0
  160. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py +0 -0
  161. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/export/__init__.py +0 -0
  162. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/export/export_kcx_high_chg_open_data_to_excel.py +0 -0
  163. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/high_chg/__init__.py +0 -0
  164. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +0 -0
  165. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +0 -0
  166. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/open_data/__init__.py +0 -0
  167. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +0 -0
  168. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/script/__init__.py +0 -0
  169. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/script/fix_error_deal_day.py +0 -0
  170. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +0 -0
  171. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +0 -0
  172. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/script/sync_now_higt_chg_zt.py +0 -0
  173. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/zt_pool/__init__.py +0 -0
  174. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/zt_pool/em/__init__.py +0 -0
  175. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/zt_pool/em/em_zt_pool_service.py +0 -0
  176. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/zt_pool/em/em_zt_pool_sync_api.py +0 -0
  177. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/zt_pool/ths/__init__.py +0 -0
  178. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/zt_pool/ths/ths_zt_pool_sync_api.py +0 -0
  179. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +0 -0
  180. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zz_task/__init__.py +0 -0
  181. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zz_task/compensation/__init__.py +0 -0
  182. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zz_task/compensation/compensate_task.py +0 -0
  183. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler/zz_task/compensation/compensate_task_one_day.py +0 -0
  184. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler.egg-info/dependency_links.txt +0 -0
  185. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/mns_scheduler.egg-info/top_level.txt +0 -0
  186. {mns_scheduler-1.4.7.4 → mns_scheduler-1.4.8.5}/setup.cfg +0 -0
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns_scheduler
3
- Version: 1.4.7.4
3
+ Version: 1.4.8.5
@@ -34,7 +34,7 @@ def sync_all_em_stock_info():
34
34
  # 同步东方财富港股通信息
35
35
  sync_hk_ggt_stock_info()
36
36
  # 同步东方财富美股信息
37
- sync_us_stock_info()
37
+ # sync_us_stock_info()
38
38
 
39
39
  logger.info("同步东方财富a,etf,kzz,us,hk,信息完成")
40
40
 
@@ -13,7 +13,7 @@ from loguru import logger
13
13
  import mns_common.component.company.company_common_service_api as company_common_service_api
14
14
  import mns_common.constant.db_name_constant as db_name_constant
15
15
  import mns_common.component.concept.ths_concept_common_service_api as ths_concept_common_service_api
16
- import mns_common.api.ths.concept.app.ths_concept_index_app as ths_concept_index_app
16
+ import mns_common.utils.data_frame_util as data_frame_util
17
17
 
18
18
  mongodb_util = MongodbUtil('27017')
19
19
 
@@ -102,32 +102,75 @@ def update_null_name():
102
102
  ths_concept_list = ths_concept_list.sort_values(by=['_id'], ascending=False)
103
103
 
104
104
  for concept_one in ths_concept_list.itertuples():
105
- concept_code = concept_one.symbol
106
- name = concept_one.name
107
- exist_url = concept_one.url
105
+ try:
106
+ concept_code = concept_one.symbol
107
+ name = concept_one.name
108
+ exist_url = concept_one.url
109
+
110
+ if bool(1 - is_valid_name(name)):
111
+ # 更新空字符串
112
+ update_one_ths_concept_name(concept_code)
113
+ time.sleep(10)
114
+
115
+ if exist_url == '' or pd.isna(exist_url):
116
+ url = 'http://q.10jqka.com.cn/thshy/detail/code/' + str(concept_code)
117
+ str_now_time = concept_one.str_day + " " + "00:00:00"
118
+ query_concept = {"symbol": concept_code}
119
+ new_values = {'$set': {"url": url, "str_now_time": str_now_time}}
120
+ mongodb_util.update_one_query(query_concept, new_values, 'ths_concept_list')
121
+ except BaseException as e:
122
+ logger.error("更新空字符串名字异常:{},{}", concept_code, str(e))
123
+
124
+
125
+ # 更新一个概念 空字符串
126
+ def update_one_ths_concept_name(concept_code):
127
+ concept_name = ths_concept_index_web.get_concept_name(concept_code)
128
+ query_concept = {"symbol": concept_code}
129
+ new_values = {'$set': {"name": concept_name}}
130
+ mongodb_util.update_one_query(query_concept, new_values, 'ths_concept_list')
131
+
132
+ new_values_detail = {'$set': {"concept_name": concept_name}}
108
133
 
109
- if name == '':
110
- concept_name = ths_concept_index_web.get_concept_name(concept_code)
111
- query_concept = {"symbol": concept_code}
112
- new_values = {'$set': {"name": concept_name}}
113
- mongodb_util.update_one_query(query_concept, new_values, 'ths_concept_list')
134
+ query_concept_detail = {"concept_code": concept_code}
114
135
 
115
- new_values_detail = {'$set': {"concept_name": concept_name}}
136
+ mongodb_util.update_many(query_concept_detail, new_values_detail, 'ths_stock_concept_detail')
116
137
 
117
- query_concept_detail = {"concept_code": concept_code}
118
138
 
119
- mongodb_util.update_many(query_concept_detail, new_values_detail, 'ths_stock_concept_detail')
120
- time.sleep(10)
139
+ # 更新ths 详情里面空名称的数据
140
+ def query_ths_detail_null_name():
141
+ query = {"$or": [{"concept_name": ""},
142
+ {"concept_name": " "},
143
+ {"concept_name": {"$exists": False}}]}
144
+
145
+ ths_stock_concept_detail_list_df = mongodb_util.find_query_data(db_name_constant.THS_STOCK_CONCEPT_DETAIL, query)
146
+ if data_frame_util.is_empty(ths_stock_concept_detail_list_df):
147
+ return
148
+ null_concept_code_list = set(ths_stock_concept_detail_list_df['concept_code'])
149
+ for null_concept_code in null_concept_code_list:
150
+ try:
151
+ update_one_ths_concept_name(null_concept_code)
152
+ except BaseException as e:
153
+ logger.error("更新空字符串名字异常:{},{}", null_concept_code, str(e))
154
+
121
155
 
122
- if exist_url == '' or pd.isna(exist_url):
123
- url = 'http://q.10jqka.com.cn/thshy/detail/code/' + str(concept_code)
124
- str_now_time = concept_one.str_day + " " + "00:00:00"
125
- query_concept = {"symbol": concept_code}
126
- new_values = {'$set': {"url": url, "str_now_time": str_now_time}}
127
- mongodb_util.update_one_query(query_concept, new_values, 'ths_concept_list')
156
+ def is_valid_name(name):
157
+ """
158
+ 接口专用:判断name是否为有效非空值
159
+ :param name: 待判断的变量(字符串/NaN/None/任意类型)
160
+ :return: 布尔值 True=有效非空,False=空/空格/NaN/无效
161
+ """
162
+ # 1. 判断是否为 NaN(浮点型,且自身不等于自身)
163
+ if isinstance(name, float) and name != name:
164
+ return False
165
+ # 2. 判断是否为 None / 空字符串 / 纯空格字符串
166
+ if not name or not str(name).strip():
167
+ return False
168
+ # 3. 以上都不满足 → 有效非空值
169
+ return True
128
170
 
129
171
 
130
172
  if __name__ == '__main__':
173
+ query_ths_detail_null_name()
131
174
  # update_one_concept_relevance_industry(886095)
132
175
  update_null_name()
133
176
  logger.info("开始")
@@ -96,11 +96,10 @@ def sync_open_data():
96
96
 
97
97
 
98
98
  if __name__ == '__main__':
99
- sync_zt_data('2025-12-21')
100
- sync_zt_data('2025-12-23')
101
- sync_zt_data('2025-12-24')
102
- sync_zt_data('2025-12-25')
103
- sync_zt_data('2025-12-26')
99
+ sync_zt_data('2026-01-15')
100
+ sync_zt_data('2026-01-14')
101
+ sync_zt_data('2026-01-13')
102
+ sync_zt_data('2026-01-12')
104
103
  remote_data()
105
104
  # sync_zt_data('2025-08-26')
106
105
  # sync_zt_data('2025-08-25')
@@ -17,7 +17,7 @@ import mns_scheduler.risk.financial_report_risk_check_api as financial_report_ri
17
17
  import mns_common.utils.data_frame_util as data_frame_util
18
18
  import mns_scheduler.finance.em.finance_common_api as finance_common_api
19
19
  import mns_scheduler.risk.compliance.undisclosed_annual_report_api as undisclosed_annual_report_api
20
- import mns_scheduler.finance.xue_qiu.sync_xue_qiu_fiance_data as sync_xue_qiu_fiance_data
20
+ import mns_scheduler.finance.xue_qiu.sync_xue_qiu_finance_data as sync_xue_qiu_fiance_data
21
21
 
22
22
  mongodb_util = MongodbUtil('27017')
23
23
 
@@ -30,24 +30,25 @@ mongodb_util = MongodbUtil('27017')
30
30
  # 3季报:每年10月1日--10月31日
31
31
  # 4季报(年报) :每年1月1日--4月30日
32
32
 
33
- def sync_financial_report():
33
+ def sync_financial_report(symbol_list):
34
34
  now_date = datetime.now()
35
35
  now_year = now_date.year
36
36
  now_month = now_date.month
37
37
  sync_time = now_date.strftime('%Y-%m-%d %H:%M:%S')
38
38
 
39
39
  if now_month in [1, 2, 3, 4]:
40
- sync_xue_qiu_fiance_data.sync_xue_qiu_very_period_report(str(now_year - 1) + '年报', None)
40
+ sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year - 1) + '年报', symbol_list)
41
41
 
42
42
  # 年报
43
43
  period = 4
44
44
  period_time = str(now_year - 1) + "-12-31 00:00:00"
45
+ # 东财财报
45
46
  sync_em_profit_report(period_time, sync_time, period)
46
47
  sync_em_asset_liability_report(period_time, sync_time, period)
47
48
 
48
49
  # 一季报
49
50
  if now_month == 4:
50
- sync_xue_qiu_fiance_data.sync_xue_qiu_very_period_report(str(now_year) + '一季报', None)
51
+ sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year) + '一季报', symbol_list)
51
52
 
52
53
  period = 1
53
54
  period_time = str(now_year) + "-03-31 00:00:00"
@@ -58,7 +59,7 @@ def sync_financial_report():
58
59
 
59
60
  # 二季报
60
61
  elif now_month in [7, 8]:
61
- sync_xue_qiu_fiance_data.sync_xue_qiu_very_period_report(str(now_year) + '中报', None)
62
+ sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year) + '中报', symbol_list)
62
63
 
63
64
  period = 2
64
65
  period_time = str(now_year) + "-06-30 00:00:00"
@@ -69,7 +70,7 @@ def sync_financial_report():
69
70
 
70
71
  # 三季报
71
72
  elif now_month == 10:
72
- sync_xue_qiu_fiance_data.sync_xue_qiu_very_period_report(str(now_year) + '三季报', None)
73
+ sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year) + '三季报', symbol_list)
73
74
 
74
75
  period = 3
75
76
  period_time = str(now_year) + "-09-30 00:00:00"
@@ -78,8 +79,8 @@ def sync_financial_report():
78
79
 
79
80
  elif now_month == 5:
80
81
 
81
- sync_xue_qiu_fiance_data.sync_xue_qiu_very_period_report(str(now_year - 1) + '年报', None)
82
- sync_xue_qiu_fiance_data.sync_xue_qiu_very_period_report(str(now_year) + '一季报', None)
82
+ sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year - 1) + '年报', symbol_list)
83
+ sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year) + '一季报', symbol_list)
83
84
 
84
85
  # 补偿年报和一季度,出不了报告的
85
86
  miss_period_04 = 4
@@ -94,7 +95,7 @@ def sync_financial_report():
94
95
  sync_em_asset_liability_report(period_time_01, sync_time, period_01)
95
96
 
96
97
  elif now_month == 9:
97
- sync_xue_qiu_fiance_data.sync_xue_qiu_very_period_report(str(now_year) + '中报', None)
98
+ sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year) + '中报', symbol_list)
98
99
 
99
100
  # 补偿二季度
100
101
  period_02 = 2
@@ -103,14 +104,13 @@ def sync_financial_report():
103
104
  sync_em_asset_liability_report(period_time_02, sync_time, period_02)
104
105
 
105
106
  elif now_month in [11, 12]:
106
- sync_xue_qiu_fiance_data.sync_xue_qiu_very_period_report(str(now_year) + '三季报', None)
107
+ sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year) + '三季报', symbol_list)
107
108
 
108
109
  # 补偿三季度
109
110
  period_03 = 3
110
111
  period_time_03 = str(now_year) + "-09-30 00:00:00"
111
112
  sync_em_profit_report(period_time_03, sync_time, period_03)
112
113
  sync_em_asset_liability_report(period_time_03, sync_time, period_03)
113
-
114
114
  # 未出报告check
115
115
  undisclosed_annual_report_api.un_disclosed_report_check(sync_time, now_year, period, period_time)
116
116
  # 新股或者未出报告的
@@ -122,8 +122,8 @@ def sync_em_asset_liability_report(period_time, sync_time, period):
122
122
  un_report_asset_df = finance_common_api.find_un_report_symbol(period_time,
123
123
  db_name_constant.EM_STOCK_ASSET_LIABILITY)
124
124
  for un_report_asset_one in un_report_asset_df.itertuples():
125
+ symbol = un_report_asset_one.symbol
125
126
  try:
126
- symbol = un_report_asset_one.symbol
127
127
  new_asset_df = em_financial_asset_liability_sync_service_api.get_em_asset_liability_api(symbol)
128
128
  # 负债比
129
129
  new_asset_df['liability_ratio'] = round(
@@ -147,8 +147,9 @@ def sync_em_asset_liability_report(period_time, sync_time, period):
147
147
  def sync_em_profit_report(period_time, sync_time, period):
148
148
  un_report_profit_df = finance_common_api.find_un_report_symbol(period_time, db_name_constant.EM_STOCK_PROFIT)
149
149
  for un_report_profit_one in un_report_profit_df.itertuples():
150
+ symbol = un_report_profit_one.symbol
150
151
  try:
151
- symbol = un_report_profit_one.symbol
152
+
152
153
  new_profit_df = em_financial_profit_sync_service_api.get_em_profit_api(symbol)
153
154
  if data_frame_util.is_empty(new_profit_df):
154
155
  continue
@@ -168,8 +169,8 @@ def sync_miss_report(sync_time):
168
169
  query = {"total_operate_income": 0}
169
170
  un_report_company_info = mongodb_util.find_query_data(db_name_constant.COMPANY_INFO, query)
170
171
  for un_report_one in un_report_company_info.itertuples():
172
+ symbol = un_report_one.symbol
171
173
  try:
172
- symbol = un_report_one.symbol
173
174
  new_profit_df = em_financial_profit_sync_service_api.get_em_profit_api(symbol)
174
175
  if data_frame_util.is_empty(new_profit_df):
175
176
  continue
@@ -25,8 +25,12 @@ mongodb_util_27017 = MongodbUtil('27017')
25
25
  # cash_flow 现金流量
26
26
  # balance 资产负债
27
27
  # 同步所有股票 报表
28
- def sync_all_stocks_report():
28
+ def sync_all_stocks_report(symbol_list):
29
29
  em_a_stock_info_df = em_stock_info_api.get_a_stock_info()
30
+ # 代码列表不为空的时候
31
+ if len(symbol_list) > 0:
32
+ em_a_stock_info_df = em_a_stock_info_df.loc[em_a_stock_info_df['symbol'].isin(symbol_list)]
33
+
30
34
  em_a_stock_info_df = common_service_fun_api.add_pre_prefix(em_a_stock_info_df)
31
35
  # 或等效写法 df['A'].str[0:6]
32
36
 
@@ -35,7 +39,10 @@ def sync_all_stocks_report():
35
39
  xue_qiu_cookie = cookie_info_service.get_xue_qiu_cookie()
36
40
  report_type_list = ['income', 'balance', 'cash_flow']
37
41
  for stock_one in em_a_stock_info_df.itertuples():
38
- fail_list = save_one_symbol_data(stock_one, report_type_list, xue_qiu_cookie, True, fail_list, '', False)
42
+ fail_list = save_one_symbol_data(stock_one, report_type_list,
43
+ xue_qiu_cookie, True,
44
+ fail_list, '',
45
+ False)
39
46
 
40
47
  handle_number = 0
41
48
  # 处理失败的
@@ -49,10 +56,11 @@ def sync_all_stocks_report():
49
56
 
50
57
 
51
58
  def save_one_symbol_data(stock_one, report_type_list, xue_qiu_cookie, save_tag, fail_list, report_name, check_exist):
59
+ symbol = stock_one.symbol
52
60
  try:
53
61
  symbol_prefix = stock_one.symbol_prefix
54
62
  name = stock_one.name
55
- symbol = stock_one.symbol
63
+
56
64
  for report_type in report_type_list:
57
65
  if report_type == 'income':
58
66
  col_name = extra_income_db_name.XUE_QIU_LRB_INCOME
@@ -60,6 +68,8 @@ def save_one_symbol_data(stock_one, report_type_list, xue_qiu_cookie, save_tag,
60
68
  col_name = extra_income_db_name.XUE_QIU_ASSET_DEBT
61
69
  elif report_type == 'cash_flow':
62
70
  col_name = extra_income_db_name.XUE_QIU_CASH_FLOW
71
+ else:
72
+ col_name = extra_income_db_name.XUE_QIU_LRB_INCOME
63
73
  if check_exist:
64
74
  query_exist = {'symbol': symbol, 'report_name': report_name}
65
75
  # 存在数据 不在同步
@@ -130,10 +140,10 @@ def save_one_symbol_data(stock_one, report_type_list, xue_qiu_cookie, save_tag,
130
140
  return fail_list
131
141
 
132
142
 
133
- def sync_xue_qiu_very_period_report(report_name, symbol):
143
+ def sync_xue_qiu_each_period_report(report_name, symbol_list):
134
144
  em_a_stock_info_df = em_stock_info_api.get_a_stock_info()
135
- if symbol is not None:
136
- em_a_stock_info_df = em_a_stock_info_df.loc[em_a_stock_info_df['symbol'] == symbol]
145
+ if len(symbol_list) > 0:
146
+ em_a_stock_info_df = em_a_stock_info_df.loc[em_a_stock_info_df['symbol'].isin(symbol_list)]
137
147
  em_a_stock_info_df = common_service_fun_api.add_pre_prefix(em_a_stock_info_df)
138
148
  # 或等效写法 df['A'].str[0:6]
139
149
 
@@ -158,4 +168,4 @@ def sync_xue_qiu_very_period_report(report_name, symbol):
158
168
 
159
169
 
160
170
  if __name__ == '__main__':
161
- sync_all_stocks_report()
171
+ sync_all_stocks_report([])
@@ -49,7 +49,9 @@ def sync_new_kpl_theme_info():
49
49
  # 保存到主线详细列表
50
50
  sync_kpl_theme_detail(json_data, exist_max_theme_id)
51
51
  exist_max_theme_id = exist_max_theme_id + 1
52
+ exist_max_theme_id = exist_max_theme_id + 1
52
53
  except BaseException as e:
54
+ exist_max_theme_id = exist_max_theme_id + 1
53
55
  logger.error("更新新题材信息异常:{},{}", str(exist_max_theme_id), e)
54
56
 
55
57
 
@@ -102,10 +104,10 @@ def sync_kpl_theme_list(json_data, theme_id):
102
104
  'grade': 1,
103
105
  'stock_count': stock_list_df.shape[0],
104
106
  'valid': True,
105
- 'theme_classify':2,
107
+ 'theme_classify': 2,
106
108
  }
107
109
 
108
- query = {'_id': str(theme_id)}
110
+ query = {'theme_id': str(theme_id)}
109
111
 
110
112
  kpl_theme_one_df = mongodb_util.find_query_data(db_name_constant.KPL_THEME_LIST, query)
111
113
 
@@ -5,7 +5,7 @@ file_path = os.path.abspath(__file__)
5
5
  end = file_path.index('mns') + 17
6
6
  project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
-
8
+ from datetime import datetime
9
9
  import mns_common.component.tfp.stock_tfp_api as stock_tfp_api
10
10
  import mns_common.constant.db_name_constant as db_name_constant
11
11
  import mns_common.utils.data_frame_util as data_frame_util
@@ -16,7 +16,21 @@ mongodb_util = MongodbUtil('27017')
16
16
 
17
17
 
18
18
  def sync_stock_tfp(str_day):
19
- stock_tfp_df = stock_tfp_api.get_stock_tfp_by_day(str_day)
19
+ if str_day is None:
20
+ now_date = datetime.now()
21
+ last_year = now_date.year - 1
22
+ init_str_day = str(last_year) + '-01' + '-01'
23
+ stock_tfp_df = stock_tfp_api.get_stock_tfp_by_day(init_str_day)
24
+ str_day = now_date.strftime('%Y-%m-%d')
25
+ stock_tfp_df = handle_tfp_data(stock_tfp_df.copy(), str_day, 1)
26
+ else:
27
+ stock_tfp_df = stock_tfp_api.get_stock_tfp_by_day(str_day)
28
+ stock_tfp_df = handle_tfp_data(stock_tfp_df.copy(), str_day, 2)
29
+
30
+ return stock_tfp_df
31
+
32
+
33
+ def handle_tfp_data(stock_tfp_df, str_day, time_classify):
20
34
  if data_frame_util.is_not_empty(stock_tfp_df):
21
35
  stock_tfp_df['sus_begin_time'] = stock_tfp_df['sus_begin_time'].fillna('无')
22
36
  stock_tfp_df['sus_end_time'] = stock_tfp_df['sus_end_time'].fillna('无')
@@ -39,18 +53,25 @@ def sync_stock_tfp(str_day):
39
53
  stock_tfp_df.loc[stock_tfp_df['sus_reason'] == '连续停牌', 'type'] = '2'
40
54
  stock_tfp_df.loc[stock_tfp_df['sus_reason'] == '刊登重要公告', 'type'] = '3'
41
55
  stock_tfp_df.loc[stock_tfp_df['sus_reason'] == '拟筹划重大资产重组', 'type'] = '4'
56
+ stock_tfp_df.loc[stock_tfp_df['sus_reason'] == '交易异常波动', 'type'] = '5'
42
57
  stock_tfp_df['valid'] = True
43
58
  stock_tfp_df['str_day'] = str_day
44
59
  stock_tfp_df.loc[stock_tfp_df['type'] == '2', 'valid'] = False
45
60
  stock_tfp_df.loc[stock_tfp_df['type'] == '1', 'valid'] = False
46
61
 
47
- stock_tfp_df = stock_tfp_df.fillna(0)
62
+ if time_classify == 1:
63
+ stock_tfp_df = stock_tfp_df.loc[(stock_tfp_df['sus_begin_time'] >= str_day)
64
+ | (stock_tfp_df['sus_end_time'] >= str_day)
65
+ | (stock_tfp_df['resume_time'] >= str_day)
66
+ | (stock_tfp_df['sus_begin_date'] >= str_day)]
48
67
 
68
+ stock_tfp_df = stock_tfp_df.loc[stock_tfp_df['sus_period'] != '盘中停牌']
69
+ # 停复牌
70
+ stock_tfp_df = stock_tfp_df.fillna(0)
49
71
  mongodb_util.save_mongo(stock_tfp_df, db_name_constant.STOCK_TFP_INFO)
50
-
51
- return stock_tfp_df
72
+ return stock_tfp_df
52
73
 
53
74
 
54
75
  if __name__ == '__main__':
55
- df = sync_stock_tfp('2025-12-25')
76
+ df = sync_stock_tfp(None)
56
77
  print(df)
@@ -27,4 +27,4 @@ def sync_stock_zb_pool(str_now_day):
27
27
 
28
28
 
29
29
  if __name__ == '__main__':
30
- sync_stock_zb_pool('2025-12-11')
30
+ sync_stock_zb_pool('2026-01-21')
@@ -155,6 +155,7 @@ def realtime_quotes_now_zt_kc_data_sync():
155
155
  # 涨停数据同步到excel
156
156
  export_kcx_high_chg_open_data_to_excel.export_kc_zt_data(str_day)
157
157
 
158
+
158
159
  # 更新今日涨停相关的信息
159
160
  def update_today_zt_relation_info():
160
161
  now_date = datetime.now()
@@ -163,6 +164,7 @@ def update_today_zt_relation_info():
163
164
  logger.info('更新今日涨停相关的信息')
164
165
  em_zt_pool_sync_api.update_today_zt_relation_info(str_day)
165
166
 
167
+
166
168
  # 同步涨停池
167
169
  def sync_stock_zt_pool():
168
170
  now_date = datetime.now()
@@ -257,6 +259,7 @@ def sync_stock_gdfx_free_top_10_one_day():
257
259
  def concept_info_clean():
258
260
  # 更新空概念名称
259
261
  ths_concept_choose_api.update_null_name()
262
+ ths_concept_choose_api.query_ths_detail_null_name()
260
263
  # 更新概念包含个数
261
264
  ths_concept_choose_api.update_ths_concept_info()
262
265
  # 开盘啦概念信息更新
@@ -407,7 +410,7 @@ def self_choose_stock_task():
407
410
  # 同步财务报表
408
411
  def sync_financial_report_task():
409
412
  logger.info('同步财务报表任务')
410
- sync_financial_report_service_task.sync_financial_report()
413
+ sync_financial_report_service_task.sync_financial_report([])
411
414
 
412
415
 
413
416
  # 同步hk公司信息
@@ -429,9 +432,8 @@ def update_null_zt_reason():
429
432
 
430
433
  # 同步停复牌信息
431
434
  def sync_stock_tfp():
432
- now_date = datetime.now()
433
- str_day = now_date.strftime('%Y-%m-%d')
434
- stock_tfp_info_sync.sync_stock_tfp(str_day)
435
+ logger.info("同步停复牌信息")
436
+ stock_tfp_info_sync.sync_stock_tfp(None)
435
437
 
436
438
 
437
439
  # 同步同花顺行业信息
@@ -464,7 +466,7 @@ def check_k_line_sync_count():
464
466
  k_line_sync_status_check.check_k_line_sync_count()
465
467
 
466
468
 
467
- # 全量同步公司信息
469
+ # 全量同步公司信息 行业 业务 基本 控股 公告
468
470
  def sync_all_company_info_task():
469
471
  logger.info("全量同步公司信息")
470
472
  company_total_task.sync_all_company_task()
@@ -606,7 +608,7 @@ blockingScheduler.add_job(sync_all_company_info_task, 'cron', day_of_week='sat,s
606
608
  blockingScheduler.add_job(auto_da_ban_task, 'cron', hour='19', minute='29')
607
609
 
608
610
  # 同步开盘啦题材
609
- blockingScheduler.add_job(sync_kpl_theme, 'cron', hour='08,09,12,16', minute='20')
611
+ blockingScheduler.add_job(sync_kpl_theme, 'cron', hour='08,09,12,16', minute='30')
610
612
  # 更新今日涨停相关的信息
611
613
  blockingScheduler.add_job(update_today_zt_relation_info, 'cron', hour='15,20', minute='05')
612
614
 
@@ -614,4 +616,4 @@ print('定时任务启动成功')
614
616
  blockingScheduler.start()
615
617
  #
616
618
  # if __name__ == '__main__':
617
- # sync_company_product_area_industry()
619
+ # sync_kpl_theme()
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.4.7.4
3
+ Version: 1.4.8.5
@@ -69,7 +69,7 @@ mns_scheduler/finance/em/em_financial_profit_sync_service_api.py
69
69
  mns_scheduler/finance/em/finance_common_api.py
70
70
  mns_scheduler/finance/xue_qiu/__init__.py
71
71
  mns_scheduler/finance/xue_qiu/down_load_xueqiu_report_api.py
72
- mns_scheduler/finance/xue_qiu/sync_xue_qiu_fiance_data.py
72
+ mns_scheduler/finance/xue_qiu/sync_xue_qiu_finance_data.py
73
73
  mns_scheduler/hk/__init__.py
74
74
  mns_scheduler/hk/hk_company_info_sync_service_api.py
75
75
  mns_scheduler/hk/hk_industry_info_sync_service_api.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='mns_scheduler',
5
- version='1.4.7.4',
5
+ version='1.4.8.5',
6
6
  packages=find_packages(),
7
7
  install_requires=[], # 如果有依赖项,可以在这里列出
8
8
  )