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.
- {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.3.dist-info}/METADATA +1 -1
- cnhkmcp-2.1.3.dist-info/RECORD +6 -0
- cnhkmcp-2.1.3.dist-info/top_level.txt +1 -0
- cnhkmcp/__init__.py +0 -125
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- cnhkmcp/untracked/APP/.gitignore +0 -32
- cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md +0 -112
- cnhkmcp/untracked/APP/README.md +0 -309
- cnhkmcp/untracked/APP/Tranformer/Transformer.py +0 -4985
- cnhkmcp/untracked/APP/Tranformer/ace.log +0 -0
- cnhkmcp/untracked/APP/Tranformer/ace_lib.py +0 -1510
- cnhkmcp/untracked/APP/Tranformer/helpful_functions.py +0 -180
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates.json +0 -2421
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_candidates_/321/207/320/264/342/225/221/321/204/342/225/233/320/233.json +0 -654
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_error.json +0 -1034
- cnhkmcp/untracked/APP/Tranformer/output/Alpha_generated_expressions_success.json +0 -444
- 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
- cnhkmcp/untracked/APP/Tranformer/parsetab.py +0 -60
- cnhkmcp/untracked/APP/Tranformer/template_summary.txt +0 -3182
- cnhkmcp/untracked/APP/Tranformer/transformer_config.json +0 -7
- cnhkmcp/untracked/APP/Tranformer/validator.py +0 -889
- cnhkmcp/untracked/APP/ace.log +0 -69
- cnhkmcp/untracked/APP/ace_lib.py +0 -1510
- cnhkmcp/untracked/APP/blueprints/__init__.py +0 -6
- cnhkmcp/untracked/APP/blueprints/feature_engineering.py +0 -347
- cnhkmcp/untracked/APP/blueprints/idea_house.py +0 -221
- cnhkmcp/untracked/APP/blueprints/inspiration_house.py +0 -432
- cnhkmcp/untracked/APP/blueprints/paper_analysis.py +0 -570
- cnhkmcp/untracked/APP/custom_templates/templates.json +0 -1257
- cnhkmcp/untracked/APP/give_me_idea/BRAIN_Alpha_Template_Expert_SystemPrompt.md +0 -400
- cnhkmcp/untracked/APP/give_me_idea/ace_lib.py +0 -1510
- cnhkmcp/untracked/APP/give_me_idea/alpha_data_specific_template_master.py +0 -252
- cnhkmcp/untracked/APP/give_me_idea/fetch_all_datasets.py +0 -157
- cnhkmcp/untracked/APP/give_me_idea/fetch_all_operators.py +0 -99
- cnhkmcp/untracked/APP/give_me_idea/helpful_functions.py +0 -180
- cnhkmcp/untracked/APP/give_me_idea/what_is_Alpha_template.md +0 -11
- cnhkmcp/untracked/APP/helpful_functions.py +0 -180
- cnhkmcp/untracked/APP/hkSimulator/ace_lib.py +0 -1497
- cnhkmcp/untracked/APP/hkSimulator/autosimulator.py +0 -447
- cnhkmcp/untracked/APP/hkSimulator/helpful_functions.py +0 -180
- cnhkmcp/untracked/APP/mirror_config.txt +0 -20
- cnhkmcp/untracked/APP/operaters.csv +0 -129
- cnhkmcp/untracked/APP/requirements.txt +0 -53
- cnhkmcp/untracked/APP/run_app.bat +0 -28
- cnhkmcp/untracked/APP/run_app.sh +0 -34
- cnhkmcp/untracked/APP/setup_tsinghua.bat +0 -39
- cnhkmcp/untracked/APP/setup_tsinghua.sh +0 -43
- cnhkmcp/untracked/APP/simulator/alpha_submitter.py +0 -404
- cnhkmcp/untracked/APP/simulator/simulator_wqb.py +0 -618
- cnhkmcp/untracked/APP/ssrn-3332513.pdf +6 -109201
- cnhkmcp/untracked/APP/static/brain.js +0 -589
- cnhkmcp/untracked/APP/static/decoder.js +0 -1540
- cnhkmcp/untracked/APP/static/feature_engineering.js +0 -1729
- cnhkmcp/untracked/APP/static/idea_house.js +0 -937
- cnhkmcp/untracked/APP/static/inspiration.js +0 -465
- cnhkmcp/untracked/APP/static/inspiration_house.js +0 -868
- cnhkmcp/untracked/APP/static/paper_analysis.js +0 -390
- cnhkmcp/untracked/APP/static/script.js +0 -3082
- cnhkmcp/untracked/APP/static/simulator.js +0 -597
- cnhkmcp/untracked/APP/static/styles.css +0 -3127
- cnhkmcp/untracked/APP/static/usage_widget.js +0 -508
- cnhkmcp/untracked/APP/templates/alpha_inspector.html +0 -511
- cnhkmcp/untracked/APP/templates/feature_engineering.html +0 -960
- cnhkmcp/untracked/APP/templates/idea_house.html +0 -564
- cnhkmcp/untracked/APP/templates/index.html +0 -932
- cnhkmcp/untracked/APP/templates/inspiration_house.html +0 -861
- cnhkmcp/untracked/APP/templates/paper_analysis.html +0 -91
- cnhkmcp/untracked/APP/templates/simulator.html +0 -343
- cnhkmcp/untracked/APP/templates/transformer_web.html +0 -580
- cnhkmcp/untracked/APP/usage.md +0 -351
- 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
- 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
- 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
- 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
- cnhkmcp/untracked/arXiv_API_Tool_Manual.md +0 -490
- cnhkmcp/untracked/arxiv_api.py +0 -229
- cnhkmcp/untracked/forum_functions.py +0 -998
- 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
- 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
- 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
- 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
- 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
- cnhkmcp/untracked/platform_functions.py +0 -2886
- cnhkmcp/untracked/sample_mcp_config.json +0 -11
- cnhkmcp/untracked/user_config.json +0 -31
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- cnhkmcp-2.1.2.dist-info/RECORD +0 -111
- cnhkmcp-2.1.2.dist-info/top_level.txt +0 -1
- {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.3.dist-info}/WHEEL +0 -0
- {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.3.dist-info}/entry_points.txt +0 -0
- {cnhkmcp-2.1.2.dist-info → cnhkmcp-2.1.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,960 +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>Feature Engineering Assistant - BRAIN</title>
|
|
7
|
-
<link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
|
|
8
|
-
<style>
|
|
9
|
-
.feature-engineering-container {
|
|
10
|
-
max-width: 1200px;
|
|
11
|
-
margin: 0 auto;
|
|
12
|
-
padding: 20px;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.header-section {
|
|
16
|
-
text-align: center;
|
|
17
|
-
margin-bottom: 30px;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.header-section h1 {
|
|
21
|
-
color: #2c3e50;
|
|
22
|
-
margin-bottom: 10px;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.header-section p {
|
|
26
|
-
color: #7f8c8d;
|
|
27
|
-
font-size: 16px;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.back-button {
|
|
31
|
-
position: absolute;
|
|
32
|
-
top: 20px;
|
|
33
|
-
left: 20px;
|
|
34
|
-
background: #3498db;
|
|
35
|
-
color: white;
|
|
36
|
-
padding: 10px 20px;
|
|
37
|
-
border: none;
|
|
38
|
-
border-radius: 5px;
|
|
39
|
-
text-decoration: none;
|
|
40
|
-
display: inline-block;
|
|
41
|
-
transition: background-color 0.3s;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.back-button:hover {
|
|
45
|
-
background: #2980b9;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.config-section {
|
|
49
|
-
background: #f8f9fa;
|
|
50
|
-
padding: 20px;
|
|
51
|
-
border-radius: 8px;
|
|
52
|
-
margin-bottom: 20px;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.config-section h3 {
|
|
56
|
-
margin-top: 0;
|
|
57
|
-
color: #2c3e50;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.form-group {
|
|
61
|
-
margin-bottom: 15px;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.form-group label {
|
|
65
|
-
display: block;
|
|
66
|
-
margin-bottom: 5px;
|
|
67
|
-
font-weight: bold;
|
|
68
|
-
color: #2c3e50;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.form-input {
|
|
72
|
-
width: 100%;
|
|
73
|
-
padding: 10px;
|
|
74
|
-
border: 1px solid #ddd;
|
|
75
|
-
border-radius: 4px;
|
|
76
|
-
font-size: 14px;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
.form-input:focus {
|
|
80
|
-
outline: none;
|
|
81
|
-
border-color: #3498db;
|
|
82
|
-
box-shadow: 0 0 5px rgba(52, 152, 219, 0.3);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
.btn {
|
|
86
|
-
background: #3498db;
|
|
87
|
-
color: white;
|
|
88
|
-
padding: 10px 20px;
|
|
89
|
-
border: none;
|
|
90
|
-
border-radius: 4px;
|
|
91
|
-
cursor: pointer;
|
|
92
|
-
font-size: 14px;
|
|
93
|
-
transition: background-color 0.3s;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.btn:hover {
|
|
97
|
-
background: #2980b9;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
.btn-success {
|
|
101
|
-
background: #27ae60;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
.btn-success:hover {
|
|
105
|
-
background: #229954;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
.btn-secondary {
|
|
109
|
-
background: #95a5a6;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
.btn-secondary:hover {
|
|
113
|
-
background: #7f8c8d;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.options-section {
|
|
117
|
-
background: white;
|
|
118
|
-
border-radius: 8px;
|
|
119
|
-
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
|
120
|
-
margin-bottom: 20px;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
.options-header {
|
|
124
|
-
background: #3498db;
|
|
125
|
-
color: white;
|
|
126
|
-
padding: 15px 20px;
|
|
127
|
-
border-radius: 8px 8px 0 0;
|
|
128
|
-
display: flex;
|
|
129
|
-
justify-content: space-between;
|
|
130
|
-
align-items: center;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
.options-container {
|
|
134
|
-
padding: 20px;
|
|
135
|
-
display: grid;
|
|
136
|
-
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
|
|
137
|
-
gap: 20px;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.option-card {
|
|
141
|
-
background: #f8f9fa;
|
|
142
|
-
border: 2px solid #e9ecef;
|
|
143
|
-
border-radius: 8px;
|
|
144
|
-
padding: 20px;
|
|
145
|
-
transition: all 0.3s ease;
|
|
146
|
-
cursor: pointer;
|
|
147
|
-
position: relative;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
.option-card:hover {
|
|
151
|
-
border-color: #3498db;
|
|
152
|
-
box-shadow: 0 4px 12px rgba(52, 152, 219, 0.15);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
.option-card.selected {
|
|
156
|
-
border-color: #27ae60;
|
|
157
|
-
background: #f1f8e9;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
.option-card.editing {
|
|
161
|
-
position: fixed;
|
|
162
|
-
top: 50%;
|
|
163
|
-
left: 50%;
|
|
164
|
-
transform: translate(-50%, -50%);
|
|
165
|
-
z-index: 1000;
|
|
166
|
-
width: 80%;
|
|
167
|
-
max-width: 800px;
|
|
168
|
-
max-height: 80vh;
|
|
169
|
-
overflow-y: auto;
|
|
170
|
-
border-color: #f39c12;
|
|
171
|
-
background: #fef9e7;
|
|
172
|
-
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
.modal-overlay {
|
|
176
|
-
position: fixed;
|
|
177
|
-
top: 0;
|
|
178
|
-
left: 0;
|
|
179
|
-
width: 100%;
|
|
180
|
-
height: 100%;
|
|
181
|
-
background: rgba(0, 0, 0, 0.5);
|
|
182
|
-
z-index: 999;
|
|
183
|
-
display: none;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
.modal-overlay.active {
|
|
187
|
-
display: block;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
.option-header {
|
|
191
|
-
display: flex;
|
|
192
|
-
justify-content: space-between;
|
|
193
|
-
align-items: center;
|
|
194
|
-
margin-bottom: 15px;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
.option-number {
|
|
198
|
-
background: #3498db;
|
|
199
|
-
color: white;
|
|
200
|
-
padding: 5px 10px;
|
|
201
|
-
border-radius: 20px;
|
|
202
|
-
font-size: 12px;
|
|
203
|
-
font-weight: bold;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
.option-actions {
|
|
207
|
-
display: flex;
|
|
208
|
-
gap: 10px;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
.option-actions button {
|
|
212
|
-
padding: 5px 10px;
|
|
213
|
-
font-size: 12px;
|
|
214
|
-
border: none;
|
|
215
|
-
border-radius: 4px;
|
|
216
|
-
cursor: pointer;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
.edit-btn {
|
|
220
|
-
background: #f39c12;
|
|
221
|
-
color: white;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
.save-btn {
|
|
225
|
-
background: #27ae60;
|
|
226
|
-
color: white;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
.cancel-btn {
|
|
230
|
-
background: #95a5a6;
|
|
231
|
-
color: white;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
.select-btn {
|
|
235
|
-
background: #3498db;
|
|
236
|
-
color: white;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
.send-continue-btn {
|
|
240
|
-
background: #27ae60;
|
|
241
|
-
color: white;
|
|
242
|
-
margin-left: 10px;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
.option-content {
|
|
246
|
-
line-height: 1.6;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
.option-field {
|
|
250
|
-
margin-bottom: 10px;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
.option-field label {
|
|
254
|
-
font-weight: bold;
|
|
255
|
-
color: #2c3e50;
|
|
256
|
-
display: block;
|
|
257
|
-
margin-bottom: 5px;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
.option-field input,
|
|
261
|
-
.option-field textarea {
|
|
262
|
-
width: 100%;
|
|
263
|
-
padding: 8px;
|
|
264
|
-
border: 1px solid #ddd;
|
|
265
|
-
border-radius: 4px;
|
|
266
|
-
font-size: 14px;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
.option-field textarea {
|
|
270
|
-
resize: vertical;
|
|
271
|
-
min-height: 80px;
|
|
272
|
-
overflow: hidden;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
.option-card.editing .option-field textarea {
|
|
276
|
-
min-height: 120px;
|
|
277
|
-
overflow-y: auto;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
.auto-resize-textarea {
|
|
281
|
-
overflow: hidden;
|
|
282
|
-
resize: none;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
.option-field.readonly input,
|
|
286
|
-
.option-field.readonly textarea {
|
|
287
|
-
background: #f8f9fa;
|
|
288
|
-
border-color: #e9ecef;
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
.template-actions {
|
|
292
|
-
display: flex;
|
|
293
|
-
gap: 10px;
|
|
294
|
-
margin-bottom: 20px;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
.pipeline-status {
|
|
298
|
-
background: #fff3cd;
|
|
299
|
-
border: 1px solid #ffeaa7;
|
|
300
|
-
border-radius: 4px;
|
|
301
|
-
padding: 15px;
|
|
302
|
-
margin-bottom: 20px;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
.pipeline-status h4 {
|
|
306
|
-
margin-top: 0;
|
|
307
|
-
color: #856404;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
.pipeline-step {
|
|
311
|
-
background: #f8f9fa;
|
|
312
|
-
border-left: 4px solid #3498db;
|
|
313
|
-
padding: 10px 15px;
|
|
314
|
-
margin-bottom: 10px;
|
|
315
|
-
border-radius: 0 4px 4px 0;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
.pipeline-step strong {
|
|
319
|
-
color: #2c3e50;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
.notification {
|
|
323
|
-
position: fixed;
|
|
324
|
-
top: 20px;
|
|
325
|
-
right: 20px;
|
|
326
|
-
padding: 15px 20px;
|
|
327
|
-
border-radius: 4px;
|
|
328
|
-
color: white;
|
|
329
|
-
font-weight: bold;
|
|
330
|
-
z-index: 1000;
|
|
331
|
-
animation: slideIn 0.3s ease-out;
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
.notification.success {
|
|
335
|
-
background: #27ae60;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
.notification.error {
|
|
339
|
-
background: #e74c3c;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
@keyframes slideIn {
|
|
343
|
-
from {
|
|
344
|
-
transform: translateX(100%);
|
|
345
|
-
opacity: 0;
|
|
346
|
-
}
|
|
347
|
-
to {
|
|
348
|
-
transform: translateX(0);
|
|
349
|
-
opacity: 1;
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
.loading-overlay {
|
|
354
|
-
position: fixed;
|
|
355
|
-
top: 0;
|
|
356
|
-
left: 0;
|
|
357
|
-
width: 100%;
|
|
358
|
-
height: 100%;
|
|
359
|
-
background: rgba(0, 0, 0, 0.5);
|
|
360
|
-
display: flex;
|
|
361
|
-
flex-direction: column;
|
|
362
|
-
justify-content: center;
|
|
363
|
-
align-items: center;
|
|
364
|
-
z-index: 1000;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
.loading-spinner {
|
|
368
|
-
width: 50px;
|
|
369
|
-
height: 50px;
|
|
370
|
-
border: 5px solid #f3f3f3;
|
|
371
|
-
border-top: 5px solid #3498db;
|
|
372
|
-
border-radius: 50%;
|
|
373
|
-
animation: spin 1s linear infinite;
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
.loading-message {
|
|
377
|
-
color: white;
|
|
378
|
-
margin-top: 20px;
|
|
379
|
-
font-size: 16px;
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
@keyframes spin {
|
|
383
|
-
0% { transform: rotate(0deg); }
|
|
384
|
-
100% { transform: rotate(360deg); }
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
.export-section {
|
|
388
|
-
background: #f8f9fa;
|
|
389
|
-
padding: 20px;
|
|
390
|
-
border-radius: 8px;
|
|
391
|
-
margin-top: 20px;
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
.export-section h3 {
|
|
395
|
-
margin-top: 0;
|
|
396
|
-
color: #2c3e50;
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
.category-list {
|
|
400
|
-
display: grid;
|
|
401
|
-
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
402
|
-
gap: 10px;
|
|
403
|
-
margin-top: 15px;
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
.category-item {
|
|
407
|
-
background: #ecf0f1;
|
|
408
|
-
padding: 8px 12px;
|
|
409
|
-
border-radius: 4px;
|
|
410
|
-
font-size: 14px;
|
|
411
|
-
border-left: 4px solid #3498db;
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
.quick-actions {
|
|
415
|
-
display: flex;
|
|
416
|
-
gap: 10px;
|
|
417
|
-
margin-bottom: 20px;
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
.quick-actions button {
|
|
421
|
-
padding: 8px 16px;
|
|
422
|
-
font-size: 14px;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
.empty-conversation {
|
|
426
|
-
text-align: center;
|
|
427
|
-
color: #7f8c8d;
|
|
428
|
-
padding: 40px;
|
|
429
|
-
font-style: italic;
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
/* Operators Reference Modal Styles */
|
|
433
|
-
.operator-category {
|
|
434
|
-
background: #f8f9fa;
|
|
435
|
-
border-radius: 8px;
|
|
436
|
-
margin-bottom: 20px;
|
|
437
|
-
border: 1px solid #e9ecef;
|
|
438
|
-
overflow: hidden;
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
.operator-category.hidden {
|
|
442
|
-
display: none;
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
.operator-category-header {
|
|
446
|
-
background: #3498db;
|
|
447
|
-
color: white;
|
|
448
|
-
padding: 15px 20px;
|
|
449
|
-
cursor: pointer;
|
|
450
|
-
display: flex;
|
|
451
|
-
justify-content: space-between;
|
|
452
|
-
align-items: center;
|
|
453
|
-
transition: background-color 0.3s;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
.operator-category-header:hover {
|
|
457
|
-
background: #2980b9;
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
.operator-category-header h4 {
|
|
461
|
-
margin: 0;
|
|
462
|
-
font-size: 16px;
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
.operator-category-number {
|
|
466
|
-
background: rgba(255, 255, 255, 0.2);
|
|
467
|
-
padding: 4px 8px;
|
|
468
|
-
border-radius: 12px;
|
|
469
|
-
font-size: 12px;
|
|
470
|
-
font-weight: bold;
|
|
471
|
-
margin-right: 10px;
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
.operator-category-toggle {
|
|
475
|
-
font-size: 18px;
|
|
476
|
-
transition: transform 0.3s;
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
.operator-category-toggle.expanded {
|
|
480
|
-
transform: rotate(180deg);
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
.operator-category-content {
|
|
484
|
-
padding: 0;
|
|
485
|
-
max-height: 0;
|
|
486
|
-
overflow: hidden;
|
|
487
|
-
transition: max-height 0.3s ease-out;
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
.operator-category-content.expanded {
|
|
491
|
-
max-height: 500px;
|
|
492
|
-
padding: 20px;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
.operator-description {
|
|
496
|
-
color: #2c3e50;
|
|
497
|
-
margin-bottom: 15px;
|
|
498
|
-
font-style: italic;
|
|
499
|
-
line-height: 1.5;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
.operator-definition {
|
|
503
|
-
color: #6c757d;
|
|
504
|
-
margin-bottom: 10px;
|
|
505
|
-
font-size: 13px;
|
|
506
|
-
line-height: 1.4;
|
|
507
|
-
font-style: italic;
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
.operator-list {
|
|
511
|
-
background: white;
|
|
512
|
-
border-radius: 4px;
|
|
513
|
-
padding: 15px;
|
|
514
|
-
border: 1px solid #e9ecef;
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
.operator-list h5 {
|
|
518
|
-
margin: 0 0 10px 0;
|
|
519
|
-
color: #2c3e50;
|
|
520
|
-
font-size: 14px;
|
|
521
|
-
font-weight: bold;
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
.operators-grid {
|
|
525
|
-
display: flex;
|
|
526
|
-
flex-wrap: wrap;
|
|
527
|
-
gap: 8px;
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
.operator-tag {
|
|
531
|
-
background: #ecf0f1;
|
|
532
|
-
color: #2c3e50;
|
|
533
|
-
padding: 4px 8px;
|
|
534
|
-
border-radius: 4px;
|
|
535
|
-
font-size: 12px;
|
|
536
|
-
font-family: monospace;
|
|
537
|
-
border: 1px solid #bdc3c7;
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
.operator-tag.highlight {
|
|
541
|
-
background: #fff3cd;
|
|
542
|
-
border-color: #ffeaa7;
|
|
543
|
-
color: #856404;
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
.no-results {
|
|
547
|
-
text-align: center;
|
|
548
|
-
color: #7f8c8d;
|
|
549
|
-
padding: 40px;
|
|
550
|
-
font-style: italic;
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
/* Clickable category styles */
|
|
554
|
-
.clickable-category {
|
|
555
|
-
color: #3498db;
|
|
556
|
-
cursor: pointer;
|
|
557
|
-
text-decoration: underline;
|
|
558
|
-
font-weight: bold;
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
.clickable-category:hover {
|
|
562
|
-
color: #2980b9;
|
|
563
|
-
background-color: #f8f9fa;
|
|
564
|
-
padding: 2px 4px;
|
|
565
|
-
border-radius: 3px;
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
/* Category popup tooltip */
|
|
569
|
-
.category-popup {
|
|
570
|
-
position: absolute;
|
|
571
|
-
background: white;
|
|
572
|
-
border: 2px solid #3498db;
|
|
573
|
-
border-radius: 8px;
|
|
574
|
-
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
575
|
-
z-index: 1000;
|
|
576
|
-
max-width: 500px;
|
|
577
|
-
min-width: 300px;
|
|
578
|
-
padding: 0;
|
|
579
|
-
display: none;
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
.category-popup-header {
|
|
583
|
-
background: #3498db;
|
|
584
|
-
color: white;
|
|
585
|
-
padding: 10px 15px;
|
|
586
|
-
border-radius: 6px 6px 0 0;
|
|
587
|
-
font-weight: bold;
|
|
588
|
-
display: flex;
|
|
589
|
-
justify-content: space-between;
|
|
590
|
-
align-items: center;
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
.category-popup-close {
|
|
594
|
-
cursor: pointer;
|
|
595
|
-
font-size: 18px;
|
|
596
|
-
font-weight: bold;
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
.category-popup-content {
|
|
600
|
-
padding: 15px;
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
.category-popup-description {
|
|
604
|
-
color: #2c3e50;
|
|
605
|
-
margin-bottom: 15px;
|
|
606
|
-
font-style: italic;
|
|
607
|
-
line-height: 1.4;
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
.category-popup-operators {
|
|
611
|
-
background: #f8f9fa;
|
|
612
|
-
border-radius: 4px;
|
|
613
|
-
padding: 10px;
|
|
614
|
-
border: 1px solid #e9ecef;
|
|
615
|
-
}
|
|
616
|
-
|
|
617
|
-
.category-popup-operators h5 {
|
|
618
|
-
margin: 0 0 8px 0;
|
|
619
|
-
color: #2c3e50;
|
|
620
|
-
font-size: 13px;
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
.popup-operators-grid {
|
|
624
|
-
display: flex;
|
|
625
|
-
flex-wrap: wrap;
|
|
626
|
-
gap: 4px;
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
.popup-operator-tag {
|
|
630
|
-
background: #ecf0f1;
|
|
631
|
-
color: #2c3e50;
|
|
632
|
-
padding: 2px 6px;
|
|
633
|
-
border-radius: 3px;
|
|
634
|
-
font-size: 11px;
|
|
635
|
-
font-family: monospace;
|
|
636
|
-
border: 1px solid #bdc3c7;
|
|
637
|
-
}
|
|
638
|
-
|
|
639
|
-
.readonly-display {
|
|
640
|
-
padding: 10px;
|
|
641
|
-
border: 1px solid #ddd;
|
|
642
|
-
border-radius: 4px;
|
|
643
|
-
background: #f8f9fa;
|
|
644
|
-
font-size: 14px;
|
|
645
|
-
min-height: 35px;
|
|
646
|
-
display: flex;
|
|
647
|
-
align-items: center;
|
|
648
|
-
}
|
|
649
|
-
</style>
|
|
650
|
-
</head>
|
|
651
|
-
<body>
|
|
652
|
-
<div class="feature-engineering-container">
|
|
653
|
-
<a href="{{ url_for('index') }}" class="back-button">← Back to Main</a>
|
|
654
|
-
|
|
655
|
-
<div class="header-section">
|
|
656
|
-
<h1>DataField Guide</h1>
|
|
657
|
-
<p>Get AI-powered recommendations for multi-step DataField Exploration</p>
|
|
658
|
-
</div>
|
|
659
|
-
|
|
660
|
-
<!-- API Configuration Section -->
|
|
661
|
-
<div class="config-section" id="apiConfigSection">
|
|
662
|
-
<h3>API Configuration</h3>
|
|
663
|
-
<div class="form-group">
|
|
664
|
-
<label for="modelProvider">AI Model Provider:</label>
|
|
665
|
-
<select id="modelProvider" class="form-input">
|
|
666
|
-
<option value="deepseek">Deepseek</option>
|
|
667
|
-
<option value="kimi">Kimi</option>
|
|
668
|
-
</select>
|
|
669
|
-
</div>
|
|
670
|
-
<div class="form-group">
|
|
671
|
-
<label for="apiKey">API Key:</label>
|
|
672
|
-
<input type="password" id="apiKey" class="form-input" placeholder="Enter your API key">
|
|
673
|
-
</div>
|
|
674
|
-
<div class="form-group">
|
|
675
|
-
<label for="modelName">Model Name:</label>
|
|
676
|
-
<input type="text" id="modelName" class="form-input" placeholder="e.g., deepseek-chat, kimi-k2-0711-preview">
|
|
677
|
-
<small style="color: #7f8c8d; font-size: 12px;">Enter the specific model name for your chosen provider</small>
|
|
678
|
-
</div>
|
|
679
|
-
<button id="saveApiKey" class="btn">Test & Save Configuration</button>
|
|
680
|
-
</div>
|
|
681
|
-
|
|
682
|
-
<!-- Show API Config Button (hidden by default) -->
|
|
683
|
-
<div class="config-section" id="showApiConfigSection" style="display: none;">
|
|
684
|
-
<h3>API Configuration</h3>
|
|
685
|
-
<p style="color: #27ae60; margin-bottom: 15px;">✅ API configuration saved successfully</p>
|
|
686
|
-
<button id="showApiConfig" class="btn btn-secondary">Show API Configuration</button>
|
|
687
|
-
</div>
|
|
688
|
-
|
|
689
|
-
<!-- Pipeline Status Section -->
|
|
690
|
-
<div class="pipeline-status" id="pipelineStatus" style="display: none;">
|
|
691
|
-
<h4>Current Pipeline Status</h4>
|
|
692
|
-
<div id="pipelineSteps">
|
|
693
|
-
<!-- Pipeline steps will be displayed here -->
|
|
694
|
-
</div>
|
|
695
|
-
</div>
|
|
696
|
-
|
|
697
|
-
<!-- Initial Setup Section -->
|
|
698
|
-
<div class="config-section" id="initialSetup">
|
|
699
|
-
<h3>Start New Feature Engineering Pipeline</h3>
|
|
700
|
-
<div class="template-actions">
|
|
701
|
-
<button id="loadQuestionTemplate" class="btn btn-secondary">Load Question Template</button>
|
|
702
|
-
<button id="editSystemPrompt" class="btn btn-secondary">Edit System Prompt</button>
|
|
703
|
-
<button id="startPipeline" class="btn btn-success">Get AI Recommendations</button>
|
|
704
|
-
</div>
|
|
705
|
-
<div class="form-group">
|
|
706
|
-
<label for="questionTemplate">Question Template:</label>
|
|
707
|
-
<textarea id="questionTemplate" class="form-input" rows="6" placeholder="Click 'Load Question Template' to load the template"></textarea>
|
|
708
|
-
</div>
|
|
709
|
-
</div>
|
|
710
|
-
|
|
711
|
-
<!-- Options Cards Section -->
|
|
712
|
-
<div class="options-section" id="optionsSection" style="display: none;">
|
|
713
|
-
<div class="options-header">
|
|
714
|
-
<h3>AI Recommendations</h3>
|
|
715
|
-
<div class="quick-actions">
|
|
716
|
-
<button id="clearOptions" class="btn btn-secondary">Clear & Start Over</button>
|
|
717
|
-
<button id="exportPipeline" class="btn">Export Pipeline</button>
|
|
718
|
-
</div>
|
|
719
|
-
</div>
|
|
720
|
-
<div class="options-container" id="optionsContainer">
|
|
721
|
-
<!-- Option cards will be dynamically inserted here -->
|
|
722
|
-
</div>
|
|
723
|
-
</div>
|
|
724
|
-
|
|
725
|
-
<!-- Modal Overlay for Editing -->
|
|
726
|
-
<div class="modal-overlay" id="modalOverlay"></div>
|
|
727
|
-
|
|
728
|
-
<!-- Category Popup -->
|
|
729
|
-
<div class="category-popup" id="categoryPopup">
|
|
730
|
-
<div class="category-popup-header">
|
|
731
|
-
<span id="categoryPopupTitle"></span>
|
|
732
|
-
<span class="category-popup-close" onclick="hideCategoryPopup()">×</span>
|
|
733
|
-
</div>
|
|
734
|
-
<div class="category-popup-content">
|
|
735
|
-
<div class="category-popup-description" id="categoryPopupDescription"></div>
|
|
736
|
-
<div class="category-popup-operators">
|
|
737
|
-
<h5 id="categoryPopupOperatorsTitle"></h5>
|
|
738
|
-
<div class="popup-operators-grid" id="categoryPopupOperators"></div>
|
|
739
|
-
</div>
|
|
740
|
-
</div>
|
|
741
|
-
</div>
|
|
742
|
-
|
|
743
|
-
<!-- System Prompt Edit Modal -->
|
|
744
|
-
<div class="modal-overlay" id="systemPromptModal" style="display: none;">
|
|
745
|
-
<div class="modal-content" style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 80%; max-width: 900px; max-height: 80vh; background: white; border-radius: 8px; box-shadow: 0 10px 30px rgba(0,0,0,0.3); z-index: 1001;">
|
|
746
|
-
<div class="modal-header" style="background: #3498db; color: white; padding: 15px 20px; border-radius: 8px 8px 0 0; display: flex; justify-content: space-between; align-items: center;">
|
|
747
|
-
<h3>Edit System Prompt</h3>
|
|
748
|
-
<span class="close" onclick="closeSystemPromptModal()" style="cursor: pointer; font-size: 24px;">×</span>
|
|
749
|
-
</div>
|
|
750
|
-
<div class="modal-body" style="padding: 20px; max-height: 60vh; overflow-y: auto;">
|
|
751
|
-
<div class="form-group">
|
|
752
|
-
<label for="systemPromptTextarea">System Prompt:</label>
|
|
753
|
-
<textarea id="systemPromptTextarea" class="form-input" rows="20" placeholder="Enter your custom system prompt here..."></textarea>
|
|
754
|
-
</div>
|
|
755
|
-
<div class="prompt-actions" style="margin-top: 15px; display: flex; gap: 10px;">
|
|
756
|
-
<button id="loadDefaultPrompt" class="btn btn-outline">Load Default Prompt</button>
|
|
757
|
-
</div>
|
|
758
|
-
</div>
|
|
759
|
-
<div class="modal-footer" style="padding: 15px 20px; border-top: 1px solid #eee; display: flex; justify-content: flex-end; gap: 10px;">
|
|
760
|
-
<button onclick="closeSystemPromptModal()" class="btn btn-outline">Cancel</button>
|
|
761
|
-
<button onclick="saveSystemPrompt()" class="btn btn-primary">Save & Apply</button>
|
|
762
|
-
</div>
|
|
763
|
-
</div>
|
|
764
|
-
</div>
|
|
765
|
-
|
|
766
|
-
<!-- Operator Suggestions Modal -->
|
|
767
|
-
<div class="modal-overlay" id="operatorSuggestionsModal" style="display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 1001;">
|
|
768
|
-
<div class="modal-content" style="position: absolute; top: 30%; left: 50%; transform: translate(-50%, -50%); width: 98%; max-width: 1600px; max-height: 95vh; background: white; border-radius: 8px; box-shadow: 0 10px 30px rgba(0,0,0,0.3); display: flex; flex-direction: column;">
|
|
769
|
-
<div class="modal-header" style="background: #9b59b6; color: white; padding: 15px 20px; border-radius: 8px 8px 0 0; display: flex; justify-content: space-between; align-items: center;">
|
|
770
|
-
<h3>🎯 Operator Suggestions for Current Step</h3>
|
|
771
|
-
<span class="close" onclick="closeOperatorSuggestionsModal()" style="cursor: pointer; font-size: 24px;">×</span>
|
|
772
|
-
</div>
|
|
773
|
-
<div class="modal-body" style="padding: 20px; flex: 1; overflow-y: auto; min-height: 0;">
|
|
774
|
-
<!-- Target Section -->
|
|
775
|
-
<div class="target-section" style="background: #f8f9fa; padding: 8px; border-radius: 8px; margin-bottom: 8px;">
|
|
776
|
-
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 5px;">
|
|
777
|
-
<h4 style="margin: 0; color: #2c3e50; font-size: 14px;">Research Target:</h4>
|
|
778
|
-
<button id="modalEditTarget" class="btn btn-secondary" style="padding: 3px 8px; font-size: 11px;">Edit Target</button>
|
|
779
|
-
</div>
|
|
780
|
-
|
|
781
|
-
<!-- Target Display (read-only) -->
|
|
782
|
-
<div class="target-display" id="modalTargetDisplay" style="background: white; border: 1px solid #e9ecef; border-radius: 4px; padding: 6px; min-height: 30px; max-height: 40px; overflow-y: auto;">
|
|
783
|
-
<div class="target-text" id="modalTargetText" style="line-height: 1.3; word-wrap: break-word; font-size: 12px;">No target set</div>
|
|
784
|
-
</div>
|
|
785
|
-
|
|
786
|
-
<!-- Target Input (editable) -->
|
|
787
|
-
<div id="modalTargetInputGroup" style="display: none;">
|
|
788
|
-
<textarea id="modalTargetInput" class="form-input" rows="2" placeholder="Describe your research target..." style="min-height: 40px; max-height: 60px; resize: vertical; font-size: 12px;"></textarea>
|
|
789
|
-
<div style="margin-top: 5px;">
|
|
790
|
-
<button id="modalSaveTarget" class="btn btn-success" style="padding: 3px 8px; font-size: 11px;">Save Target</button>
|
|
791
|
-
<button id="modalCancelTarget" class="btn btn-secondary" style="padding: 3px 8px; font-size: 11px; margin-left: 5px;">Cancel</button>
|
|
792
|
-
</div>
|
|
793
|
-
</div>
|
|
794
|
-
</div>
|
|
795
|
-
|
|
796
|
-
<!-- BRAIN Connection Notice -->
|
|
797
|
-
<div id="modalBrainNotice" style="margin-bottom: 8px; padding: 6px; background: #fff3cd; border: 1px solid #ffeaa7; border-radius: 4px; display: none;">
|
|
798
|
-
<div style="color: #856404; font-size: 12px;">
|
|
799
|
-
<strong>💡 Tip:</strong> Connect to WorldQuant BRAIN to get access to the full operator library (400+ operators).
|
|
800
|
-
<button onclick="openBrainLoginModal()" style="background: #3498db; color: white; border: none; padding: 3px 8px; border-radius: 3px; margin-left: 8px; cursor: pointer; font-size: 11px;">Connect to BRAIN</button>
|
|
801
|
-
</div>
|
|
802
|
-
</div>
|
|
803
|
-
|
|
804
|
-
<!-- Expression Section -->
|
|
805
|
-
<div class="expression-section" style="background: #f8f9fa; padding: 8px; border-radius: 8px; margin-bottom: 8px;">
|
|
806
|
-
<h4 style="margin: 0 0 5px 0; color: #2c3e50; font-size: 14px;">Current Expression for Seeking Advice:</h4>
|
|
807
|
-
<textarea id="modalCurrentExpression" class="form-input" rows="2" placeholder="Enter your current expression for this step... (e.g., ts_mean(close, 20) or rank(volume))" style="min-height: 30px; max-height: 40px; resize: vertical; font-size: 12px;"></textarea>
|
|
808
|
-
<div style="margin-top: 5px;">
|
|
809
|
-
<button id="modalStartEvaluation" class="btn btn-warning" style="padding: 5px 10px; font-size: 12px;">Get Operator Suggestions</button>
|
|
810
|
-
<button id="modalClearExpression" class="btn btn-secondary" style="padding: 5px 10px; font-size: 12px;">Clear Expression</button>
|
|
811
|
-
</div>
|
|
812
|
-
</div>
|
|
813
|
-
|
|
814
|
-
<!-- Evaluation Results Section -->
|
|
815
|
-
<div class="evaluation-section" id="modalEvaluationSection" style="display: none;">
|
|
816
|
-
<h4 style="margin: 0 0 10px 0; color: #2c3e50;">Operator Suggestions:</h4>
|
|
817
|
-
|
|
818
|
-
<!-- Filter Controls -->
|
|
819
|
-
<div class="filter-controls" style="display: flex; gap: 10px; margin-bottom: 8px; align-items: center; flex-wrap: wrap; padding: 6px; background: white; border-radius: 4px; border: 1px solid #e9ecef;">
|
|
820
|
-
<label style="display: flex; align-items: center; gap: 5px; font-weight: normal; min-width: 120px; font-size: 12px;">
|
|
821
|
-
<strong>Min Score:</strong>
|
|
822
|
-
<input type="range" id="modalMinScoreFilter" min="0" max="10" value="7" style="width: 80px;">
|
|
823
|
-
<span id="modalMinScoreValue" style="font-weight: bold; color: #3498db;">7</span>
|
|
824
|
-
</label>
|
|
825
|
-
<label style="display: flex; align-items: center; gap: 5px; font-weight: normal; min-width: 100px; font-size: 12px;">
|
|
826
|
-
<input type="checkbox" id="modalShowHighScores" checked> <strong>High (8-10)</strong>
|
|
827
|
-
</label>
|
|
828
|
-
<label style="display: flex; align-items: center; gap: 5px; font-weight: normal; min-width: 100px; font-size: 12px;">
|
|
829
|
-
<input type="checkbox" id="modalShowMediumScores" checked> <strong>Medium (4-7)</strong>
|
|
830
|
-
</label>
|
|
831
|
-
<label style="display: flex; align-items: center; gap: 5px; font-weight: normal; min-width: 100px; font-size: 12px;">
|
|
832
|
-
<input type="checkbox" id="modalShowLowScores"> <strong>Low (0-3)</strong>
|
|
833
|
-
</label>
|
|
834
|
-
</div>
|
|
835
|
-
|
|
836
|
-
<!-- Summary Stats -->
|
|
837
|
-
<div class="summary-stats" id="modalSummaryStats" style="display: none; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 8px; margin-bottom: 8px;">
|
|
838
|
-
<div class="stat-card stat-high" style="background: white; padding: 6px; border-radius: 4px; text-align: center;">
|
|
839
|
-
<div class="stat-number" id="modalHighScoreCount" style="font-size: 14px; font-weight: bold; color: #27ae60;">0</div>
|
|
840
|
-
<div class="stat-label" style="font-size: 11px; color: #7f8c8d;">High (8-10)</div>
|
|
841
|
-
</div>
|
|
842
|
-
<div class="stat-card stat-medium" style="background: white; padding: 6px; border-radius: 4px; text-align: center;">
|
|
843
|
-
<div class="stat-number" id="modalMediumScoreCount" style="font-size: 14px; font-weight: bold; color: #f39c12;">0</div>
|
|
844
|
-
<div class="stat-label" style="font-size: 11px; color: #7f8c8d;">Medium (4-7)</div>
|
|
845
|
-
</div>
|
|
846
|
-
<div class="stat-card stat-low" style="background: white; padding: 6px; border-radius: 4px; text-align: center;">
|
|
847
|
-
<div class="stat-number" id="modalLowScoreCount" style="font-size: 14px; font-weight: bold; color: #e74c3c;">0</div>
|
|
848
|
-
<div class="stat-label" style="font-size: 11px; color: #7f8c8d;">Low (0-3)</div>
|
|
849
|
-
</div>
|
|
850
|
-
</div>
|
|
851
|
-
|
|
852
|
-
<!-- Results Table -->
|
|
853
|
-
<div class="evaluation-table-container" style="overflow-x: auto; max-height: 600px; overflow-y: auto;">
|
|
854
|
-
<table class="evaluation-table" id="modalEvaluationTable" style="width: 100%; border-collapse: collapse; font-size: 13px; border: 1px solid #dee2e6;">
|
|
855
|
-
<thead>
|
|
856
|
-
<tr>
|
|
857
|
-
<th style="background: #f8f9fa; padding: 8px; text-align: left; border: 1px solid #dee2e6; border-bottom: 2px solid #dee2e6; position: sticky; top: 0; z-index: 10; width: 370px;">Operator</th>
|
|
858
|
-
<th style="background: #f8f9fa; padding: 8px; text-align: left; border: 1px solid #dee2e6; border-bottom: 2px solid #dee2e6; position: sticky; top: 0; z-index: 10; min-width: 400px;">Reason</th>
|
|
859
|
-
<th style="background: #f8f9fa; padding: 8px; text-align: center; border: 1px solid #dee2e6; border-bottom: 2px solid #dee2e6; position: sticky; top: 0; z-index: 10; width: 60px;">Score</th>
|
|
860
|
-
</tr>
|
|
861
|
-
</thead>
|
|
862
|
-
<tbody id="modalEvaluationTableBody">
|
|
863
|
-
<tr>
|
|
864
|
-
<td colspan="5" style="text-align: center; color: #7f8c8d; font-style: italic; padding: 20px;">
|
|
865
|
-
No suggestions yet. Enter your expression and click "Get Operator Suggestions".
|
|
866
|
-
</td>
|
|
867
|
-
</tr>
|
|
868
|
-
</tbody>
|
|
869
|
-
</table>
|
|
870
|
-
</div>
|
|
871
|
-
</div>
|
|
872
|
-
|
|
873
|
-
<!-- Progress Section -->
|
|
874
|
-
<div class="progress-section" id="modalProgressSection" style="display: none; background: white; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); margin-top: 20px;">
|
|
875
|
-
<div class="progress-header" style="background: #27ae60; color: white; padding: 10px 15px; border-radius: 8px 8px 0 0;">
|
|
876
|
-
<h4 style="margin: 0; font-size: 14px;">🔄 Evaluating Operators...</h4>
|
|
877
|
-
</div>
|
|
878
|
-
<div class="progress-content" style="padding: 15px;">
|
|
879
|
-
<div class="progress-bar" style="width: 100%; height: 15px; background-color: #e9ecef; border-radius: 8px; overflow: hidden; margin-bottom: 8px;">
|
|
880
|
-
<div class="progress-fill" id="modalProgressFill" style="height: 100%; background: linear-gradient(90deg, #27ae60, #2ecc71); transition: width 0.3s ease; display: flex; align-items: center; justify-content: center; color: white; font-size: 10px; font-weight: bold; width: 0%;">0%</div>
|
|
881
|
-
</div>
|
|
882
|
-
<div class="progress-stats" style="display: flex; justify-content: space-between; font-size: 12px; color: #6c757d;">
|
|
883
|
-
<span id="modalProgressText">Evaluating operators...</span>
|
|
884
|
-
<span id="modalProgressCount">0 / 0</span>
|
|
885
|
-
</div>
|
|
886
|
-
</div>
|
|
887
|
-
</div>
|
|
888
|
-
</div>
|
|
889
|
-
<div class="modal-footer" style="padding: 15px 20px; border-top: 1px solid #eee; display: flex; justify-content: space-between; align-items: center; flex-shrink: 0;">
|
|
890
|
-
<div>
|
|
891
|
-
<button id="modalExportResults" class="btn btn-secondary" style="display: none;">Export Results</button>
|
|
892
|
-
</div>
|
|
893
|
-
<div>
|
|
894
|
-
<button onclick="closeOperatorSuggestionsModal()" class="btn btn-outline">Close</button>
|
|
895
|
-
</div>
|
|
896
|
-
</div>
|
|
897
|
-
</div>
|
|
898
|
-
</div>
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
<!-- Export Section -->
|
|
903
|
-
<div class="export-section">
|
|
904
|
-
<h3>Available Feature Engineering Categories</h3>
|
|
905
|
-
<p>The AI assistant can recommend from these 15 categories:</p>
|
|
906
|
-
<div class="category-list">
|
|
907
|
-
<div class="category-item">Basic Arithmetic & Mathematical Operations</div>
|
|
908
|
-
<div class="category-item">Logical & Conditional Operations</div>
|
|
909
|
-
<div class="category-item">Time Series: Change Detection & Value Comparison</div>
|
|
910
|
-
<div class="category-item">Time Series: Statistical Feature Engineering</div>
|
|
911
|
-
<div class="category-item">Time Series: Ranking, Scaling, and Normalization</div>
|
|
912
|
-
<div class="category-item">Time Series: Decay, Smoothing, and Turnover Control</div>
|
|
913
|
-
<div class="category-item">Time Series: Extremes & Position Identification</div>
|
|
914
|
-
<div class="category-item">Cross-Sectional: Ranking, Scaling, and Normalization</div>
|
|
915
|
-
<div class="category-item">Cross-Sectional: Regression & Neutralization</div>
|
|
916
|
-
<div class="category-item">Cross-Sectional: Distributional Transformation & Truncation</div>
|
|
917
|
-
<div class="category-item">Transformational & Filtering Operations</div>
|
|
918
|
-
<div class="category-item">Group Aggregation & Statistical Summary</div>
|
|
919
|
-
<div class="category-item">Group Ranking, Scaling, and Normalization</div>
|
|
920
|
-
<div class="category-item">Group Regression & Neutralization</div>
|
|
921
|
-
<div class="category-item">Group Imputation & Backfilling</div>
|
|
922
|
-
</div>
|
|
923
|
-
</div>
|
|
924
|
-
</div>
|
|
925
|
-
|
|
926
|
-
<!-- BRAIN Login Modal -->
|
|
927
|
-
<div id="brainLoginModal" class="modal" style="display: none; position: fixed; z-index: 2000; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.5);">
|
|
928
|
-
<div class="modal-content" style="background-color: white; margin: 5% auto; padding: 0; border-radius: 8px; width: 90%; max-width: 500px; box-shadow: 0 4px 20px rgba(0,0,0,0.3);">
|
|
929
|
-
<div class="modal-header" style="background: #3498db; color: white; padding: 15px 20px; border-radius: 8px 8px 0 0; display: flex; justify-content: space-between; align-items: center;">
|
|
930
|
-
<h3>Connect to WorldQuant BRAIN</h3>
|
|
931
|
-
<span class="close" onclick="closeBrainLoginModal()" style="cursor: pointer; font-size: 24px;">×</span>
|
|
932
|
-
</div>
|
|
933
|
-
<div class="modal-body" style="padding: 20px;">
|
|
934
|
-
<form id="brainLoginForm" onsubmit="event.preventDefault(); authenticateBrain();">
|
|
935
|
-
<div class="form-group">
|
|
936
|
-
<label for="brainUsername">Username:</label>
|
|
937
|
-
<input type="email" id="brainUsername" class="form-input" placeholder="your.email@domain.com" required>
|
|
938
|
-
</div>
|
|
939
|
-
<div class="form-group">
|
|
940
|
-
<label for="brainPassword">Password:</label>
|
|
941
|
-
<input type="password" id="brainPassword" class="form-input" placeholder="Your password" required>
|
|
942
|
-
</div>
|
|
943
|
-
<div id="brainLoginStatus" class="login-status"></div>
|
|
944
|
-
<div id="loginSpinner" class="login-spinner" style="display: none;">
|
|
945
|
-
<div class="spinner" style="width: 20px; height: 20px; border: 2px solid #f3f3f3; border-top: 2px solid #3498db; border-radius: 50%; animation: spin 1s linear infinite; display: inline-block;"></div>
|
|
946
|
-
</div>
|
|
947
|
-
</form>
|
|
948
|
-
</div>
|
|
949
|
-
<div class="modal-footer" style="padding: 15px 20px; border-top: 1px solid #eee; display: flex; justify-content: flex-end; gap: 10px;">
|
|
950
|
-
<button onclick="closeBrainLoginModal()" class="btn btn-outline" id="cancelBtn">Cancel</button>
|
|
951
|
-
<button onclick="authenticateBrain()" class="btn btn-primary" id="loginBtn">Connect</button>
|
|
952
|
-
</div>
|
|
953
|
-
</div>
|
|
954
|
-
</div>
|
|
955
|
-
|
|
956
|
-
<script src="{{ url_for('static', filename='brain.js') }}"></script>
|
|
957
|
-
<script src="{{ url_for('static', filename='feature_engineering.js') }}"></script>
|
|
958
|
-
<script src="{{ url_for('static', filename='usage_widget.js') }}"></script>
|
|
959
|
-
</body>
|
|
960
|
-
</html>
|