cnhkmcp 2.3.4__py3-none-any.whl → 2.3.6__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 (60) hide show
  1. cnhkmcp/__init__.py +1 -1
  2. cnhkmcp/untracked/AI/321/206/320/231/320/243/321/205/342/225/226/320/265/321/204/342/225/221/342/225/221/BRAIN_AI/321/206/320/231/320/243/321/205/342/225/226/320/265/321/204/342/225/221/342/225/221Mac_Linux/321/207/320/231/320/230/321/206/320/254/320/274.zip +0 -0
  3. cnhkmcp/untracked/AI/321/206/320/231/320/243/321/205/342/225/226/320/265/321/204/342/225/221/342/225/221//321/205/320/237/320/234/321/205/320/227/342/225/227/321/205/320/276/320/231/321/210/320/263/320/225AI/321/206/320/231/320/243/321/205/342/225/226/320/265/321/204/342/225/221/342/225/221_Windows/321/207/320/231/320/230/321/206/320/254/320/274.exe +0 -0
  4. 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 +6 -3
  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//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 +5 -3
  6. cnhkmcp/untracked/APP/Tranformer/validator.py +149 -32
  7. cnhkmcp/untracked/APP/ace_lib.py +5 -3
  8. cnhkmcp/untracked/APP/blueprints/parsetab.py +60 -0
  9. cnhkmcp/untracked/APP/blueprints/validator.py +1080 -0
  10. cnhkmcp/untracked/APP/requirements.txt +0 -0
  11. cnhkmcp/untracked/APP/static/decoder.js +164 -38
  12. cnhkmcp/untracked/APP/static/simulator.js +15 -15
  13. cnhkmcp/untracked/APP/templates/feature_engineering.html +78 -78
  14. cnhkmcp/untracked/APP/templates/idea_house.html +49 -49
  15. cnhkmcp/untracked/APP/templates/index.html +58 -58
  16. cnhkmcp/untracked/APP/templates/inspiration_house.html +64 -64
  17. cnhkmcp/untracked/APP/templates/paper_analysis.html +21 -21
  18. cnhkmcp/untracked/APP/templates/simulator.html +38 -38
  19. cnhkmcp/untracked/APP/templates/transformer_web.html +24 -24
  20. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-data-feature-engineering/SKILL.md +15 -15
  21. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769927658009727000.json +10 -0
  22. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769927658519220600.json +10 -0
  23. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769927659002708800.json +10 -0
  24. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769927659510920900.json +10 -0
  25. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/data/fundamental28_GLB_delay1/fundamental28_GLB_1_idea_1769927659982673800.json +10 -0
  26. cnhkmcp/untracked/APP/trailSomeAlphas/skills/brain-feature-implementation/scripts/validator.py +153 -32
  27. 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 +51 -3
  28. cnhkmcp/untracked/arxiv_api.py +5 -3
  29. cnhkmcp/untracked/back_up/forum_functions.py +5 -3
  30. cnhkmcp/untracked/forum_functions.py +5 -3
  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/forum_functions.py +5 -3
  32. cnhkmcp/untracked/platform_functions.py +5 -3
  33. cnhkmcp/untracked/skills/alpha-expression-verifier/scripts/validator.py +149 -32
  34. cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/SKILL.md +8 -2
  35. cnhkmcp/untracked/skills/brain-inspectRawTemplate-create-Setting/ace.log +0 -0
  36. cnhkmcp/untracked/skills/brain-inspectRawTemplate-create-Setting/idea_context.json +15 -0
  37. cnhkmcp/untracked/skills/brain-inspectRawTemplate-create-Setting/scripts/__init__.py +0 -0
  38. cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/scripts/parse_idea_file.py +33 -1
  39. cnhkmcp/untracked/skills/brain-inspectRawTemplate-create-Setting/scripts/parsetab.py +60 -0
  40. cnhkmcp/untracked/skills/brain-inspectRawTemplate-create-Setting/scripts/validator.py +1086 -0
  41. 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 +5 -3
  42. {cnhkmcp-2.3.4.dist-info → cnhkmcp-2.3.6.dist-info}/METADATA +1 -1
  43. {cnhkmcp-2.3.4.dist-info → cnhkmcp-2.3.6.dist-info}/RECORD +60 -48
  44. /cnhkmcp/untracked/{skills/brain-inspectTemplate-create-Setting → APP/hkSimulator}/ace.log +0 -0
  45. /cnhkmcp/untracked/{skills/brain-inspectTemplate-create-Setting/scripts/__init__.py → APP/hkSimulator/autosim_20260201_172428.log} +0 -0
  46. /cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/.gitignore +0 -0
  47. /cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/ace_lib.py +0 -0
  48. /cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/config.json +0 -0
  49. /cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/fundamental28_GLB_1_idea_1769874845978315000.json +0 -0
  50. /cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/helpful_functions.py +0 -0
  51. /cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/scripts/build_alpha_list.py +0 -0
  52. /cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/scripts/fetch_sim_options.py +0 -0
  53. /cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/scripts/load_credentials.py +0 -0
  54. /cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/scripts/process_template.py +0 -0
  55. /cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/scripts/resolve_settings.py +0 -0
  56. /cnhkmcp/untracked/skills/{brain-inspectTemplate-create-Setting → brain-inspectRawTemplate-create-Setting}/sim_options_snapshot.json +0 -0
  57. {cnhkmcp-2.3.4.dist-info → cnhkmcp-2.3.6.dist-info}/WHEEL +0 -0
  58. {cnhkmcp-2.3.4.dist-info → cnhkmcp-2.3.6.dist-info}/entry_points.txt +0 -0
  59. {cnhkmcp-2.3.4.dist-info → cnhkmcp-2.3.6.dist-info}/licenses/LICENSE +0 -0
  60. {cnhkmcp-2.3.4.dist-info → cnhkmcp-2.3.6.dist-info}/top_level.txt +0 -0
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Feature Engineering Assistant - BRAIN</title>
6
+ <title>特征工程助手 - BRAIN</title>
7
7
  <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
