Spaces:
Sleeping
Sleeping
| """ | |
| dashTest.py ← 向下相容 shim | |
| -------------------------------- | |
| 原始 3443 行已拆分至以下六個模組(均放在同一 layout/ 資料夾下): | |
| dt_gemini.py Gemini AI 用戶端 + 批改回饋 | |
| dt_math.py 數學運算 + eq_answer | |
| dt_render_utils.py 渲染工具(顏色、數學、run 渲染,無 callback) | |
| dt_render_blocks.py Block 渲染元件 | |
| dt_quiz.py Quiz 題型渲染 | |
| dt_callbacks.py 所有 Dash @callback | |
| 此 shim 重新匯出所有公開 API,確保現有程式碼不需要修改: | |
| from layout.dashTest import render_doc ← 仍可用 | |
| from layout.dashTest import install_callbacks_once ← 仍可用 | |
| """ | |
| # ── Gemini / AI ────────────────────────────────────────────────────────── | |
| from .dt_gemini import ( # noqa: F401 | |
| _gem_call, _gem_json, | |
| _first_json, _s, _get_api_key, | |
| _norm_model, _ai_log_fail, | |
| _repair_json_newlines, _loads_json_robust, | |
| _ai_generate_similar_quizzes_as_md, | |
| _parse_ai_md_to_quiz_nodes, _parse_options_md, | |
| _ai_feedback_fill_gemini, | |
| _ai_feedback_choice_gemini, | |
| _ai_feedback_multi_gemini, | |
| _prompt_md_to_runs, | |
| DEFAULT_NORMALIZE, | |
| _gem_client, _API_KEY, | |
| ) | |
| # ── 數學 ────────────────────────────────────────────────────────────────── | |
| from .dt_math import ( # noqa: F401 | |
| eq_answer, | |
| extract_param_function, extract_k_as_function, | |
| _normalize_text, _std_text, _apply_text_ops, | |
| _to_sympy, _symbolic_equal, _as_number, _numeric_close, | |
| _preprocess_math, _protect_funcs_and_consts, _unprotect, | |
| _insert_implicit_mul, | |
| x, y, z, k, m, n, c, g, | |
| XY, PARAMS, KNOWN_FUNCS, KNOWN_CONST, | |
| ) | |
| # ── 渲染工具 ────────────────────────────────────────────────────────────── | |
| from .dt_render_utils import ( # noqa: F401 | |
| HAS_PRISM, DashLatex, DEFAULT_TOL, | |
| _norm_hex, _hex_to_hsl, _hsl_to_hex, | |
| _to_dark_color, _themed_color_style, | |
| _as_css_color, _ensure_theme_colors, | |
| _parse_img_hints, _apply_img_size_style, | |
| _split_text_links_images, | |
| render_url, render_picture, render_inline_media, | |
| _strip_math_delims, _render_inline_math, | |
| render_math_inline, render_math_block, render_option_label, | |
| render_inline_runs, render_runs, | |
| _as_bool, _is_true, | |
| _runs_to_text_for_prompt, | |
| ) | |
| # ── Block 渲染 ──────────────────────────────────────────────────────────── | |
| from .dt_render_blocks import ( # noqa: F401 | |
| render_doc, render_doc_section, | |
| build_content_and_toc, render_section_nav, | |
| render_paragraph, render_list, render_hr, render_comment, | |
| render_heading, render_heading_segment, _plain_text_for_heading, | |
| render_card, _merge_card_palette, _CARD_KIND_PALETTE, | |
| render_solution, _storage_type, | |
| render_flow, _make_flow_step_box, | |
| render_geogebra, maybe_render_paragraph_with_geogebra, | |
| render_code, render_pycall, | |
| _ggb_id_from_url, _px_or_raw, | |
| _attrs_to_dict, _load_func_from_path, | |
| ) | |
| # ── Quiz 渲染 ───────────────────────────────────────────────────────────── | |
| from .dt_quiz import ( # noqa: F401 | |
| render_quiz, render_quiz_order, | |
| _quiz_missing_answer_notice, _feedback_child, | |
| ) | |
| # ── Callbacks(import 即掛載)──────────────────────────────────────────── | |
| from . import dt_callbacks # noqa: F401 | |
| from .dt_callbacks import install_callbacks_once # noqa: F401 | |