cnhkmcp 2.1.2__py3-none-any.whl → 2.1.3__py3-none-any.whl

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 (113) hide show
  1. {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.3.dist-info}/METADATA +1 -1
  2. cnhkmcp-2.1.3.dist-info/RECORD +6 -0
  3. cnhkmcp-2.1.3.dist-info/top_level.txt +1 -0
  4. cnhkmcp/__init__.py +0 -125
  5. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/README.md +0 -38
  6. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/ace.log +0 -0
  7. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/config.json +0 -6
  8. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/ace_lib.py +0 -1510
  9. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/fetch_all_datasets.py +0 -157
  10. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/fetch_all_documentation.py +0 -132
  11. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/fetch_all_operators.py +0 -99
  12. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/get_knowledgeBase_tool/helpful_functions.py +0 -180
  13. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/icon.ico +0 -0
  14. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/icon.png +0 -0
  15. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/knowledge/test.txt +0 -1
  16. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/main.py +0 -576
  17. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/process_knowledge_base.py +0 -281
  18. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/rag_engine.py +0 -408
  19. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/requirements.txt +0 -7
  20. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242/run.bat +0 -3
  21. cnhkmcp/untracked/AI/321/206/320/261/320/234/321/211/320/255/320/262/321/206/320/237/320/242/321/204/342/225/227/342/225/242//321/211/320/266/320/246/321/206/320/274/320/261/321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/231/320/243/321/205/342/225/235/320/220/321/206/320/230/320/241.py +0 -265
  22. cnhkmcp/untracked/APP/.gitignore +0 -32
  23. cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md +0 -112
  24. cnhkmcp/untracked/APP/README.md +0 -309
  25. cnhkmcp/untracked/APP/Tranformer/Transformer.py +0 -4985
  26. cnhkmcp/untracked/APP/Tranformer/ace.log +0 -0
  27. cnhkmcp/untracked/APP/Tranformer/ace_lib.py +0 -1510
  28. cnhkmcp/untracked/APP/Tranformer/helpful_functions.py +0 -180
  29. cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json +0 -2421
  30. cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates_/321/207/320/264/342/225/221/321/204/342/225/233/320/233.json +0 -654
  31. cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json +0 -1034
  32. cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_success.json +0 -444
  33. cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_/321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/320/237/320/277/321/207/320/253/342/224/244/321/206/320/236/320/265/321/210/342/225/234/342/225/234/321/205/320/225/320/265Machine_lib.json +0 -22
  34. cnhkmcp/untracked/APP/Tranformer/parsetab.py +0 -60
  35. cnhkmcp/untracked/APP/Tranformer/template_summary.txt +0 -3182
  36. cnhkmcp/untracked/APP/Tranformer/transformer_config.json +0 -7
  37. cnhkmcp/untracked/APP/Tranformer/validator.py +0 -889
  38. cnhkmcp/untracked/APP/ace.log +0 -69
  39. cnhkmcp/untracked/APP/ace_lib.py +0 -1510
  40. cnhkmcp/untracked/APP/blueprints/__init__.py +0 -6
  41. cnhkmcp/untracked/APP/blueprints/feature_engineering.py +0 -347
  42. cnhkmcp/untracked/APP/blueprints/idea_house.py +0 -221
  43. cnhkmcp/untracked/APP/blueprints/inspiration_house.py +0 -432
  44. cnhkmcp/untracked/APP/blueprints/paper_analysis.py +0 -570
  45. cnhkmcp/untracked/APP/custom_templates/templates.json +0 -1257
  46. cnhkmcp/untracked/APP/give_me_idea/BRAIN_Alpha_Template_Expert_SystemPrompt.md +0 -400
  47. cnhkmcp/untracked/APP/give_me_idea/ace_lib.py +0 -1510
  48. cnhkmcp/untracked/APP/give_me_idea/alpha_data_specific_template_master.py +0 -252
  49. cnhkmcp/untracked/APP/give_me_idea/fetch_all_datasets.py +0 -157
  50. cnhkmcp/untracked/APP/give_me_idea/fetch_all_operators.py +0 -99
  51. cnhkmcp/untracked/APP/give_me_idea/helpful_functions.py +0 -180
  52. cnhkmcp/untracked/APP/give_me_idea/what_is_Alpha_template.md +0 -11
  53. cnhkmcp/untracked/APP/helpful_functions.py +0 -180
  54. cnhkmcp/untracked/APP/hkSimulator/ace_lib.py +0 -1497
  55. cnhkmcp/untracked/APP/hkSimulator/autosimulator.py +0 -447
  56. cnhkmcp/untracked/APP/hkSimulator/helpful_functions.py +0 -180
  57. cnhkmcp/untracked/APP/mirror_config.txt +0 -20
  58. cnhkmcp/untracked/APP/operaters.csv +0 -129
  59. cnhkmcp/untracked/APP/requirements.txt +0 -53
  60. cnhkmcp/untracked/APP/run_app.bat +0 -28
  61. cnhkmcp/untracked/APP/run_app.sh +0 -34
  62. cnhkmcp/untracked/APP/setup_tsinghua.bat +0 -39
  63. cnhkmcp/untracked/APP/setup_tsinghua.sh +0 -43
  64. cnhkmcp/untracked/APP/simulator/alpha_submitter.py +0 -404
  65. cnhkmcp/untracked/APP/simulator/simulator_wqb.py +0 -618
  66. cnhkmcp/untracked/APP/ssrn-3332513.pdf +6 -109201
  67. cnhkmcp/untracked/APP/static/brain.js +0 -589
  68. cnhkmcp/untracked/APP/static/decoder.js +0 -1540
  69. cnhkmcp/untracked/APP/static/feature_engineering.js +0 -1729
  70. cnhkmcp/untracked/APP/static/idea_house.js +0 -937
  71. cnhkmcp/untracked/APP/static/inspiration.js +0 -465
  72. cnhkmcp/untracked/APP/static/inspiration_house.js +0 -868
  73. cnhkmcp/untracked/APP/static/paper_analysis.js +0 -390
  74. cnhkmcp/untracked/APP/static/script.js +0 -3082
  75. cnhkmcp/untracked/APP/static/simulator.js +0 -597
  76. cnhkmcp/untracked/APP/static/styles.css +0 -3127
  77. cnhkmcp/untracked/APP/static/usage_widget.js +0 -508
  78. cnhkmcp/untracked/APP/templates/alpha_inspector.html +0 -511
  79. cnhkmcp/untracked/APP/templates/feature_engineering.html +0 -960
  80. cnhkmcp/untracked/APP/templates/idea_house.html +0 -564
  81. cnhkmcp/untracked/APP/templates/index.html +0 -932
  82. cnhkmcp/untracked/APP/templates/inspiration_house.html +0 -861
  83. cnhkmcp/untracked/APP/templates/paper_analysis.html +0 -91
  84. cnhkmcp/untracked/APP/templates/simulator.html +0 -343
  85. cnhkmcp/untracked/APP/templates/transformer_web.html +0 -580
  86. cnhkmcp/untracked/APP/usage.md +0 -351
  87. cnhkmcp/untracked/APP//321/207/342/225/235/320/250/321/205/320/230/320/226/321/204/342/225/225/320/220/321/211/320/221/320/243/321/206/320/261/320/265/ace_lib.py +0 -1510
  88. cnhkmcp/untracked/APP//321/207/342/225/235/320/250/321/205/320/230/320/226/321/204/342/225/225/320/220/321/211/320/221/320/243/321/206/320/261/320/265/brain_alpha_inspector.py +0 -712
  89. cnhkmcp/untracked/APP//321/207/342/225/235/320/250/321/205/320/230/320/226/321/204/342/225/225/320/220/321/211/320/221/320/243/321/206/320/261/320/265/helpful_functions.py +0 -180
  90. cnhkmcp/untracked/APP//321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/231/320/243/321/205/342/225/235/320/220/321/206/320/230/320/241.py +0 -2456
  91. cnhkmcp/untracked/arXiv_API_Tool_Manual.md +0 -490
  92. cnhkmcp/untracked/arxiv_api.py +0 -229
  93. cnhkmcp/untracked/forum_functions.py +0 -998
  94. cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272/forum_functions.py +0 -407
  95. cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272/platform_functions.py +0 -2415
  96. cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272/user_config.json +0 -31
  97. cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272//321/210/320/276/320/271AI/321/210/320/277/342/225/227/321/210/342/224/220/320/251/321/204/342/225/225/320/272/321/206/320/246/320/227/321/206/320/261/320/263/321/206/320/255/320/265/321/205/320/275/320/266/321/204/342/225/235/320/252/321/204/342/225/225/320/233/321/210/342/225/234/342/225/234/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270.md +0 -101
  98. cnhkmcp/untracked/mcp/321/206/320/246/320/227/321/204/342/225/227/342/225/242/321/210/320/276/342/225/221/321/205/320/255/320/253/321/207/320/231/320/2302_/321/205/320/266/320/222/321/206/320/256/320/254/321/205/320/236/320/257/321/207/320/231/320/230/321/205/320/240/320/277/321/205/320/232/320/270/321/204/342/225/225/320/235/321/204/342/225/221/320/226/321/206/342/225/241/320/237/321/210/320/267/320/230/321/205/320/251/320/270/321/205/342/226/221/342/226/222/321/210/320/277/320/245/321/210/342/224/220/320/251/321/204/342/225/225/320/272//321/211/320/225/320/235/321/207/342/225/234/320/276/321/205/320/231/320/235/321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/230/320/241_/321/205/320/276/320/231/321/210/320/263/320/225/321/205/342/224/220/320/225/321/210/320/266/320/221/321/204/342/225/233/320/255/321/210/342/225/241/320/246/321/205/320/234/320/225.py +0 -190
  99. cnhkmcp/untracked/platform_functions.py +0 -2886
  100. cnhkmcp/untracked/sample_mcp_config.json +0 -11
  101. cnhkmcp/untracked/user_config.json +0 -31
  102. cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/320/237/320/222/321/210/320/220/320/223/321/206/320/246/320/227/321/206/320/261/320/263_BRAIN_Alpha_Test_Requirements_and_Tips.md +0 -202
  103. cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_Alpha_explaination_workflow.md +0 -56
  104. cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_BRAIN_6_Tips_Datafield_Exploration_Guide.md +0 -194
  105. cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_BRAIN_Alpha_Improvement_Workflow.md +0 -101
  106. cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_Dataset_Exploration_Expert_Manual.md +0 -436
  107. cnhkmcp/untracked//321/207/320/264/342/225/221/321/204/342/225/233/320/233/321/205/342/225/226/320/265/321/204/342/225/234/320/254/321/206/342/225/241/320/221_daily_report_workflow.md +0 -128
  108. cnhkmcp/untracked//321/211/320/225/320/235/321/207/342/225/234/320/276/321/205/320/231/320/235/321/210/342/224/220/320/240/321/210/320/261/320/234/321/206/320/230/320/241_/321/205/320/276/320/231/321/210/320/263/320/225/321/205/342/224/220/320/225/321/210/320/266/320/221/321/204/342/225/233/320/255/321/210/342/225/241/320/246/321/205/320/234/320/225.py +0 -190
  109. cnhkmcp-2.1.2.dist-info/RECORD +0 -111
  110. cnhkmcp-2.1.2.dist-info/top_level.txt +0 -1
  111. {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.3.dist-info}/WHEEL +0 -0
  112. {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.3.dist-info}/entry_points.txt +0 -0
  113. {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,564 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Idea House - Data Field Analysis</title>
7
- <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
8
- <style>
9
- .idea-house-container {
10
- max-width: 1200px;
11
- margin: 0 auto;
12
- padding: 20px;
13
- }
14
-
15
- .data-fields-section {
16
- background: rgba(255, 255, 255, 0.9);
17
- border-radius: 8px;
18
- padding: 20px;
19
- margin-bottom: 20px;
20
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
21
- }
22
-
23
- .api-config-section {
24
- background: rgba(240, 242, 255, 0.9);
25
- border-radius: 8px;
26
- padding: 20px;
27
- margin-bottom: 20px;
28
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
29
- border: 1px solid rgba(102, 126, 234, 0.2);
30
- }
31
-
32
- .data-fields-table {
33
- width: 100%;
34
- border-collapse: collapse;
35
- margin-top: 20px;
36
- }
37
-
38
- .data-fields-table th,
39
- .data-fields-table td {
40
- padding: 12px;
41
- text-align: left;
42
- border-bottom: 1px solid #ddd;
43
- }
44
-
45
- .data-fields-table th {
46
- background-color: #f5f5f5;
47
- font-weight: bold;
48
- position: sticky;
49
- top: 0;
50
- z-index: 10;
51
- }
52
-
53
- .data-fields-table tr:hover {
54
- background-color: #f0f0f0;
55
- cursor: pointer;
56
- }
57
-
58
- .data-fields-table tr.selected {
59
- background-color: #e3f2fd;
60
- }
61
-
62
- .field-checkbox {
63
- width: 20px;
64
- height: 20px;
65
- cursor: pointer;
66
- }
67
-
68
- .selected-fields-section {
69
- background: rgba(255, 255, 255, 0.9);
70
- border-radius: 8px;
71
- padding: 20px;
72
- margin-bottom: 20px;
73
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
74
- }
75
-
76
- .selected-field-item {
77
- display: inline-block;
78
- background: #e3f2fd;
79
- padding: 5px 10px;
80
- margin: 5px;
81
- border-radius: 4px;
82
- font-size: 14px;
83
- }
84
-
85
- .results-section {
86
- background: rgba(255, 255, 255, 0.9);
87
- border-radius: 8px;
88
- padding: 20px;
89
- box-shadow: 0 2px 4px rgba(0,0,0,0.1);
90
- }
91
-
92
- .markdown-content {
93
- padding: 20px;
94
- background: #f9f9f9;
95
- border-radius: 4px;
96
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
97
- line-height: 1.6;
98
- overflow-x: auto;
99
- }
100
-
101
- .markdown-content h1 {
102
- color: #333;
103
- border-bottom: 2px solid #4caf50;
104
- padding-bottom: 10px;
105
- margin-bottom: 20px;
106
- }
107
-
108
- .markdown-content h2 {
109
- color: #555;
110
- margin-top: 25px;
111
- margin-bottom: 15px;
112
- }
113
-
114
- .markdown-content h3 {
115
- color: #666;
116
- margin-top: 20px;
117
- margin-bottom: 10px;
118
- }
119
-
120
- .markdown-content ul {
121
- margin: 10px 0;
122
- padding-left: 20px;
123
- }
124
-
125
- .markdown-content li {
126
- margin: 5px 0;
127
- }
128
-
129
- .markdown-content pre {
130
- background: #f0f0f0;
131
- padding: 15px;
132
- border-radius: 4px;
133
- overflow-x: auto;
134
- font-family: 'Courier New', monospace;
135
- }
136
-
137
- .markdown-content code {
138
- background: #f0f0f0;
139
- padding: 2px 6px;
140
- border-radius: 3px;
141
- font-family: 'Courier New', monospace;
142
- }
143
-
144
- .markdown-content strong {
145
- color: #333;
146
- font-weight: bold;
147
- }
148
-
149
- .loading-overlay {
150
- position: fixed;
151
- top: 0;
152
- left: 0;
153
- width: 100%;
154
- height: 100%;
155
- background: rgba(0, 0, 0, 0.5);
156
- display: none;
157
- justify-content: center;
158
- align-items: center;
159
- z-index: 1000;
160
- }
161
-
162
- .loading-content {
163
- background: white;
164
- padding: 30px;
165
- border-radius: 8px;
166
- text-align: center;
167
- }
168
-
169
- .params-section {
170
- margin: 20px 0;
171
- padding: 15px;
172
- background: #f5f5f5;
173
- border-radius: 4px;
174
- }
175
-
176
- .params-row {
177
- display: flex;
178
- gap: 15px;
179
- margin-bottom: 15px;
180
- flex-wrap: wrap;
181
- }
182
-
183
- .param-group {
184
- flex: 1;
185
- min-width: 200px;
186
- }
187
-
188
- .param-group label {
189
- display: block;
190
- margin-bottom: 5px;
191
- font-weight: bold;
192
- }
193
-
194
- .stats-info {
195
- margin: 10px 0;
196
- color: #666;
197
- }
198
-
199
- .table-container {
200
- max-height: 500px;
201
- overflow-y: auto;
202
- border: 1px solid #ddd;
203
- border-radius: 4px;
204
- }
205
-
206
- .toggle-btn {
207
- background: #f0f0f0;
208
- border: 1px solid #ddd;
209
- color: #333;
210
- cursor: pointer;
211
- transition: all 0.3s ease;
212
- }
213
-
214
- .toggle-btn:hover {
215
- background: #e0e0e0;
216
- border-color: #999;
217
- }
218
-
219
- /* Data Fields Filter Styles */
220
- .data-fields-controls {
221
- display: flex;
222
- align-items: center;
223
- gap: 20px;
224
- padding: 15px;
225
- background: #f8f9fa;
226
- border-bottom: 1px solid #dee2e6;
227
- border-radius: 4px 4px 0 0;
228
- flex-wrap: wrap;
229
- }
230
-
231
- .filter-label {
232
- font-weight: 600;
233
- color: #495057;
234
- }
235
-
236
- .filter-options {
237
- display: flex;
238
- gap: 15px;
239
- flex-wrap: wrap;
240
- }
241
-
242
- .filter-options label {
243
- display: flex;
244
- align-items: center;
245
- gap: 5px;
246
- cursor: pointer;
247
- font-size: 14px;
248
- }
249
-
250
- .filter-actions {
251
- display: flex;
252
- gap: 10px;
253
- margin-left: auto;
254
- }
255
-
256
- .data-fields-stats {
257
- padding: 10px 15px;
258
- background: #f8f9fa;
259
- border-bottom: 1px solid #dee2e6;
260
- font-size: 14px;
261
- color: #6c757d;
262
- }
263
-
264
- .data-fields-table {
265
- width: 100%;
266
- border-collapse: collapse;
267
- font-size: 14px;
268
- }
269
-
270
- .data-fields-table th,
271
- .data-fields-table td {
272
- padding: 8px 12px;
273
- text-align: left;
274
- border-bottom: 1px solid #dee2e6;
275
- }
276
-
277
- .data-fields-table th {
278
- background: #f8f9fa;
279
- font-weight: 600;
280
- color: #495057;
281
- position: sticky;
282
- top: 0;
283
- z-index: 10;
284
- }
285
-
286
- .header-row th {
287
- position: relative;
288
- }
289
-
290
- .sort-btn {
291
- background: none;
292
- border: none;
293
- cursor: pointer;
294
- margin-left: 5px;
295
- padding: 2px 4px;
296
- font-size: 12px;
297
- color: #6c757d;
298
- border-radius: 2px;
299
- }
300
-
301
- .sort-btn:hover {
302
- background: #dee2e6;
303
- color: #495057;
304
- }
305
-
306
- .sort-btn.asc {
307
- color: #28a745;
308
- }
309
-
310
- .sort-btn.desc {
311
- color: #dc3545;
312
- }
313
-
314
- .filter-row th {
315
- padding: 5px 8px;
316
- background: #ffffff;
317
- }
318
-
319
- .column-filter,
320
- .column-filter-min,
321
- .column-filter-max {
322
- width: 100%;
323
- padding: 4px 6px;
324
- border: 1px solid #ced4da;
325
- border-radius: 3px;
326
- font-size: 12px;
327
- }
328
-
329
- .column-filter.active,
330
- .column-filter-min.active,
331
- .column-filter-max.active {
332
- border-color: #4caf50;
333
- background-color: #f0f8f0;
334
- }
335
-
336
- .range-filter {
337
- display: flex;
338
- align-items: center;
339
- gap: 3px;
340
- }
341
-
342
- .range-filter input {
343
- flex: 1;
344
- min-width: 0;
345
- }
346
-
347
- .range-filter span {
348
- font-size: 12px;
349
- color: #6c757d;
350
- }
351
-
352
- .data-fields-table tbody tr {
353
- cursor: pointer;
354
- transition: background-color 0.2s;
355
- }
356
-
357
- .data-fields-table tbody tr:hover {
358
- background-color: #f8f9fa;
359
- }
360
-
361
- .data-fields-table tbody tr.selected {
362
- background-color: #e8f5e8;
363
- border-left: 3px solid #4caf50;
364
- }
365
-
366
- .field-checkbox {
367
- cursor: pointer;
368
- }
369
-
370
- .btn-small {
371
- padding: 5px 10px;
372
- font-size: 12px;
373
- border-radius: 3px;
374
- }
375
- </style>
376
- </head>
377
- <body>
378
- <div class="container">
379
- <header>
380
- <h1>Idea House</h1>
381
- <p class="subtitle">Let Data Speak Out Loud</p>
382
- <a href="/" class="btn btn-outline">← Back to Main</a>
383
- </header>
384
-
385
- <div class="idea-house-container">
386
- <!-- Coze API Configuration Section -->
387
- <div class="api-config-section">
388
- <h2>Coze API Configuration</h2>
389
- <div class="params-section">
390
- <div class="params-row">
391
- <div class="param-group" style="flex: 2;">
392
- <label for="cozeApiTokenInput">
393
- Coze API Token:
394
- <button type="button" id="toggleApiTokenBtn" class="toggle-btn" style="margin-left: 10px; padding: 2px 8px; font-size: 12px;">Show</button>
395
- </label>
396
- <input type="password" id="cozeApiTokenInput" class="form-input" placeholder="Enter your Coze API token" value="sat_xZzjQThWADuE8uePBzh9fI0EN3Qt43OEEJ2pKbZm8SePbjnM7TDVardfmaWOI4JM">
397
- </div>
398
- <div class="param-group">
399
- <label for="workflowIdInput">Workflow ID:</label>
400
- <input type="text" id="workflowIdInput" class="form-input" placeholder="Enter workflow ID" value="7522912027267956786">
401
- </div>
402
- </div>
403
- <div class="info-message" style="margin-top: 10px; font-size: 14px; color: #666;">
404
- <em>Default values are provided. You can replace them with your own Coze API credentials.</em>
405
- </div>
406
- <div style="margin-top: 15px;">
407
- <button id="saveCozeConfigBtn" class="btn btn-secondary btn-small">Save Configuration</button>
408
- <button id="clearCozeConfigBtn" class="btn btn-outline btn-small" style="margin-left: 10px;">Reset to Default</button>
409
- <span id="saveConfigMessage" style="margin-left: 10px; color: #4caf50; display: none;">Configuration saved!</span>
410
- </div>
411
- </div>
412
- </div>
413
-
414
- <!-- Data Fields Loading Section -->
415
- <div class="data-fields-section">
416
- <h2>Load Data Fields from BRAIN</h2>
417
- <div class="params-section">
418
- <div class="params-row">
419
- <div class="param-group">
420
- <label for="regionInput">Region:</label>
421
- <input type="text" id="regionInput" class="form-input" value="USA">
422
- </div>
423
- <div class="param-group">
424
- <label for="delayInput">Delay:</label>
425
- <input type="number" id="delayInput" class="form-input" value="1">
426
- </div>
427
- <div class="param-group">
428
- <label for="universeInput">Universe:</label>
429
- <input type="text" id="universeInput" class="form-input" value="TOP3000">
430
- </div>
431
- <div class="param-group">
432
- <label for="datasetInput">Dataset ID:</label>
433
- <input type="text" id="datasetInput" class="form-input" value="analyst10">
434
- </div>
435
- </div>
436
- <button id="loadDataFieldsBtn" class="btn btn-primary">Load Data Fields</button>
437
- </div>
438
-
439
- <div id="dataFieldsStats" class="stats-info"></div>
440
-
441
- <div class="table-container" id="tableContainer" style="display: none;">
442
- <!-- Add filtering controls -->
443
- <div class="data-fields-controls">
444
- <div class="filter-label">
445
- <span>Quick Filters 👉</span>
446
- </div>
447
- <div class="filter-options">
448
- <label>
449
- <input type="checkbox" id="filterHighCoverage"> High Coverage (>90%)
450
- </label>
451
- <label>
452
- <input type="checkbox" id="filterPopular"> Popular (>1000 users)
453
- </label>
454
- <label>
455
- <input type="checkbox" id="filterMatrixOnly"> Matrix Type Only
456
- </label>
457
- </div>
458
- <div class="filter-actions">
459
- <button id="selectAllFiltered" class="btn btn-small btn-secondary">Select All Filtered</button>
460
- <button id="clearAllSelected" class="btn btn-small btn-outline">Clear All</button>
461
- </div>
462
- </div>
463
- <div class="data-fields-stats">
464
- <span id="dataFieldsCount">0 fields loaded</span> |
465
- <span id="filteredCount">0 filtered</span> |
466
- <span id="selectedFieldsCount">0 selected</span>
467
- </div>
468
-
469
- <table class="data-fields-table" id="dataFieldsTable">
470
- <thead>
471
- <tr class="header-row">
472
- <th style="width: 40px;">
473
- <input type="checkbox" id="selectAllCheckbox" title="Select/Deselect All">
474
- </th>
475
- <th style="width: 200px; min-width: 150px;">
476
- Field ID
477
- <button class="sort-btn" data-column="id" data-order="asc">↕</button>
478
- </th>
479
- <th style="min-width: 300px;">
480
- Description
481
- <button class="sort-btn" data-column="description" data-order="asc">↕</button>
482
- </th>
483
- <th style="width: 100px;">
484
- Type
485
- <button class="sort-btn" data-column="type" data-order="asc">↕</button>
486
- </th>
487
- <th style="width: 150px;">
488
- Coverage
489
- <button class="sort-btn" data-column="coverage" data-order="asc">↕</button>
490
- </th>
491
- <th style="width: 100px;">
492
- Users
493
- <button class="sort-btn" data-column="userCount" data-order="asc">↕</button>
494
- </th>
495
- <th style="width: 100px;">
496
- Alphas
497
- <button class="sort-btn" data-column="alphaCount" data-order="asc">↕</button>
498
- </th>
499
- </tr>
500
- <tr class="filter-row">
501
- <th></th>
502
- <th>
503
- <input type="text" class="column-filter" data-column="id" placeholder="Filter ID...">
504
- </th>
505
- <th>
506
- <input type="text" class="column-filter" data-column="description" placeholder="Filter description...">
507
- </th>
508
- <th>
509
- <select class="column-filter" data-column="type" id="typeFilter">
510
- <option value="">All Types</option>
511
- </select>
512
- </th>
513
- <th>
514
- <div class="range-filter">
515
- <input type="number" class="column-filter-min" data-column="coverage" placeholder="Min %" min="0" max="100" step="0.1">
516
- <span>-</span>
517
- <input type="number" class="column-filter-max" data-column="coverage" placeholder="Max %" min="0" max="100" step="0.1">
518
- </div>
519
- </th>
520
- <th>
521
- <input type="number" class="column-filter" data-column="userCount" placeholder="Min users" min="0">
522
- </th>
523
- <th>
524
- <input type="number" class="column-filter" data-column="alphaCount" placeholder="Min alphas" min="0">
525
- </th>
526
- </tr>
527
- </thead>
528
- <tbody id="dataFieldsTableBody">
529
- <!-- Table rows will be populated here -->
530
- </tbody>
531
- </table>
532
- </div>
533
- </div>
534
-
535
- <!-- Selected Fields Section -->
536
- <div class="selected-fields-section" id="selectedFieldsSection" style="display: none;">
537
- <h2>Selected Fields</h2>
538
- <div id="selectedFieldsList"></div>
539
- <button id="clearSelectionBtn" class="btn btn-secondary">Clear Selection</button>
540
- <button id="processFieldsBtn" class="btn btn-primary">Process Selected Fields</button>
541
- </div>
542
-
543
- <!-- Results Section -->
544
- <div class="results-section" id="resultsSection" style="display: none;">
545
- <h2>Analysis Results</h2>
546
- <div class="markdown-content" id="resultsContent">
547
- <!-- Results will be displayed here -->
548
- </div>
549
- </div>
550
- </div>
551
- </div>
552
-
553
- <!-- Loading Overlay -->
554
- <div class="loading-overlay" id="loadingOverlay">
555
- <div class="loading-content">
556
- <h3>Processing...</h3>
557
- <p>Please wait while we analyze your selected fields...</p>
558
- </div>
559
- </div>
560
-
561
- <script src="{{ url_for('static', filename='idea_house.js') }}"></script>
562
- <script src="{{ url_for('static', filename='usage_widget.js') }}"></script>
563
- </body>
564
- </html>