8
8
  <style>
9
9
  .feature-engineering-container {
@@ -650,18 +650,18 @@
650
650
  </head>
651
651
  <body>
652
652
  <div class="feature-engineering-container">
653
- <a href="{{ url_for('index') }}" class="back-button">← Back to Main</a>
653
+ <a href="{{ url_for('index') }}" class="back-button">← 返回主页</a>
654
654
 
655
655
  <div class="header-section">
656
- <h1>DataField Guide</h1>
657
- <p>Get AI-powered recommendations for multi-step DataField Exploration</p>
656
+ <h1>数据字段指南</h1>
657
+ <p>获取 AI 驱动的多步骤数据字段探索建议</p>
658
658
  </div>
659
659
 
660
660
  <!-- API Configuration Section -->
661
661
  <div class="config-section" id="apiConfigSection">
662
- <h3>API Configuration</h3>
662
+ <h3>API 配置</h3>
663
663
  <div class="form-group">
664
- <label for="modelProvider">AI Model Provider:</label>
664
+ <label for="modelProvider">AI 模型提供商:</label>
665
665
  <select id="modelProvider" class="form-input">
666
666
  <option value="deepseek">Deepseek</option>
667
667
  <option value="kimi">Kimi</option>
@@ -669,26 +669,26 @@
669
669
  </div>
670
670
  <div class="form-group">
671
671
  <label for="apiKey">API Key:</label>
672
- <input type="password" id="apiKey" class="form-input" placeholder="Enter your API key">
672
+ <input type="password" id="apiKey" class="form-input" placeholder="输入您的 API Key">
673
673
  </div>
674
674
  <div class="form-group">
675
- <label for="modelName">Model Name:</label>
675
+ <label for="modelName">模型名称:</label>
676
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>
677
+ <small style="color: #7f8c8d; font-size: 12px;">为所选提供商输入具体模型名称</small>
678
678
  </div>
679
- <button id="saveApiKey" class="btn">Test & Save Configuration</button>
679
+ <button id="saveApiKey" class="btn">测试并保存配置</button>
680
680
  </div>
681
681
 
682
682
  <!-- Show API Config Button (hidden by default) -->
683
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>
684
+ <h3>API 配置</h3>
685
+ <p style="color: #27ae60; margin-bottom: 15px;">✅ API 配置保存成功</p>
686
+ <button id="showApiConfig" class="btn btn-secondary">显示 API 配置</button>
687
687
  </div>
688
688
 
689
689
  <!-- Pipeline Status Section -->
690
690
  <div class="pipeline-status" id="pipelineStatus" style="display: none;">
691
- <h4>Current Pipeline Status</h4>
691
+ <h4>当前管道状态</h4>
692
692
  <div id="pipelineSteps">
693
693
  <!-- Pipeline steps will be displayed here -->
694
694
  </div>
@@ -696,25 +696,25 @@
696
696
 
697
697
  <!-- Initial Setup Section -->
698
698
  <div class="config-section" id="initialSetup">
699
- <h3>Start New Feature Engineering Pipeline</h3>
699
+ <h3>开始新的特征工程管道</h3>
700
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>
701
+ <button id="loadQuestionTemplate" class="btn btn-secondary">加载问题模板</button>
702
+ <button id="editSystemPrompt" class="btn btn-secondary">编辑系统提示词</button>
703
+ <button id="startPipeline" class="btn btn-success">获取 AI 建议</button>
704
704
  </div>
705
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>
706
+ <label for="questionTemplate">问题模板:</label>
707
+ <textarea id="questionTemplate" class="form-input" rows="6" placeholder="点击“加载问题模板”以加载模板"></textarea>
708
708
  </div>
709
709
  </div>
710
710
 
711
711
  <!-- Options Cards Section -->
712
712
  <div class="options-section" id="optionsSection" style="display: none;">
713
713
  <div class="options-header">
714
- <h3>AI Recommendations</h3>
714
+ <h3>AI 建议</h3>
715
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>
716
+ <button id="clearOptions" class="btn btn-secondary">清除并重新开始</button>
717
+ <button id="exportPipeline" class="btn">导出管道</button>
718
718
  </div>
719
719
  </div>
720
720
  <div class="options-container" id="optionsContainer">
@@ -744,21 +744,21 @@
744
744
  <div class="modal-overlay" id="systemPromptModal" style="display: none;">
745
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
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>
747
+ <h3>编辑系统提示词</h3>
748
748
  <span class="close" onclick="closeSystemPromptModal()" style="cursor: pointer; font-size: 24px;">&times;</span>
749
749
  </div>
750
750
  <div class="modal-body" style="padding: 20px; max-height: 60vh; overflow-y: auto;">
751
751
  <div class="form-group">
752
752
  <label for="systemPromptTextarea">System Prompt:</label>
753
- <textarea id="systemPromptTextarea" class="form-input" rows="20" placeholder="Enter your custom system prompt here..."></textarea>
753
+ <textarea id="systemPromptTextarea" class="form-input" rows="20" placeholder="在此处输入您的自定义系统提示词..."></textarea>
754
754
  </div>
755
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>
756
+ <button id="loadDefaultPrompt" class="btn btn-outline">加载默认提示词</button>
757
757
  </div>
758
758
  </div>
759
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>
760
+ <button onclick="closeSystemPromptModal()" class="btn btn-outline">取消</button>
761
+ <button onclick="saveSystemPrompt()" class="btn btn-primary">保存并应用</button>
762
762
  </div>
763
763
  </div>
764
764
  </div>
@@ -767,28 +767,28 @@
767
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
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
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>
770
+ <h3>🎯 当前步骤的算子建议</h3>
771
771
  <span class="close" onclick="closeOperatorSuggestionsModal()" style="cursor: pointer; font-size: 24px;">&times;</span>
772
772
  </div>
773
773
  <div class="modal-body" style="padding: 20px; flex: 1; overflow-y: auto; min-height: 0;">
774
774
  <!-- Target Section -->
775
775
  <div class="target-section" style="background: #f8f9fa; padding: 8px; border-radius: 8px; margin-bottom: 8px;">
776
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>
777
+ <h4 style="margin: 0; color: #2c3e50; font-size: 14px;">研究目标:</h4>
778
+ <button id="modalEditTarget" class="btn btn-secondary" style="padding: 3px 8px; font-size: 11px;">编辑目标</button>
779
779
  </div>
780
780
 
781
781
  <!-- Target Display (read-only) -->
782
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>
783
+ <div class="target-text" id="modalTargetText" style="line-height: 1.3; word-wrap: break-word; font-size: 12px;">未设置目标</div>
784
784
  </div>
785
785
 
786
786
  <!-- Target Input (editable) -->
787
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>
788
+ <textarea id="modalTargetInput" class="form-input" rows="2" placeholder="描述您的研究目标..." style="min-height: 40px; max-height: 60px; resize: vertical; font-size: 12px;"></textarea>
789
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>
790
+ <button id="modalSaveTarget" class="btn btn-success" style="padding: 3px 8px; font-size: 11px;">保存目标</button>
791
+ <button id="modalCancelTarget" class="btn btn-secondary" style="padding: 3px 8px; font-size: 11px; margin-left: 5px;">取消</button>
792
792
  </div>
793
793
  </div>
794
794
  </div>
@@ -796,40 +796,40 @@
796
796
  <!-- BRAIN Connection Notice -->
797
797
  <div id="modalBrainNotice" style="margin-bottom: 8px; padding: 6px; background: #fff3cd; border: 1px solid #ffeaa7; border-radius: 4px; display: none;">
798
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>
799
+ <strong>💡 提示:</strong> 连接到 WorldQuant BRAIN 以访问完整的算子库 (400+ 算子)
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;">连接到 BRAIN</button>
801
801
  </div>
802
802
  </div>
803
803
 
804
804
  <!-- Expression Section -->
805
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>
806
+ <h4 style="margin: 0 0 5px 0; color: #2c3e50; font-size: 14px;">寻求建议的当前表达式:</h4>
807
+ <textarea id="modalCurrentExpression" class="form-input" rows="2" placeholder="输入当前步骤的表达式... (e.g., ts_mean(close, 20) or rank(volume))" style="min-height: 30px; max-height: 40px; resize: vertical; font-size: 12px;"></textarea>
808
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>
809
+ <button id="modalStartEvaluation" class="btn btn-warning" style="padding: 5px 10px; font-size: 12px;">获取算子建议</button>
810
+ <button id="modalClearExpression" class="btn btn-secondary" style="padding: 5px 10px; font-size: 12px;">清除表达式</button>
811
811
  </div>
812
812
  </div>
813
813
 
814
814
  <!-- Evaluation Results Section -->
815
815
  <div class="evaluation-section" id="modalEvaluationSection" style="display: none;">
816
- <h4 style="margin: 0 0 10px 0; color: #2c3e50;">Operator Suggestions:</h4>
816
+ <h4 style="margin: 0 0 10px 0; color: #2c3e50;">算子建议:</h4>
817
817
 
818
818
  <!-- Filter Controls -->
819
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
820
  <label style="display: flex; align-items: center; gap: 5px; font-weight: normal; min-width: 120px; font-size: 12px;">
821
- <strong>Min Score:</strong>
821
+ <strong>最低评分:</strong>
822
822
  <input type="range" id="modalMinScoreFilter" min="0" max="10" value="7" style="width: 80px;">
823
823
  <span id="modalMinScoreValue" style="font-weight: bold; color: #3498db;">7</span>
824
824
  </label>
825
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>
826
+ <input type="checkbox" id="modalShowHighScores" checked> <strong>高 (8-10)</strong>
827
827
  </label>
828
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>
829
+ <input type="checkbox" id="modalShowMediumScores" checked> <strong>中 (4-7)</strong>
830
830
  </label>
831
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>
832
+ <input type="checkbox" id="modalShowLowScores"> <strong>低 (0-3)</strong>
833
833
  </label>
834
834
  </div>
835
835
 
@@ -837,15 +837,15 @@
837
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
838
  <div class="stat-card stat-high" style="background: white; padding: 6px; border-radius: 4px; text-align: center;">
839
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>
840
+ <div class="stat-label" style="font-size: 11px; color: #7f8c8d;">高 (8-10)</div>
841
841
  </div>
842
842
  <div class="stat-card stat-medium" style="background: white; padding: 6px; border-radius: 4px; text-align: center;">
843
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>
844
+ <div class="stat-label" style="font-size: 11px; color: #7f8c8d;">中 (4-7)</div>
845
845
  </div>
846
846
  <div class="stat-card stat-low" style="background: white; padding: 6px; border-radius: 4px; text-align: center;">
847
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>
848
+ <div class="stat-label" style="font-size: 11px; color: #7f8c8d;">低 (0-3)</div>
849
849
  </div>
850
850
  </div>
851
851
 
@@ -854,15 +854,15 @@
854
854
  <table class="evaluation-table" id="modalEvaluationTable" style="width: 100%; border-collapse: collapse; font-size: 13px; border: 1px solid #dee2e6;">
855
855
  <thead>
856
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>
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;">算子</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;">理由</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;">评分</th>
860
860
  </tr>
861
861
  </thead>
862
862
  <tbody id="modalEvaluationTableBody">
863
863
  <tr>
864
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".
865
+ 暂无建议。输入您的表达式并点击“获取算子建议”。
866
866
  </td>
867
867
  </tr>
868
868
  </tbody>
@@ -873,7 +873,7 @@
873
873
  <!-- Progress Section -->
874
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
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>
876
+ <h4 style="margin: 0; font-size: 14px;">🔄 正在评估算子...</h4>
877
877
  </div>
878
878
  <div class="progress-content" style="padding: 15px;">
879
879
  <div class="progress-bar" style="width: 100%; height: 15px; background-color: #e9ecef; border-radius: 8px; overflow: hidden; margin-bottom: 8px;">
@@ -888,10 +888,10 @@
888
888
  </div>
889
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
890
  <div>
891
- <button id="modalExportResults" class="btn btn-secondary" style="display: none;">Export Results</button>
891
+ <button id="modalExportResults" class="btn btn-secondary" style="display: none;">导出结果</button>
892
892
  </div>
893
893
  <div>
894
- <button onclick="closeOperatorSuggestionsModal()" class="btn btn-outline">Close</button>
894
+ <button onclick="closeOperatorSuggestionsModal()" class="btn btn-outline">关闭</button>
895
895
  </div>
896
896
  </div>
897
897
  </div>
@@ -901,24 +901,24 @@
901
901
 
902
902
  <!-- Export Section -->
903
903
  <div class="export-section">
904
- <h3>Available Feature Engineering Categories</h3>
905
- <p>The AI assistant can recommend from these 15 categories:</p>
904
+ <h3>可用的特征工程类别</h3>
905
+ <p>AI 助手可以根据以下 15 个类别提供建议:</p>
906
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>
907
+ <div class="category-item">基础算术与数学运算</div>
908
+ <div class="category-item">逻辑与条件运算</div>
909
+ <div class="category-item">时间序列:变化检测与数值比较</div>
910
+ <div class="category-item">时间序列:统计特征工程</div>
911
+ <div class="category-item">时间序列:排名、缩放和归一化</div>
912
+ <div class="category-item">时间序列:衰减、平滑和换手率控制</div>
913
+ <div class="category-item">时间序列:极值与位置识别</div>
914
+ <div class="category-item">截面:排名、缩放和归一化</div>
915
+ <div class="category-item">截面:回归与中性化</div>
916
+ <div class="category-item">截面:分布变换与截断</div>
917
+ <div class="category-item">变换与过滤操作</div>
918
+ <div class="category-item">分组聚合与统计汇总</div>
919
+ <div class="category-item">分组排名、缩放和归一化</div>
920
+ <div class="category-item">分组回归与中性化</div>
921
+ <div class="category-item">分组插补与回填</div>
922
922
  </div>
923
923
  </div>
924
924
  </div>
@@ -927,17 +927,17 @@
927
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
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
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>
930
+ <h3>连接到 WorldQuant BRAIN</h3>
931
931
  <span class="close" onclick="closeBrainLoginModal()" style="cursor: pointer; font-size: 24px;">&times;</span>
932
932
  </div>
933
933
  <div class="modal-body" style="padding: 20px;">
934
934
  <form id="brainLoginForm" onsubmit="event.preventDefault(); authenticateBrain();">
935
935
  <div class="form-group">
936
- <label for="brainUsername">Username:</label>
936
+ <label for="brainUsername">用户名:</label>
937
937
  <input type="email" id="brainUsername" class="form-input" placeholder="your.email@domain.com" required>
938
938
  </div>
939
939
  <div class="form-group">
940
- <label for="brainPassword">Password:</label>
940
+ <label for="brainPassword">密码:</label>
941
941
  <input type="password" id="brainPassword" class="form-input" placeholder="Your password" required>
942
942
  </div>
943
943
  <div id="brainLoginStatus" class="login-status"></div>
@@ -947,8 +947,8 @@
947
947
  </form>
948
948
  </div>
949
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>
950
+ <button onclick="closeBrainLoginModal()" class="btn btn-outline" id="cancelBtn">取消</button>
951
+ <button onclick="authenticateBrain()" class="btn btn-primary" id="loginBtn">连接</button>
952
952
  </div>
953
953
  </div>
954
954
  </div>
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Idea House - Data Field Analysis</title>
6
+ <title>创意工坊 - 数据字段分析</title>
7
7
  <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
8
8
  <style>
9
9
  .idea-house-container {
@@ -377,63 +377,63 @@
377
377
  <body>
378
378
  <div class="container">
379
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>
380
+ <h1>创意工坊</h1>
381
+ <p class="subtitle">让数据说话</p>
382
+ <a href="/" class="btn btn-outline">← 返回主页</a>
383
383
  </header>
384
384
 
385
385
  <div class="idea-house-container">
386
386
  <!-- Coze API Configuration Section -->
387
387
  <div class="api-config-section">
388
- <h2>Coze API Configuration</h2>
388
+ <h2>Coze API 配置</h2>
389
389
  <div class="params-section">
390
390
  <div class="params-row">
391
391
  <div class="param-group" style="flex: 2;">
392
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>
393
+ Coze API 令牌:
394
+ <button type="button" id="toggleApiTokenBtn" class="toggle-btn" style="margin-left: 10px; padding: 2px 8px; font-size: 12px;">显示</button>
395
395
  </label>
396
- <input type="password" id="cozeApiTokenInput" class="form-input" placeholder="Enter your Coze API token" value="sat_xZzjQThWADuE8uePBzh9fI0EN3Qt43OEEJ2pKbZm8SePbjnM7TDVardfmaWOI4JM">
396
+ <input type="password" id="cozeApiTokenInput" class="form-input" placeholder="输入您的 Coze API 令牌" value="sat_xZzjQThWADuE8uePBzh9fI0EN3Qt43OEEJ2pKbZm8SePbjnM7TDVardfmaWOI4JM">
397
397
  </div>
398
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">
399
+ <label for="workflowIdInput">工作流 ID:</label>
400
+ <input type="text" id="workflowIdInput" class="form-input" placeholder="输入工作流 ID" value="7522912027267956786">
401
401
  </div>
402
402
  </div>
403
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>
404
+ <em>提供默认值。您可以将其替换为您自己的 Coze API 凭据。</em>
405
405
  </div>
406
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>
407
+ <button id="saveCozeConfigBtn" class="btn btn-secondary btn-small">保存配置</button>
408
+ <button id="clearCozeConfigBtn" class="btn btn-outline btn-small" style="margin-left: 10px;">恢复默认</button>
409
+ <span id="saveConfigMessage" style="margin-left: 10px; color: #4caf50; display: none;">配置已保存!</span>
410
410
  </div>
411
411
  </div>
412
412
  </div>
413
413
 
414
414
  <!-- Data Fields Loading Section -->
415
415
  <div class="data-fields-section">
416
- <h2>Load Data Fields from BRAIN</h2>
416
+ <h2>从 BRAIN 加载数据字段</h2>
417
417
  <div class="params-section">
418
418
  <div class="params-row">
419
419
  <div class="param-group">
420
- <label for="regionInput">Region:</label>
420
+ <label for="regionInput">地区:</label>
421
421
  <input type="text" id="regionInput" class="form-input" value="USA">
422
422
  </div>
423
423
  <div class="param-group">
424
- <label for="delayInput">Delay:</label>
424
+ <label for="delayInput">延迟:</label>
425
425
  <input type="number" id="delayInput" class="form-input" value="1">
426
426
  </div>
427
427
  <div class="param-group">
428
- <label for="universeInput">Universe:</label>
428
+ <label for="universeInput">股票池:</label>
429
429
  <input type="text" id="universeInput" class="form-input" value="TOP3000">
430
430
  </div>
431
431
  <div class="param-group">
432
- <label for="datasetInput">Dataset ID:</label>
432
+ <label for="datasetInput">数据集 ID:</label>
433
433
  <input type="text" id="datasetInput" class="form-input" value="analyst10">
434
434
  </div>
435
435
  </div>
436
- <button id="loadDataFieldsBtn" class="btn btn-primary">Load Data Fields</button>
436
+ <button id="loadDataFieldsBtn" class="btn btn-primary">加载数据字段</button>
437
437
  </div>
438
438
 
439
439
  <div id="dataFieldsStats" class="stats-info"></div>
@@ -442,86 +442,86 @@
442
442
  <!-- Add filtering controls -->
443
443
  <div class="data-fields-controls">
444
444
  <div class="filter-label">
445
- <span>Quick Filters 👉</span>
445
+ <span>快速过滤 👉</span>
446
446
  </div>
447
447
  <div class="filter-options">
448
448
  <label>
449
- <input type="checkbox" id="filterHighCoverage"> High Coverage (>90%)
449
+ <input type="checkbox" id="filterHighCoverage"> 高覆盖率 (>90%)
450
450
  </label>
451
451
  <label>
452
- <input type="checkbox" id="filterPopular"> Popular (>1000 users)
452
+ <input type="checkbox" id="filterPopular"> 热门 (>1000 用户)
453
453
  </label>
454
454
  <label>
455
- <input type="checkbox" id="filterMatrixOnly"> Matrix Type Only
455
+ <input type="checkbox" id="filterMatrixOnly"> 仅矩阵类型
456
456
  </label>
457
457
  </div>
458
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>
459
+ <button id="selectAllFiltered" class="btn btn-small btn-secondary">全选过滤结果</button>
460
+ <button id="clearAllSelected" class="btn btn-small btn-outline">清除全部</button>
461
461
  </div>
462
462
  </div>
463
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>
464
+ <span id="dataFieldsCount">0 个字段已加载</span> |
465
+ <span id="filteredCount">0 个符合条件</span> |
466
+ <span id="selectedFieldsCount">0 个已选择</span>
467
467
  </div>
468
468
 
469
469
  <table class="data-fields-table" id="dataFieldsTable">
470
470
  <thead>
471
471
  <tr class="header-row">
472
472
  <th style="width: 40px;">
473
- <input type="checkbox" id="selectAllCheckbox" title="Select/Deselect All">
473
+ <input type="checkbox" id="selectAllCheckbox" title="全选/取消全选">
474
474
  </th>
475
475
  <th style="width: 200px; min-width: 150px;">
476
- Field ID
476
+ 字段 ID
477
477
  <button class="sort-btn" data-column="id" data-order="asc">↕</button>
478
478
  </th>
479
479
  <th style="min-width: 300px;">
480
- Description
480
+ 描述
481
481
  <button class="sort-btn" data-column="description" data-order="asc">↕</button>
482
482
  </th>
483
483
  <th style="width: 100px;">
484
- Type
484
+ 类型
485
485
  <button class="sort-btn" data-column="type" data-order="asc">↕</button>
486
486
  </th>
487
487
  <th style="width: 150px;">
488
- Coverage
488
+ 覆盖率
489
489
  <button class="sort-btn" data-column="coverage" data-order="asc">↕</button>
490
490
  </th>
491
491
  <th style="width: 100px;">
492
- Users
492
+ 用户数
493
493
  <button class="sort-btn" data-column="userCount" data-order="asc">↕</button>
494
494
  </th>
495
495
  <th style="width: 100px;">
496
- Alphas
496
+ Alpha 数量
497
497
  <button class="sort-btn" data-column="alphaCount" data-order="asc">↕</button>
498
498
  </th>
499
499
  </tr>
500
500
  <tr class="filter-row">
501
501
  <th></th>
502
502
  <th>
503
- <input type="text" class="column-filter" data-column="id" placeholder="Filter ID...">
503
+ <input type="text" class="column-filter" data-column="id" placeholder="过滤 ID...">
504
504
  </th>
505
505
  <th>
506
- <input type="text" class="column-filter" data-column="description" placeholder="Filter description...">
506
+ <input type="text" class="column-filter" data-column="description" placeholder="过滤描述...">
507
507
  </th>
508
508
  <th>
509
509
  <select class="column-filter" data-column="type" id="typeFilter">
510
- <option value="">All Types</option>
510
+ <option value="">所有类型</option>
511
511
  </select>
512
512
  </th>
513
513
  <th>
514
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">
515
+ <input type="number" class="column-filter-min" data-column="coverage" placeholder="最小 %" min="0" max="100" step="0.1">
516
516
  <span>-</span>
517
- <input type="number" class="column-filter-max" data-column="coverage" placeholder="Max %" min="0" max="100" step="0.1">
517
+ <input type="number" class="column-filter-max" data-column="coverage" placeholder="最大 %" min="0" max="100" step="0.1">
518
518
  </div>
519
519
  </th>
520
520
  <th>
521
- <input type="number" class="column-filter" data-column="userCount" placeholder="Min users" min="0">
521
+ <input type="number" class="column-filter" data-column="userCount" placeholder="最少用户" min="0">
522
522
  </th>
523
523
  <th>
524
- <input type="number" class="column-filter" data-column="alphaCount" placeholder="Min alphas" min="0">
524
+ <input type="number" class="column-filter" data-column="alphaCount" placeholder="最少 Alpha" min="0">
525
525
  </th>
526
526
  </tr>
527
527
  </thead>
@@ -534,15 +534,15 @@
534
534
 
535
535
  <!-- Selected Fields Section -->
536
536
  <div class="selected-fields-section" id="selectedFieldsSection" style="display: none;">
537
- <h2>Selected Fields</h2>
537
+ <h2>已选字段</h2>
538
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>
539
+ <button id="clearSelectionBtn" class="btn btn-secondary">清除选择</button>
540
+ <button id="processFieldsBtn" class="btn btn-primary">处理选中字段</button>
541
541
  </div>
542
542
 
543
543
  <!-- Results Section -->
544
544
  <div class="results-section" id="resultsSection" style="display: none;">
545
- <h2>Analysis Results</h2>
545
+ <h2>分析结果</h2>
546
546
  <div class="markdown-content" id="resultsContent">
547
547
  <!-- Results will be displayed here -->
548
548
  </div>
@@ -553,8 +553,8 @@
553
553
  <!-- Loading Overlay -->
554
554
  <div class="loading-overlay" id="loadingOverlay">
555
555
  <div class="loading-content">
556
- <h3>Processing...</h3>
557
- <p>Please wait while we analyze your selected fields...</p>
556
+ <h3>处理中...</h3>
557
+ <p>请稍候,正在分析您选择的字段...</p>
558
558
  </div>
559
559
  </div>
560
560