Compare commits
5 Commits
a9b06140d0
...
d6d3d27b2d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d6d3d27b2d | ||
|
|
eb6ff93150 | ||
|
|
215b4074e0 | ||
|
|
4544483fc5 | ||
|
|
3266a6fc09 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -143,7 +143,7 @@ celerybeat.pid
|
|||||||
*.sage.py
|
*.sage.py
|
||||||
|
|
||||||
# Environments
|
# Environments
|
||||||
!.env
|
.env
|
||||||
!.env.example
|
!.env.example
|
||||||
.venv
|
.venv
|
||||||
env/
|
env/
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ from app.modules.data_process.algorithms import (
|
|||||||
desensitize_pii,
|
desensitize_pii,
|
||||||
desensitize_structured_record,
|
desensitize_structured_record,
|
||||||
detect_document_structure,
|
detect_document_structure,
|
||||||
|
detect_pdf_document_noise,
|
||||||
estimate_token_count,
|
estimate_token_count,
|
||||||
extract_pdf_page_texts,
|
extract_pdf_page_texts,
|
||||||
generate_standard_records,
|
generate_standard_records,
|
||||||
@@ -44,6 +45,7 @@ from app.modules.data_process.algorithms import (
|
|||||||
near_duplicate_fingerprint,
|
near_duplicate_fingerprint,
|
||||||
parse_text_content,
|
parse_text_content,
|
||||||
preprocess_structured_records,
|
preprocess_structured_records,
|
||||||
|
remove_document_noise,
|
||||||
score_quality,
|
score_quality,
|
||||||
)
|
)
|
||||||
from app.modules.data_process.generation import generate_model_records
|
from app.modules.data_process.generation import generate_model_records
|
||||||
@@ -453,13 +455,25 @@ def _build_preview_items(
|
|||||||
for source in source_files:
|
for source in source_files:
|
||||||
parsed = _parse_stored_source(source)
|
parsed = _parse_stored_source(source)
|
||||||
if process_type == "unstructured":
|
if process_type == "unstructured":
|
||||||
|
document_noise_spans = tuple(source.get("document_noise_spans") or ())
|
||||||
chunks = _chunk_source_text(parsed.text, config, preprocess_options)
|
chunks = _chunk_source_text(parsed.text, config, preprocess_options)
|
||||||
for chunk, heading_path in chunks:
|
for chunk, heading_path in chunks:
|
||||||
preprocess_flags = content_quality_flags(
|
content = (
|
||||||
|
remove_document_noise(
|
||||||
chunk.content,
|
chunk.content,
|
||||||
|
document_noise_spans,
|
||||||
|
source_offset=chunk.start,
|
||||||
|
)
|
||||||
|
if should_clean_invalid and document_noise_spans
|
||||||
|
else chunk.content
|
||||||
|
)
|
||||||
|
preprocess_flags = content_quality_flags(
|
||||||
|
content,
|
||||||
min_chars=0,
|
min_chars=0,
|
||||||
min_tokens=0,
|
min_tokens=0,
|
||||||
)
|
)
|
||||||
|
if content != chunk.content:
|
||||||
|
preprocess_flags = (*preprocess_flags, "document_noise_removed")
|
||||||
flag_set = set(preprocess_flags)
|
flag_set = set(preprocess_flags)
|
||||||
if "clean_invalid_content" in preprocess_options and flag_set & {
|
if "clean_invalid_content" in preprocess_options and flag_set & {
|
||||||
"empty_content",
|
"empty_content",
|
||||||
@@ -475,20 +489,19 @@ def _build_preview_items(
|
|||||||
}:
|
}:
|
||||||
continue
|
continue
|
||||||
if "deduplicate_content" in preprocess_options:
|
if "deduplicate_content" in preprocess_options:
|
||||||
band_keys = _near_duplicate_band_keys(chunk.content)
|
band_keys = _near_duplicate_band_keys(content)
|
||||||
candidates = {
|
candidates = {
|
||||||
previous
|
previous
|
||||||
for key in band_keys
|
for key in band_keys
|
||||||
for previous in seen_near_duplicate_bands.get(key, ())
|
for previous in seen_near_duplicate_bands.get(key, ())
|
||||||
}
|
}
|
||||||
if any(
|
if any(
|
||||||
_safe_near_duplicate(chunk.content, previous)
|
_safe_near_duplicate(content, previous)
|
||||||
for previous in candidates
|
for previous in candidates
|
||||||
):
|
):
|
||||||
continue
|
continue
|
||||||
for key in band_keys:
|
for key in band_keys:
|
||||||
seen_near_duplicate_bands.setdefault(key, []).append(chunk.content)
|
seen_near_duplicate_bands.setdefault(key, []).append(content)
|
||||||
content = chunk.content
|
|
||||||
pii_counts: dict[str, int] = {}
|
pii_counts: dict[str, int] = {}
|
||||||
if should_desensitize:
|
if should_desensitize:
|
||||||
content, pii_counts = desensitize_pii(content)
|
content, pii_counts = desensitize_pii(content)
|
||||||
@@ -512,7 +525,7 @@ def _build_preview_items(
|
|||||||
"source_end": chunk.end,
|
"source_end": chunk.end,
|
||||||
"source_start_line": chunk.start_line,
|
"source_start_line": chunk.start_line,
|
||||||
"source_end_line": chunk.end_line,
|
"source_end_line": chunk.end_line,
|
||||||
"token_count": chunk.token_count,
|
"token_count": estimate_token_count(content),
|
||||||
"status": "modified" if content != chunk.content else "original",
|
"status": "modified" if content != chunk.content else "original",
|
||||||
"quality_score": quality,
|
"quality_score": quality,
|
||||||
}
|
}
|
||||||
@@ -1234,6 +1247,7 @@ def pull_external_source(
|
|||||||
def _prepare_preview_items(
|
def _prepare_preview_items(
|
||||||
task_id: str,
|
task_id: str,
|
||||||
store: DataProcessStore,
|
store: DataProcessStore,
|
||||||
|
storage: LocalDataProcessStorage,
|
||||||
source_file_ids: list[str] | None = None,
|
source_file_ids: list[str] | None = None,
|
||||||
) -> list[dict[str, Any]]:
|
) -> list[dict[str, Any]]:
|
||||||
task = store.get_task(task_id)
|
task = store.get_task(task_id)
|
||||||
@@ -1251,6 +1265,48 @@ def _prepare_preview_items(
|
|||||||
]
|
]
|
||||||
if not sources:
|
if not sources:
|
||||||
raise InvalidStateError("at least one source file is required")
|
raise InvalidStateError("at least one source file is required")
|
||||||
|
preprocess_options = _preprocess_options(task.get("config") or {})
|
||||||
|
if (
|
||||||
|
task.get("process_type") == "unstructured"
|
||||||
|
and preprocess_options & {"clean_invalid", "clean_invalid_content"}
|
||||||
|
):
|
||||||
|
for index, source in enumerate(sources):
|
||||||
|
if str(source.get("file_format") or "").lower() != "pdf":
|
||||||
|
continue
|
||||||
|
storage_object_id = str(source.get("storage_object_id") or "")
|
||||||
|
actual_size = storage.file_size(
|
||||||
|
storage_object_id,
|
||||||
|
expected_task_id=task_id,
|
||||||
|
expected_source_file_id=str(source["id"]),
|
||||||
|
)
|
||||||
|
if actual_size is None:
|
||||||
|
logger.info(
|
||||||
|
"skip PDF document noise detection for unavailable legacy source %s",
|
||||||
|
source["id"],
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
expected_size = int(source.get("size_bytes") or 0)
|
||||||
|
if expected_size and actual_size != expected_size:
|
||||||
|
raise ValueError("source object size does not match metadata")
|
||||||
|
raw = b"".join(
|
||||||
|
storage.iter_bytes(
|
||||||
|
storage_object_id,
|
||||||
|
expected_task_id=task_id,
|
||||||
|
expected_source_file_id=str(source["id"]),
|
||||||
|
expected_size=actual_size,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
pages = extract_pdf_page_texts(raw)
|
||||||
|
extracted_text = "\n\n".join(page.text for page in pages if page.text)
|
||||||
|
if extracted_text != str(source.get("content") or ""):
|
||||||
|
logger.warning(
|
||||||
|
"skip PDF document noise detection because stored offsets differ for %s",
|
||||||
|
source["id"],
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
enriched = dict(source)
|
||||||
|
enriched["document_noise_spans"] = detect_pdf_document_noise(pages)
|
||||||
|
sources[index] = enriched
|
||||||
items = _build_preview_items(task, sources)
|
items = _build_preview_items(task, sources)
|
||||||
if not items and source_file_ids is None:
|
if not items and source_file_ids is None:
|
||||||
raise InvalidStateError("source files did not produce preview items")
|
raise InvalidStateError("source files did not produce preview items")
|
||||||
@@ -1262,10 +1318,11 @@ def build_preview(
|
|||||||
task_id: str,
|
task_id: str,
|
||||||
payload: PreviewBuildRequest = Body(default_factory=PreviewBuildRequest),
|
payload: PreviewBuildRequest = Body(default_factory=PreviewBuildRequest),
|
||||||
store: DataProcessStore = Depends(get_data_process_store),
|
store: DataProcessStore = Depends(get_data_process_store),
|
||||||
|
storage: LocalDataProcessStorage = Depends(get_data_process_storage),
|
||||||
) -> dict[str, Any]:
|
) -> dict[str, Any]:
|
||||||
with api_errors():
|
with api_errors():
|
||||||
selected_ids = payload.source_file_ids
|
selected_ids = payload.source_file_ids
|
||||||
items = _prepare_preview_items(task_id, store, selected_ids)
|
items = _prepare_preview_items(task_id, store, storage, selected_ids)
|
||||||
created = store.replace_preview_items(
|
created = store.replace_preview_items(
|
||||||
task_id,
|
task_id,
|
||||||
items,
|
items,
|
||||||
@@ -1405,9 +1462,10 @@ def start(
|
|||||||
background_tasks: BackgroundTasks,
|
background_tasks: BackgroundTasks,
|
||||||
payload: GenerateRequest = Body(default_factory=GenerateRequest),
|
payload: GenerateRequest = Body(default_factory=GenerateRequest),
|
||||||
store: DataProcessStore = Depends(get_data_process_store),
|
store: DataProcessStore = Depends(get_data_process_store),
|
||||||
|
storage: LocalDataProcessStorage = Depends(get_data_process_storage),
|
||||||
) -> dict[str, Any]:
|
) -> dict[str, Any]:
|
||||||
with api_errors():
|
with api_errors():
|
||||||
items = _prepare_preview_items(task_id, store)
|
items = _prepare_preview_items(task_id, store, storage)
|
||||||
store.replace_preview_items(task_id, items)
|
store.replace_preview_items(task_id, items)
|
||||||
return _start_generation(task_id, payload, background_tasks, store)
|
return _start_generation(task_id, payload, background_tasks, store)
|
||||||
|
|
||||||
|
|||||||
@@ -175,6 +175,15 @@ class PdfPageText:
|
|||||||
source_end: int
|
source_end: int
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True, slots=True)
|
||||||
|
class DocumentNoiseSpan:
|
||||||
|
"""PDF 中可安全从展示内容移除的文本范围。"""
|
||||||
|
|
||||||
|
start: int
|
||||||
|
end: int
|
||||||
|
kind: Literal["page_number", "repeated_margin", "table_of_contents"]
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True, slots=True)
|
@dataclass(frozen=True, slots=True)
|
||||||
class TextChunk:
|
class TextChunk:
|
||||||
"""带有可追溯来源位置的非结构化文本切片。"""
|
"""带有可追溯来源位置的非结构化文本切片。"""
|
||||||
@@ -496,6 +505,240 @@ def extract_pdf_page_texts(raw: bytes) -> tuple[PdfPageText, ...]:
|
|||||||
return tuple(pages)
|
return tuple(pages)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True, slots=True)
|
||||||
|
class _PdfLine:
|
||||||
|
text: str
|
||||||
|
start: int
|
||||||
|
end: int
|
||||||
|
|
||||||
|
|
||||||
|
_PDF_PAGE_NUMBER_LINE_PATTERN = re.compile(
|
||||||
|
r"^(?:页次\s*)?(?:第\s*)?(?P<page>\d+)\s*页\s*"
|
||||||
|
r"(?:(?:[//]\s*)?共\s*(?P<total>\d+)\s*页)?$"
|
||||||
|
)
|
||||||
|
_PDF_FRACTION_PAGE_LINE_PATTERN = re.compile(
|
||||||
|
r"^[—–-]?\s*(?P<page>\d+)\s*[//]\s*(?P<total>\d+)\s*[—–-]?$"
|
||||||
|
)
|
||||||
|
_PDF_CLASSIFICATION_LABEL_PATTERN = re.compile(
|
||||||
|
r"^(?:(?:秘密等级|密级)\s*)?(?:商密|秘密|机密|绝密)"
|
||||||
|
r"\s*(?:[【\[((][^】\]))]{1,8}[】\]))])?$"
|
||||||
|
)
|
||||||
|
_TOC_TITLE_PATTERN = re.compile(r"^(?:目\s*录|contents)$", re.IGNORECASE)
|
||||||
|
_TOC_LEADER_ENTRY_PATTERN = re.compile(
|
||||||
|
r"(?:[..…·•]\s*){3,}\s*\d{1,4}\s*$"
|
||||||
|
)
|
||||||
|
_TOC_NUMBERED_ENTRY_PATTERN = re.compile(
|
||||||
|
r"^(?:第[\u3400-\u4dbf\u4e00-\u9fff]{1,12}章|附表\s*\d+|\d+(?:\.\d+)+)"
|
||||||
|
r"\s+.+\s+\d{1,4}\s*$",
|
||||||
|
re.IGNORECASE,
|
||||||
|
)
|
||||||
|
_MARGIN_TEMPLATE_KEYWORDS = (
|
||||||
|
"页",
|
||||||
|
"页次",
|
||||||
|
"版本",
|
||||||
|
"文件编码",
|
||||||
|
"秘密等级",
|
||||||
|
"密级",
|
||||||
|
"商密",
|
||||||
|
"confidential",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _pdf_page_lines(page: PdfPageText) -> tuple[_PdfLine, ...]:
|
||||||
|
lines: list[_PdfLine] = []
|
||||||
|
local_offset = 0
|
||||||
|
for raw_line in page.text.splitlines(keepends=True):
|
||||||
|
content = raw_line.rstrip("\r\n")
|
||||||
|
leading = len(content) - len(content.lstrip())
|
||||||
|
trailing = len(content.rstrip())
|
||||||
|
text = content.strip()
|
||||||
|
if text:
|
||||||
|
lines.append(
|
||||||
|
_PdfLine(
|
||||||
|
text=text,
|
||||||
|
start=page.source_start + local_offset + leading,
|
||||||
|
end=page.source_start + local_offset + trailing,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
local_offset += len(raw_line)
|
||||||
|
return tuple(lines)
|
||||||
|
|
||||||
|
|
||||||
|
def _is_standalone_page_number(
|
||||||
|
text: str,
|
||||||
|
*,
|
||||||
|
physical_page: int,
|
||||||
|
page_count: int,
|
||||||
|
) -> bool:
|
||||||
|
normalized = unicodedata.normalize("NFKC", text).strip()
|
||||||
|
match = _PDF_PAGE_NUMBER_LINE_PATTERN.fullmatch(normalized)
|
||||||
|
if match is None:
|
||||||
|
match = _PDF_FRACTION_PAGE_LINE_PATTERN.fullmatch(normalized)
|
||||||
|
if match is None or int(match.group("page")) != physical_page:
|
||||||
|
return False
|
||||||
|
total = match.groupdict().get("total")
|
||||||
|
return total is None or int(total) == page_count
|
||||||
|
|
||||||
|
|
||||||
|
def _margin_signature(text: str) -> str:
|
||||||
|
normalized = unicodedata.normalize("NFKC", text).casefold()
|
||||||
|
normalized = re.sub(r"\s+", " ", normalized).strip()
|
||||||
|
if any(keyword in normalized for keyword in _MARGIN_TEMPLATE_KEYWORDS):
|
||||||
|
normalized = re.sub(r"\d+", "#", normalized)
|
||||||
|
return normalized
|
||||||
|
|
||||||
|
|
||||||
|
def _has_margin_metadata_keyword(text: str) -> bool:
|
||||||
|
normalized = unicodedata.normalize("NFKC", text).casefold()
|
||||||
|
return any(keyword in normalized for keyword in _MARGIN_TEMPLATE_KEYWORDS)
|
||||||
|
|
||||||
|
|
||||||
|
def _has_meaningful_margin_signature(signature: str) -> bool:
|
||||||
|
return len(re.sub(r"[#\W_]+", "", signature, flags=re.UNICODE)) >= 2
|
||||||
|
|
||||||
|
|
||||||
|
def _is_toc_leader_entry(text: str) -> bool:
|
||||||
|
return bool(_TOC_LEADER_ENTRY_PATTERN.search(text))
|
||||||
|
|
||||||
|
|
||||||
|
def _is_toc_numbered_entry(text: str) -> bool:
|
||||||
|
return bool(_TOC_NUMBERED_ENTRY_PATTERN.fullmatch(text))
|
||||||
|
|
||||||
|
|
||||||
|
def detect_pdf_document_noise(
|
||||||
|
pages: Sequence[PdfPageText],
|
||||||
|
) -> tuple[DocumentNoiseSpan, ...]:
|
||||||
|
"""识别 PDF 中的独立页码、重复页边内容和高置信目录。
|
||||||
|
|
||||||
|
规则只查看每页顶部 5 行和底部 3 行来推断页眉页脚;目录必须有
|
||||||
|
明显的点引导线密度,避免仅因正文中出现“目录”或章节标题而误删。
|
||||||
|
"""
|
||||||
|
|
||||||
|
page_lines = tuple(_pdf_page_lines(page) for page in pages)
|
||||||
|
detected: dict[tuple[int, int], DocumentNoiseSpan] = {}
|
||||||
|
|
||||||
|
def mark(
|
||||||
|
line: _PdfLine,
|
||||||
|
kind: Literal["page_number", "repeated_margin", "table_of_contents"],
|
||||||
|
) -> None:
|
||||||
|
detected.setdefault(
|
||||||
|
(line.start, line.end),
|
||||||
|
DocumentNoiseSpan(
|
||||||
|
start=line.start,
|
||||||
|
end=line.end,
|
||||||
|
kind=kind,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
for page, lines in zip(pages, page_lines, strict=True):
|
||||||
|
for line in lines:
|
||||||
|
if _is_standalone_page_number(
|
||||||
|
line.text,
|
||||||
|
physical_page=page.page_number,
|
||||||
|
page_count=len(pages),
|
||||||
|
):
|
||||||
|
mark(line, "page_number")
|
||||||
|
outer_margin_lines = (*lines[:2], *lines[-2:])
|
||||||
|
for line in outer_margin_lines:
|
||||||
|
if _PDF_CLASSIFICATION_LABEL_PATTERN.fullmatch(line.text):
|
||||||
|
mark(line, "repeated_margin")
|
||||||
|
|
||||||
|
# 只在三页及以上文档中推断通用页眉页脚,避免短文档误删。
|
||||||
|
if len(pages) >= 3:
|
||||||
|
signature_pages: dict[str, set[int]] = {}
|
||||||
|
candidate_lines: list[tuple[int, _PdfLine, str]] = []
|
||||||
|
for page_index, lines in enumerate(page_lines):
|
||||||
|
boundary_lines = (
|
||||||
|
*((line, index < 2) for index, line in enumerate(lines[:5])),
|
||||||
|
*((line, index < 2) for index, line in enumerate(reversed(lines[-3:]))),
|
||||||
|
)
|
||||||
|
seen_ranges: set[tuple[int, int]] = set()
|
||||||
|
for line, is_outer_margin in boundary_lines:
|
||||||
|
line_range = (line.start, line.end)
|
||||||
|
if (
|
||||||
|
line_range in seen_ranges
|
||||||
|
or line_range in detected
|
||||||
|
or len(line.text) > 160
|
||||||
|
):
|
||||||
|
continue
|
||||||
|
seen_ranges.add(line_range)
|
||||||
|
if not is_outer_margin and not _has_margin_metadata_keyword(line.text):
|
||||||
|
continue
|
||||||
|
signature = _margin_signature(line.text)
|
||||||
|
if not _has_meaningful_margin_signature(signature):
|
||||||
|
continue
|
||||||
|
signature_pages.setdefault(signature, set()).add(page_index)
|
||||||
|
candidate_lines.append((page_index, line, signature))
|
||||||
|
minimum_pages = max(3, math.ceil(len(pages) * 0.3))
|
||||||
|
repeated_signatures = {
|
||||||
|
signature
|
||||||
|
for signature, matching_pages in signature_pages.items()
|
||||||
|
if len(matching_pages) >= minimum_pages
|
||||||
|
}
|
||||||
|
for _, line, signature in candidate_lines:
|
||||||
|
if signature in repeated_signatures:
|
||||||
|
mark(line, "repeated_margin")
|
||||||
|
|
||||||
|
# 先依据强证据判定目录页,再补充删除少量不带点引导线的编号目录项。
|
||||||
|
toc_active = False
|
||||||
|
for lines in page_lines:
|
||||||
|
content_lines = [
|
||||||
|
line for line in lines if (line.start, line.end) not in detected
|
||||||
|
]
|
||||||
|
leader_entries = [line for line in content_lines if _is_toc_leader_entry(line.text)]
|
||||||
|
titles = [line for line in content_lines if _TOC_TITLE_PATTERN.fullmatch(line.text)]
|
||||||
|
starts_toc = bool(titles and len(leader_entries) >= 2)
|
||||||
|
is_toc_dense = bool(
|
||||||
|
len(leader_entries) >= 3
|
||||||
|
and len(leader_entries) / max(1, len(content_lines)) >= 0.5
|
||||||
|
)
|
||||||
|
if not (starts_toc or (toc_active and is_toc_dense)):
|
||||||
|
toc_active = False
|
||||||
|
continue
|
||||||
|
toc_active = True
|
||||||
|
for line in content_lines:
|
||||||
|
if (
|
||||||
|
line in titles
|
||||||
|
or _is_toc_leader_entry(line.text)
|
||||||
|
or _is_toc_numbered_entry(line.text)
|
||||||
|
):
|
||||||
|
mark(line, "table_of_contents")
|
||||||
|
|
||||||
|
return tuple(sorted(detected.values(), key=lambda span: (span.start, span.end)))
|
||||||
|
|
||||||
|
|
||||||
|
def remove_document_noise(
|
||||||
|
text: str,
|
||||||
|
spans: Sequence[DocumentNoiseSpan],
|
||||||
|
*,
|
||||||
|
source_offset: int = 0,
|
||||||
|
) -> str:
|
||||||
|
"""按原文绝对偏移移除噪声,不改动调用方保留的原文及偏移。"""
|
||||||
|
|
||||||
|
text_end = source_offset + len(text)
|
||||||
|
intersections = sorted(
|
||||||
|
(
|
||||||
|
max(0, span.start - source_offset),
|
||||||
|
min(len(text), span.end - source_offset),
|
||||||
|
)
|
||||||
|
for span in spans
|
||||||
|
if span.start < text_end and span.end > source_offset
|
||||||
|
)
|
||||||
|
if not intersections:
|
||||||
|
return text
|
||||||
|
parts: list[str] = []
|
||||||
|
cursor = 0
|
||||||
|
for start, end in intersections:
|
||||||
|
if end <= cursor:
|
||||||
|
continue
|
||||||
|
if start > cursor:
|
||||||
|
parts.append(text[cursor:start])
|
||||||
|
cursor = end
|
||||||
|
parts.append(text[cursor:])
|
||||||
|
cleaned = normalize_text("".join(parts))
|
||||||
|
return re.sub(r"\n{3,}", "\n\n", cleaned)
|
||||||
|
|
||||||
|
|
||||||
def _extract_pdf_text(raw: bytes) -> str:
|
def _extract_pdf_text(raw: bytes) -> str:
|
||||||
return "\n\n".join(page.text for page in extract_pdf_page_texts(raw) if page.text)
|
return "\n\n".join(page.text for page in extract_pdf_page_texts(raw) if page.text)
|
||||||
|
|
||||||
@@ -2737,6 +2980,7 @@ __all__ = [
|
|||||||
"ChunkMethod",
|
"ChunkMethod",
|
||||||
"DatasetSplit",
|
"DatasetSplit",
|
||||||
"DocumentHeading",
|
"DocumentHeading",
|
||||||
|
"DocumentNoiseSpan",
|
||||||
"DocumentStructure",
|
"DocumentStructure",
|
||||||
"ParsedText",
|
"ParsedText",
|
||||||
"PdfPageText",
|
"PdfPageText",
|
||||||
@@ -2752,6 +2996,7 @@ __all__ = [
|
|||||||
"desensitize_pii",
|
"desensitize_pii",
|
||||||
"desensitize_structured_record",
|
"desensitize_structured_record",
|
||||||
"detect_document_structure",
|
"detect_document_structure",
|
||||||
|
"detect_pdf_document_noise",
|
||||||
"detect_text_format",
|
"detect_text_format",
|
||||||
"deduplicate_structured_records",
|
"deduplicate_structured_records",
|
||||||
"estimate_token_count",
|
"estimate_token_count",
|
||||||
@@ -2773,6 +3018,7 @@ __all__ = [
|
|||||||
"preprocess_structured_records",
|
"preprocess_structured_records",
|
||||||
"protected_context_ranges",
|
"protected_context_ranges",
|
||||||
"record_fingerprint",
|
"record_fingerprint",
|
||||||
|
"remove_document_noise",
|
||||||
"score_quality",
|
"score_quality",
|
||||||
"stable_split",
|
"stable_split",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -14,11 +14,13 @@ from pptx.util import Inches
|
|||||||
from pypdf import PdfWriter
|
from pypdf import PdfWriter
|
||||||
|
|
||||||
from app.modules.data_process.algorithms import (
|
from app.modules.data_process.algorithms import (
|
||||||
|
PdfPageText,
|
||||||
chunk_unstructured,
|
chunk_unstructured,
|
||||||
content_quality_flags,
|
content_quality_flags,
|
||||||
desensitize_pii,
|
desensitize_pii,
|
||||||
desensitize_structured_record,
|
desensitize_structured_record,
|
||||||
detect_document_structure,
|
detect_document_structure,
|
||||||
|
detect_pdf_document_noise,
|
||||||
detect_text_format,
|
detect_text_format,
|
||||||
estimate_token_count,
|
estimate_token_count,
|
||||||
extract_pdf_page_texts,
|
extract_pdf_page_texts,
|
||||||
@@ -30,11 +32,32 @@ from app.modules.data_process.algorithms import (
|
|||||||
parse_text_content,
|
parse_text_content,
|
||||||
preprocess_structured_records,
|
preprocess_structured_records,
|
||||||
record_fingerprint,
|
record_fingerprint,
|
||||||
|
remove_document_noise,
|
||||||
score_quality,
|
score_quality,
|
||||||
stable_split,
|
stable_split,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _pdf_page_texts(*texts: str) -> tuple[PdfPageText, ...]:
|
||||||
|
pages: list[PdfPageText] = []
|
||||||
|
offset = 0
|
||||||
|
for page_number, text in enumerate(texts, start=1):
|
||||||
|
normalized = normalize_text(text)
|
||||||
|
if pages:
|
||||||
|
offset += 2
|
||||||
|
start = offset
|
||||||
|
offset += len(normalized)
|
||||||
|
pages.append(
|
||||||
|
PdfPageText(
|
||||||
|
page_number=page_number,
|
||||||
|
text=normalized,
|
||||||
|
source_start=start,
|
||||||
|
source_end=offset,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return tuple(pages)
|
||||||
|
|
||||||
|
|
||||||
def _minimal_pdf(text: str = "Hello PDF") -> bytes:
|
def _minimal_pdf(text: str = "Hello PDF") -> bytes:
|
||||||
stream = f"BT /F1 12 Tf 72 720 Td ({text}) Tj ET".encode("ascii")
|
stream = f"BT /F1 12 Tf 72 720 Td ({text}) Tj ET".encode("ascii")
|
||||||
objects = [
|
objects = [
|
||||||
@@ -206,6 +229,91 @@ def test_parse_pdf_docx_xlsx_and_pptx() -> None:
|
|||||||
assert parsed_pptx.records == ()
|
assert parsed_pptx.records == ()
|
||||||
|
|
||||||
|
|
||||||
|
def test_pdf_document_noise_removes_headers_page_numbers_and_toc_safely() -> None:
|
||||||
|
pages = _pdf_page_texts(
|
||||||
|
"""
|
||||||
|
远光制度文件 文件编码 2024
|
||||||
|
秘密等级 商密【中】
|
||||||
|
第 1 页 共 5 页
|
||||||
|
正文第一页,关于适用范围的说明。
|
||||||
|
业务提示保留
|
||||||
|
第一页补充说明甲
|
||||||
|
第一页补充说明乙
|
||||||
|
第一页补充说明丙
|
||||||
|
""",
|
||||||
|
"""
|
||||||
|
远光制度文件 文件编码 2024
|
||||||
|
秘密等级 商密【中】
|
||||||
|
第 2 页 共 5 页
|
||||||
|
目 录
|
||||||
|
第一章 总则........3
|
||||||
|
第二章 报销申请........4
|
||||||
|
第三章 附则........5
|
||||||
|
""",
|
||||||
|
"""
|
||||||
|
远光制度文件 文件编码 2024
|
||||||
|
秘密等级 商密【中】
|
||||||
|
第 3 页 共 5 页
|
||||||
|
1.1 管理要求........6
|
||||||
|
1.2 审批职责 7
|
||||||
|
1.3 费用标准........8
|
||||||
|
1.4 例外处理........9
|
||||||
|
""",
|
||||||
|
"""
|
||||||
|
远光制度文件 文件编码 2024
|
||||||
|
秘密等级 商密【中】
|
||||||
|
第 4 页 共 5 页
|
||||||
|
正文中可以说“请参见第 3 页说明”,不应误删。
|
||||||
|
第 99 页 共 100 页
|
||||||
|
系统可用率........99.9%
|
||||||
|
业务提示保留
|
||||||
|
第四页补充说明甲
|
||||||
|
第四页补充说明乙
|
||||||
|
第四页补充说明丙
|
||||||
|
""",
|
||||||
|
"""
|
||||||
|
远光制度文件 文件编码 2024
|
||||||
|
秘密等级 商密【中】
|
||||||
|
第 5 页 共 5 页
|
||||||
|
本办法自发布之日起施行。
|
||||||
|
业务提示保留
|
||||||
|
第五页补充说明甲
|
||||||
|
第五页补充说明乙
|
||||||
|
第五页补充说明丙
|
||||||
|
""",
|
||||||
|
)
|
||||||
|
source = "\n\n".join(page.text for page in pages)
|
||||||
|
|
||||||
|
spans = detect_pdf_document_noise(pages)
|
||||||
|
cleaned = remove_document_noise(source, spans)
|
||||||
|
|
||||||
|
assert {span.kind for span in spans} == {
|
||||||
|
"page_number",
|
||||||
|
"repeated_margin",
|
||||||
|
"table_of_contents",
|
||||||
|
}
|
||||||
|
assert "远光制度文件" not in cleaned
|
||||||
|
assert "商密【中】" not in cleaned
|
||||||
|
assert "第 1 页 共 5 页" not in cleaned
|
||||||
|
assert "第一章 总则" not in cleaned
|
||||||
|
assert "1.2 审批职责 7" not in cleaned
|
||||||
|
assert "请参见第 3 页说明" in cleaned
|
||||||
|
assert "第 99 页 共 100 页" in cleaned
|
||||||
|
assert "系统可用率........99.9%" in cleaned
|
||||||
|
assert cleaned.count("业务提示保留") == 3
|
||||||
|
|
||||||
|
|
||||||
|
def test_pdf_document_noise_does_not_infer_repeated_margins_for_short_documents() -> None:
|
||||||
|
pages = _pdf_page_texts(
|
||||||
|
"公司内部文件\n正文 A",
|
||||||
|
"公司内部文件\n正文 B",
|
||||||
|
)
|
||||||
|
|
||||||
|
spans = detect_pdf_document_noise(pages)
|
||||||
|
|
||||||
|
assert not any(span.kind == "repeated_margin" for span in spans)
|
||||||
|
|
||||||
|
|
||||||
def test_xlsx_merged_multilevel_headers_are_flattened_without_losing_columns() -> None:
|
def test_xlsx_merged_multilevel_headers_are_flattened_without_losing_columns() -> None:
|
||||||
workbook = Workbook()
|
workbook = Workbook()
|
||||||
worksheet = workbook.active
|
worksheet = workbook.active
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ from openpyxl import Workbook
|
|||||||
|
|
||||||
from app.api.v1.endpoints import data_process as data_process_endpoint
|
from app.api.v1.endpoints import data_process as data_process_endpoint
|
||||||
from app.api.v1.endpoints.data_process import router
|
from app.api.v1.endpoints.data_process import router
|
||||||
from app.modules.data_process.algorithms import normalize_text
|
from app.modules.data_process.algorithms import DocumentNoiseSpan, normalize_text
|
||||||
from app.modules.data_process.storage import (
|
from app.modules.data_process.storage import (
|
||||||
DataProcessStorageError,
|
DataProcessStorageError,
|
||||||
LocalDataProcessStorage,
|
LocalDataProcessStorage,
|
||||||
@@ -443,20 +443,49 @@ def _stored_files(storage: LocalDataProcessStorage) -> list[Path]:
|
|||||||
return [path for path in storage.root.rglob("*") if path.is_file() or path.is_symlink()]
|
return [path for path in storage.root.rglob("*") if path.is_file() or path.is_symlink()]
|
||||||
|
|
||||||
|
|
||||||
def _minimal_pdf(text: str = "Hello PDF") -> bytes:
|
def _minimal_pdf_pages(*page_texts: str) -> bytes:
|
||||||
stream = f"BT /F1 12 Tf 72 720 Td ({text}) Tj ET".encode("ascii")
|
if not page_texts:
|
||||||
|
raise ValueError("at least one PDF page is required")
|
||||||
|
font_object_number = 3 + len(page_texts) * 2
|
||||||
|
page_object_numbers = [3 + index * 2 for index in range(len(page_texts))]
|
||||||
objects = [
|
objects = [
|
||||||
b"<< /Type /Catalog /Pages 2 0 R >>",
|
b"<< /Type /Catalog /Pages 2 0 R >>",
|
||||||
b"<< /Type /Pages /Kids [3 0 R] /Count 1 >>",
|
(
|
||||||
|
b"<< /Type /Pages /Kids ["
|
||||||
|
+ b" ".join(f"{number} 0 R".encode() for number in page_object_numbers)
|
||||||
|
+ b"] /Count "
|
||||||
|
+ str(len(page_texts)).encode()
|
||||||
|
+ b" >>"
|
||||||
|
),
|
||||||
|
]
|
||||||
|
for index, text in enumerate(page_texts):
|
||||||
|
content_object_number = page_object_numbers[index] + 1
|
||||||
|
commands = [b"BT /F1 12 Tf 72 720 Td"]
|
||||||
|
for line_index, line in enumerate(text.splitlines()):
|
||||||
|
escaped = line.replace("\\", "\\\\").replace("(", "\\(").replace(")", "\\)")
|
||||||
|
if line_index:
|
||||||
|
commands.append(b"0 -16 Td")
|
||||||
|
commands.append(f"({escaped}) Tj".encode("ascii"))
|
||||||
|
commands.append(b"ET")
|
||||||
|
stream = b" ".join(commands)
|
||||||
|
objects.extend(
|
||||||
|
[
|
||||||
(
|
(
|
||||||
b"<< /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] "
|
b"<< /Type /Page /Parent 2 0 R /MediaBox [0 0 612 792] "
|
||||||
b"/Resources << /Font << /F1 5 0 R >> >> /Contents 4 0 R >>"
|
b"/Resources << /Font << /F1 "
|
||||||
|
+ str(font_object_number).encode()
|
||||||
|
+ b" 0 R >> >> /Contents "
|
||||||
|
+ str(content_object_number).encode()
|
||||||
|
+ b" 0 R >>"
|
||||||
),
|
),
|
||||||
b"<< /Length " + str(len(stream)).encode() + b" >>\nstream\n"
|
b"<< /Length "
|
||||||
|
+ str(len(stream)).encode()
|
||||||
|
+ b" >>\nstream\n"
|
||||||
+ stream
|
+ stream
|
||||||
+ b"\nendstream",
|
+ b"\nendstream",
|
||||||
b"<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>",
|
|
||||||
]
|
]
|
||||||
|
)
|
||||||
|
objects.append(b"<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>")
|
||||||
result = bytearray(b"%PDF-1.4\n%\xe2\xe3\xcf\xd3\n")
|
result = bytearray(b"%PDF-1.4\n%\xe2\xe3\xcf\xd3\n")
|
||||||
offsets = [0]
|
offsets = [0]
|
||||||
for object_number, value in enumerate(objects, start=1):
|
for object_number, value in enumerate(objects, start=1):
|
||||||
@@ -478,6 +507,10 @@ def _minimal_pdf(text: str = "Hello PDF") -> bytes:
|
|||||||
return bytes(result)
|
return bytes(result)
|
||||||
|
|
||||||
|
|
||||||
|
def _minimal_pdf(text: str = "Hello PDF") -> bytes:
|
||||||
|
return _minimal_pdf_pages(text)
|
||||||
|
|
||||||
|
|
||||||
def test_data_process_full_contract_without_database(tmp_path: Path) -> None:
|
def test_data_process_full_contract_without_database(tmp_path: Path) -> None:
|
||||||
client, store, _ = make_client(tmp_path)
|
client, store, _ = make_client(tmp_path)
|
||||||
created = client.post(
|
created = client.post(
|
||||||
@@ -1127,6 +1160,59 @@ def test_pdf_raw_preview_streams_original_file_and_supports_ranges(tmp_path: Pat
|
|||||||
assert legacy_pages.status_code == 410
|
assert legacy_pages.status_code == 410
|
||||||
|
|
||||||
|
|
||||||
|
def test_pdf_preview_build_cleans_stored_document_noise_without_offset_drift(
|
||||||
|
tmp_path: Path,
|
||||||
|
) -> None:
|
||||||
|
client, _, _ = make_client(tmp_path)
|
||||||
|
task_id = client.post(
|
||||||
|
"/modelTF/data-process",
|
||||||
|
json={
|
||||||
|
"name": "PDF 文档噪声清理",
|
||||||
|
"process_type": "unstructured",
|
||||||
|
"config": {
|
||||||
|
"chunk_method": "fixed",
|
||||||
|
"chunk_size": 200,
|
||||||
|
"chunk_overlap": 0,
|
||||||
|
"min_chunk_size": 20,
|
||||||
|
"preprocess_options": ["clean_invalid_content"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
).json()["data"]["id"]
|
||||||
|
raw = _minimal_pdf_pages(
|
||||||
|
"ACME Internal Manual\nBody page one keeps this guidance and explanation.",
|
||||||
|
"ACME Internal Manual\nContents\n"
|
||||||
|
"Chapter One........3\nChapter Two........4\nAppendix........5",
|
||||||
|
"ACME Internal Manual\n1.1 Policy........6\n1.2 Approval........7\n1.3 Archive........8",
|
||||||
|
"ACME Internal Manual\nBody page four keeps operational details and examples.",
|
||||||
|
"ACME Internal Manual\nBody page five keeps the final effective-date clause.",
|
||||||
|
)
|
||||||
|
uploaded = client.post(
|
||||||
|
f"/modelTF/data-process/{task_id}/source-files",
|
||||||
|
files={"files": ("manual.pdf", raw, "application/pdf")},
|
||||||
|
).json()["data"]["files"][0]
|
||||||
|
source_content = client.get(
|
||||||
|
f"/modelTF/data-process/{task_id}/source-files/{uploaded['id']}/content"
|
||||||
|
).json()["data"]["content"]
|
||||||
|
|
||||||
|
built = client.post(f"/modelTF/data-process/{task_id}/preview/build")
|
||||||
|
|
||||||
|
assert built.status_code == 200
|
||||||
|
items = built.json()["data"]["items"]
|
||||||
|
assert items
|
||||||
|
edited = "\n".join(item["edited_content"] for item in items)
|
||||||
|
assert "ACME Internal Manual" not in edited
|
||||||
|
assert "Contents" not in edited
|
||||||
|
assert "Chapter One" not in edited
|
||||||
|
assert "1.2 Approval" not in edited
|
||||||
|
assert "Body page one" in edited
|
||||||
|
assert "Body page five" in edited
|
||||||
|
assert all(
|
||||||
|
item["original_content"]
|
||||||
|
== source_content[item["source_start"] : item["source_end"]]
|
||||||
|
for item in items
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_raw_inline_preview_rejects_non_pdf_source(tmp_path: Path) -> None:
|
def test_raw_inline_preview_rejects_non_pdf_source(tmp_path: Path) -> None:
|
||||||
client, _, _ = make_client(tmp_path)
|
client, _, _ = make_client(tmp_path)
|
||||||
task_id = client.post(
|
task_id = client.post(
|
||||||
@@ -1450,6 +1536,51 @@ def test_every_unstructured_preprocess_option_changes_preview_behavior() -> None
|
|||||||
assert "[EMAIL]" in masked["edited_content"]
|
assert "[EMAIL]" in masked["edited_content"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_document_noise_cleaning_preserves_original_offsets_and_can_be_disabled() -> None:
|
||||||
|
source_text = normalize_text("重复页眉\n这是应保留的 PDF 正文内容,用于生成训练数据。")
|
||||||
|
source = {
|
||||||
|
"id": "pdf-source",
|
||||||
|
"name": "manual.pdf",
|
||||||
|
"file_format": "pdf",
|
||||||
|
"content": source_text,
|
||||||
|
"document_noise_spans": (
|
||||||
|
DocumentNoiseSpan(0, len("重复页眉"), "repeated_margin"),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
config = {
|
||||||
|
"chunk_method": "fixed",
|
||||||
|
"chunk_size": 200,
|
||||||
|
"chunk_overlap": 0,
|
||||||
|
"min_chunk_size": 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
cleaned_items = data_process_endpoint._build_preview_items(
|
||||||
|
{
|
||||||
|
"process_type": "unstructured",
|
||||||
|
"config": {**config, "preprocess_options": ["clean_invalid_content"]},
|
||||||
|
},
|
||||||
|
[source],
|
||||||
|
)
|
||||||
|
original_items = data_process_endpoint._build_preview_items(
|
||||||
|
{
|
||||||
|
"process_type": "unstructured",
|
||||||
|
"config": {**config, "preprocess_options": []},
|
||||||
|
},
|
||||||
|
[source],
|
||||||
|
)
|
||||||
|
|
||||||
|
assert len(cleaned_items) == 1
|
||||||
|
cleaned = cleaned_items[0]
|
||||||
|
assert cleaned["original_content"] == source_text[
|
||||||
|
cleaned["source_start"] : cleaned["source_end"]
|
||||||
|
]
|
||||||
|
assert "重复页眉" not in cleaned["edited_content"]
|
||||||
|
assert "PDF 正文内容" in cleaned["edited_content"]
|
||||||
|
assert cleaned["status"] == "modified"
|
||||||
|
assert "document_noise_removed" in cleaned["quality_score"]["preprocess_flags"]
|
||||||
|
assert "重复页眉" in original_items[0]["edited_content"]
|
||||||
|
|
||||||
|
|
||||||
def test_merge_short_content_applies_across_adjacent_structure_sections() -> None:
|
def test_merge_short_content_applies_across_adjacent_structure_sections() -> None:
|
||||||
content = "\n".join(f"{index}. 小节{index}\n内容{index}。" for index in range(1, 9))
|
content = "\n".join(f"{index}. 小节{index}\n内容{index}。" for index in range(1, 9))
|
||||||
items = _preview_task(
|
items = _preview_task(
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
<<<<<<<< HEAD:frontend/dist/assets/AppConfirmDialog-BI5Yud_k.js
|
|
||||||
import{d as C,bf as g,D as E,H as O,o as _,e as B,s as D,Z as $,w as A,c as I,aL as K,q as a,n as v,aa as r,g as q,bg as M,y as u,z as N,P as k}from"./index-CD29OCdJ.js";import{_ as R}from"./_plugin-vue_export-helper-DlAUqK2U.js";const V={class:"app-confirm-header"},z={class:"app-confirm-heading"},H={class:"app-confirm-icon","aria-hidden":"true"},L={class:"app-confirm-body"},P={class:"app-confirm-actions"},S=C({__name:"AppConfirmDialog",setup(j,{expose:x}){const c=u(!1),m=u(),p=u(),d=`app-confirm-title-${g()}`,y=`app-confirm-message-${g()}`,n=N({title:"请确认操作",message:"",confirmText:"确定",cancelText:"取消",tone:"warning",closeOnOverlay:!1});let o=null,i=null;function s(t){c.value=!1;const e=o;o=null,e==null||e(t)}function h(t){return o&&s(!1),Object.assign(n,{confirmText:"确定",cancelText:"取消",tone:"warning",closeOnOverlay:!1,...t}),c.value=!0,new Promise(e=>{o=e})}function w(){n.closeOnOverlay&&s(!1)}function T(t){var b;if(t.key==="Escape"){t.preventDefault(),s(!1);return}if(t.key!=="Tab")return;const e=Array.from(((b=m.value)==null?void 0:b.querySelectorAll("button:not([disabled])"))??[]),l=e[0],f=e[e.length-1];!l||!f||(t.shiftKey&&document.activeElement===l?(t.preventDefault(),f.focus()):!t.shiftKey&&document.activeElement===f&&(t.preventDefault(),l.focus()))}return E(c,async t=>{var e;if(t){i=document.activeElement instanceof HTMLElement?document.activeElement:null,await k(),(e=p.value)==null||e.focus();return}await k(),i==null||i.focus(),i=null}),O(()=>{o==null||o(!1),o=null}),x({open:h}),(t,e)=>(_(),B(M,{to:"body"},[D($,{name:"app-confirm"},{default:A(()=>[c.value?(_(),I("div",{key:0,class:"app-confirm-overlay",onMousedown:K(w,["self"])},[a("section",{ref_key:"dialogRef",ref:m,class:v(["app-confirm-dialog",`is-${n.tone}`]),role:"alertdialog","aria-modal":!0,"aria-labelledby":d,"aria-describedby":y,onKeydown:T},[a("header",V,[a("div",z,[a("span",H,[a("i",{class:v(n.tone==="primary"?"fa fa-question-circle":"fa fa-exclamation-triangle")},null,2)]),a("h2",{id:d},r(n.title),1)]),a("button",{class:"app-confirm-close",type:"button","aria-label":"关闭确认弹窗",onClick:e[0]||(e[0]=l=>s(!1))},[...e[3]||(e[3]=[a("i",{class:"fa fa-times","aria-hidden":"true"},null,-1)])])]),a("div",L,[a("p",{id:y},r(n.message),1)]),a("footer",P,[a("button",{ref_key:"cancelButtonRef",ref:p,class:"app-confirm-button is-cancel",type:"button",onClick:e[1]||(e[1]=l=>s(!1))},r(n.cancelText),513),a("button",{class:"app-confirm-button is-confirm",type:"button",onClick:e[2]||(e[2]=l=>s(!0))},r(n.confirmText),1)])],34)],32)):q("",!0)]),_:1})]))}}),G=R(S,[["__scopeId","data-v-398df98e"]]);export{G as A};
|
|
||||||
|||||||| parent of 8bd93b0 (build(frontend): 更新生产构建产物):frontend/dist/assets/AppConfirmDialog-DssSJ2jv.js
|
|
||||||
import{d as C,bf as g,D as E,H as O,o as _,e as B,s as D,Z as $,w as A,c as I,aL as K,q as a,n as v,aa as r,g as q,bg as M,y as u,z as N,P as k}from"./index-Ds9AETjS.js";import{_ as R}from"./_plugin-vue_export-helper-DlAUqK2U.js";const V={class:"app-confirm-header"},z={class:"app-confirm-heading"},H={class:"app-confirm-icon","aria-hidden":"true"},L={class:"app-confirm-body"},P={class:"app-confirm-actions"},S=C({__name:"AppConfirmDialog",setup(j,{expose:x}){const c=u(!1),m=u(),p=u(),d=`app-confirm-title-${g()}`,y=`app-confirm-message-${g()}`,n=N({title:"请确认操作",message:"",confirmText:"确定",cancelText:"取消",tone:"warning",closeOnOverlay:!1});let o=null,i=null;function s(t){c.value=!1;const e=o;o=null,e==null||e(t)}function h(t){return o&&s(!1),Object.assign(n,{confirmText:"确定",cancelText:"取消",tone:"warning",closeOnOverlay:!1,...t}),c.value=!0,new Promise(e=>{o=e})}function w(){n.closeOnOverlay&&s(!1)}function T(t){var b;if(t.key==="Escape"){t.preventDefault(),s(!1);return}if(t.key!=="Tab")return;const e=Array.from(((b=m.value)==null?void 0:b.querySelectorAll("button:not([disabled])"))??[]),l=e[0],f=e[e.length-1];!l||!f||(t.shiftKey&&document.activeElement===l?(t.preventDefault(),f.focus()):!t.shiftKey&&document.activeElement===f&&(t.preventDefault(),l.focus()))}return E(c,async t=>{var e;if(t){i=document.activeElement instanceof HTMLElement?document.activeElement:null,await k(),(e=p.value)==null||e.focus();return}await k(),i==null||i.focus(),i=null}),O(()=>{o==null||o(!1),o=null}),x({open:h}),(t,e)=>(_(),B(M,{to:"body"},[D($,{name:"app-confirm"},{default:A(()=>[c.value?(_(),I("div",{key:0,class:"app-confirm-overlay",onMousedown:K(w,["self"])},[a("section",{ref_key:"dialogRef",ref:m,class:v(["app-confirm-dialog",`is-${n.tone}`]),role:"alertdialog","aria-modal":!0,"aria-labelledby":d,"aria-describedby":y,onKeydown:T},[a("header",V,[a("div",z,[a("span",H,[a("i",{class:v(n.tone==="primary"?"fa fa-question-circle":"fa fa-exclamation-triangle")},null,2)]),a("h2",{id:d},r(n.title),1)]),a("button",{class:"app-confirm-close",type:"button","aria-label":"关闭确认弹窗",onClick:e[0]||(e[0]=l=>s(!1))},[...e[3]||(e[3]=[a("i",{class:"fa fa-times","aria-hidden":"true"},null,-1)])])]),a("div",L,[a("p",{id:y},r(n.message),1)]),a("footer",P,[a("button",{ref_key:"cancelButtonRef",ref:p,class:"app-confirm-button is-cancel",type:"button",onClick:e[1]||(e[1]=l=>s(!1))},r(n.cancelText),513),a("button",{class:"app-confirm-button is-confirm",type:"button",onClick:e[2]||(e[2]=l=>s(!0))},r(n.confirmText),1)])],34)],32)):q("",!0)]),_:1})]))}}),G=R(S,[["__scopeId","data-v-398df98e"]]);export{G as A};
|
|
||||||
========
|
|
||||||
import{d as C,bf as g,D as E,H as O,o as _,e as B,s as D,Z as $,w as A,c as I,aL as K,q as t,n as v,aa as r,g as q,bg as M,y as u,z as N,P as k}from"./index-CxbBjZKo.js";import{_ as R}from"./_plugin-vue_export-helper-DlAUqK2U.js";const V={class:"app-confirm-header"},z={class:"app-confirm-heading"},H={class:"app-confirm-icon","aria-hidden":"true"},L={class:"app-confirm-body"},P={class:"app-confirm-actions"},S=C({__name:"AppConfirmDialog",setup(j,{expose:x}){const c=u(!1),m=u(),p=u(),d=`app-confirm-title-${g()}`,y=`app-confirm-message-${g()}`,n=N({title:"请确认操作",message:"",confirmText:"确定",cancelText:"取消",tone:"warning",closeOnOverlay:!1});let o=null,i=null;function s(a){c.value=!1;const e=o;o=null,e==null||e(a)}function h(a){return o&&s(!1),Object.assign(n,{confirmText:"确定",cancelText:"取消",tone:"warning",closeOnOverlay:!1,...a}),c.value=!0,new Promise(e=>{o=e})}function w(){n.closeOnOverlay&&s(!1)}function T(a){var b;if(a.key==="Escape"){a.preventDefault(),s(!1);return}if(a.key!=="Tab")return;const e=Array.from(((b=m.value)==null?void 0:b.querySelectorAll("button:not([disabled])"))??[]),l=e[0],f=e[e.length-1];!l||!f||(a.shiftKey&&document.activeElement===l?(a.preventDefault(),f.focus()):!a.shiftKey&&document.activeElement===f&&(a.preventDefault(),l.focus()))}return E(c,async a=>{var e;if(a){i=document.activeElement instanceof HTMLElement?document.activeElement:null,await k(),(e=p.value)==null||e.focus();return}await k(),i==null||i.focus(),i=null}),O(()=>{o==null||o(!1),o=null}),x({open:h}),(a,e)=>(_(),B(M,{to:"body"},[D($,{name:"app-confirm"},{default:A(()=>[c.value?(_(),I("div",{key:0,class:"app-confirm-overlay",onMousedown:K(w,["self"])},[t("section",{ref_key:"dialogRef",ref:m,class:v(["app-confirm-dialog",`is-${n.tone}`]),role:"alertdialog","aria-modal":!0,"aria-labelledby":d,"aria-describedby":y,onKeydown:T},[t("header",V,[t("div",z,[t("span",H,[t("i",{class:v(n.tone==="primary"?"fa fa-question-circle":"fa fa-exclamation-triangle")},null,2)]),t("h2",{id:d},r(n.title),1)]),t("button",{class:"app-confirm-close",type:"button","aria-label":"关闭确认弹窗",onClick:e[0]||(e[0]=l=>s(!1))},[...e[3]||(e[3]=[t("i",{class:"fa fa-times","aria-hidden":"true"},null,-1)])])]),t("div",L,[t("p",{id:y},r(n.message),1)]),t("footer",P,[t("button",{ref_key:"cancelButtonRef",ref:p,class:"app-confirm-button is-cancel",type:"button",onClick:e[1]||(e[1]=l=>s(!1))},r(n.cancelText),513),t("button",{class:"app-confirm-button is-confirm",type:"button",onClick:e[2]||(e[2]=l=>s(!0))},r(n.confirmText),1)])],34)],32)):q("",!0)]),_:1})]))}}),G=R(S,[["__scopeId","data-v-8d3bf6ad"]]);export{G as A};
|
|
||||||
>>>>>>>> 8bd93b0 (build(frontend): 更新生产构建产物):frontend/dist/assets/AppConfirmDialog-D93e215T.js
|
|
||||||
@@ -1 +1 @@
|
|||||||
import{d as C,bf as g,D as E,H as O,o as _,e as B,s as D,Z as $,w as A,c as I,aL as K,q as t,n as v,aa as r,g as q,bg as M,y as u,z as N,P as k}from"./index-DS73WiJW.js";import{_ as R}from"./_plugin-vue_export-helper-DlAUqK2U.js";const V={class:"app-confirm-header"},z={class:"app-confirm-heading"},H={class:"app-confirm-icon","aria-hidden":"true"},L={class:"app-confirm-body"},P={class:"app-confirm-actions"},S=C({__name:"AppConfirmDialog",setup(j,{expose:x}){const c=u(!1),m=u(),p=u(),d=`app-confirm-title-${g()}`,y=`app-confirm-message-${g()}`,n=N({title:"请确认操作",message:"",confirmText:"确定",cancelText:"取消",tone:"warning",closeOnOverlay:!1});let o=null,i=null;function s(a){c.value=!1;const e=o;o=null,e==null||e(a)}function h(a){return o&&s(!1),Object.assign(n,{confirmText:"确定",cancelText:"取消",tone:"warning",closeOnOverlay:!1,...a}),c.value=!0,new Promise(e=>{o=e})}function w(){n.closeOnOverlay&&s(!1)}function T(a){var b;if(a.key==="Escape"){a.preventDefault(),s(!1);return}if(a.key!=="Tab")return;const e=Array.from(((b=m.value)==null?void 0:b.querySelectorAll("button:not([disabled])"))??[]),l=e[0],f=e[e.length-1];!l||!f||(a.shiftKey&&document.activeElement===l?(a.preventDefault(),f.focus()):!a.shiftKey&&document.activeElement===f&&(a.preventDefault(),l.focus()))}return E(c,async a=>{var e;if(a){i=document.activeElement instanceof HTMLElement?document.activeElement:null,await k(),(e=p.value)==null||e.focus();return}await k(),i==null||i.focus(),i=null}),O(()=>{o==null||o(!1),o=null}),x({open:h}),(a,e)=>(_(),B(M,{to:"body"},[D($,{name:"app-confirm"},{default:A(()=>[c.value?(_(),I("div",{key:0,class:"app-confirm-overlay",onMousedown:K(w,["self"])},[t("section",{ref_key:"dialogRef",ref:m,class:v(["app-confirm-dialog",`is-${n.tone}`]),role:"alertdialog","aria-modal":!0,"aria-labelledby":d,"aria-describedby":y,onKeydown:T},[t("header",V,[t("div",z,[t("span",H,[t("i",{class:v(n.tone==="primary"?"fa fa-question-circle":"fa fa-exclamation-triangle")},null,2)]),t("h2",{id:d},r(n.title),1)]),t("button",{class:"app-confirm-close",type:"button","aria-label":"关闭确认弹窗",onClick:e[0]||(e[0]=l=>s(!1))},[...e[3]||(e[3]=[t("i",{class:"fa fa-times","aria-hidden":"true"},null,-1)])])]),t("div",L,[t("p",{id:y},r(n.message),1)]),t("footer",P,[t("button",{ref_key:"cancelButtonRef",ref:p,class:"app-confirm-button is-cancel",type:"button",onClick:e[1]||(e[1]=l=>s(!1))},r(n.cancelText),513),t("button",{class:"app-confirm-button is-confirm",type:"button",onClick:e[2]||(e[2]=l=>s(!0))},r(n.confirmText),1)])],34)],32)):q("",!0)]),_:1})]))}}),G=R(S,[["__scopeId","data-v-8d3bf6ad"]]);export{G as A};
|
import{d as C,bf as g,D as E,H as O,o as _,e as B,s as D,Z as $,w as A,c as I,aL as K,q as t,n as v,aa as r,g as q,bg as M,y as u,z as N,P as k}from"./index-z4H3KYDz.js";import{_ as R}from"./_plugin-vue_export-helper-DlAUqK2U.js";const V={class:"app-confirm-header"},z={class:"app-confirm-heading"},H={class:"app-confirm-icon","aria-hidden":"true"},L={class:"app-confirm-body"},P={class:"app-confirm-actions"},S=C({__name:"AppConfirmDialog",setup(j,{expose:x}){const c=u(!1),m=u(),p=u(),d=`app-confirm-title-${g()}`,y=`app-confirm-message-${g()}`,n=N({title:"请确认操作",message:"",confirmText:"确定",cancelText:"取消",tone:"warning",closeOnOverlay:!1});let o=null,i=null;function s(a){c.value=!1;const e=o;o=null,e==null||e(a)}function h(a){return o&&s(!1),Object.assign(n,{confirmText:"确定",cancelText:"取消",tone:"warning",closeOnOverlay:!1,...a}),c.value=!0,new Promise(e=>{o=e})}function w(){n.closeOnOverlay&&s(!1)}function T(a){var b;if(a.key==="Escape"){a.preventDefault(),s(!1);return}if(a.key!=="Tab")return;const e=Array.from(((b=m.value)==null?void 0:b.querySelectorAll("button:not([disabled])"))??[]),l=e[0],f=e[e.length-1];!l||!f||(a.shiftKey&&document.activeElement===l?(a.preventDefault(),f.focus()):!a.shiftKey&&document.activeElement===f&&(a.preventDefault(),l.focus()))}return E(c,async a=>{var e;if(a){i=document.activeElement instanceof HTMLElement?document.activeElement:null,await k(),(e=p.value)==null||e.focus();return}await k(),i==null||i.focus(),i=null}),O(()=>{o==null||o(!1),o=null}),x({open:h}),(a,e)=>(_(),B(M,{to:"body"},[D($,{name:"app-confirm"},{default:A(()=>[c.value?(_(),I("div",{key:0,class:"app-confirm-overlay",onMousedown:K(w,["self"])},[t("section",{ref_key:"dialogRef",ref:m,class:v(["app-confirm-dialog",`is-${n.tone}`]),role:"alertdialog","aria-modal":!0,"aria-labelledby":d,"aria-describedby":y,onKeydown:T},[t("header",V,[t("div",z,[t("span",H,[t("i",{class:v(n.tone==="primary"?"fa fa-question-circle":"fa fa-exclamation-triangle")},null,2)]),t("h2",{id:d},r(n.title),1)]),t("button",{class:"app-confirm-close",type:"button","aria-label":"关闭确认弹窗",onClick:e[0]||(e[0]=l=>s(!1))},[...e[3]||(e[3]=[t("i",{class:"fa fa-times","aria-hidden":"true"},null,-1)])])]),t("div",L,[t("p",{id:y},r(n.message),1)]),t("footer",P,[t("button",{ref_key:"cancelButtonRef",ref:p,class:"app-confirm-button is-cancel",type:"button",onClick:e[1]||(e[1]=l=>s(!1))},r(n.cancelText),513),t("button",{class:"app-confirm-button is-confirm",type:"button",onClick:e[2]||(e[2]=l=>s(!0))},r(n.confirmText),1)])],34)],32)):q("",!0)]),_:1})]))}}),G=R(S,[["__scopeId","data-v-8d3bf6ad"]]);export{G as A};
|
||||||
1
frontend/dist/assets/CompareChatView-DTOxFKd3.css
vendored
Normal file
1
frontend/dist/assets/CompareChatView-DTOxFKd3.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.model-list[data-v-fbe74cb0]{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}.empty-hint[data-v-fbe74cb0]{color:#909399}
|
||||||
@@ -1 +0,0 @@
|
|||||||
.model-list[data-v-aaa4b5c9]{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}.empty-hint[data-v-aaa4b5c9]{color:#909399}
|
|
||||||
@@ -1 +1 @@
|
|||||||
import{a as B,E as K}from"./el-form-item--AdlsBF7.js";import{E as M}from"./index-D0wqu88j.js";import{E as h}from"./index-6OTFNiIi.js";import{E as I}from"./el-tag-C4SnL2z_.js";import{E as R}from"./el-divider-Bk8dYjWT.js";import{E as F}from"./el-slider-D0ESR8FK.js";import{d as L,G as z,e as V,w as s,ac as D,y as $,o as f,s as a,x as p,q as j,c as k,ad as A,aa as E,f as P,M as G,g as J,v as O,z as H,j as _,A as b}from"./index-CD29OCdJ.js";import"./el-popper-DIiB8Y-M.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-input-number-CUR6qfYr.js";import{P as Q}from"./PageCard-Byh3epid.js";import{u as W}from"./usePolling-C71_cNpk.js";import{a as X}from"./compare-BAX_umRe.js";import{a as Y}from"./status-Dl1fykxa.js";import{_ as Z}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-BEiueV6y.js";import"./_baseClone-Blem5BWg.js";import"./raf-DGtHIxe2.js";import"./index-C8FAS7l2.js";import"./index-DpY84JwG.js";import"./debounce-BCyqG5kC.js";import"./toNumber-B6P5MqPp.js";import"./clamp-BfrLWns4.js";import"./index-BpugJXyE.js";import"./index-sBiRi5wE.js";import"./el-card-BvbOkvag.js";const tt={class:"model-list"},et={key:0,class:"empty-hint"},ot=L({__name:"CompareChatView",setup(at){const T=D(),y=O(),x=T.params.id,n=$(null),e=H({systemPrompt:"",question:"",temperature:.7,topP:.9,topK:40,maxTokens:2048}),m=_(()=>{var l;if(!((l=n.value)!=null&&l.load_status))return[];try{return(typeof n.value.load_status=="string"?JSON.parse(n.value.load_status):n.value.load_status).loaded_models||[]}catch{return[]}}),C=_(()=>m.value.length>0&&m.value.every(l=>l.status==="ready"||l.status==="running")),g=_(()=>m.value.some(l=>l.status==="starting"));async function c(){try{n.value=await X(x)}catch{}}function S(){var u,i;if(!e.question.trim()){b.warning("请输入问题");return}if(g.value){b.warning("模型仍在启动中,请稍候");return}const l=new URLSearchParams({taskId:x,taskName:((u=n.value)==null?void 0:u.model_name)||((i=n.value)==null?void 0:i.name)||"",question:e.question,systemPrompt:e.systemPrompt,temperature:String(e.temperature),topP:String(e.topP),topK:String(e.topK),maxTokens:String(e.maxTokens)}),t=y.resolve(`/model-compare/result?${l.toString()}`).href;window.open(t,"_blank")}const{start:q}=W(c,5e3,{immediate:!1});return z(async()=>{await c(),q()}),(l,t)=>{const u=R,i=I,v=M,r=B,d=F,w=h,U=K;return f(),V(Q,{title:"模型对比配置"},{default:s(()=>[a(u,{"content-position":"left"},{default:s(()=>[...t[7]||(t[7]=[p("已启动模型",-1)])]),_:1}),j("div",tt,[(f(!0),k(G,null,A(m.value,(o,N)=>(f(),V(i,{key:N,type:o.status==="ready"||o.status==="running"?"success":o.status==="starting"?"warning":"danger",size:"large"},{default:s(()=>[p(E(o.model_name)+" ("+E(P(Y)(o.status))+") ",1)]),_:2},1032,["type"]))),128)),m.value.length?J("",!0):(f(),k("span",et,"暂无已启动模型"))]),a(u,{"content-position":"left"},{default:s(()=>[...t[8]||(t[8]=[p("对话配置",-1)])]),_:1}),a(U,{"label-width":"120px",style:{"max-width":"700px"}},{default:s(()=>[a(r,{label:"系统提示词"},{default:s(()=>[a(v,{modelValue:e.systemPrompt,"onUpdate:modelValue":t[0]||(t[0]=o=>e.systemPrompt=o),type:"textarea",rows:3,placeholder:"可选"},null,8,["modelValue"])]),_:1}),a(r,{label:"问题"},{default:s(()=>[a(v,{modelValue:e.question,"onUpdate:modelValue":t[1]||(t[1]=o=>e.question=o),type:"textarea",rows:4,placeholder:"请输入要对比的问题"},null,8,["modelValue"])]),_:1}),a(r,{label:"Temperature"},{default:s(()=>[a(d,{modelValue:e.temperature,"onUpdate:modelValue":t[2]||(t[2]=o=>e.temperature=o),min:0,max:2,step:.1,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,{label:"Top-p"},{default:s(()=>[a(d,{modelValue:e.topP,"onUpdate:modelValue":t[3]||(t[3]=o=>e.topP=o),min:0,max:1,step:.05,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,{label:"Top-k"},{default:s(()=>[a(d,{modelValue:e.topK,"onUpdate:modelValue":t[4]||(t[4]=o=>e.topK=o),min:1,max:100,step:1,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,{label:"Max Tokens"},{default:s(()=>[a(d,{modelValue:e.maxTokens,"onUpdate:modelValue":t[5]||(t[5]=o=>e.maxTokens=o),min:256,max:4096,step:128,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,null,{default:s(()=>[a(w,{type:"primary",disabled:!C.value||g.value,onClick:S},{default:s(()=>[...t[9]||(t[9]=[p(" 开始对比 ",-1)])]),_:1},8,["disabled"]),a(w,{onClick:t[6]||(t[6]=o=>P(y).back())},{default:s(()=>[...t[10]||(t[10]=[p("返回",-1)])]),_:1})]),_:1})]),_:1})]),_:1})}}}),Ut=Z(ot,[["__scopeId","data-v-9d25ca9d"]]);export{Ut as default};
|
import{a as B,E as K}from"./el-form-item-WQOcwC6B.js";import{E as M}from"./index-OPiDM056.js";import{E as h}from"./index-BHESvfAo.js";import{E as I}from"./el-tag-ulIZLhPi.js";import{E as R}from"./el-divider-C8c-JInP.js";import{E as F}from"./el-slider-OsPL6Uf1.js";import{d as L,G as z,e as V,w as s,ac as D,y as $,o as f,s as a,x as p,q as j,c as k,ad as A,aa as b,f as E,M as G,g as J,v as O,z as H,j as _,A as P}from"./index-z4H3KYDz.js";import"./el-popper-BJIpIz7j.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-input-number-bsSWsFMW.js";import{P as Q}from"./PageCard-BWIJ3AEp.js";import{u as W}from"./usePolling-eiZ9wScN.js";import{a as X}from"./compare-Dtaakk2Y.js";import{a as Y}from"./status-Dl1fykxa.js";import{_ as Z}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-DuG_gufG.js";import"./_baseClone-DT8DugHo.js";import"./raf-CGFVbd0C.js";import"./index-C6iZvNqO.js";import"./index-CeeJbXQu.js";import"./debounce-DozRow7U.js";import"./toNumber-DmGFONFK.js";import"./clamp-Cqzl_HF6.js";import"./index-DJMIMot_.js";import"./index-DIW0xkWn.js";import"./el-card-DLSyQgTR.js";const tt={class:"model-list"},et={key:0,class:"empty-hint"},ot=L({__name:"CompareChatView",setup(at){const T=D(),y=O(),x=T.params.id,n=$(null),e=H({systemPrompt:"",question:"",temperature:.7,topP:.9,topK:40,maxTokens:2048}),m=_(()=>{var l;if(!((l=n.value)!=null&&l.load_status))return[];try{return(typeof n.value.load_status=="string"?JSON.parse(n.value.load_status):n.value.load_status).loaded_models||[]}catch{return[]}}),C=_(()=>m.value.length>0&&m.value.every(l=>l.status==="ready"||l.status==="running")),g=_(()=>m.value.some(l=>l.status==="starting"));async function c(){try{n.value=await X(x)}catch{}}function S(){var u,i;if(!e.question.trim()){P.warning("请输入问题");return}if(g.value){P.warning("模型仍在启动中,请稍候");return}const l=new URLSearchParams({taskId:x,taskName:((u=n.value)==null?void 0:u.model_name)||((i=n.value)==null?void 0:i.name)||"",question:e.question,systemPrompt:e.systemPrompt,temperature:String(e.temperature),topP:String(e.topP),topK:String(e.topK),maxTokens:String(e.maxTokens)}),t=y.resolve(`/model-compare/result?${l.toString()}`).href;window.open(t,"_blank")}const{start:q}=W(c,5e3,{immediate:!1});return z(async()=>{await c(),q()}),(l,t)=>{const u=R,i=I,v=M,r=B,d=F,w=h,U=K;return f(),V(Q,{title:"模型对比配置"},{default:s(()=>[a(u,{"content-position":"left"},{default:s(()=>[...t[7]||(t[7]=[p("已启动模型",-1)])]),_:1}),j("div",tt,[(f(!0),k(G,null,A(m.value,(o,N)=>(f(),V(i,{key:N,type:o.status==="ready"||o.status==="running"?"success":o.status==="starting"?"warning":"danger",size:"large"},{default:s(()=>[p(b(o.model_name)+" ("+b(E(Y)(o.status))+") ",1)]),_:2},1032,["type"]))),128)),m.value.length?J("",!0):(f(),k("span",et,"暂无已启动模型"))]),a(u,{"content-position":"left"},{default:s(()=>[...t[8]||(t[8]=[p("对话配置",-1)])]),_:1}),a(U,{"label-width":"120px",style:{"max-width":"700px"}},{default:s(()=>[a(r,{label:"系统提示词"},{default:s(()=>[a(v,{modelValue:e.systemPrompt,"onUpdate:modelValue":t[0]||(t[0]=o=>e.systemPrompt=o),type:"textarea",rows:3,placeholder:"可选"},null,8,["modelValue"])]),_:1}),a(r,{label:"问题"},{default:s(()=>[a(v,{modelValue:e.question,"onUpdate:modelValue":t[1]||(t[1]=o=>e.question=o),type:"textarea",rows:4,placeholder:"请输入要对比的问题"},null,8,["modelValue"])]),_:1}),a(r,{label:"Temperature"},{default:s(()=>[a(d,{modelValue:e.temperature,"onUpdate:modelValue":t[2]||(t[2]=o=>e.temperature=o),min:0,max:2,step:.1,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,{label:"Top-p"},{default:s(()=>[a(d,{modelValue:e.topP,"onUpdate:modelValue":t[3]||(t[3]=o=>e.topP=o),min:0,max:1,step:.05,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,{label:"Top-k"},{default:s(()=>[a(d,{modelValue:e.topK,"onUpdate:modelValue":t[4]||(t[4]=o=>e.topK=o),min:1,max:100,step:1,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,{label:"Max Tokens"},{default:s(()=>[a(d,{modelValue:e.maxTokens,"onUpdate:modelValue":t[5]||(t[5]=o=>e.maxTokens=o),min:256,max:4096,step:128,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,null,{default:s(()=>[a(w,{type:"primary",disabled:!C.value||g.value,onClick:S},{default:s(()=>[...t[9]||(t[9]=[p(" 开始对比 ",-1)])]),_:1},8,["disabled"]),a(w,{onClick:t[6]||(t[6]=o=>E(y).back())},{default:s(()=>[...t[10]||(t[10]=[p("返回",-1)])]),_:1})]),_:1})]),_:1})]),_:1})}}}),Ut=Z(ot,[["__scopeId","data-v-fbe74cb0"]]);export{Ut as default};
|
||||||
@@ -1 +0,0 @@
|
|||||||
import{a as N,E as B}from"./el-form-item-DFlzM9g_.js";import{E as K}from"./index-Bl2Fsjov.js";import{E as M}from"./index-COtHB4lx.js";import{E as h}from"./index-DvecKFrV.js";import{E as I}from"./el-divider-DozUv7u3.js";import{E as R}from"./el-slider-CW0ssSmv.js";import{d as F,G as z,e as V,w as l,ac as D,y as L,o as f,s as a,x as p,q as $,c as k,ad as j,aa as E,M as A,g as G,f as J,v as O,z as H,j as _,A as P}from"./index-DS73WiJW.js";import"./el-popper-DwsDzc1A.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-input-number-mWm5mZ4P.js";/* empty css */import{P as Q}from"./PageCard-CXygDeSp.js";import{u as W}from"./usePolling-ed48b66t.js";import{a as X}from"./compare-0wWOMnO6.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-PcoOufI5.js";import"./_baseClone--zSegXWR.js";import"./raf-G_xTfKfR.js";import"./index-Cz3aNuv2.js";import"./index-CP7PpuwU.js";import"./debounce-BVX_QT7H.js";import"./toNumber-B0hxpsP6.js";import"./clamp-Cyl0wpX2.js";import"./index-oP6kINt_.js";import"./index-CAsu3xTW.js";import"./el-card-DPafZG_Z.js";const Z={class:"model-list"},tt={key:0,class:"empty-hint"},et=F({__name:"CompareChatView",setup(ot){const b=D(),y=O(),x=b.params.id,n=L(null),e=H({systemPrompt:"",question:"",temperature:.7,topP:.9,topK:40,maxTokens:2048}),m=_(()=>{var s;if(!((s=n.value)!=null&&s.load_status))return[];try{return(typeof n.value.load_status=="string"?JSON.parse(n.value.load_status):n.value.load_status).loaded_models||[]}catch{return[]}}),T=_(()=>m.value.length>0&&m.value.every(s=>s.status==="ready"||s.status==="running")),g=_(()=>m.value.some(s=>s.status==="starting"));async function c(){try{n.value=await X(x)}catch{}}function C(){var u,i;if(!e.question.trim()){P.warning("请输入问题");return}if(g.value){P.warning("模型仍在启动中,请稍候");return}const s=new URLSearchParams({taskId:x,taskName:((u=n.value)==null?void 0:u.model_name)||((i=n.value)==null?void 0:i.name)||"",question:e.question,systemPrompt:e.systemPrompt,temperature:String(e.temperature),topP:String(e.topP),topK:String(e.topK),maxTokens:String(e.maxTokens)}),t=y.resolve(`/model-compare/result?${s.toString()}`).href;window.open(t,"_blank")}const{start:S}=W(c,5e3,{immediate:!1});return z(async()=>{await c(),S()}),(s,t)=>{const u=I,i=h,v=K,r=N,d=R,w=M,q=B;return f(),V(Q,{title:"模型对比配置"},{default:l(()=>[a(u,{"content-position":"left"},{default:l(()=>[...t[7]||(t[7]=[p("已启动模型",-1)])]),_:1}),$("div",Z,[(f(!0),k(A,null,j(m.value,(o,U)=>(f(),V(i,{key:U,type:o.status==="ready"||o.status==="running"?"success":o.status==="starting"?"warning":"danger",size:"large"},{default:l(()=>[p(E(o.model_name)+" ("+E(o.status)+") ",1)]),_:2},1032,["type"]))),128)),m.value.length?G("",!0):(f(),k("span",tt,"暂无已启动模型"))]),a(u,{"content-position":"left"},{default:l(()=>[...t[8]||(t[8]=[p("对话配置",-1)])]),_:1}),a(q,{"label-width":"120px",style:{"max-width":"700px"}},{default:l(()=>[a(r,{label:"系统提示词"},{default:l(()=>[a(v,{modelValue:e.systemPrompt,"onUpdate:modelValue":t[0]||(t[0]=o=>e.systemPrompt=o),type:"textarea",rows:3,placeholder:"可选"},null,8,["modelValue"])]),_:1}),a(r,{label:"问题"},{default:l(()=>[a(v,{modelValue:e.question,"onUpdate:modelValue":t[1]||(t[1]=o=>e.question=o),type:"textarea",rows:4,placeholder:"请输入要对比的问题"},null,8,["modelValue"])]),_:1}),a(r,{label:"Temperature"},{default:l(()=>[a(d,{modelValue:e.temperature,"onUpdate:modelValue":t[2]||(t[2]=o=>e.temperature=o),min:0,max:2,step:.1,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,{label:"Top-p"},{default:l(()=>[a(d,{modelValue:e.topP,"onUpdate:modelValue":t[3]||(t[3]=o=>e.topP=o),min:0,max:1,step:.05,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,{label:"Top-k"},{default:l(()=>[a(d,{modelValue:e.topK,"onUpdate:modelValue":t[4]||(t[4]=o=>e.topK=o),min:1,max:100,step:1,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,{label:"Max Tokens"},{default:l(()=>[a(d,{modelValue:e.maxTokens,"onUpdate:modelValue":t[5]||(t[5]=o=>e.maxTokens=o),min:256,max:4096,step:128,"show-input":"",style:{"max-width":"500px"}},null,8,["modelValue"])]),_:1}),a(r,null,{default:l(()=>[a(w,{type:"primary",disabled:!T.value||g.value,onClick:C},{default:l(()=>[...t[9]||(t[9]=[p(" 开始对比 ",-1)])]),_:1},8,["disabled"]),a(w,{onClick:t[6]||(t[6]=o=>J(y).back())},{default:l(()=>[...t[10]||(t[10]=[p("返回",-1)])]),_:1})]),_:1})]),_:1})]),_:1})}}}),qt=Y(et,[["__scopeId","data-v-aaa4b5c9"]]);export{qt as default};
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
.model-list[data-v-9d25ca9d]{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}.empty-hint[data-v-9d25ca9d]{color:#909399}
|
|
||||||
@@ -1 +1 @@
|
|||||||
import{E as D}from"./el-alert-DiB50G4H.js";import{E as $}from"./index-6OTFNiIi.js";import{E as z}from"./el-tag-C4SnL2z_.js";import{E as F}from"./el-card-BvbOkvag.js";import{d as O,G as U,H as J,c as d,q as i,aa as c,f as v,s as N,w as m,M as K,ad as A,ac as G,y as g,o as r,x as p,e as y,g as H}from"./index-CD29OCdJ.js";import{_ as L}from"./MarkdownView.vue_vue_type_style_index_0_lang-Cz6hZilm.js";import{a as W,c as j}from"./compare-BAX_umRe.js";import{_ as Q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./vnode-_QM9LlTR.js";const X={class:"compare-result"},Y={class:"result-header"},Z={class:"header-actions"},tt={class:"result-grid"},et={class:"card-header"},st={class:"model-name"},ot={key:0,class:"error-text"},at={key:1,class:"streaming-text"},nt={key:3,class:"loading-text"},lt={key:4,class:"result-stats"},rt=O({__name:"CompareResultView",setup(it){const u=G(),q=u.query.taskId,k=decodeURIComponent(u.query.question||""),h=decodeURIComponent(u.query.systemPrompt||""),E=Number(u.query.temperature||.7),P=Number(u.query.topP||.9),I=Number(u.query.topK||40),b=Number(u.query.maxTokens||2048),w=u.query.taskName,l=g([]),C=g(!1),x=g([]),f=new Set;async function B(){if(!C.value){C.value=!0;try{const s=await W(q);let t=[];s.load_status&&(t=(typeof s.load_status=="string"?JSON.parse(s.load_status):s.load_status).loaded_models||[]),x.value=t,l.value=t.map(o=>({name:o.model_name||"模型",content:"",displayContent:"",isTyping:!1,status:"loading"})),await Promise.all(t.map((o,e)=>S(o,e)))}catch{}}}async function S(s,t){const o=Date.now();try{const e=await V(j({port:s.port,model_name:s.model_name,messages:[...h?[{role:"system",content:h}]:[],{role:"user",content:k}],temperature:E,top_p:P,top_k:I,max_tokens:b}),3e5),a=(e==null?void 0:e.response)||(e==null?void 0:e.content)||(e==null?void 0:e.data)||JSON.stringify(e),_=(Date.now()-o)/1e3;l.value[t].content=a,l.value[t].status="done",l.value[t].stats={totalTime:_,charsPerSec:_>0?Number((a.length/_).toFixed(1)):0},M(t,a)}catch(e){l.value[t].content="推理失败: "+(e.message||""),l.value[t].status="error"}}async function V(s,t){let o=null;try{return await Promise.race([s,new Promise((e,a)=>{o=setTimeout(()=>a(new Error("推理超时")),t)})])}finally{o&&clearTimeout(o)}}function M(s,t){let o=0;l.value[s].isTyping=!0;const e=Math.max(2,Math.ceil(t.length/30)),a=setInterval(()=>{o+=e,l.value[s].displayContent=t.slice(0,o),o>=t.length&&(clearInterval(a),f.delete(a),l.value[s].displayContent=t,l.value[s].isTyping=!1)},50);f.add(a)}return U(B),J(()=>{f.forEach(clearInterval),f.clear()}),(s,t)=>{const o=$,e=D,a=z,_=F;return r(),d("div",X,[i("div",Y,[i("h2",null,"对比结果"+c(v(w)?` - ${v(w)}`:""),1),i("div",Z,[N(o,{onClick:t[0]||(t[0]=n=>s.$router.push("/model-inference"))},{default:m(()=>[...t[1]||(t[1]=[p("返回列表",-1)])]),_:1})])]),N(e,{type:"info",closable:!1,"show-icon":"",class:"question-box"},{title:m(()=>[t[2]||(t[2]=i("strong",null,"问题:",-1)),p(c(v(k)),1)]),_:1}),i("div",tt,[(r(!0),d(K,null,A(l.value,(n,R)=>(r(),y(_,{key:R,shadow:"hover",class:"result-card"},{header:m(()=>[i("div",et,[i("span",st,c(n.name),1),n.status==="loading"?(r(),y(a,{key:0,type:"warning",size:"small"},{default:m(()=>[...t[3]||(t[3]=[p("生成中...",-1)])]),_:1})):n.status==="done"?(r(),y(a,{key:1,type:"success",size:"small"},{default:m(()=>[...t[4]||(t[4]=[p("完成",-1)])]),_:1})):(r(),y(a,{key:2,type:"danger",size:"small"},{default:m(()=>[...t[5]||(t[5]=[p("失败",-1)])]),_:1}))])]),default:m(()=>{var T;return[n.status==="error"?(r(),d("div",ot,c(n.content),1)):n.isTyping?(r(),d("div",at,c(n.displayContent),1)):n.displayContent?(r(),y(L,{key:2,content:n.displayContent},null,8,["content"])):(r(),d("div",nt,[...t[6]||(t[6]=[i("i",{class:"fa fa-spinner fa-spin"},null,-1),p(" 正在生成回答... ",-1)])])),n.stats?(r(),d("div",lt,[i("span",null,"耗时 "+c((T=n.stats.totalTime)==null?void 0:T.toFixed(1))+"s",1),i("span",null,"速度 "+c(n.stats.charsPerSec)+" 字/秒",1)])):H("",!0)]}),_:2},1024))),128))])])}}}),gt=Q(rt,[["__scopeId","data-v-4c4e03d7"]]);export{gt as default};
|
import{E as D}from"./el-alert-uXFexXb6.js";import{E as $}from"./index-BHESvfAo.js";import{E as z}from"./el-tag-ulIZLhPi.js";import{E as F}from"./el-card-DLSyQgTR.js";import{d as O,G as U,H as J,c as d,q as i,aa as c,f as v,s as N,w as m,M as K,ad as A,ac as G,y as g,o as r,x as p,e as y,g as H}from"./index-z4H3KYDz.js";import{_ as L}from"./MarkdownView.vue_vue_type_style_index_0_lang-DicHzhRR.js";import{a as W,c as j}from"./compare-Dtaakk2Y.js";import{_ as Q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./vnode-Cz-7S2If.js";const X={class:"compare-result"},Y={class:"result-header"},Z={class:"header-actions"},tt={class:"result-grid"},et={class:"card-header"},st={class:"model-name"},ot={key:0,class:"error-text"},at={key:1,class:"streaming-text"},nt={key:3,class:"loading-text"},lt={key:4,class:"result-stats"},rt=O({__name:"CompareResultView",setup(it){const u=G(),q=u.query.taskId,k=decodeURIComponent(u.query.question||""),h=decodeURIComponent(u.query.systemPrompt||""),E=Number(u.query.temperature||.7),P=Number(u.query.topP||.9),I=Number(u.query.topK||40),b=Number(u.query.maxTokens||2048),w=u.query.taskName,l=g([]),C=g(!1),x=g([]),f=new Set;async function B(){if(!C.value){C.value=!0;try{const s=await W(q);let t=[];s.load_status&&(t=(typeof s.load_status=="string"?JSON.parse(s.load_status):s.load_status).loaded_models||[]),x.value=t,l.value=t.map(o=>({name:o.model_name||"模型",content:"",displayContent:"",isTyping:!1,status:"loading"})),await Promise.all(t.map((o,e)=>S(o,e)))}catch{}}}async function S(s,t){const o=Date.now();try{const e=await V(j({port:s.port,model_name:s.model_name,messages:[...h?[{role:"system",content:h}]:[],{role:"user",content:k}],temperature:E,top_p:P,top_k:I,max_tokens:b}),3e5),a=(e==null?void 0:e.response)||(e==null?void 0:e.content)||(e==null?void 0:e.data)||JSON.stringify(e),_=(Date.now()-o)/1e3;l.value[t].content=a,l.value[t].status="done",l.value[t].stats={totalTime:_,charsPerSec:_>0?Number((a.length/_).toFixed(1)):0},M(t,a)}catch(e){l.value[t].content="推理失败: "+(e.message||""),l.value[t].status="error"}}async function V(s,t){let o=null;try{return await Promise.race([s,new Promise((e,a)=>{o=setTimeout(()=>a(new Error("推理超时")),t)})])}finally{o&&clearTimeout(o)}}function M(s,t){let o=0;l.value[s].isTyping=!0;const e=Math.max(2,Math.ceil(t.length/30)),a=setInterval(()=>{o+=e,l.value[s].displayContent=t.slice(0,o),o>=t.length&&(clearInterval(a),f.delete(a),l.value[s].displayContent=t,l.value[s].isTyping=!1)},50);f.add(a)}return U(B),J(()=>{f.forEach(clearInterval),f.clear()}),(s,t)=>{const o=$,e=D,a=z,_=F;return r(),d("div",X,[i("div",Y,[i("h2",null,"对比结果"+c(v(w)?` - ${v(w)}`:""),1),i("div",Z,[N(o,{onClick:t[0]||(t[0]=n=>s.$router.push("/model-inference"))},{default:m(()=>[...t[1]||(t[1]=[p("返回列表",-1)])]),_:1})])]),N(e,{type:"info",closable:!1,"show-icon":"",class:"question-box"},{title:m(()=>[t[2]||(t[2]=i("strong",null,"问题:",-1)),p(c(v(k)),1)]),_:1}),i("div",tt,[(r(!0),d(K,null,A(l.value,(n,R)=>(r(),y(_,{key:R,shadow:"hover",class:"result-card"},{header:m(()=>[i("div",et,[i("span",st,c(n.name),1),n.status==="loading"?(r(),y(a,{key:0,type:"warning",size:"small"},{default:m(()=>[...t[3]||(t[3]=[p("生成中...",-1)])]),_:1})):n.status==="done"?(r(),y(a,{key:1,type:"success",size:"small"},{default:m(()=>[...t[4]||(t[4]=[p("完成",-1)])]),_:1})):(r(),y(a,{key:2,type:"danger",size:"small"},{default:m(()=>[...t[5]||(t[5]=[p("失败",-1)])]),_:1}))])]),default:m(()=>{var T;return[n.status==="error"?(r(),d("div",ot,c(n.content),1)):n.isTyping?(r(),d("div",at,c(n.displayContent),1)):n.displayContent?(r(),y(L,{key:2,content:n.displayContent},null,8,["content"])):(r(),d("div",nt,[...t[6]||(t[6]=[i("i",{class:"fa fa-spinner fa-spin"},null,-1),p(" 正在生成回答... ",-1)])])),n.stats?(r(),d("div",lt,[i("span",null,"耗时 "+c((T=n.stats.totalTime)==null?void 0:T.toFixed(1))+"s",1),i("span",null,"速度 "+c(n.stats.charsPerSec)+" 字/秒",1)])):H("",!0)]}),_:2},1024))),128))])])}}}),gt=Q(rt,[["__scopeId","data-v-8391f389"]]);export{gt as default};
|
||||||
@@ -1 +0,0 @@
|
|||||||
import{E as D}from"./el-alert-GKLeF-ml.js";import{E as $}from"./index-COtHB4lx.js";import{E as z}from"./index-DvecKFrV.js";import{E as F}from"./el-card-DPafZG_Z.js";import{d as O,G as U,H as J,c as d,q as i,aa as c,f as v,s as N,w as m,M as K,ad as A,ac as G,y as g,o as r,x as p,e as y,g as H}from"./index-DS73WiJW.js";/* empty css */import{_ as L}from"./MarkdownView.vue_vue_type_style_index_0_lang-HafsXEgr.js";import{a as W,c as j}from"./compare-0wWOMnO6.js";import{_ as Q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./vnode-HiBZolW-.js";const X={class:"compare-result"},Y={class:"result-header"},Z={class:"header-actions"},tt={class:"result-grid"},et={class:"card-header"},st={class:"model-name"},ot={key:0,class:"error-text"},at={key:1,class:"streaming-text"},nt={key:3,class:"loading-text"},lt={key:4,class:"result-stats"},rt=O({__name:"CompareResultView",setup(it){const u=G(),q=u.query.taskId,k=decodeURIComponent(u.query.question||""),h=decodeURIComponent(u.query.systemPrompt||""),E=Number(u.query.temperature||.7),P=Number(u.query.topP||.9),I=Number(u.query.topK||40),b=Number(u.query.maxTokens||2048),w=u.query.taskName,l=g([]),C=g(!1),x=g([]),f=new Set;async function B(){if(!C.value){C.value=!0;try{const s=await W(q);let t=[];s.load_status&&(t=(typeof s.load_status=="string"?JSON.parse(s.load_status):s.load_status).loaded_models||[]),x.value=t,l.value=t.map(o=>({name:o.model_name||"模型",content:"",displayContent:"",isTyping:!1,status:"loading"})),await Promise.all(t.map((o,e)=>S(o,e)))}catch{}}}async function S(s,t){const o=Date.now();try{const e=await V(j({port:s.port,model_name:s.model_name,messages:[...h?[{role:"system",content:h}]:[],{role:"user",content:k}],temperature:E,top_p:P,top_k:I,max_tokens:b}),3e5),a=(e==null?void 0:e.response)||(e==null?void 0:e.content)||(e==null?void 0:e.data)||JSON.stringify(e),_=(Date.now()-o)/1e3;l.value[t].content=a,l.value[t].status="done",l.value[t].stats={totalTime:_,charsPerSec:_>0?Number((a.length/_).toFixed(1)):0},M(t,a)}catch(e){l.value[t].content="推理失败: "+(e.message||""),l.value[t].status="error"}}async function V(s,t){let o=null;try{return await Promise.race([s,new Promise((e,a)=>{o=setTimeout(()=>a(new Error("推理超时")),t)})])}finally{o&&clearTimeout(o)}}function M(s,t){let o=0;l.value[s].isTyping=!0;const e=Math.max(2,Math.ceil(t.length/30)),a=setInterval(()=>{o+=e,l.value[s].displayContent=t.slice(0,o),o>=t.length&&(clearInterval(a),f.delete(a),l.value[s].displayContent=t,l.value[s].isTyping=!1)},50);f.add(a)}return U(B),J(()=>{f.forEach(clearInterval),f.clear()}),(s,t)=>{const o=$,e=D,a=z,_=F;return r(),d("div",X,[i("div",Y,[i("h2",null,"对比结果"+c(v(w)?` - ${v(w)}`:""),1),i("div",Z,[N(o,{onClick:t[0]||(t[0]=n=>s.$router.push("/model-inference"))},{default:m(()=>[...t[1]||(t[1]=[p("返回列表",-1)])]),_:1})])]),N(e,{type:"info",closable:!1,"show-icon":"",class:"question-box"},{title:m(()=>[t[2]||(t[2]=i("strong",null,"问题:",-1)),p(c(v(k)),1)]),_:1}),i("div",tt,[(r(!0),d(K,null,A(l.value,(n,R)=>(r(),y(_,{key:R,shadow:"hover",class:"result-card"},{header:m(()=>[i("div",et,[i("span",st,c(n.name),1),n.status==="loading"?(r(),y(a,{key:0,type:"warning",size:"small"},{default:m(()=>[...t[3]||(t[3]=[p("生成中...",-1)])]),_:1})):n.status==="done"?(r(),y(a,{key:1,type:"success",size:"small"},{default:m(()=>[...t[4]||(t[4]=[p("完成",-1)])]),_:1})):(r(),y(a,{key:2,type:"danger",size:"small"},{default:m(()=>[...t[5]||(t[5]=[p("失败",-1)])]),_:1}))])]),default:m(()=>{var T;return[n.status==="error"?(r(),d("div",ot,c(n.content),1)):n.isTyping?(r(),d("div",at,c(n.displayContent),1)):n.displayContent?(r(),y(L,{key:2,content:n.displayContent},null,8,["content"])):(r(),d("div",nt,[...t[6]||(t[6]=[i("i",{class:"fa fa-spinner fa-spin"},null,-1),p(" 正在生成回答... ",-1)])])),n.stats?(r(),d("div",lt,[i("span",null,"耗时 "+c((T=n.stats.totalTime)==null?void 0:T.toFixed(1))+"s",1),i("span",null,"速度 "+c(n.stats.charsPerSec)+" 字/秒",1)])):H("",!0)]}),_:2},1024))),128))])])}}}),kt=Q(rt,[["__scopeId","data-v-8391f389"]]);export{kt as default};
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
.compute-page[data-v-3a9b0afd]{display:flex;flex-direction:column;gap:16px;min-height:0;height:100%;padding:24px;background:#fff}.compute-header[data-v-3a9b0afd]{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.compute-header h1[data-v-3a9b0afd]{margin:0;font-size:24px;font-weight:650;color:#111827}.compute-header p[data-v-3a9b0afd]{margin:8px 0 0;color:#64748b}.header-actions[data-v-3a9b0afd]{display:flex;align-items:center;gap:12px}.last-updated[data-v-3a9b0afd],.muted[data-v-3a9b0afd]{color:#64748b;font-size:12px}.last-updated[data-v-3a9b0afd]{display:inline-block;min-width:92px;text-align:right}.summary-grid[data-v-3a9b0afd]{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.summary-tile[data-v-3a9b0afd]{border:1px solid #e5e7eb;border-radius:8px;padding:14px 16px;background:#f8fafc}.summary-tile span[data-v-3a9b0afd]{display:block;color:#64748b;font-size:12px}.summary-tile strong[data-v-3a9b0afd]{display:block;margin-top:8px;color:#111827;font-size:24px}.compute-tabs[data-v-3a9b0afd]{flex:1;min-height:0}.compute-tabs[data-v-3a9b0afd] .el-tabs__content{height:calc(100% - 56px)}.compute-tabs[data-v-3a9b0afd] .el-tab-pane{height:100%}.mono[data-v-3a9b0afd]{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.replica-toolbar[data-v-3a9b0afd]{display:flex;gap:12px;align-items:center;margin-bottom:12px}.replica-toolbar .el-select[data-v-3a9b0afd]{width:280px}.node-form-grid[data-v-3a9b0afd]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px}.node-form-grid[data-v-3a9b0afd] .el-input-number,.node-form-grid[data-v-3a9b0afd] .el-select{width:100%}@media(max-width:960px){.compute-header[data-v-3a9b0afd],.header-actions[data-v-3a9b0afd],.replica-toolbar[data-v-3a9b0afd]{flex-direction:column;align-items:stretch}.summary-grid[data-v-3a9b0afd]{grid-template-columns:repeat(2,minmax(0,1fr))}.node-form-grid[data-v-3a9b0afd]{grid-template-columns:1fr}}
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
import{a as N,E as v}from"./el-form-item--AdlsBF7.js";import{E as b}from"./el-popper-DIiB8Y-M.js";import{E as O}from"./index-D0wqu88j.js";import{E as S}from"./index-6OTFNiIi.js";import{E as g,a as E}from"./el-select-dn4MhMwo.js";import{d as J,e as V,w as e,o as w,q as t,s as l,x as i,z as x,A as C}from"./index-CD29OCdJ.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-scrollbar-YCRG1835.js";import"./el-tag-C4SnL2z_.js";import{P as U}from"./PageCard-Byh3epid.js";import{_ as y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-BEiueV6y.js";import"./_baseClone-Blem5BWg.js";import"./index-DpY84JwG.js";import"./index-BpugJXyE.js";import"./raf-DGtHIxe2.js";import"./index-C8FAS7l2.js";import"./vnode-_QM9LlTR.js";import"./index-D1b786GX.js";import"./scroll-D-TPweuo.js";import"./clamp-BfrLWns4.js";import"./toNumber-B6P5MqPp.js";import"./_baseIteratee-CuPmYyG4.js";import"./el-card-BvbOkvag.js";const F={class:"converter-panel"},L={class:"form-row"},T={class:"panel-footer"},B={class:"actions"},k=J({__name:"DataConvertView",setup(I){const a=x({outputName:"converted-data",encoding:"UTF-8"});function p(){C.info("当前仅完成界面设计,转换功能将在后续接入")}function d(){Object.assign(a,{outputName:"converted-data",encoding:"UTF-8"})}return(j,o)=>{const n=N,m=O,u=E,f=g,c=v,r=S,_=b;return w(),V(U,{class:"data-convert-page",title:"数据类型转换",subtitle:"将 JSON 文件转换为便于训练和评测使用的 JSONL 格式"},{default:e(()=>[t("div",F,[o[9]||(o[9]=t("div",{class:"panel-header"},[t("div",{class:"tool-icon","aria-hidden":"true"},[t("i",{class:"fa fa-exchange"})]),t("div",null,[t("h3",null,"JSON 转 JSONL"),t("p",null,"每条 JSON 数据将输出为 JSONL 文件中的一行记录")])],-1)),l(c,{class:"converter-form","label-position":"top"},{default:e(()=>[l(n,{label:"转换类型"},{default:e(()=>[...o[2]||(o[2]=[t("div",{class:"format-field","aria-label":"JSON 转 JSONL"},[t("span",null,"JSON"),t("i",{class:"fa fa-long-arrow-right","aria-hidden":"true"}),t("span",null,"JSONL")],-1)])]),_:1}),l(n,{label:"源文件",required:""},{default:e(()=>[t("button",{class:"upload-zone",type:"button",onClick:p},[...o[3]||(o[3]=[t("i",{class:"fa fa-cloud-upload","aria-hidden":"true"},null,-1),t("span",{class:"upload-content"},[t("strong",null,"点击选择或拖拽 JSON 文件到此处"),t("small",null,"仅支持 .json 格式,单文件不超过 200 MB")],-1),t("span",{class:"select-button"},"选择文件",-1)])])]),_:1}),t("div",L,[l(n,{label:"输出文件名"},{default:e(()=>[l(m,{modelValue:a.outputName,"onUpdate:modelValue":o[0]||(o[0]=s=>a.outputName=s)},{append:e(()=>[...o[4]||(o[4]=[i(".jsonl",-1)])]),_:1},8,["modelValue"])]),_:1}),l(n,{label:"字符编码"},{default:e(()=>[l(f,{modelValue:a.encoding,"onUpdate:modelValue":o[1]||(o[1]=s=>a.encoding=s),style:{width:"100%"}},{default:e(()=>[l(u,{label:"UTF-8",value:"UTF-8"})]),_:1},8,["modelValue"])]),_:1})]),o[5]||(o[5]=t("div",{class:"format-tip"},[t("i",{class:"fa fa-info-circle","aria-hidden":"true"}),t("span",null,"支持由 JSON 数组转换为 JSONL,每个数组元素输出为一行。")],-1))]),_:1}),t("div",T,[o[8]||(o[8]=t("span",{class:"prototype-label"},"当前为 UI 原型,暂不执行实际转换",-1)),t("div",B,[l(r,{onClick:d},{default:e(()=>[...o[6]||(o[6]=[i("重置",-1)])]),_:1}),l(_,{content:"转换功能将在后续开发中接入",placement:"top"},{default:e(()=>[t("span",null,[l(r,{type:"primary",disabled:""},{default:e(()=>[...o[7]||(o[7]=[i("开始转换",-1)])]),_:1})])]),_:1})])])])]),_:1})}}}),it=y(k,[["__scopeId","data-v-fcb69543"]]);export{it as default};
|
import{a as N,E as v}from"./el-form-item-WQOcwC6B.js";import{E as b}from"./el-popper-BJIpIz7j.js";import{E as O}from"./index-OPiDM056.js";import{E as S}from"./index-BHESvfAo.js";import{E as g,a as E}from"./el-select-OcCw1rK5.js";import{d as J,e as V,w as e,o as w,q as t,s as l,x as i,z as x,A as C}from"./index-z4H3KYDz.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-scrollbar-Cs4RtPFn.js";import"./el-tag-ulIZLhPi.js";import{P as U}from"./PageCard-BWIJ3AEp.js";import{_ as y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-DuG_gufG.js";import"./_baseClone-DT8DugHo.js";import"./index-CeeJbXQu.js";import"./index-DJMIMot_.js";import"./raf-CGFVbd0C.js";import"./index-C6iZvNqO.js";import"./vnode-Cz-7S2If.js";import"./index-BANvEWbb.js";import"./scroll-CJzUJVH-.js";import"./clamp-Cqzl_HF6.js";import"./toNumber-DmGFONFK.js";import"./_baseIteratee-BSbGVKbQ.js";import"./el-card-DLSyQgTR.js";const F={class:"converter-panel"},L={class:"form-row"},T={class:"panel-footer"},B={class:"actions"},k=J({__name:"DataConvertView",setup(I){const a=x({outputName:"converted-data",encoding:"UTF-8"});function p(){C.info("当前仅完成界面设计,转换功能将在后续接入")}function d(){Object.assign(a,{outputName:"converted-data",encoding:"UTF-8"})}return(j,o)=>{const n=N,m=O,u=E,f=g,c=v,r=S,_=b;return w(),V(U,{class:"data-convert-page",title:"数据类型转换",subtitle:"将 JSON 文件转换为便于训练和评测使用的 JSONL 格式"},{default:e(()=>[t("div",F,[o[9]||(o[9]=t("div",{class:"panel-header"},[t("div",{class:"tool-icon","aria-hidden":"true"},[t("i",{class:"fa fa-exchange"})]),t("div",null,[t("h3",null,"JSON 转 JSONL"),t("p",null,"每条 JSON 数据将输出为 JSONL 文件中的一行记录")])],-1)),l(c,{class:"converter-form","label-position":"top"},{default:e(()=>[l(n,{label:"转换类型"},{default:e(()=>[...o[2]||(o[2]=[t("div",{class:"format-field","aria-label":"JSON 转 JSONL"},[t("span",null,"JSON"),t("i",{class:"fa fa-long-arrow-right","aria-hidden":"true"}),t("span",null,"JSONL")],-1)])]),_:1}),l(n,{label:"源文件",required:""},{default:e(()=>[t("button",{class:"upload-zone",type:"button",onClick:p},[...o[3]||(o[3]=[t("i",{class:"fa fa-cloud-upload","aria-hidden":"true"},null,-1),t("span",{class:"upload-content"},[t("strong",null,"点击选择或拖拽 JSON 文件到此处"),t("small",null,"仅支持 .json 格式,单文件不超过 200 MB")],-1),t("span",{class:"select-button"},"选择文件",-1)])])]),_:1}),t("div",L,[l(n,{label:"输出文件名"},{default:e(()=>[l(m,{modelValue:a.outputName,"onUpdate:modelValue":o[0]||(o[0]=s=>a.outputName=s)},{append:e(()=>[...o[4]||(o[4]=[i(".jsonl",-1)])]),_:1},8,["modelValue"])]),_:1}),l(n,{label:"字符编码"},{default:e(()=>[l(f,{modelValue:a.encoding,"onUpdate:modelValue":o[1]||(o[1]=s=>a.encoding=s),style:{width:"100%"}},{default:e(()=>[l(u,{label:"UTF-8",value:"UTF-8"})]),_:1},8,["modelValue"])]),_:1})]),o[5]||(o[5]=t("div",{class:"format-tip"},[t("i",{class:"fa fa-info-circle","aria-hidden":"true"}),t("span",null,"支持由 JSON 数组转换为 JSONL,每个数组元素输出为一行。")],-1))]),_:1}),t("div",T,[o[8]||(o[8]=t("span",{class:"prototype-label"},"当前为 UI 原型,暂不执行实际转换",-1)),t("div",B,[l(r,{onClick:d},{default:e(()=>[...o[6]||(o[6]=[i("重置",-1)])]),_:1}),l(_,{content:"转换功能将在后续开发中接入",placement:"top"},{default:e(()=>[t("span",null,[l(r,{type:"primary",disabled:""},{default:e(()=>[...o[7]||(o[7]=[i("开始转换",-1)])]),_:1})])]),_:1})])])])]),_:1})}}}),it=y(k,[["__scopeId","data-v-89a8493f"]]);export{it as default};
|
||||||
@@ -1 +0,0 @@
|
|||||||
import{a as N,E as v}from"./el-form-item-DFlzM9g_.js";import{E as b}from"./el-popper-DwsDzc1A.js";import{E as O}from"./index-Bl2Fsjov.js";import{E as S}from"./index-COtHB4lx.js";import{E as g,a as E}from"./el-select-CHKMfjyJ.js";import{d as J,e as V,w as e,o as w,q as t,s as l,x as i,z as x,A as C}from"./index-DS73WiJW.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-scrollbar-DErsaip4.js";/* empty css */import{P as U}from"./PageCard-CXygDeSp.js";import{_ as y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-PcoOufI5.js";import"./_baseClone--zSegXWR.js";import"./index-CP7PpuwU.js";import"./index-oP6kINt_.js";import"./raf-G_xTfKfR.js";import"./index-Cz3aNuv2.js";import"./vnode-HiBZolW-.js";import"./index-D-GNa2lp.js";import"./index-DvecKFrV.js";import"./scroll-qUQMUB2J.js";import"./clamp-Cyl0wpX2.js";import"./toNumber-B0hxpsP6.js";import"./_baseIteratee-BtAnsxgT.js";import"./el-card-DPafZG_Z.js";const F={class:"converter-panel"},L={class:"form-row"},T={class:"panel-footer"},B={class:"actions"},k=J({__name:"DataConvertView",setup(I){const a=x({outputName:"converted-data",encoding:"UTF-8"});function p(){C.info("当前仅完成界面设计,转换功能将在后续接入")}function d(){Object.assign(a,{outputName:"converted-data",encoding:"UTF-8"})}return(j,o)=>{const n=N,m=O,u=E,f=g,c=v,r=S,_=b;return w(),V(U,{class:"data-convert-page",title:"数据类型转换",subtitle:"将 JSON 文件转换为便于训练和评测使用的 JSONL 格式"},{default:e(()=>[t("div",F,[o[9]||(o[9]=t("div",{class:"panel-header"},[t("div",{class:"tool-icon","aria-hidden":"true"},[t("i",{class:"fa fa-exchange"})]),t("div",null,[t("h3",null,"JSON 转 JSONL"),t("p",null,"每条 JSON 数据将输出为 JSONL 文件中的一行记录")])],-1)),l(c,{class:"converter-form","label-position":"top"},{default:e(()=>[l(n,{label:"转换类型"},{default:e(()=>[...o[2]||(o[2]=[t("div",{class:"format-field","aria-label":"JSON 转 JSONL"},[t("span",null,"JSON"),t("i",{class:"fa fa-long-arrow-right","aria-hidden":"true"}),t("span",null,"JSONL")],-1)])]),_:1}),l(n,{label:"源文件",required:""},{default:e(()=>[t("button",{class:"upload-zone",type:"button",onClick:p},[...o[3]||(o[3]=[t("i",{class:"fa fa-cloud-upload","aria-hidden":"true"},null,-1),t("span",{class:"upload-content"},[t("strong",null,"点击选择或拖拽 JSON 文件到此处"),t("small",null,"仅支持 .json 格式,单文件不超过 200 MB")],-1),t("span",{class:"select-button"},"选择文件",-1)])])]),_:1}),t("div",L,[l(n,{label:"输出文件名"},{default:e(()=>[l(m,{modelValue:a.outputName,"onUpdate:modelValue":o[0]||(o[0]=s=>a.outputName=s)},{append:e(()=>[...o[4]||(o[4]=[i(".jsonl",-1)])]),_:1},8,["modelValue"])]),_:1}),l(n,{label:"字符编码"},{default:e(()=>[l(f,{modelValue:a.encoding,"onUpdate:modelValue":o[1]||(o[1]=s=>a.encoding=s),style:{width:"100%"}},{default:e(()=>[l(u,{label:"UTF-8",value:"UTF-8"})]),_:1},8,["modelValue"])]),_:1})]),o[5]||(o[5]=t("div",{class:"format-tip"},[t("i",{class:"fa fa-info-circle","aria-hidden":"true"}),t("span",null,"支持由 JSON 数组转换为 JSONL,每个数组元素输出为一行。")],-1))]),_:1}),t("div",T,[o[8]||(o[8]=t("span",{class:"prototype-label"},"当前为 UI 原型,暂不执行实际转换",-1)),t("div",B,[l(r,{onClick:d},{default:e(()=>[...o[6]||(o[6]=[i("重置",-1)])]),_:1}),l(_,{content:"转换功能将在后续开发中接入",placement:"top"},{default:e(()=>[t("span",null,[l(r,{type:"primary",disabled:""},{default:e(()=>[...o[7]||(o[7]=[i("开始转换",-1)])]),_:1})])]),_:1})])])])]),_:1})}}}),rt=y(k,[["__scopeId","data-v-89a8493f"]]);export{rt as default};
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
frontend/dist/assets/DataProcessDetailView-BJ9VVF70.js
vendored
Normal file
1
frontend/dist/assets/DataProcessDetailView-BJ9VVF70.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
.action-buttons[data-v-8a132c68]{display:flex;justify-content:center;gap:8px}
|
|
||||||
@@ -1 +1 @@
|
|||||||
import{E as B}from"./index-6OTFNiIi.js";import{E as C}from"./el-tag-C4SnL2z_.js";import{E as N}from"./el-table-CzpPw-qp.js";import{d as z,G as P,c as g,s as o,w as s,y as n,o as d,q as f,x as r,e as V,aa as c,A as I,v as L}from"./index-CD29OCdJ.js";import{E as M}from"./index-BpXxrg-6.js";import"./el-checkbox-Pnt9POcY.js";import{D as $}from"./DataTablePage-DQMBzHmK.js";import{_ as S}from"./ModelStatusTag.vue_vue_type_script_setup_true_lang-CBSAQmYm.js";import{g as q,d as A}from"./dataProcess-CvvVdP7v.js";import{_ as G}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-YCRG1835.js";import"./index-DpY84JwG.js";import"./el-popper-DIiB8Y-M.js";import"./index-BpugJXyE.js";import"./_baseClone-Blem5BWg.js";import"./_baseIteratee-CuPmYyG4.js";import"./castArray-BEiueV6y.js";import"./debounce-BCyqG5kC.js";import"./toNumber-B6P5MqPp.js";import"./raf-DGtHIxe2.js";import"./validator-BQ0LVwAS.js";import"./index-D9N-GMuA.js";import"./clamp-BfrLWns4.js";import"./index-roSlfP_P.js";import"./scroll-D-TPweuo.js";import"./index-D0wqu88j.js";import"./index-C8FAS7l2.js";import"./omit-9H73Nvwk.js";import"./el-card-BvbOkvag.js";import"./el-pagination-B1UdckVp.js";import"./el-select-dn4MhMwo.js";import"./vnode-_QM9LlTR.js";import"./index-D1b786GX.js";import"./directive-DsbMrhCX.js";import"./el-tooltip-l0sNRNKZ.js";import"./status-Dl1fykxa.js";const R={class:"data-process-page",style:{height:"100%"}},j={key:1},F={class:"action-buttons"},H=z({__name:"DataProcessListView",setup(J){const y={structured:"结构化数据",unstructured:"非结构化数据",external:"外来数据源拉取"},h=L(),l=n([]),p=n(!1),m=n(null),u=n("");async function v(t=!1){t||(p.value=!0),u.value="";try{const a=await q({page:1,page_size:200});l.value=a.items}catch{u.value="数据处理任务加载失败,请稍后重试。"}finally{t||(p.value=!1)}}function x(t){const a=t.id;h.push({name:"data-process-detail",params:{id:a}})}async function b(t){try{await M.confirm(`确定删除数据处理任务“${t.name}”吗?删除后无法恢复。`,"确认删除",{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消",confirmButtonClass:"el-button--danger"})}catch{return}m.value=t.id;try{await A(t.id),l.value=l.value.filter(a=>a.id!==t.id),I.success("数据处理任务已删除")}catch{}finally{m.value=null}}function D(t){if(!t)return"-";const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString("zh-CN",{hour12:!1})}function k(t){return t.source_dataset_name||t.source_dataset||"-"}function w(t){return t.output_dataset_name||t.output_dataset||"-"}return P(v),(t,a)=>{const i=N,E=C,_=B;return d(),g("div",R,[o($,{title:"",data:l.value,loading:p.value,searchable:"","search-fields":["name"],"create-text":"新建数据处理","create-to":"/data-process/create","row-key":"id","page-size":10,"empty-text":u.value||"暂无数据处理任务"},{columns:s(()=>[o(i,{label:"任务ID",prop:"id",align:"center",width:"100"}),o(i,{label:"任务名称",prop:"name",align:"center","show-overflow-tooltip":""}),o(i,{label:"任务状态",align:"center",width:"110"},{default:s(({row:e})=>[o(S,{status:e.status},null,8,["status"])]),_:1}),o(i,{label:"处理类型",align:"center",width:"140"},{default:s(({row:e})=>[e.process_type?(d(),V(E,{key:0,size:"small",type:"info",effect:"plain"},{default:s(()=>[r(c(y[e.process_type]||e.process_type),1)]),_:2},1024)):(d(),g("span",j,"-"))]),_:1}),o(i,{label:"源数据集",align:"center","show-overflow-tooltip":""},{default:s(({row:e})=>[r(c(k(e)),1)]),_:1}),o(i,{label:"输出数据集",align:"center","show-overflow-tooltip":""},{default:s(({row:e})=>[r(c(w(e)),1)]),_:1}),o(i,{label:"创建时间",align:"center",width:"190"},{default:s(({row:e})=>[r(c(D(e.create_time||e.created_at)),1)]),_:1})]),actions:s(({row:e})=>[f("div",F,[o(_,{type:"primary",link:"",size:"small",onClick:T=>x(e)},{default:s(()=>[...a[0]||(a[0]=[f("i",{class:"fa fa-file-text-o",style:{"margin-right":"4px"}},null,-1),r("详情 ",-1)])]),_:1},8,["onClick"]),o(_,{type:"danger",link:"",size:"small",loading:m.value===e.id,onClick:T=>b(e)},{default:s(()=>[...a[1]||(a[1]=[f("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),r("删除 ",-1)])]),_:1},8,["loading","onClick"])])]),_:1},8,["data","loading","empty-text"])])}}}),Ct=G(H,[["__scopeId","data-v-8a132c68"]]);export{Ct as default};
|
import{E as B}from"./index-BHESvfAo.js";import{E as C}from"./el-tag-ulIZLhPi.js";import{E as N}from"./el-table-BpaXJdL-.js";import{d as z,G as P,c as g,s as o,w as s,y as n,o as d,q as f,x as r,e as V,aa as c,A as I,v as L}from"./index-z4H3KYDz.js";import{E as M}from"./index-C_KL97zv.js";import"./el-checkbox-CODdaR7b.js";import{D as $}from"./DataTablePage-DLeZhncr.js";import{_ as S}from"./ModelStatusTag.vue_vue_type_script_setup_true_lang-CRiYR4QO.js";import{g as q,d as A}from"./dataProcess-CWOEiOM9.js";import{_ as G}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-Cs4RtPFn.js";import"./index-CeeJbXQu.js";import"./el-popper-BJIpIz7j.js";import"./index-DJMIMot_.js";import"./_baseClone-DT8DugHo.js";import"./_baseIteratee-BSbGVKbQ.js";import"./castArray-DuG_gufG.js";import"./debounce-DozRow7U.js";import"./toNumber-DmGFONFK.js";import"./raf-CGFVbd0C.js";import"./validator-Cv5bUbtV.js";import"./index-3Nih6or2.js";import"./clamp-Cqzl_HF6.js";import"./index-5agRb3jZ.js";import"./scroll-CJzUJVH-.js";import"./index-OPiDM056.js";import"./index-C6iZvNqO.js";import"./omit-8mGWGArl.js";import"./el-card-DLSyQgTR.js";import"./el-pagination-P9pb1Tpb.js";import"./el-select-OcCw1rK5.js";import"./vnode-Cz-7S2If.js";import"./index-BANvEWbb.js";import"./directive-BjB4tpmk.js";import"./el-tooltip-l0sNRNKZ.js";import"./status-Dl1fykxa.js";const R={class:"data-process-page",style:{height:"100%"}},j={key:1},F={class:"action-buttons"},H=z({__name:"DataProcessListView",setup(J){const y={structured:"结构化数据",unstructured:"非结构化数据",external:"外来数据源拉取"},h=L(),l=n([]),p=n(!1),m=n(null),u=n("");async function v(t=!1){t||(p.value=!0),u.value="";try{const a=await q({page:1,page_size:200});l.value=a.items}catch{u.value="数据处理任务加载失败,请稍后重试。"}finally{t||(p.value=!1)}}function x(t){const a=t.id;h.push({name:"data-process-detail",params:{id:a}})}async function b(t){try{await M.confirm(`确定删除数据处理任务“${t.name}”吗?删除后无法恢复。`,"确认删除",{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消",confirmButtonClass:"el-button--danger"})}catch{return}m.value=t.id;try{await A(t.id),l.value=l.value.filter(a=>a.id!==t.id),I.success("数据处理任务已删除")}catch{}finally{m.value=null}}function D(t){if(!t)return"-";const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString("zh-CN",{hour12:!1})}function k(t){return t.source_dataset_name||t.source_dataset||"-"}function w(t){return t.output_dataset_name||t.output_dataset||"-"}return P(v),(t,a)=>{const i=N,E=C,_=B;return d(),g("div",R,[o($,{title:"",data:l.value,loading:p.value,searchable:"","search-fields":["name"],"create-text":"新建数据处理","create-to":"/data-process/create","row-key":"id","page-size":10,"empty-text":u.value||"暂无数据处理任务"},{columns:s(()=>[o(i,{label:"任务ID",prop:"id",align:"center",width:"100"}),o(i,{label:"任务名称",prop:"name",align:"center","show-overflow-tooltip":""}),o(i,{label:"任务状态",align:"center",width:"110"},{default:s(({row:e})=>[o(S,{status:e.status},null,8,["status"])]),_:1}),o(i,{label:"处理类型",align:"center",width:"140"},{default:s(({row:e})=>[e.process_type?(d(),V(E,{key:0,size:"small",type:"info",effect:"plain"},{default:s(()=>[r(c(y[e.process_type]||e.process_type),1)]),_:2},1024)):(d(),g("span",j,"-"))]),_:1}),o(i,{label:"源数据集",align:"center","show-overflow-tooltip":""},{default:s(({row:e})=>[r(c(k(e)),1)]),_:1}),o(i,{label:"输出数据集",align:"center","show-overflow-tooltip":""},{default:s(({row:e})=>[r(c(w(e)),1)]),_:1}),o(i,{label:"创建时间",align:"center",width:"190"},{default:s(({row:e})=>[r(c(D(e.create_time||e.created_at)),1)]),_:1})]),actions:s(({row:e})=>[f("div",F,[o(_,{type:"primary",link:"",size:"small",onClick:T=>x(e)},{default:s(()=>[...a[0]||(a[0]=[f("i",{class:"fa fa-file-text-o",style:{"margin-right":"4px"}},null,-1),r("详情 ",-1)])]),_:1},8,["onClick"]),o(_,{type:"danger",link:"",size:"small",loading:m.value===e.id,onClick:T=>b(e)},{default:s(()=>[...a[1]||(a[1]=[f("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),r("删除 ",-1)])]),_:1},8,["loading","onClick"])])]),_:1},8,["data","loading","empty-text"])])}}}),Ct=G(H,[["__scopeId","data-v-71f2711e"]]);export{Ct as default};
|
||||||
@@ -1 +0,0 @@
|
|||||||
import{E as B}from"./index-COtHB4lx.js";import{E as C}from"./index-DvecKFrV.js";import{E as N}from"./el-table-DaKcBqZN.js";import{d as z,G as P,c as g,s as o,w as s,y as n,o as d,q as f,x as r,e as V,aa as c,A as I,v as L}from"./index-DS73WiJW.js";import{E as M}from"./index-ctkuqiuE.js";/* empty css */import"./el-checkbox-CphtzscD.js";import{D as $}from"./DataTablePage-wSeKJFdb.js";import{_ as S}from"./ModelStatusTag.vue_vue_type_script_setup_true_lang-bAj-d4uq.js";import{g as q,d as A}from"./dataProcess-wjFFzcko.js";import{_ as G}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-DErsaip4.js";import"./index-CP7PpuwU.js";import"./el-popper-DwsDzc1A.js";import"./index-oP6kINt_.js";import"./_baseClone--zSegXWR.js";import"./_baseIteratee-BtAnsxgT.js";import"./castArray-PcoOufI5.js";import"./debounce-BVX_QT7H.js";import"./toNumber-B0hxpsP6.js";import"./raf-G_xTfKfR.js";import"./validator-B_WzUu_x.js";import"./index-CdYGcoRT.js";import"./clamp-Cyl0wpX2.js";import"./index-TDTe-u1-.js";import"./scroll-qUQMUB2J.js";import"./index-Bl2Fsjov.js";import"./index-Cz3aNuv2.js";import"./omit-BHigcQFy.js";import"./el-card-DPafZG_Z.js";import"./el-pagination-BezdVZVw.js";import"./el-select-CHKMfjyJ.js";import"./vnode-HiBZolW-.js";import"./index-D-GNa2lp.js";import"./directive-BNrYmpdY.js";import"./el-tooltip-l0sNRNKZ.js";const R={class:"data-process-page",style:{height:"100%"}},j={key:1},F={class:"action-buttons"},H=z({__name:"DataProcessListView",setup(J){const y={structured:"结构化数据",unstructured:"非结构化数据",external:"外来数据源拉取"},h=L(),l=n([]),p=n(!1),m=n(null),u=n("");async function v(t=!1){t||(p.value=!0),u.value="";try{const a=await q({page:1,page_size:200});l.value=a.items}catch{u.value="数据处理任务加载失败,请稍后重试。"}finally{t||(p.value=!1)}}function x(t){const a=t.id;h.push({name:"data-process-detail",params:{id:a}})}async function b(t){try{await M.confirm(`确定删除数据处理任务“${t.name}”吗?删除后无法恢复。`,"确认删除",{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消",confirmButtonClass:"el-button--danger"})}catch{return}m.value=t.id;try{await A(t.id),l.value=l.value.filter(a=>a.id!==t.id),I.success("数据处理任务已删除")}catch{}finally{m.value=null}}function D(t){if(!t)return"-";const a=new Date(t);return Number.isNaN(a.getTime())?t:a.toLocaleString("zh-CN",{hour12:!1})}function k(t){return t.source_dataset_name||t.source_dataset||"-"}function w(t){return t.output_dataset_name||t.output_dataset||"-"}return P(v),(t,a)=>{const i=N,E=C,_=B;return d(),g("div",R,[o($,{title:"",data:l.value,loading:p.value,searchable:"","search-fields":["name"],"create-text":"新建数据处理","create-to":"/data-process/create","row-key":"id","page-size":10,"empty-text":u.value||"暂无数据处理任务"},{columns:s(()=>[o(i,{label:"任务ID",prop:"id",align:"center",width:"100"}),o(i,{label:"任务名称",prop:"name",align:"center","show-overflow-tooltip":""}),o(i,{label:"任务状态",align:"center",width:"110"},{default:s(({row:e})=>[o(S,{status:e.status},null,8,["status"])]),_:1}),o(i,{label:"处理类型",align:"center",width:"140"},{default:s(({row:e})=>[e.process_type?(d(),V(E,{key:0,size:"small",type:"info",effect:"plain"},{default:s(()=>[r(c(y[e.process_type]||e.process_type),1)]),_:2},1024)):(d(),g("span",j,"-"))]),_:1}),o(i,{label:"源数据集",align:"center","show-overflow-tooltip":""},{default:s(({row:e})=>[r(c(k(e)),1)]),_:1}),o(i,{label:"输出数据集",align:"center","show-overflow-tooltip":""},{default:s(({row:e})=>[r(c(w(e)),1)]),_:1}),o(i,{label:"创建时间",align:"center",width:"190"},{default:s(({row:e})=>[r(c(D(e.create_time||e.created_at)),1)]),_:1})]),actions:s(({row:e})=>[f("div",F,[o(_,{type:"primary",link:"",size:"small",onClick:T=>x(e)},{default:s(()=>[...a[0]||(a[0]=[f("i",{class:"fa fa-file-text-o",style:{"margin-right":"4px"}},null,-1),r("详情 ",-1)])]),_:1},8,["onClick"]),o(_,{type:"danger",link:"",size:"small",loading:m.value===e.id,onClick:T=>b(e)},{default:s(()=>[...a[1]||(a[1]=[f("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),r("删除 ",-1)])]),_:1},8,["loading","onClick"])])]),_:1},8,["data","loading","empty-text"])])}}}),Ct=G(H,[["__scopeId","data-v-71f2711e"]]);export{Ct as default};
|
|
||||||
1
frontend/dist/assets/DataTablePage-C1SFd_ca.css
vendored
Normal file
1
frontend/dist/assets/DataTablePage-C1SFd_ca.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
@charset "UTF-8";.data-table-page[data-v-19a2982f]{width:100%;height:100%;box-sizing:border-box;display:flex;flex-direction:column;min-height:0}.data-table-page .table-card[data-v-19a2982f]{margin-bottom:0;width:100%;flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.data-table-page .table-toolbar[data-v-19a2982f]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;padding:0 12px;flex-wrap:wrap;gap:12px}.data-table-page .table-title[data-v-19a2982f]{font-size:18px;font-weight:600;color:#1e293b;margin:0;letter-spacing:-.3px}.data-table-page .toolbar-actions[data-v-19a2982f]{display:flex;align-items:center;gap:12px}.data-table-page .search-input[data-v-19a2982f]{width:280px}.data-table-page .search-input[data-v-19a2982f] .el-input__wrapper{border-radius:8px;box-shadow:0 0 0 1px #e2e8f0 inset;transition:all .2s}.data-table-page .search-input[data-v-19a2982f] .el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--primary-color) inset}.data-table-page .batch-bar[data-v-19a2982f]{display:flex;align-items:center;justify-content:space-between;background:#4f46e50d;border:1px solid rgba(79,70,229,.1);border-radius:8px;padding:10px 16px;margin:0 24px 16px}.data-table-page .batch-bar .batch-info[data-v-19a2982f]{font-size:13px;color:var(--primary-color)}.data-table-page .batch-bar .batch-info strong[data-v-19a2982f]{font-weight:600;margin:0 4px}.data-table-page .table-body[data-v-19a2982f]{flex:1;min-height:0}.data-table-page .table-pagination[data-v-19a2982f]{display:flex;justify-content:flex-end;align-items:center;padding:16px 24px;border-top:1px solid #f1f5f9}.data-table-page .table-pagination[data-v-19a2982f] .el-pagination{margin-top:0}.data-table-page[data-v-19a2982f] .el-card__body{display:flex;flex-direction:column;padding:12px 0 0;flex:1;min-height:0}.data-table-page[data-v-19a2982f] .el-table__inner-wrapper:before{display:none}.data-table-page[data-v-19a2982f] .el-table td.el-table__cell{padding:18px 0!important}.data-table-page[data-v-19a2982f] .el-table__cell .cell{line-height:22px;white-space:nowrap}.data-table-page[data-v-19a2982f] .el-table .action-buttons{display:flex;align-items:center;justify-content:center;flex-wrap:nowrap;gap:8px}
|
||||||
@@ -1 +0,0 @@
|
|||||||
@charset "UTF-8";.data-table-page[data-v-0986ab61]{width:100%;height:100%;box-sizing:border-box;display:flex;flex-direction:column;min-height:0}.data-table-page .table-card[data-v-0986ab61]{margin-bottom:0;width:100%;flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.data-table-page .table-toolbar[data-v-0986ab61]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;padding:0 12px;flex-wrap:wrap;gap:12px}.data-table-page .table-title[data-v-0986ab61]{font-size:18px;font-weight:600;color:#1e293b;margin:0;letter-spacing:-.3px}.data-table-page .toolbar-actions[data-v-0986ab61]{display:flex;align-items:center;gap:12px}.data-table-page .search-input[data-v-0986ab61]{width:280px}.data-table-page .search-input[data-v-0986ab61] .el-input__wrapper{border-radius:8px;box-shadow:0 0 0 1px #e2e8f0 inset;transition:all .2s}.data-table-page .search-input[data-v-0986ab61] .el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--primary-color) inset}.data-table-page .batch-bar[data-v-0986ab61]{display:flex;align-items:center;justify-content:space-between;background:#4f46e50d;border:1px solid rgba(79,70,229,.1);border-radius:8px;padding:10px 16px;margin:0 24px 16px}.data-table-page .batch-bar .batch-info[data-v-0986ab61]{font-size:13px;color:var(--primary-color)}.data-table-page .batch-bar .batch-info strong[data-v-0986ab61]{font-weight:600;margin:0 4px}.data-table-page .table-body[data-v-0986ab61]{flex:1;min-height:0}.data-table-page .table-pagination[data-v-0986ab61]{display:flex;justify-content:flex-end;align-items:center;padding:16px 24px;border-top:1px solid #f1f5f9}.data-table-page .table-pagination[data-v-0986ab61] .el-pagination{margin-top:0}.data-table-page[data-v-0986ab61] .el-card__body{display:flex;flex-direction:column;padding:12px 0 0;flex:1;min-height:0}.data-table-page[data-v-0986ab61] .el-table__inner-wrapper:before{display:none}.data-table-page[data-v-0986ab61] .el-table td.el-table__cell{padding:18px 0!important}.data-table-page[data-v-0986ab61] .el-table__cell .cell{line-height:22px;white-space:nowrap}.data-table-page[data-v-0986ab61] .el-table .action-buttons{display:flex;align-items:center;justify-content:center;flex-wrap:nowrap;gap:8px}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
@charset "UTF-8";.data-table-page[data-v-db8d3b6e]{width:100%;height:100%;box-sizing:border-box;display:flex;flex-direction:column;min-height:0}.data-table-page .table-card[data-v-db8d3b6e]{margin-bottom:0;width:100%;flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.data-table-page .table-toolbar[data-v-db8d3b6e]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;padding:0 12px;flex-wrap:wrap;gap:12px}.data-table-page .table-title[data-v-db8d3b6e]{font-size:18px;font-weight:600;color:#1e293b;margin:0;letter-spacing:-.3px}.data-table-page .toolbar-actions[data-v-db8d3b6e]{display:flex;align-items:center;gap:12px}.data-table-page .search-input[data-v-db8d3b6e]{width:280px}.data-table-page .search-input[data-v-db8d3b6e] .el-input__wrapper{border-radius:8px;box-shadow:0 0 0 1px #e2e8f0 inset;transition:all .2s}.data-table-page .search-input[data-v-db8d3b6e] .el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--primary-color) inset}.data-table-page .batch-bar[data-v-db8d3b6e]{display:flex;align-items:center;justify-content:space-between;background:#4f46e50d;border:1px solid rgba(79,70,229,.1);border-radius:8px;padding:10px 16px;margin:0 24px 16px}.data-table-page .batch-bar .batch-info[data-v-db8d3b6e]{font-size:13px;color:var(--primary-color)}.data-table-page .batch-bar .batch-info strong[data-v-db8d3b6e]{font-weight:600;margin:0 4px}.data-table-page .table-body[data-v-db8d3b6e]{flex:1;min-height:0}.data-table-page .table-pagination[data-v-db8d3b6e]{display:flex;justify-content:flex-end;align-items:center;padding:16px 24px;border-top:1px solid #f1f5f9}.data-table-page .table-pagination[data-v-db8d3b6e] .el-pagination{margin-top:0}.data-table-page[data-v-db8d3b6e] .el-card__body{display:flex;flex-direction:column;padding:12px 0 0;flex:1;min-height:0}.data-table-page[data-v-db8d3b6e] .el-table__inner-wrapper:before{display:none}.data-table-page[data-v-db8d3b6e] .el-table td.el-table__cell{padding:18px 0!important}.data-table-page[data-v-db8d3b6e] .el-table__cell .cell{line-height:22px;white-space:nowrap}.data-table-page[data-v-db8d3b6e] .el-table .action-buttons{display:flex;align-items:center;justify-content:center;flex-wrap:nowrap;gap:8px}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
import{E as M}from"./index-Bl2Fsjov.js";import{E as Z}from"./index-COtHB4lx.js";import{E as A}from"./el-card-DPafZG_Z.js";import{E as G}from"./el-pagination-BezdVZVw.js";import{E as H,a as J}from"./el-table-DaKcBqZN.js";import{v as O}from"./directive-BNrYmpdY.js";import{E as b}from"./index-ctkuqiuE.js";import{d as Q,y as f,D as _,c as D,s as p,w as r,o as u,q as s,h as w,e as g,g as v,x as y,aa as k,Z as W,K as X,j as $,v as Y}from"./index-DS73WiJW.js";import"./el-scrollbar-DErsaip4.js";import"./el-popper-DwsDzc1A.js";/* empty css */import"./el-select-CHKMfjyJ.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-checkbox-CphtzscD.js";import{_ as ee}from"./_plugin-vue_export-helper-DlAUqK2U.js";const te={class:"data-table-page"},ae={class:"table-toolbar"},le={class:"table-title"},oe={class:"toolbar-actions"},se={key:0,class:"batch-bar"},ne={class:"batch-info"},re={class:"table-body"},ie={class:"table-pagination"},ce=Q({__name:"DataTablePage",props:{title:{},data:{},loading:{type:Boolean,default:!1},searchable:{type:Boolean,default:!1},searchFields:{},multiSelect:{type:Boolean,default:!1},createText:{},createTo:{},deleteFn:{},rowKey:{default:"id"},emptyText:{default:"暂无数据"},pageSize:{default:10},pageSizes:{default:()=>[10,20,50,100]}},emits:["create","refresh"],setup(l,{expose:F,emit:V}){const a=l,x=V,P=Y(),S=f(),o=f(new Set),d=f(""),m=f(1),h=f(a.pageSize);function z(t){return t[a.rowKey]??t.name??t.id}const T=$(()=>{var e;if(!d.value.trim()||!((e=a.searchFields)!=null&&e.length))return a.data;const t=d.value.toLowerCase().trim();return a.data.filter(i=>a.searchFields.some(n=>String(i[n]??"").toLowerCase().includes(t)))}),I=$(()=>{const t=(m.value-1)*h.value;return T.value.slice(t,t+h.value)});function K(t){o.value=new Set(t.map(z))}async function E(t,e="确定要删除这条记录吗?"){if(a.deleteFn)try{await b.confirm(e,"确认删除",{type:"warning",confirmButtonText:"确定",cancelButtonText:"取消"}),await a.deleteFn(t),x("refresh")}catch{}}async function N(){if(!(o.value.size===0||!a.deleteFn))try{await b.confirm(`确定要删除选中的 ${o.value.size} 条记录吗?`,"批量删除",{type:"warning"});const t=a.data.filter(n=>o.value.has(z(n)));let e=0,i=0;for(const n of t)try{await a.deleteFn(n),e++}catch{i++}o.value.clear(),x("refresh"),i===0?b.alert(`成功删除 ${e} 条记录`,"成功",{type:"success"}):b.alert(`成功 ${e} 条,失败 ${i} 条`,"部分失败",{type:"warning"})}catch{}}function C(){var t;o.value.clear(),(t=S.value)==null||t.clearSelection()}function L(){a.createTo?P.push(a.createTo):x("create")}return _(()=>a.data,()=>{var t;o.value.clear(),m.value=1,(t=S.value)==null||t.clearSelection()}),_(()=>d.value,()=>{m.value=1}),F({handleDelete:E,clearSelection:C}),(t,e)=>{const i=M,n=Z,B=H,R=J,U=G,j=A,q=O;return u(),D("div",te,[p(j,{shadow:"never",class:"table-card"},{default:r(()=>[s("div",ae,[w(t.$slots,"title",{},()=>[s("h2",le,k(l.title),1)],!0),s("div",oe,[l.searchable?(u(),g(i,{key:0,modelValue:d.value,"onUpdate:modelValue":e[0]||(e[0]=c=>d.value=c),placeholder:`搜索${l.title}...`,clearable:"",class:"search-input"},{prefix:r(()=>[...e[3]||(e[3]=[s("i",{class:"fa fa-search"},null,-1)])]),_:1},8,["modelValue","placeholder"])):v("",!0),l.createText?(u(),g(n,{key:1,type:"primary",onClick:L},{default:r(()=>[e[4]||(e[4]=s("i",{class:"fa fa-plus",style:{"margin-right":"4px"}},null,-1)),y(" "+k(l.createText),1)]),_:1})):v("",!0),w(t.$slots,"toolbar-extra",{},void 0,!0)])]),p(W,{name:"el-zoom-in-top"},{default:r(()=>[l.multiSelect&&o.value.size>0?(u(),D("div",se,[s("span",ne,[e[6]||(e[6]=y(" 已选择 ",-1)),s("strong",null,k(o.value.size),1),e[7]||(e[7]=y(" 项 ",-1)),p(n,{link:"",type:"primary",onClick:C},{default:r(()=>[...e[5]||(e[5]=[y("取消选择",-1)])]),_:1})]),p(n,{type:"danger",size:"small",onClick:N},{default:r(()=>[e[8]||(e[8]=s("i",{class:"fa fa-trash",style:{"margin-right":"4px"}},null,-1)),y(" 批量删除 ("+k(o.value.size)+") ",1)]),_:1})])):v("",!0)]),_:1}),s("div",re,[X((u(),g(R,{ref_key:"tableRef",ref:S,data:I.value,"row-key":l.rowKey,height:"100%",style:{width:"100%"},"empty-text":l.emptyText,onSelectionChange:K},{default:r(()=>[l.multiSelect?(u(),g(B,{key:0,type:"selection",width:"50",align:"center","reserve-selection":"",fixed:"left"})):v("",!0),w(t.$slots,"columns",{},void 0,!0),t.$slots.actions?(u(),g(B,{key:1,label:"操作",align:"center",width:"220",fixed:"right"},{default:r(({row:c})=>[w(t.$slots,"actions",{row:c,handleDelete:E},void 0,!0)]),_:3})):v("",!0)]),_:3},8,["data","row-key","empty-text"])),[[q,l.loading]])]),s("div",ie,[p(U,{"current-page":m.value,"onUpdate:currentPage":e[1]||(e[1]=c=>m.value=c),"page-size":h.value,"onUpdate:pageSize":e[2]||(e[2]=c=>h.value=c),background:"",layout:"total, sizes, prev, pager, next, jumper","page-sizes":l.pageSizes,total:T.value.length},null,8,["current-page","page-size","page-sizes","total"])])]),_:3})])}}}),Te=ee(ce,[["__scopeId","data-v-0986ab61"]]);export{Te as D};
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
import{E as z}from"./index-COtHB4lx.js";import{E}from"./index-DvecKFrV.js";import{E as T}from"./el-table-DaKcBqZN.js";import{d as L,G as A,e as k,w as e,y as f,j as V,o as y,q as r,s as l,x as s,g as $,aa as p,f as b,aY as B,aZ as N,n as w,v as P,A as S}from"./index-DS73WiJW.js";/* empty css */import"./el-checkbox-CphtzscD.js";import{D as M}from"./DataTablePage-wSeKJFdb.js";import{g as R,d as G,a as I}from"./dataset-DL0YrzrD.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-DErsaip4.js";import"./index-CP7PpuwU.js";import"./el-popper-DwsDzc1A.js";import"./index-oP6kINt_.js";import"./_baseClone--zSegXWR.js";import"./_baseIteratee-BtAnsxgT.js";import"./castArray-PcoOufI5.js";import"./debounce-BVX_QT7H.js";import"./toNumber-B0hxpsP6.js";import"./raf-G_xTfKfR.js";import"./omit-BHigcQFy.js";import"./index-Bl2Fsjov.js";import"./index-Cz3aNuv2.js";import"./el-card-DPafZG_Z.js";import"./el-pagination-BezdVZVw.js";import"./el-select-CHKMfjyJ.js";import"./vnode-HiBZolW-.js";import"./index-D-GNa2lp.js";import"./scroll-qUQMUB2J.js";import"./clamp-Cyl0wpX2.js";import"./directive-BNrYmpdY.js";import"./index-ctkuqiuE.js";import"./validator-B_WzUu_x.js";import"./index-CdYGcoRT.js";import"./index-TDTe-u1-.js";import"./el-tooltip-l0sNRNKZ.js";const j={class:"capsule-tabs"},q={class:"action-buttons"},O=L({__name:"DatasetListView",setup(U){const C=P(),c=f(!1),m=f([]),n=f("upload"),D=V(()=>n.value==="task"?m.value.filter(i=>i.source==="task"):m.value.filter(i=>i.source!=="task"));async function u(){c.value=!0;try{m.value=await R()||[]}catch{}finally{c.value=!1}}async function _(i){await G(i.id),m.value=m.value.filter(a=>a.id!==i.id),await u(),S.success("删除成功")}function h(i){C.push(`/dataset/${i.id}/preview`)}function x(i){window.open(I(i.id),"_blank")}return A(u),(i,a)=>{const o=T,v=E,d=z;return y(),k(M,{title:"数据集管理",data:D.value,loading:c.value,searchable:"","search-fields":["name","description"],"create-text":n.value==="upload"?"上传数据集":"","create-to":"/dataset/create","delete-fn":_,"row-key":"id",onRefresh:u},{title:e(()=>[r("div",j,[r("button",{class:w(["capsule-tab-item",{active:n.value==="upload"}]),onClick:a[0]||(a[0]=t=>n.value="upload")}," 上传任务 ",2),r("button",{class:w(["capsule-tab-item",{active:n.value==="task"}]),onClick:a[1]||(a[1]=t=>n.value="task")}," 数据任务 ",2)])]),columns:e(()=>[n.value==="task"?(y(),k(o,{key:0,label:"任务ID",prop:"task_id",align:"center",width:"100"})):$("",!0),l(o,{label:"数据集名称",prop:"name",align:"center"}),l(o,{label:"数据类型",align:"center",width:"110"},{default:e(({row:t})=>[l(v,{type:"primary",size:"small"},{default:e(()=>[s(p(b(B)[String(t.type).toLowerCase()]||t.type||"-"),1)]),_:2},1024)]),_:1}),l(o,{label:"存储位置",align:"center",width:"110"},{default:e(({row:t})=>[l(v,{type:"success",size:"small"},{default:e(()=>[s(p(b(N)[t.storage_type]||t.storage_type||"-"),1)]),_:2},1024)]),_:1}),l(o,{label:"大小",align:"center",width:"100"},{default:e(({row:t})=>[s(p(t.size&&t.size!=="0 B"&&t.size!=="0"?t.size:"-"),1)]),_:1}),l(o,{label:"数据条数",align:"center",width:"100"},{default:e(({row:t})=>[s(p(t.count||0),1)]),_:1}),l(o,{label:"描述",align:"center","show-overflow-tooltip":""},{default:e(({row:t})=>[s(p(t.description||"-"),1)]),_:1}),l(o,{label:"创建时间",align:"center",width:"180"},{default:e(({row:t})=>[s(p(t.create_time?new Date(t.create_time).toLocaleString("zh-CN"):"-"),1)]),_:1})]),actions:e(({row:t})=>[r("div",q,[l(d,{type:"primary",link:"",size:"small",onClick:g=>h(t)},{default:e(()=>[...a[2]||(a[2]=[r("i",{class:"fa fa-eye",style:{"margin-right":"4px"}},null,-1),s("详情 ",-1)])]),_:1},8,["onClick"]),l(d,{type:"success",link:"",size:"small",onClick:g=>x(t)},{default:e(()=>[...a[3]||(a[3]=[r("i",{class:"fa fa-download",style:{"margin-right":"4px"}},null,-1),s("下载 ",-1)])]),_:1},8,["onClick"]),l(d,{type:"danger",link:"",size:"small",onClick:g=>_(t)},{default:e(()=>[...a[4]||(a[4]=[r("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),s("删除 ",-1)])]),_:1},8,["onClick"])])]),_:1},8,["data","loading","create-text"])}}}),Et=Y(O,[["__scopeId","data-v-9179f18b"]]);export{Et as default};
|
|
||||||
@@ -1 +1 @@
|
|||||||
import{E as z}from"./index-6OTFNiIi.js";import{E}from"./el-tag-C4SnL2z_.js";import{E as T}from"./el-table-CzpPw-qp.js";import{d as L,G as A,e as k,w as e,y as f,j as V,o as y,q as r,s as l,x as s,g as $,aa as p,f as b,aY as B,aZ as N,n as w,v as P,A as S}from"./index-CD29OCdJ.js";import"./el-checkbox-Pnt9POcY.js";import{D as M}from"./DataTablePage-DQMBzHmK.js";import{g as R,d as G,a as I}from"./dataset-C17jngxQ.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-YCRG1835.js";import"./index-DpY84JwG.js";import"./el-popper-DIiB8Y-M.js";import"./index-BpugJXyE.js";import"./_baseClone-Blem5BWg.js";import"./_baseIteratee-CuPmYyG4.js";import"./castArray-BEiueV6y.js";import"./debounce-BCyqG5kC.js";import"./toNumber-B6P5MqPp.js";import"./raf-DGtHIxe2.js";import"./omit-9H73Nvwk.js";import"./index-D0wqu88j.js";import"./index-C8FAS7l2.js";import"./el-card-BvbOkvag.js";import"./el-pagination-B1UdckVp.js";import"./el-select-dn4MhMwo.js";import"./vnode-_QM9LlTR.js";import"./index-D1b786GX.js";import"./scroll-D-TPweuo.js";import"./clamp-BfrLWns4.js";import"./directive-DsbMrhCX.js";import"./index-BpXxrg-6.js";import"./validator-BQ0LVwAS.js";import"./index-D9N-GMuA.js";import"./index-roSlfP_P.js";import"./el-tooltip-l0sNRNKZ.js";const j={class:"capsule-tabs"},q={class:"action-buttons"},O=L({__name:"DatasetListView",setup(U){const C=P(),d=f(!1),c=f([]),n=f("upload"),D=V(()=>n.value==="task"?c.value.filter(i=>i.source==="task"):c.value.filter(i=>i.source!=="task"));async function m(){d.value=!0;try{c.value=await R()||[]}catch{}finally{d.value=!1}}async function _(i){await G(i.id),c.value=c.value.filter(a=>a.id!==i.id),await m(),S.success("删除成功")}function h(i){C.push(`/dataset/${i.id}/preview`)}function x(i){window.open(I(i.id),"_blank")}return A(m),(i,a)=>{const o=T,v=E,u=z;return y(),k(M,{title:"数据集管理",data:D.value,loading:d.value,searchable:"","search-fields":["name","description"],"create-text":n.value==="upload"?"上传数据集":"","create-to":"/dataset/create","delete-fn":_,"row-key":"id",onRefresh:m},{title:e(()=>[r("div",j,[r("button",{class:w(["capsule-tab-item",{active:n.value==="upload"}]),onClick:a[0]||(a[0]=t=>n.value="upload")}," 上传任务 ",2),r("button",{class:w(["capsule-tab-item",{active:n.value==="task"}]),onClick:a[1]||(a[1]=t=>n.value="task")}," 数据任务 ",2)])]),columns:e(()=>[n.value==="task"?(y(),k(o,{key:0,label:"任务ID",prop:"task_id",align:"center",width:"100"})):$("",!0),l(o,{label:"数据集名称",prop:"name",align:"center"}),l(o,{label:"数据类型",align:"center",width:"110"},{default:e(({row:t})=>[l(v,{type:"primary",size:"small"},{default:e(()=>[s(p(b(B)[String(t.type).toLowerCase()]||t.type||"-"),1)]),_:2},1024)]),_:1}),l(o,{label:"存储位置",align:"center",width:"110"},{default:e(({row:t})=>[l(v,{type:"success",size:"small"},{default:e(()=>[s(p(b(N)[t.storage_type]||t.storage_type||"-"),1)]),_:2},1024)]),_:1}),l(o,{label:"大小",align:"center",width:"100"},{default:e(({row:t})=>[s(p(t.size&&t.size!=="0 B"&&t.size!=="0"?t.size:"-"),1)]),_:1}),l(o,{label:"数据条数",align:"center",width:"100"},{default:e(({row:t})=>[s(p(t.count||0),1)]),_:1}),l(o,{label:"描述",align:"center","show-overflow-tooltip":""},{default:e(({row:t})=>[s(p(t.description||"-"),1)]),_:1}),l(o,{label:"创建时间",align:"center",width:"180"},{default:e(({row:t})=>[s(p(t.create_time?new Date(t.create_time).toLocaleString("zh-CN"):"-"),1)]),_:1})]),actions:e(({row:t})=>[r("div",q,[l(u,{type:"primary",link:"",size:"small",onClick:g=>h(t)},{default:e(()=>[...a[2]||(a[2]=[r("i",{class:"fa fa-eye",style:{"margin-right":"4px"}},null,-1),s("详情 ",-1)])]),_:1},8,["onClick"]),l(u,{type:"success",link:"",size:"small",onClick:g=>x(t)},{default:e(()=>[...a[3]||(a[3]=[r("i",{class:"fa fa-download",style:{"margin-right":"4px"}},null,-1),s("下载 ",-1)])]),_:1},8,["onClick"]),l(u,{type:"danger",link:"",size:"small",onClick:g=>_(t)},{default:e(()=>[...a[4]||(a[4]=[r("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),s("删除 ",-1)])]),_:1},8,["onClick"])])]),_:1},8,["data","loading","create-text"])}}}),zt=Y(O,[["__scopeId","data-v-e406ac6d"]]);export{zt as default};
|
import{E as z}from"./index-BHESvfAo.js";import{E}from"./el-tag-ulIZLhPi.js";import{E as T}from"./el-table-BpaXJdL-.js";import{d as L,G as A,e as k,w as e,y as f,j as V,o as y,q as r,s as l,x as s,g as $,aa as p,f as b,aY as B,aZ as N,n as w,v as P,A as S}from"./index-z4H3KYDz.js";import"./el-checkbox-CODdaR7b.js";import{D as M}from"./DataTablePage-DLeZhncr.js";import{g as R,d as G,a as I}from"./dataset-C7kOqPaF.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-Cs4RtPFn.js";import"./index-CeeJbXQu.js";import"./el-popper-BJIpIz7j.js";import"./index-DJMIMot_.js";import"./_baseClone-DT8DugHo.js";import"./_baseIteratee-BSbGVKbQ.js";import"./castArray-DuG_gufG.js";import"./debounce-DozRow7U.js";import"./toNumber-DmGFONFK.js";import"./raf-CGFVbd0C.js";import"./omit-8mGWGArl.js";import"./index-OPiDM056.js";import"./index-C6iZvNqO.js";import"./el-card-DLSyQgTR.js";import"./el-pagination-P9pb1Tpb.js";import"./el-select-OcCw1rK5.js";import"./vnode-Cz-7S2If.js";import"./index-BANvEWbb.js";import"./scroll-CJzUJVH-.js";import"./clamp-Cqzl_HF6.js";import"./directive-BjB4tpmk.js";import"./index-C_KL97zv.js";import"./validator-Cv5bUbtV.js";import"./index-3Nih6or2.js";import"./index-5agRb3jZ.js";import"./el-tooltip-l0sNRNKZ.js";const j={class:"capsule-tabs"},q={class:"action-buttons"},O=L({__name:"DatasetListView",setup(U){const C=P(),m=f(!1),c=f([]),n=f("upload"),D=V(()=>n.value==="task"?c.value.filter(i=>i.source==="task"):c.value.filter(i=>i.source!=="task"));async function u(){m.value=!0;try{c.value=await R()||[]}catch{}finally{m.value=!1}}async function _(i){await G(i.id),c.value=c.value.filter(a=>a.id!==i.id),await u(),S.success("删除成功")}function h(i){C.push(`/dataset/${i.id}/preview`)}function x(i){window.open(I(i.id),"_blank")}return A(u),(i,a)=>{const o=T,v=E,d=z;return y(),k(M,{title:"数据集管理",data:D.value,loading:m.value,searchable:"","search-fields":["name","description"],"create-text":n.value==="upload"?"上传数据集":"","create-to":"/dataset/create","delete-fn":_,"row-key":"id",onRefresh:u},{title:e(()=>[r("div",j,[r("button",{class:w(["capsule-tab-item",{active:n.value==="upload"}]),onClick:a[0]||(a[0]=t=>n.value="upload")}," 上传任务 ",2),r("button",{class:w(["capsule-tab-item",{active:n.value==="task"}]),onClick:a[1]||(a[1]=t=>n.value="task")}," 数据任务 ",2)])]),columns:e(()=>[n.value==="task"?(y(),k(o,{key:0,label:"任务ID",prop:"task_id",align:"center",width:"100"})):$("",!0),l(o,{label:"数据集名称",prop:"name",align:"center"}),l(o,{label:"数据类型",align:"center",width:"110"},{default:e(({row:t})=>[l(v,{type:"primary",size:"small"},{default:e(()=>[s(p(b(B)[String(t.type).toLowerCase()]||t.type||"-"),1)]),_:2},1024)]),_:1}),l(o,{label:"存储位置",align:"center",width:"110"},{default:e(({row:t})=>[l(v,{type:"success",size:"small"},{default:e(()=>[s(p(b(N)[t.storage_type]||t.storage_type||"-"),1)]),_:2},1024)]),_:1}),l(o,{label:"大小",align:"center",width:"100"},{default:e(({row:t})=>[s(p(t.size&&t.size!=="0 B"&&t.size!=="0"?t.size:"-"),1)]),_:1}),l(o,{label:"数据条数",align:"center",width:"100"},{default:e(({row:t})=>[s(p(t.count||0),1)]),_:1}),l(o,{label:"描述",align:"center","show-overflow-tooltip":""},{default:e(({row:t})=>[s(p(t.description||"-"),1)]),_:1}),l(o,{label:"创建时间",align:"center",width:"180"},{default:e(({row:t})=>[s(p(t.create_time?new Date(t.create_time).toLocaleString("zh-CN"):"-"),1)]),_:1})]),actions:e(({row:t})=>[r("div",q,[l(d,{type:"primary",link:"",size:"small",onClick:g=>h(t)},{default:e(()=>[...a[2]||(a[2]=[r("i",{class:"fa fa-eye",style:{"margin-right":"4px"}},null,-1),s("详情 ",-1)])]),_:1},8,["onClick"]),l(d,{type:"success",link:"",size:"small",onClick:g=>x(t)},{default:e(()=>[...a[3]||(a[3]=[r("i",{class:"fa fa-download",style:{"margin-right":"4px"}},null,-1),s("下载 ",-1)])]),_:1},8,["onClick"]),l(d,{type:"danger",link:"",size:"small",onClick:g=>_(t)},{default:e(()=>[...a[4]||(a[4]=[r("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),s("删除 ",-1)])]),_:1},8,["onClick"])])]),_:1},8,["data","loading","create-text"])}}}),zt=Y(O,[["__scopeId","data-v-9179f18b"]]);export{zt as default};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
import{a as k,E as M}from"./el-form-item--AdlsBF7.js";import{E as q}from"./index-D0wqu88j.js";import{E as R}from"./index-6OTFNiIi.js";import{d as S,G as B,e as F,w as i,j as y,y as _,z as I,o as O,s as r,f as m,aB as P,x as h,aa as j,A as x,v as A,ac as L}from"./index-CD29OCdJ.js";import{P as N}from"./PageCard-Byh3epid.js";import{E as T,D as U}from"./DimensionFormFields-BI47UlOW.js";import{b as z,u as G,c as H}from"./eval-DOgh3EN6.js";import{g as J}from"./model-e1J4FzWC.js";import"./castArray-BEiueV6y.js";import"./_baseClone-Blem5BWg.js";import"./raf-DGtHIxe2.js";import"./index-C8FAS7l2.js";import"./index-DpY84JwG.js";import"./el-card-BvbOkvag.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-select-dn4MhMwo.js";import"./index-BpugJXyE.js";import"./vnode-_QM9LlTR.js";import"./el-popper-DIiB8Y-M.js";import"./el-scrollbar-YCRG1835.js";import"./index-D1b786GX.js";import"./el-tag-C4SnL2z_.js";import"./scroll-D-TPweuo.js";import"./clamp-BfrLWns4.js";import"./toNumber-B6P5MqPp.js";import"./_baseIteratee-CuPmYyG4.js";import"./el-checkbox-Pnt9POcY.js";import"./omit-9H73Nvwk.js";import"./el-radio-group-11DJtD5j.js";import"./el-input-number-CUR6qfYr.js";import"./index-sBiRi5wE.js";import"./el-slider-D0ESR8FK.js";import"./debounce-BCyqG5kC.js";import"./el-switch-4ONH-tca.js";import"./validator-BQ0LVwAS.js";import"./el-tooltip-l0sNRNKZ.js";/* empty css */const Se=S({__name:"DimensionCreateView",setup(K){const c=L(),f=A(),n=_(),p=_(!1),u=y(()=>!!c.params.id),s=y(()=>c.params.id),d=_([]);let e=I({name:"",type:"",description:"",eval_model:"",eval_method:"",eval_prompt:"",is_active:!0,is_default:!1,bleu_n:1,output_precision:3,score_min:0,score_max:5,pass_threshold:3});const b={name:[{required:!0,message:"请输入维度名称",trigger:"blur"},{max:50,message:"不超过 50 字符",trigger:"blur"}],type:[{required:!0,message:"请选择指标类型",trigger:"change"}],eval_model:[{required:!0,message:"请选择大模型",trigger:"change"}],eval_method:[{required:!0,message:"请选择评估方式",trigger:"change"}],eval_prompt:[{required:!0,message:"请填写评估 Prompt",trigger:"blur"}]};async function w(){var o,t;if(s.value)try{const a=await z(s.value);Object.assign(e,{name:a.name||"",type:a.type||"",description:a.description||"",eval_model:a.eval_model||"",eval_method:a.eval_method||(a.type?(t=(o=T[a.type])==null?void 0:o[0])==null?void 0:t.value:""),eval_prompt:a.eval_prompt||"",is_active:a.is_active!==!1,is_default:!!a.is_default,bleu_n:a.bleu_n??1,output_precision:a.output_precision??3,score_min:a.score_min??0,score_max:a.score_max??5,pass_threshold:a.pass_threshold??3})}catch{}}async function E(){try{const o=await J()||[];d.value=o.filter(t=>t.purpose==="evaluation")}catch{d.value=[]}}async function D(){n.value&&await n.value.validate(async o=>{if(o){p.value=!0;try{const t={name:e.name,type:e.type,description:e.description,eval_model:e.type==="text_similarity"?null:e.eval_model,eval_method:e.eval_method,eval_prompt:e.type==="text_similarity"?null:e.eval_prompt,is_active:e.is_active,is_default:e.is_default,create_time:new Date().toISOString()};e.type==="text_similarity"&&(t.bleu_n=e.bleu_n,t.output_precision=e.output_precision),e.type==="metric"&&(t.score_min=e.score_min,t.score_max=e.score_max,t.pass_threshold=e.pass_threshold),u.value&&s.value?(await G(s.value,t),x.success("更新成功")):(await H(t),x.success("创建成功")),f.push("/model-eval")}catch{}finally{p.value=!1}}})}function V(){f.back()}return B(()=>{E(),w()}),(o,t)=>{const a=q,v=k,g=R,C=M;return O(),F(N,{title:u.value?"编辑评测维度":"添加评测维度"},{default:i(()=>[r(C,{ref_key:"formRef",ref:n,model:m(e),rules:b,"label-width":"130px",style:{"max-width":"760px"}},{default:i(()=>[r(v,{label:"维度名称",prop:"name"},{default:i(()=>[r(a,{modelValue:m(e).name,"onUpdate:modelValue":t[0]||(t[0]=l=>m(e).name=l),placeholder:"请输入维度名称",maxlength:"50","show-word-limit":""},null,8,["modelValue"])]),_:1}),r(U,{modelValue:m(e),"onUpdate:modelValue":t[1]||(t[1]=l=>P(e)?e.value=l:e=l),"eval-models":d.value},null,8,["modelValue","eval-models"]),r(v,null,{default:i(()=>[r(g,{type:"primary",loading:p.value,onClick:D},{default:i(()=>[h(j(u.value?"保存":"创建"),1)]),_:1},8,["loading"]),r(g,{onClick:V},{default:i(()=>[...t[2]||(t[2]=[h("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])}}});export{Se as default};
|
import{a as k,E as M}from"./el-form-item-WQOcwC6B.js";import{E as q}from"./index-OPiDM056.js";import{E as R}from"./index-BHESvfAo.js";import{d as S,G as B,e as F,w as i,j as y,y as _,z as I,o as O,s as r,f as m,aB as P,x as h,aa as j,A as x,v as A,ac as L}from"./index-z4H3KYDz.js";import{P as N}from"./PageCard-BWIJ3AEp.js";import{E as T,D as U}from"./DimensionFormFields-GxTnqLmu.js";import{b as z,u as G,c as H}from"./eval-CrYWzBLh.js";import{g as J}from"./model-CIcWT-2e.js";import"./castArray-DuG_gufG.js";import"./_baseClone-DT8DugHo.js";import"./raf-CGFVbd0C.js";import"./index-C6iZvNqO.js";import"./index-CeeJbXQu.js";import"./el-card-DLSyQgTR.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-select-OcCw1rK5.js";import"./index-DJMIMot_.js";import"./vnode-Cz-7S2If.js";import"./el-popper-BJIpIz7j.js";import"./el-scrollbar-Cs4RtPFn.js";import"./index-BANvEWbb.js";import"./el-tag-ulIZLhPi.js";import"./scroll-CJzUJVH-.js";import"./clamp-Cqzl_HF6.js";import"./toNumber-DmGFONFK.js";import"./_baseIteratee-BSbGVKbQ.js";import"./el-checkbox-CODdaR7b.js";import"./omit-8mGWGArl.js";import"./el-radio-group-C0gAp3OV.js";import"./el-input-number-bsSWsFMW.js";import"./index-DIW0xkWn.js";import"./el-slider-OsPL6Uf1.js";import"./debounce-DozRow7U.js";import"./el-switch-C93YSGdh.js";import"./validator-Cv5bUbtV.js";import"./el-tooltip-l0sNRNKZ.js";/* empty css */const Se=S({__name:"DimensionCreateView",setup(K){const c=L(),f=A(),n=_(),p=_(!1),u=y(()=>!!c.params.id),s=y(()=>c.params.id),d=_([]);let e=I({name:"",type:"",description:"",eval_model:"",eval_method:"",eval_prompt:"",is_active:!0,is_default:!1,bleu_n:1,output_precision:3,score_min:0,score_max:5,pass_threshold:3});const b={name:[{required:!0,message:"请输入维度名称",trigger:"blur"},{max:50,message:"不超过 50 字符",trigger:"blur"}],type:[{required:!0,message:"请选择指标类型",trigger:"change"}],eval_model:[{required:!0,message:"请选择大模型",trigger:"change"}],eval_method:[{required:!0,message:"请选择评估方式",trigger:"change"}],eval_prompt:[{required:!0,message:"请填写评估 Prompt",trigger:"blur"}]};async function w(){var o,t;if(s.value)try{const a=await z(s.value);Object.assign(e,{name:a.name||"",type:a.type||"",description:a.description||"",eval_model:a.eval_model||"",eval_method:a.eval_method||(a.type?(t=(o=T[a.type])==null?void 0:o[0])==null?void 0:t.value:""),eval_prompt:a.eval_prompt||"",is_active:a.is_active!==!1,is_default:!!a.is_default,bleu_n:a.bleu_n??1,output_precision:a.output_precision??3,score_min:a.score_min??0,score_max:a.score_max??5,pass_threshold:a.pass_threshold??3})}catch{}}async function E(){try{const o=await J()||[];d.value=o.filter(t=>t.purpose==="evaluation")}catch{d.value=[]}}async function D(){n.value&&await n.value.validate(async o=>{if(o){p.value=!0;try{const t={name:e.name,type:e.type,description:e.description,eval_model:e.type==="text_similarity"?null:e.eval_model,eval_method:e.eval_method,eval_prompt:e.type==="text_similarity"?null:e.eval_prompt,is_active:e.is_active,is_default:e.is_default,create_time:new Date().toISOString()};e.type==="text_similarity"&&(t.bleu_n=e.bleu_n,t.output_precision=e.output_precision),e.type==="metric"&&(t.score_min=e.score_min,t.score_max=e.score_max,t.pass_threshold=e.pass_threshold),u.value&&s.value?(await G(s.value,t),x.success("更新成功")):(await H(t),x.success("创建成功")),f.push("/model-eval")}catch{}finally{p.value=!1}}})}function V(){f.back()}return B(()=>{E(),w()}),(o,t)=>{const a=q,v=k,g=R,C=M;return O(),F(N,{title:u.value?"编辑评测维度":"添加评测维度"},{default:i(()=>[r(C,{ref_key:"formRef",ref:n,model:m(e),rules:b,"label-width":"130px",style:{"max-width":"760px"}},{default:i(()=>[r(v,{label:"维度名称",prop:"name"},{default:i(()=>[r(a,{modelValue:m(e).name,"onUpdate:modelValue":t[0]||(t[0]=l=>m(e).name=l),placeholder:"请输入维度名称",maxlength:"50","show-word-limit":""},null,8,["modelValue"])]),_:1}),r(U,{modelValue:m(e),"onUpdate:modelValue":t[1]||(t[1]=l=>P(e)?e.value=l:e=l),"eval-models":d.value},null,8,["modelValue","eval-models"]),r(v,null,{default:i(()=>[r(g,{type:"primary",loading:p.value,onClick:D},{default:i(()=>[h(j(u.value?"保存":"创建"),1)]),_:1},8,["loading"]),r(g,{onClick:V},{default:i(()=>[...t[2]||(t[2]=[h("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])}}});export{Se as default};
|
||||||
@@ -1 +0,0 @@
|
|||||||
import{a as k,E as M}from"./el-form-item-DFlzM9g_.js";import{E as q}from"./index-Bl2Fsjov.js";import{E as R}from"./index-COtHB4lx.js";import{d as S,G as B,e as F,w as i,j as y,y as _,z as I,o as O,s as r,f as m,aB as P,x as h,aa as j,A as x,v as A,ac as L}from"./index-DS73WiJW.js";import{P as N}from"./PageCard-CXygDeSp.js";import{E as T,D as U}from"./DimensionFormFields-CFzZb6_I.js";import{b as z,u as G,c as H}from"./eval-XviJ2Czw.js";import{g as J}from"./model-BADKeN37.js";import"./castArray-PcoOufI5.js";import"./_baseClone--zSegXWR.js";import"./raf-G_xTfKfR.js";import"./index-Cz3aNuv2.js";import"./index-CP7PpuwU.js";import"./el-card-DPafZG_Z.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-select-CHKMfjyJ.js";import"./index-oP6kINt_.js";import"./vnode-HiBZolW-.js";import"./el-popper-DwsDzc1A.js";import"./el-scrollbar-DErsaip4.js";import"./index-D-GNa2lp.js";import"./index-DvecKFrV.js";import"./scroll-qUQMUB2J.js";import"./clamp-Cyl0wpX2.js";import"./toNumber-B0hxpsP6.js";import"./_baseIteratee-BtAnsxgT.js";import"./el-checkbox-CphtzscD.js";import"./omit-BHigcQFy.js";import"./el-radio-group-BiLi-iPp.js";import"./el-input-number-mWm5mZ4P.js";import"./index-CAsu3xTW.js";import"./el-slider-CW0ssSmv.js";import"./debounce-BVX_QT7H.js";import"./el-switch-DgzwIqYS.js";import"./validator-B_WzUu_x.js";import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css */const Be=S({__name:"DimensionCreateView",setup(K){const c=L(),f=A(),n=_(),p=_(!1),u=y(()=>!!c.params.id),s=y(()=>c.params.id),d=_([]);let e=I({name:"",type:"",description:"",eval_model:"",eval_method:"",eval_prompt:"",is_active:!0,is_default:!1,bleu_n:1,output_precision:3,score_min:0,score_max:5,pass_threshold:3});const b={name:[{required:!0,message:"请输入维度名称",trigger:"blur"},{max:50,message:"不超过 50 字符",trigger:"blur"}],type:[{required:!0,message:"请选择指标类型",trigger:"change"}],eval_model:[{required:!0,message:"请选择大模型",trigger:"change"}],eval_method:[{required:!0,message:"请选择评估方式",trigger:"change"}],eval_prompt:[{required:!0,message:"请填写评估 Prompt",trigger:"blur"}]};async function w(){var o,t;if(s.value)try{const a=await z(s.value);Object.assign(e,{name:a.name||"",type:a.type||"",description:a.description||"",eval_model:a.eval_model||"",eval_method:a.eval_method||(a.type?(t=(o=T[a.type])==null?void 0:o[0])==null?void 0:t.value:""),eval_prompt:a.eval_prompt||"",is_active:a.is_active!==!1,is_default:!!a.is_default,bleu_n:a.bleu_n??1,output_precision:a.output_precision??3,score_min:a.score_min??0,score_max:a.score_max??5,pass_threshold:a.pass_threshold??3})}catch{}}async function E(){try{const o=await J()||[];d.value=o.filter(t=>t.purpose==="evaluation")}catch{d.value=[]}}async function D(){n.value&&await n.value.validate(async o=>{if(o){p.value=!0;try{const t={name:e.name,type:e.type,description:e.description,eval_model:e.type==="text_similarity"?null:e.eval_model,eval_method:e.eval_method,eval_prompt:e.type==="text_similarity"?null:e.eval_prompt,is_active:e.is_active,is_default:e.is_default,create_time:new Date().toISOString()};e.type==="text_similarity"&&(t.bleu_n=e.bleu_n,t.output_precision=e.output_precision),e.type==="metric"&&(t.score_min=e.score_min,t.score_max=e.score_max,t.pass_threshold=e.pass_threshold),u.value&&s.value?(await G(s.value,t),x.success("更新成功")):(await H(t),x.success("创建成功")),f.push("/model-eval")}catch{}finally{p.value=!1}}})}function V(){f.back()}return B(()=>{E(),w()}),(o,t)=>{const a=q,v=k,g=R,C=M;return O(),F(N,{title:u.value?"编辑评测维度":"添加评测维度"},{default:i(()=>[r(C,{ref_key:"formRef",ref:n,model:m(e),rules:b,"label-width":"130px",style:{"max-width":"760px"}},{default:i(()=>[r(v,{label:"维度名称",prop:"name"},{default:i(()=>[r(a,{modelValue:m(e).name,"onUpdate:modelValue":t[0]||(t[0]=l=>m(e).name=l),placeholder:"请输入维度名称",maxlength:"50","show-word-limit":""},null,8,["modelValue"])]),_:1}),r(U,{modelValue:m(e),"onUpdate:modelValue":t[1]||(t[1]=l=>P(e)?e.value=l:e=l),"eval-models":d.value},null,8,["modelValue","eval-models"]),r(v,null,{default:i(()=>[r(g,{type:"primary",loading:p.value,onClick:D},{default:i(()=>[h(j(u.value?"保存":"创建"),1)]),_:1},8,["loading"]),r(g,{onClick:V},{default:i(()=>[...t[2]||(t[2]=[h("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])}}});export{Be as default};
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
frontend/dist/assets/EvalView-Bd4r6it-.css
vendored
1
frontend/dist/assets/EvalView-Bd4r6it-.css
vendored
@@ -1 +0,0 @@
|
|||||||
@charset "UTF-8";.eval-page[data-v-d4aa0c92]{width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.capsule-tabs[data-v-d4aa0c92]{display:flex;background:#f1f5f9;padding:3px;border-radius:8px;gap:2px;border:1px solid #e2e8f0}.capsule-tab-item[data-v-d4aa0c92]{border:0;background:transparent;padding:6px 20px;font-size:13px;font-weight:500;color:#64748b;cursor:pointer;border-radius:6px;transition:all .2s ease;outline:none}.capsule-tab-item[data-v-d4aa0c92]:hover{color:#1e293b}.capsule-tab-item.active[data-v-d4aa0c92]{background:#fff;color:#4f46e5;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a;font-weight:600}
|
|
||||||
1
frontend/dist/assets/EvalView-CB5BSC8Y.css
vendored
1
frontend/dist/assets/EvalView-CB5BSC8Y.css
vendored
@@ -1 +0,0 @@
|
|||||||
@charset "UTF-8";.eval-page[data-v-a44eaeff]{width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.capsule-tabs[data-v-a44eaeff]{display:flex;background:#f1f5f9;padding:3px;border-radius:8px;gap:2px;border:1px solid #e2e8f0}.capsule-tab-item[data-v-a44eaeff]{border:0;background:transparent;padding:6px 20px;font-size:13px;font-weight:500;color:#64748b;cursor:pointer;border-radius:6px;transition:all .2s ease;outline:none}.capsule-tab-item[data-v-a44eaeff]:hover{color:#1e293b}.capsule-tab-item.active[data-v-a44eaeff]{background:#fff;color:#4f46e5;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a;font-weight:600}
|
|
||||||
1
frontend/dist/assets/EvalView-CH6pm7i4.css
vendored
Normal file
1
frontend/dist/assets/EvalView-CH6pm7i4.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
@charset "UTF-8";.eval-page[data-v-894b0bb7]{width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.capsule-tabs[data-v-894b0bb7]{display:flex;background:#f1f5f9;padding:3px;border-radius:8px;gap:2px;border:1px solid #e2e8f0}.capsule-tab-item[data-v-894b0bb7]{border:0;background:transparent;padding:6px 20px;font-size:13px;font-weight:500;color:#64748b;cursor:pointer;border-radius:6px;transition:all .2s ease;outline:none}.capsule-tab-item[data-v-894b0bb7]:hover{color:#1e293b}.capsule-tab-item.active[data-v-894b0bb7]{background:#fff;color:#4f46e5;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a;font-weight:600}
|
||||||
1
frontend/dist/assets/EvalView-CtORlaqt.js
vendored
1
frontend/dist/assets/EvalView-CtORlaqt.js
vendored
@@ -1 +0,0 @@
|
|||||||
import{E as V}from"./index-COtHB4lx.js";import{E as B}from"./el-table-DaKcBqZN.js";import{d as D,G as T,c as $,e as _,w as o,g as C,y as m,o as v,s as a,q as i,x as b,aa as L,n as c,v as N,A as z}from"./index-DS73WiJW.js";import{E as M}from"./index-ctkuqiuE.js";/* empty css */import"./el-checkbox-CphtzscD.js";import{D as y}from"./DataTablePage-wSeKJFdb.js";import{g as A,d as G}from"./eval-XviJ2Czw.js";import{_ as P}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-DErsaip4.js";import"./index-CP7PpuwU.js";import"./el-popper-DwsDzc1A.js";import"./index-oP6kINt_.js";import"./_baseClone--zSegXWR.js";import"./_baseIteratee-BtAnsxgT.js";import"./castArray-PcoOufI5.js";import"./debounce-BVX_QT7H.js";import"./toNumber-B0hxpsP6.js";import"./raf-G_xTfKfR.js";import"./validator-B_WzUu_x.js";import"./index-CdYGcoRT.js";import"./clamp-Cyl0wpX2.js";import"./index-TDTe-u1-.js";import"./scroll-qUQMUB2J.js";import"./index-Bl2Fsjov.js";import"./index-Cz3aNuv2.js";import"./omit-BHigcQFy.js";import"./el-card-DPafZG_Z.js";import"./el-pagination-BezdVZVw.js";import"./el-select-CHKMfjyJ.js";import"./vnode-HiBZolW-.js";import"./index-D-GNa2lp.js";import"./index-DvecKFrV.js";import"./directive-BNrYmpdY.js";import"./el-tooltip-l0sNRNKZ.js";const R={class:"eval-page"},S={class:"capsule-tabs"},q={class:"capsule-tabs"},I=D({__name:"EvalView",setup(Q){const f=N(),r=m("tasks"),d=m(!1),n=m([]),w=m([{rank:1,name:"GPT-4",score:92.5},{rank:2,name:"Claude-3",score:90.1},{rank:3,name:"Qwen-Max",score:85.3}]);async function u(){d.value=!0;try{n.value=await A()||[]}catch{n.value=[]}finally{d.value=!1}}async function k(s){await M.confirm("确定要删除这个评测任务吗?","确认删除",{type:"warning"}),await G(s.id),n.value=n.value.filter(e=>e.id!==s.id),z.success("删除成功"),await u()}function E(){f.push("/model-eval/create")}function p(s){return r.value===s}function x(s){f.push({name:"model-eval-detail",params:{id:s.id}})}return T(()=>{u()}),(s,e)=>{const t=B,g=V;return v(),$("div",R,[r.value==="tasks"?(v(),_(y,{key:0,title:"",data:n.value,loading:d.value,"delete-fn":k,"create-text":"创建评测任务",onCreate:E,"row-key":"id",onRefresh:u},{title:o(()=>[i("div",S,[i("button",{class:c(["capsule-tab-item",{active:p("tasks")}]),onClick:e[0]||(e[0]=l=>r.value="tasks")},"评测任务",2),i("button",{class:c(["capsule-tab-item",{active:p("leaderboard")}]),onClick:e[1]||(e[1]=l=>r.value="leaderboard")},"排行榜",2)])]),columns:o(()=>[a(t,{label:"任务名称",prop:"eval_task_name",align:"center"}),a(t,{label:"评测模型",prop:"model_name",align:"center"}),a(t,{label:"数据集",prop:"dataset",align:"center"}),a(t,{label:"指标",prop:"metric",align:"center"}),a(t,{label:"评分",prop:"score",width:"100",align:"center"}),a(t,{label:"状态",prop:"status",width:"100",align:"center"}),a(t,{label:"创建时间",align:"center",width:"180"},{default:o(({row:l})=>[b(L(l.create_time?new Date(l.create_time).toLocaleString("zh-CN"):"-"),1)]),_:1})]),actions:o(({row:l})=>[a(g,{link:"",type:"primary",size:"small",onClick:h=>x(l)},{default:o(()=>[...e[4]||(e[4]=[i("i",{class:"fa fa-file-text-o",style:{"margin-right":"4px"}},null,-1),b("详情 ",-1)])]),_:1},8,["onClick"]),a(g,{link:"",type:"danger",size:"small",onClick:h=>k(l)},{default:o(()=>[...e[5]||(e[5]=[i("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),b("删除 ",-1)])]),_:1},8,["onClick"])]),_:1},8,["data","loading"])):C("",!0),r.value==="leaderboard"?(v(),_(y,{key:1,title:"",data:w.value,"row-key":"rank"},{title:o(()=>[i("div",q,[i("button",{class:c(["capsule-tab-item",{active:p("tasks")}]),onClick:e[2]||(e[2]=l=>r.value="tasks")},"评测任务",2),i("button",{class:c(["capsule-tab-item",{active:p("leaderboard")}]),onClick:e[3]||(e[3]=l=>r.value="leaderboard")},"排行榜",2)])]),columns:o(()=>[a(t,{label:"排名",prop:"rank",width:"80",align:"center"}),a(t,{label:"模型名称",prop:"name",align:"center"}),a(t,{label:"综合评分",prop:"score",align:"center"})]),_:1},8,["data"])):C("",!0)])}}}),xe=P(I,[["__scopeId","data-v-d4aa0c92"]]);export{xe as default};
|
|
||||||
@@ -1 +1 @@
|
|||||||
import{E as V}from"./index-6OTFNiIi.js";import{E as $}from"./el-table-CzpPw-qp.js";import{d as B,G as D,c as T,e as _,w as o,g as C,y as p,o as v,s as a,q as i,x as f,aa as L,n as c,v as N,A as z}from"./index-CD29OCdJ.js";import{E as M}from"./index-BpXxrg-6.js";import"./el-tag-C4SnL2z_.js";import"./el-checkbox-Pnt9POcY.js";import{D as y}from"./DataTablePage-DQMBzHmK.js";import{_ as A}from"./ModelStatusTag.vue_vue_type_script_setup_true_lang-CBSAQmYm.js";import{g as G,d as P}from"./eval-DOgh3EN6.js";import{_ as R}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-YCRG1835.js";import"./index-DpY84JwG.js";import"./el-popper-DIiB8Y-M.js";import"./index-BpugJXyE.js";import"./_baseClone-Blem5BWg.js";import"./_baseIteratee-CuPmYyG4.js";import"./castArray-BEiueV6y.js";import"./debounce-BCyqG5kC.js";import"./toNumber-B6P5MqPp.js";import"./raf-DGtHIxe2.js";import"./validator-BQ0LVwAS.js";import"./index-D9N-GMuA.js";import"./clamp-BfrLWns4.js";import"./index-roSlfP_P.js";import"./scroll-D-TPweuo.js";import"./index-D0wqu88j.js";import"./index-C8FAS7l2.js";import"./omit-9H73Nvwk.js";import"./el-card-BvbOkvag.js";import"./el-pagination-B1UdckVp.js";import"./el-select-dn4MhMwo.js";import"./vnode-_QM9LlTR.js";import"./index-D1b786GX.js";import"./directive-DsbMrhCX.js";import"./el-tooltip-l0sNRNKZ.js";import"./status-Dl1fykxa.js";const S={class:"eval-page"},q={class:"capsule-tabs"},I={class:"capsule-tabs"},Q=B({__name:"EvalView",setup(j){const b=N(),s=p("tasks"),d=p(!1),n=p([]),w=p([{rank:1,name:"GPT-4",score:92.5},{rank:2,name:"Claude-3",score:90.1},{rank:3,name:"Qwen-Max",score:85.3}]);async function u(){d.value=!0;try{n.value=await G()||[]}catch{n.value=[]}finally{d.value=!1}}async function k(r){await M.confirm("确定要删除这个评测任务吗?","确认删除",{type:"warning"}),await P(r.id),n.value=n.value.filter(e=>e.id!==r.id),z.success("删除成功"),await u()}function E(){b.push("/model-eval/create")}function m(r){return s.value===r}function x(r){b.push({name:"model-eval-detail",params:{id:r.id}})}return D(()=>{u()}),(r,e)=>{const l=$,g=V;return v(),T("div",S,[s.value==="tasks"?(v(),_(y,{key:0,title:"",data:n.value,loading:d.value,"delete-fn":k,"create-text":"创建评测任务",onCreate:E,"row-key":"id",onRefresh:u},{title:o(()=>[i("div",q,[i("button",{class:c(["capsule-tab-item",{active:m("tasks")}]),onClick:e[0]||(e[0]=t=>s.value="tasks")},"评测任务",2),i("button",{class:c(["capsule-tab-item",{active:m("leaderboard")}]),onClick:e[1]||(e[1]=t=>s.value="leaderboard")},"排行榜",2)])]),columns:o(()=>[a(l,{label:"任务名称",prop:"eval_task_name",align:"center"}),a(l,{label:"评测模型",prop:"model_name",align:"center"}),a(l,{label:"数据集",prop:"dataset",align:"center"}),a(l,{label:"指标",prop:"metric",align:"center"}),a(l,{label:"评分",prop:"score",width:"100",align:"center"}),a(l,{label:"状态",width:"100",align:"center"},{default:o(({row:t})=>[a(A,{status:t.status},null,8,["status"])]),_:1}),a(l,{label:"创建时间",align:"center",width:"180"},{default:o(({row:t})=>[f(L(t.create_time?new Date(t.create_time).toLocaleString("zh-CN"):"-"),1)]),_:1})]),actions:o(({row:t})=>[a(g,{link:"",type:"primary",size:"small",onClick:h=>x(t)},{default:o(()=>[...e[4]||(e[4]=[i("i",{class:"fa fa-file-text-o",style:{"margin-right":"4px"}},null,-1),f("详情 ",-1)])]),_:1},8,["onClick"]),a(g,{link:"",type:"danger",size:"small",onClick:h=>k(t)},{default:o(()=>[...e[5]||(e[5]=[i("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),f("删除 ",-1)])]),_:1},8,["onClick"])]),_:1},8,["data","loading"])):C("",!0),s.value==="leaderboard"?(v(),_(y,{key:1,title:"",data:w.value,"row-key":"rank"},{title:o(()=>[i("div",I,[i("button",{class:c(["capsule-tab-item",{active:m("tasks")}]),onClick:e[2]||(e[2]=t=>s.value="tasks")},"评测任务",2),i("button",{class:c(["capsule-tab-item",{active:m("leaderboard")}]),onClick:e[3]||(e[3]=t=>s.value="leaderboard")},"排行榜",2)])]),columns:o(()=>[a(l,{label:"排名",prop:"rank",width:"80",align:"center"}),a(l,{label:"模型名称",prop:"name",align:"center"}),a(l,{label:"综合评分",prop:"score",align:"center"})]),_:1},8,["data"])):C("",!0)])}}}),Ve=R(Q,[["__scopeId","data-v-a44eaeff"]]);export{Ve as default};
|
import{E as V}from"./index-BHESvfAo.js";import{E as $}from"./el-table-BpaXJdL-.js";import{d as B,G as D,c as T,e as _,w as o,g as C,y as p,o as v,s as a,q as i,x as b,aa as L,n as c,v as N,A as z}from"./index-z4H3KYDz.js";import{E as M}from"./index-C_KL97zv.js";import"./el-tag-ulIZLhPi.js";import"./el-checkbox-CODdaR7b.js";import{D as y}from"./DataTablePage-DLeZhncr.js";import{_ as A}from"./ModelStatusTag.vue_vue_type_script_setup_true_lang-CRiYR4QO.js";import{g as G,d as P}from"./eval-CrYWzBLh.js";import{_ as R}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./el-scrollbar-Cs4RtPFn.js";import"./index-CeeJbXQu.js";import"./el-popper-BJIpIz7j.js";import"./index-DJMIMot_.js";import"./_baseClone-DT8DugHo.js";import"./_baseIteratee-BSbGVKbQ.js";import"./castArray-DuG_gufG.js";import"./debounce-DozRow7U.js";import"./toNumber-DmGFONFK.js";import"./raf-CGFVbd0C.js";import"./validator-Cv5bUbtV.js";import"./index-3Nih6or2.js";import"./clamp-Cqzl_HF6.js";import"./index-5agRb3jZ.js";import"./scroll-CJzUJVH-.js";import"./index-OPiDM056.js";import"./index-C6iZvNqO.js";import"./omit-8mGWGArl.js";import"./el-card-DLSyQgTR.js";import"./el-pagination-P9pb1Tpb.js";import"./el-select-OcCw1rK5.js";import"./vnode-Cz-7S2If.js";import"./index-BANvEWbb.js";import"./directive-BjB4tpmk.js";import"./el-tooltip-l0sNRNKZ.js";import"./status-Dl1fykxa.js";const S={class:"eval-page"},q={class:"capsule-tabs"},I={class:"capsule-tabs"},Q=B({__name:"EvalView",setup(j){const f=N(),s=p("tasks"),d=p(!1),n=p([]),w=p([{rank:1,name:"GPT-4",score:92.5},{rank:2,name:"Claude-3",score:90.1},{rank:3,name:"Qwen-Max",score:85.3}]);async function u(){d.value=!0;try{n.value=await G()||[]}catch{n.value=[]}finally{d.value=!1}}async function k(r){await M.confirm("确定要删除这个评测任务吗?","确认删除",{type:"warning"}),await P(r.id),n.value=n.value.filter(e=>e.id!==r.id),z.success("删除成功"),await u()}function E(){f.push("/model-eval/create")}function m(r){return s.value===r}function x(r){f.push({name:"model-eval-detail",params:{id:r.id}})}return D(()=>{u()}),(r,e)=>{const l=$,g=V;return v(),T("div",S,[s.value==="tasks"?(v(),_(y,{key:0,title:"",data:n.value,loading:d.value,"delete-fn":k,"create-text":"创建评测任务",onCreate:E,"row-key":"id",onRefresh:u},{title:o(()=>[i("div",q,[i("button",{class:c(["capsule-tab-item",{active:m("tasks")}]),onClick:e[0]||(e[0]=t=>s.value="tasks")},"评测任务",2),i("button",{class:c(["capsule-tab-item",{active:m("leaderboard")}]),onClick:e[1]||(e[1]=t=>s.value="leaderboard")},"排行榜",2)])]),columns:o(()=>[a(l,{label:"任务名称",prop:"eval_task_name",align:"center"}),a(l,{label:"评测模型",prop:"model_name",align:"center"}),a(l,{label:"数据集",prop:"dataset",align:"center"}),a(l,{label:"指标",prop:"metric",align:"center"}),a(l,{label:"评分",prop:"score",width:"100",align:"center"}),a(l,{label:"状态",width:"100",align:"center"},{default:o(({row:t})=>[a(A,{status:t.status},null,8,["status"])]),_:1}),a(l,{label:"创建时间",align:"center",width:"180"},{default:o(({row:t})=>[b(L(t.create_time?new Date(t.create_time).toLocaleString("zh-CN"):"-"),1)]),_:1})]),actions:o(({row:t})=>[a(g,{link:"",type:"primary",size:"small",onClick:h=>x(t)},{default:o(()=>[...e[4]||(e[4]=[i("i",{class:"fa fa-file-text-o",style:{"margin-right":"4px"}},null,-1),b("详情 ",-1)])]),_:1},8,["onClick"]),a(g,{link:"",type:"danger",size:"small",onClick:h=>k(t)},{default:o(()=>[...e[5]||(e[5]=[i("i",{class:"fa fa-trash-o",style:{"margin-right":"4px"}},null,-1),b("删除 ",-1)])]),_:1},8,["onClick"])]),_:1},8,["data","loading"])):C("",!0),s.value==="leaderboard"?(v(),_(y,{key:1,title:"",data:w.value,"row-key":"rank"},{title:o(()=>[i("div",I,[i("button",{class:c(["capsule-tab-item",{active:m("tasks")}]),onClick:e[2]||(e[2]=t=>s.value="tasks")},"评测任务",2),i("button",{class:c(["capsule-tab-item",{active:m("leaderboard")}]),onClick:e[3]||(e[3]=t=>s.value="leaderboard")},"排行榜",2)])]),columns:o(()=>[a(l,{label:"排名",prop:"rank",width:"80",align:"center"}),a(l,{label:"模型名称",prop:"name",align:"center"}),a(l,{label:"综合评分",prop:"score",align:"center"})]),_:1},8,["data"])):C("",!0)])}}}),Ve=R(Q,[["__scopeId","data-v-894b0bb7"]]);export{Ve as default};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as t,c,q as o}from"./index-DS73WiJW.js";const n={},r={class:"simple-page"};function a(_,e){return t(),c("section",r,[...e[0]||(e[0]=[o("h1",null,"使用文档",-1),o("p",null,"第一版系统已接入后端、数据集、模型、微调任务、算力节点和训练日志主链路。",-1)])])}const p=s(n,[["render",a],["__scopeId","data-v-962c8803"]]);export{p as default};
|
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as t,c,q as o}from"./index-z4H3KYDz.js";const n={},r={class:"simple-page"};function a(_,e){return t(),c("section",r,[...e[0]||(e[0]=[o("h1",null,"使用文档",-1),o("p",null,"第一版系统已接入后端、数据集、模型、微调任务、算力节点和训练日志主链路。",-1)])])}const p=s(n,[["render",a],["__scopeId","data-v-962c8803"]]);export{p as default};
|
||||||
7
frontend/dist/assets/GuideView-enryb6Zk.js
vendored
7
frontend/dist/assets/GuideView-enryb6Zk.js
vendored
@@ -1,7 +0,0 @@
|
|||||||
<<<<<<<< HEAD:frontend/dist/assets/GuideView-enryb6Zk.js
|
|
||||||
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as t,c,q as o}from"./index-CD29OCdJ.js";const n={},r={class:"simple-page"};function a(_,e){return t(),c("section",r,[...e[0]||(e[0]=[o("h1",null,"使用文档",-1),o("p",null,"第一版系统已接入后端、数据集、模型、微调任务、算力节点和训练日志主链路。",-1)])])}const p=s(n,[["render",a],["__scopeId","data-v-87551c13"]]);export{p as default};
|
|
||||||
|||||||| parent of 8bd93b0 (build(frontend): 更新生产构建产物):frontend/dist/assets/GuideView-CiALCc3O.js
|
|
||||||
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as t,c,q as o}from"./index-Ds9AETjS.js";const n={},r={class:"simple-page"};function a(_,e){return t(),c("section",r,[...e[0]||(e[0]=[o("h1",null,"使用文档",-1),o("p",null,"第一版系统已接入后端、数据集、模型、微调任务、算力节点和训练日志主链路。",-1)])])}const p=s(n,[["render",a],["__scopeId","data-v-87551c13"]]);export{p as default};
|
|
||||||
========
|
|
||||||
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as t,c,q as o}from"./index-CxbBjZKo.js";const n={},r={class:"simple-page"};function a(_,e){return t(),c("section",r,[...e[0]||(e[0]=[o("h1",null,"使用文档",-1),o("p",null,"第一版系统已接入后端、数据集、模型、微调任务、算力节点和训练日志主链路。",-1)])])}const p=s(n,[["render",a],["__scopeId","data-v-962c8803"]]);export{p as default};
|
|
||||||
>>>>>>>> 8bd93b0 (build(frontend): 更新生产构建产物):frontend/dist/assets/GuideView-3g5nbKBg.js
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
import{E as T}from"./el-alert-GKLeF-ml.js";import{a as A,E as D}from"./el-form-item-DFlzM9g_.js";import{E as L}from"./index-Bl2Fsjov.js";import{E as j}from"./index-COtHB4lx.js";import{E as z,b as H,a as J}from"./el-select-CHKMfjyJ.js";import{E as K}from"./el-divider-DozUv7u3.js";import{d as Q,G as W,e as u,w as o,at as X,y as i,z as Y,o as s,s as a,x as b,c as v,ad as k,M as w,g as Z,j as p,A as B,v as ee}from"./index-DS73WiJW.js";import"./el-scrollbar-DErsaip4.js";import"./el-popper-DwsDzc1A.js";/* empty css */import{P as te}from"./PageCard-CXygDeSp.js";import{g as le,a as ae}from"./model-BADKeN37.js";import"./vnode-HiBZolW-.js";import"./castArray-PcoOufI5.js";import"./_baseClone--zSegXWR.js";import"./raf-G_xTfKfR.js";import"./index-Cz3aNuv2.js";import"./index-CP7PpuwU.js";import"./index-oP6kINt_.js";import"./index-D-GNa2lp.js";import"./index-DvecKFrV.js";import"./scroll-qUQMUB2J.js";import"./clamp-Cyl0wpX2.js";import"./toNumber-B0hxpsP6.js";import"./_baseIteratee-BtAnsxgT.js";import"./el-card-DPafZG_Z.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";const Ie=Q({__name:"InferenceCreateView",setup(oe){const E=ee(),f=i(),c=i(!1),m=i(""),V=i([]),h=i([]),_=i([]),x=p(()=>V.value.map(t=>({key:`db-${t.id}`,id:t.id,name:t.name,source:"database",model_path:t.path||""}))),M=p(()=>h.value.map(t=>({key:`trained-${t.id}`,id:t.id,name:t.name,source:"trained",model_path:t.merged_path||t.base_model_path||"",merged:t.merged,merging:t.merging,disabled:t.merged===!1}))),G=p(()=>{const t={};for(const e of[...x.value,...M.value])t[e.key]=e;return t}),n=Y({name:"",description:"",model_key:"",gpu_id:0}),I={name:[{required:!0,message:"请输入推理名称",trigger:"blur"}],model_key:[{required:!0,message:"请选择模型",trigger:"change"}]},O=p(()=>G.value[n.model_key]);async function S(){f.value&&await f.value.validate(async t=>{if(!t)return;const e=O.value;if(!e){B.warning("请选择模型");return}c.value=!0,m.value="正在启动模型服务...";try{await new Promise(r=>setTimeout(r,1200)),B.success("模型已启动"),E.push({path:"/model-inference/chat/mock",query:{model:e.name}})}finally{c.value=!1,m.value=""}})}function $(){E.back()}async function q(){try{const[t,e,r]=await Promise.all([le(),ae(),X()]);V.value=t||[],h.value=(e==null?void 0:e.models)||[],_.value=(r==null?void 0:r.gpu)||[],_.value.length>0&&(n.gpu_id=0)}catch{}}return W(q),(t,e)=>{const r=L,d=A,F=K,g=J,C=H,P=z,N=T,U=j,R=D;return s(),u(te,{title:"新建推理"},{default:o(()=>[a(R,{ref_key:"formRef",ref:f,model:n,rules:I,"label-width":"100px"},{default:o(()=>[a(d,{label:"推理名称",prop:"name"},{default:o(()=>[a(r,{modelValue:n.name,"onUpdate:modelValue":e[0]||(e[0]=l=>n.name=l),placeholder:"请输入推理名称",maxlength:"50","show-word-limit":"",style:{"max-width":"400px"}},null,8,["modelValue"])]),_:1}),a(d,{label:"描述"},{default:o(()=>[a(r,{modelValue:n.description,"onUpdate:modelValue":e[1]||(e[1]=l=>n.description=l),type:"textarea",rows:2,maxlength:"200","show-word-limit":"",style:{"max-width":"400px"}},null,8,["modelValue"])]),_:1}),a(F,{"content-position":"left"},{default:o(()=>[...e[4]||(e[4]=[b("选择模型",-1)])]),_:1}),a(d,{label:"选择模型",prop:"model_key"},{default:o(()=>[a(P,{modelValue:n.model_key,"onUpdate:modelValue":e[2]||(e[2]=l=>n.model_key=l),placeholder:"请选择模型",filterable:"",style:{width:"400px"}},{default:o(()=>[a(C,{label:"本地模型"},{default:o(()=>[(s(!0),v(w,null,k(x.value,l=>(s(),u(g,{key:l.key,label:l.name,value:l.key},null,8,["label","value"]))),128))]),_:1}),a(C,{label:"已训练模型"},{default:o(()=>[(s(!0),v(w,null,k(M.value,l=>(s(),u(g,{key:l.key,label:l.name+(l.disabled?"(未合并)":""),value:l.key,disabled:l.disabled},null,8,["label","value","disabled"]))),128))]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(d,{label:"GPU"},{default:o(()=>[a(P,{modelValue:n.gpu_id,"onUpdate:modelValue":e[3]||(e[3]=l=>n.gpu_id=l),style:{width:"400px"}},{default:o(()=>[(s(!0),v(w,null,k(_.value,(l,y)=>(s(),u(g,{key:y,label:`${l.name} (GPU${y})`,value:y},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),m.value?(s(),u(d,{key:0,label:"启动状态"},{default:o(()=>[a(N,{title:m.value,type:"info",closable:!1,"show-icon":""},null,8,["title"])]),_:1})):Z("",!0),a(d,null,{default:o(()=>[a(U,{type:"primary",loading:c.value,onClick:S},{default:o(()=>[...e[5]||(e[5]=[b("开始推理",-1)])]),_:1},8,["loading"]),a(U,{onClick:$},{default:o(()=>[...e[6]||(e[6]=[b("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1})}}});export{Ie as default};
|
|
||||||
@@ -1 +1 @@
|
|||||||
import{E as T}from"./el-alert-DiB50G4H.js";import{a as A,E as D}from"./el-form-item--AdlsBF7.js";import{E as L}from"./index-D0wqu88j.js";import{E as j}from"./index-6OTFNiIi.js";import{E as z,b as H,a as J}from"./el-select-dn4MhMwo.js";import{E as K}from"./el-divider-Bk8dYjWT.js";import{d as Q,G as W,e as i,w as o,at as X,y as u,z as Y,o as s,s as a,x as b,c as v,ad as k,M as w,g as Z,j as p,A as B,v as ee}from"./index-CD29OCdJ.js";import"./el-scrollbar-YCRG1835.js";import"./el-popper-DIiB8Y-M.js";import"./el-tag-C4SnL2z_.js";import{P as te}from"./PageCard-Byh3epid.js";import{g as le,a as ae}from"./model-e1J4FzWC.js";import"./vnode-_QM9LlTR.js";import"./castArray-BEiueV6y.js";import"./_baseClone-Blem5BWg.js";import"./raf-DGtHIxe2.js";import"./index-C8FAS7l2.js";import"./index-DpY84JwG.js";import"./index-BpugJXyE.js";import"./index-D1b786GX.js";import"./scroll-D-TPweuo.js";import"./clamp-BfrLWns4.js";import"./toNumber-B6P5MqPp.js";import"./_baseIteratee-CuPmYyG4.js";import"./el-card-BvbOkvag.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";const Ge=Q({__name:"InferenceCreateView",setup(oe){const E=ee(),f=u(),c=u(!1),m=u(""),V=u([]),h=u([]),_=u([]),x=p(()=>V.value.map(t=>({key:`db-${t.id}`,id:t.id,name:t.name,source:"database",model_path:t.path||""}))),M=p(()=>h.value.map(t=>({key:`trained-${t.id}`,id:t.id,name:t.name,source:"trained",model_path:t.merged_path||t.base_model_path||"",merged:t.merged,merging:t.merging,disabled:t.merged===!1}))),G=p(()=>{const t={};for(const e of[...x.value,...M.value])t[e.key]=e;return t}),n=Y({name:"",description:"",model_key:"",gpu_id:0}),I={name:[{required:!0,message:"请输入推理名称",trigger:"blur"}],model_key:[{required:!0,message:"请选择模型",trigger:"change"}]},O=p(()=>G.value[n.model_key]);async function S(){f.value&&await f.value.validate(async t=>{if(!t)return;const e=O.value;if(!e){B.warning("请选择模型");return}c.value=!0,m.value="正在启动模型服务...";try{await new Promise(r=>setTimeout(r,1200)),B.success("模型已启动"),E.push({path:"/model-inference/chat/mock",query:{model:e.name}})}finally{c.value=!1,m.value=""}})}function $(){E.back()}async function q(){try{const[t,e,r]=await Promise.all([le(),ae(),X()]);V.value=t||[],h.value=(e==null?void 0:e.models)||[],_.value=(r==null?void 0:r.gpu)||[],_.value.length>0&&(n.gpu_id=0)}catch{}}return W(q),(t,e)=>{const r=L,d=A,F=K,g=J,C=H,P=z,N=T,U=j,R=D;return s(),i(te,{title:"新建推理"},{default:o(()=>[a(R,{ref_key:"formRef",ref:f,model:n,rules:I,"label-width":"100px"},{default:o(()=>[a(d,{label:"推理名称",prop:"name"},{default:o(()=>[a(r,{modelValue:n.name,"onUpdate:modelValue":e[0]||(e[0]=l=>n.name=l),placeholder:"请输入推理名称",maxlength:"50","show-word-limit":"",style:{"max-width":"400px"}},null,8,["modelValue"])]),_:1}),a(d,{label:"描述"},{default:o(()=>[a(r,{modelValue:n.description,"onUpdate:modelValue":e[1]||(e[1]=l=>n.description=l),type:"textarea",rows:2,maxlength:"200","show-word-limit":"",style:{"max-width":"400px"}},null,8,["modelValue"])]),_:1}),a(F,{"content-position":"left"},{default:o(()=>[...e[4]||(e[4]=[b("选择模型",-1)])]),_:1}),a(d,{label:"选择模型",prop:"model_key"},{default:o(()=>[a(P,{modelValue:n.model_key,"onUpdate:modelValue":e[2]||(e[2]=l=>n.model_key=l),placeholder:"请选择模型",filterable:"",style:{width:"400px"}},{default:o(()=>[a(C,{label:"本地模型"},{default:o(()=>[(s(!0),v(w,null,k(x.value,l=>(s(),i(g,{key:l.key,label:l.name,value:l.key},null,8,["label","value"]))),128))]),_:1}),a(C,{label:"已训练模型"},{default:o(()=>[(s(!0),v(w,null,k(M.value,l=>(s(),i(g,{key:l.key,label:l.name+(l.disabled?"(未合并)":""),value:l.key,disabled:l.disabled},null,8,["label","value","disabled"]))),128))]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(d,{label:"GPU"},{default:o(()=>[a(P,{modelValue:n.gpu_id,"onUpdate:modelValue":e[3]||(e[3]=l=>n.gpu_id=l),style:{width:"400px"}},{default:o(()=>[(s(!0),v(w,null,k(_.value,(l,y)=>(s(),i(g,{key:y,label:`${l.name} (GPU${y})`,value:y},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),m.value?(s(),i(d,{key:0,label:"启动状态"},{default:o(()=>[a(N,{title:m.value,type:"info",closable:!1,"show-icon":""},null,8,["title"])]),_:1})):Z("",!0),a(d,null,{default:o(()=>[a(U,{type:"primary",loading:c.value,onClick:S},{default:o(()=>[...e[5]||(e[5]=[b("开始推理",-1)])]),_:1},8,["loading"]),a(U,{onClick:$},{default:o(()=>[...e[6]||(e[6]=[b("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1})}}});export{Ge as default};
|
import{E as T}from"./el-alert-uXFexXb6.js";import{a as A,E as D}from"./el-form-item-WQOcwC6B.js";import{E as L}from"./index-OPiDM056.js";import{E as j}from"./index-BHESvfAo.js";import{E as z,b as H,a as J}from"./el-select-OcCw1rK5.js";import{E as K}from"./el-divider-C8c-JInP.js";import{d as Q,G as W,e as i,w as o,at as X,y as u,z as Y,o as s,s as a,x as b,c as v,ad as k,M as w,g as Z,j as p,A as B,v as ee}from"./index-z4H3KYDz.js";import"./el-scrollbar-Cs4RtPFn.js";import"./el-popper-BJIpIz7j.js";import"./el-tag-ulIZLhPi.js";import{P as te}from"./PageCard-BWIJ3AEp.js";import{g as le,a as ae}from"./model-CIcWT-2e.js";import"./vnode-Cz-7S2If.js";import"./castArray-DuG_gufG.js";import"./_baseClone-DT8DugHo.js";import"./raf-CGFVbd0C.js";import"./index-C6iZvNqO.js";import"./index-CeeJbXQu.js";import"./index-DJMIMot_.js";import"./index-BANvEWbb.js";import"./scroll-CJzUJVH-.js";import"./clamp-Cqzl_HF6.js";import"./toNumber-DmGFONFK.js";import"./_baseIteratee-BSbGVKbQ.js";import"./el-card-DLSyQgTR.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";const Ge=Q({__name:"InferenceCreateView",setup(oe){const E=ee(),f=u(),c=u(!1),m=u(""),V=u([]),h=u([]),_=u([]),x=p(()=>V.value.map(t=>({key:`db-${t.id}`,id:t.id,name:t.name,source:"database",model_path:t.path||""}))),M=p(()=>h.value.map(t=>({key:`trained-${t.id}`,id:t.id,name:t.name,source:"trained",model_path:t.merged_path||t.base_model_path||"",merged:t.merged,merging:t.merging,disabled:t.merged===!1}))),G=p(()=>{const t={};for(const e of[...x.value,...M.value])t[e.key]=e;return t}),n=Y({name:"",description:"",model_key:"",gpu_id:0}),I={name:[{required:!0,message:"请输入推理名称",trigger:"blur"}],model_key:[{required:!0,message:"请选择模型",trigger:"change"}]},O=p(()=>G.value[n.model_key]);async function S(){f.value&&await f.value.validate(async t=>{if(!t)return;const e=O.value;if(!e){B.warning("请选择模型");return}c.value=!0,m.value="正在启动模型服务...";try{await new Promise(r=>setTimeout(r,1200)),B.success("模型已启动"),E.push({path:"/model-inference/chat/mock",query:{model:e.name}})}finally{c.value=!1,m.value=""}})}function $(){E.back()}async function q(){try{const[t,e,r]=await Promise.all([le(),ae(),X()]);V.value=t||[],h.value=(e==null?void 0:e.models)||[],_.value=(r==null?void 0:r.gpu)||[],_.value.length>0&&(n.gpu_id=0)}catch{}}return W(q),(t,e)=>{const r=L,d=A,F=K,g=J,C=H,P=z,N=T,U=j,R=D;return s(),i(te,{title:"新建推理"},{default:o(()=>[a(R,{ref_key:"formRef",ref:f,model:n,rules:I,"label-width":"100px"},{default:o(()=>[a(d,{label:"推理名称",prop:"name"},{default:o(()=>[a(r,{modelValue:n.name,"onUpdate:modelValue":e[0]||(e[0]=l=>n.name=l),placeholder:"请输入推理名称",maxlength:"50","show-word-limit":"",style:{"max-width":"400px"}},null,8,["modelValue"])]),_:1}),a(d,{label:"描述"},{default:o(()=>[a(r,{modelValue:n.description,"onUpdate:modelValue":e[1]||(e[1]=l=>n.description=l),type:"textarea",rows:2,maxlength:"200","show-word-limit":"",style:{"max-width":"400px"}},null,8,["modelValue"])]),_:1}),a(F,{"content-position":"left"},{default:o(()=>[...e[4]||(e[4]=[b("选择模型",-1)])]),_:1}),a(d,{label:"选择模型",prop:"model_key"},{default:o(()=>[a(P,{modelValue:n.model_key,"onUpdate:modelValue":e[2]||(e[2]=l=>n.model_key=l),placeholder:"请选择模型",filterable:"",style:{width:"400px"}},{default:o(()=>[a(C,{label:"本地模型"},{default:o(()=>[(s(!0),v(w,null,k(x.value,l=>(s(),i(g,{key:l.key,label:l.name,value:l.key},null,8,["label","value"]))),128))]),_:1}),a(C,{label:"已训练模型"},{default:o(()=>[(s(!0),v(w,null,k(M.value,l=>(s(),i(g,{key:l.key,label:l.name+(l.disabled?"(未合并)":""),value:l.key,disabled:l.disabled},null,8,["label","value","disabled"]))),128))]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(d,{label:"GPU"},{default:o(()=>[a(P,{modelValue:n.gpu_id,"onUpdate:modelValue":e[3]||(e[3]=l=>n.gpu_id=l),style:{width:"400px"}},{default:o(()=>[(s(!0),v(w,null,k(_.value,(l,y)=>(s(),i(g,{key:y,label:`${l.name} (GPU${y})`,value:y},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),m.value?(s(),i(d,{key:0,label:"启动状态"},{default:o(()=>[a(N,{title:m.value,type:"info",closable:!1,"show-icon":""},null,8,["title"])]),_:1})):Z("",!0),a(d,null,{default:o(()=>[a(U,{type:"primary",loading:c.value,onClick:S},{default:o(()=>[...e[5]||(e[5]=[b("开始推理",-1)])]),_:1},8,["loading"]),a(U,{onClick:$},{default:o(()=>[...e[6]||(e[6]=[b("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1})}}});export{Ge as default};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
import{E as $,a as q}from"./el-form-item-DFlzM9g_.js";import{E as z}from"./index-Bl2Fsjov.js";import{u as K,E as P}from"./index-COtHB4lx.js";import{E as R}from"./el-checkbox-CphtzscD.js";import{b as T,i as U,d as N,u as A,a as D,o as u,c as k,e as h,w as t,r as M,f as w,E as j,g,n as E,h as V,j as b,k as C,l as G,m as H,p as J,q as n,s,t as O,v as Q,x as y,y as B,z as W,A as X}from"./index-DS73WiJW.js";import{_ as S}from"./logo-CxXS7KxG.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-PcoOufI5.js";import"./_baseClone--zSegXWR.js";import"./raf-G_xTfKfR.js";import"./index-Cz3aNuv2.js";import"./index-CP7PpuwU.js";import"./omit-BHigcQFy.js";const Z=T({type:{type:String,values:["primary","success","warning","info","danger","default"],default:void 0},underline:{type:[Boolean,String],values:[!0,!1,"always","never","hover"],default:void 0},disabled:Boolean,href:{type:String,default:""},target:{type:String,default:"_self"},icon:{type:U}}),ee={click:l=>l instanceof MouseEvent},ae=["href","target"];var ne=N({name:"ElLink",__name:"link",props:Z,emits:ee,setup(l,{emit:c}){const o=l,i=c,r=A("link");K({scope:"el-link",from:"The underline option (boolean)",replacement:"'always' | 'hover' | 'never'",version:"3.0.0",ref:"https://element-plus.org/en-US/component/link.html#underline"},b(()=>C(o.underline)));const a=D("link"),m=b(()=>{var e;return[a.b(),a.m(o.type??((e=r.value)==null?void 0:e.type)??"default"),a.is("disabled",o.disabled),a.is("underline",d.value==="always"),a.is("hover-underline",d.value==="hover"&&!o.disabled)]}),d=b(()=>{var e;return C(o.underline)?o.underline?"hover":"never":o.underline??((e=r.value)==null?void 0:e.underline)??"hover"});function p(e){o.disabled||i("click",e)}return(e,f)=>(u(),k("a",{class:E(m.value),href:l.disabled||!l.href?void 0:l.href,target:l.disabled||!l.href?void 0:l.target,onClick:p},[l.icon?(u(),h(w(j),{key:0},{default:t(()=>[(u(),h(M(l.icon)))]),_:1})):g("v-if",!0),e.$slots.default?(u(),k("span",{key:1,class:E(w(a).e("inner"))},[V(e.$slots,"default")],2)):g("v-if",!0),e.$slots.icon?V(e.$slots,"icon",{key:2}):g("v-if",!0)],10,ae))}}),le=ne;const oe=G(le),se={class:"login-page"},te={class:"login-panel"},re={class:"login-form-wrap"},ie={class:"login-options"},de=N({__name:"LoginView",setup(l){const c=Q(),o=H(),i=B(),r=B(!1),a=W({username:"",password:""}),m={username:[{required:!0,message:"请输入账号",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function d(){i.value&&await i.value.validate(async p=>{if(p){r.value=!0;try{await o.login(a.username,a.password),X.success("登录成功"),c.push("/dashboard")}catch{}finally{r.value=!1}}})}return(p,e)=>{const f=z,_=q,x=R,F=oe,I=P,L=$;return u(),k("div",se,[e[8]||(e[8]=J('<section class="login-visual" aria-labelledby="platform-title" data-v-5b789cef><div class="login-visual-content" data-v-5b789cef><div class="login-visual-copy" data-v-5b789cef><h1 id="platform-title" data-v-5b789cef>远光软件微调平台</h1><p data-v-5b789cef>大模型微调、评测与推理的一体化工作台</p></div><div class="login-visual-footer" aria-label="平台核心能力" data-v-5b789cef><span data-v-5b789cef>数据准备</span><span aria-hidden="true" data-v-5b789cef>·</span><span data-v-5b789cef>模型训练</span><span aria-hidden="true" data-v-5b789cef>·</span><span data-v-5b789cef>效果评测</span></div></div></section>',1)),n("main",te,[e[6]||(e[6]=n("div",{class:"brand-lockup",role:"img","aria-label":"远光软件"},[n("span",{class:"brand-logo-crop brand-logo-crop-mark","aria-hidden":"true"},[n("img",{src:S,alt:""})]),n("span",{class:"brand-logo-crop brand-logo-crop-wordmark","aria-hidden":"true"},[n("img",{src:S,alt:""})])],-1)),n("div",re,[e[5]||(e[5]=n("div",{class:"login-heading"},[n("span",null,"账号登录"),n("h2",null,"欢迎回来"),n("p",null,"登录后继续使用微调平台")],-1)),s(L,{ref_key:"loginFormRef",ref:i,model:a,rules:m,"label-position":"top",size:"large",onKeyup:O(d,["enter"])},{default:t(()=>[s(_,{label:"账号",prop:"username"},{default:t(()=>[s(f,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=v=>a.username=v),placeholder:"请输入账号",clearable:""},null,8,["modelValue"])]),_:1}),s(_,{label:"密码",prop:"password"},{default:t(()=>[s(f,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=v=>a.password=v),type:"password",placeholder:"请输入密码","show-password":""},null,8,["modelValue"])]),_:1}),n("div",ie,[s(x,null,{default:t(()=>[...e[2]||(e[2]=[y("记住密码",-1)])]),_:1}),s(F,{type:"primary",underline:!1},{default:t(()=>[...e[3]||(e[3]=[y("忘记密码?",-1)])]),_:1})]),s(I,{type:"primary",class:"login-btn",loading:r.value,onClick:d},{default:t(()=>[...e[4]||(e[4]=[y(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1},8,["model"])]),e[7]||(e[7]=n("footer",null,"© 2026 远光软件",-1))])])}}}),Ee=Y(de,[["__scopeId","data-v-5b789cef"]]);export{Ee as default};
|
import{E as $,a as q}from"./el-form-item-WQOcwC6B.js";import{E as z}from"./index-OPiDM056.js";import{u as K,E as P}from"./index-BHESvfAo.js";import{E as R}from"./el-checkbox-CODdaR7b.js";import{b as T,i as U,d as N,u as A,a as D,o as u,c as k,e as h,w as t,r as M,f as w,E as j,g,n as E,h as V,j as b,k as C,l as G,m as H,p as J,q as n,s,t as O,v as Q,x as y,y as B,z as W,A as X}from"./index-z4H3KYDz.js";import{_ as S}from"./logo-CxXS7KxG.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-DuG_gufG.js";import"./_baseClone-DT8DugHo.js";import"./raf-CGFVbd0C.js";import"./index-C6iZvNqO.js";import"./index-CeeJbXQu.js";import"./omit-8mGWGArl.js";const Z=T({type:{type:String,values:["primary","success","warning","info","danger","default"],default:void 0},underline:{type:[Boolean,String],values:[!0,!1,"always","never","hover"],default:void 0},disabled:Boolean,href:{type:String,default:""},target:{type:String,default:"_self"},icon:{type:U}}),ee={click:l=>l instanceof MouseEvent},ae=["href","target"];var ne=N({name:"ElLink",__name:"link",props:Z,emits:ee,setup(l,{emit:c}){const o=l,i=c,r=A("link");K({scope:"el-link",from:"The underline option (boolean)",replacement:"'always' | 'hover' | 'never'",version:"3.0.0",ref:"https://element-plus.org/en-US/component/link.html#underline"},b(()=>C(o.underline)));const a=D("link"),m=b(()=>{var e;return[a.b(),a.m(o.type??((e=r.value)==null?void 0:e.type)??"default"),a.is("disabled",o.disabled),a.is("underline",d.value==="always"),a.is("hover-underline",d.value==="hover"&&!o.disabled)]}),d=b(()=>{var e;return C(o.underline)?o.underline?"hover":"never":o.underline??((e=r.value)==null?void 0:e.underline)??"hover"});function p(e){o.disabled||i("click",e)}return(e,f)=>(u(),k("a",{class:E(m.value),href:l.disabled||!l.href?void 0:l.href,target:l.disabled||!l.href?void 0:l.target,onClick:p},[l.icon?(u(),h(w(j),{key:0},{default:t(()=>[(u(),h(M(l.icon)))]),_:1})):g("v-if",!0),e.$slots.default?(u(),k("span",{key:1,class:E(w(a).e("inner"))},[V(e.$slots,"default")],2)):g("v-if",!0),e.$slots.icon?V(e.$slots,"icon",{key:2}):g("v-if",!0)],10,ae))}}),le=ne;const oe=G(le),se={class:"login-page"},te={class:"login-panel"},re={class:"login-form-wrap"},ie={class:"login-options"},de=N({__name:"LoginView",setup(l){const c=Q(),o=H(),i=B(),r=B(!1),a=W({username:"",password:""}),m={username:[{required:!0,message:"请输入账号",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function d(){i.value&&await i.value.validate(async p=>{if(p){r.value=!0;try{await o.login(a.username,a.password),X.success("登录成功"),c.push("/dashboard")}catch{}finally{r.value=!1}}})}return(p,e)=>{const f=z,_=q,x=R,F=oe,I=P,L=$;return u(),k("div",se,[e[8]||(e[8]=J('<section class="login-visual" aria-labelledby="platform-title" data-v-5b789cef><div class="login-visual-content" data-v-5b789cef><div class="login-visual-copy" data-v-5b789cef><h1 id="platform-title" data-v-5b789cef>远光软件微调平台</h1><p data-v-5b789cef>大模型微调、评测与推理的一体化工作台</p></div><div class="login-visual-footer" aria-label="平台核心能力" data-v-5b789cef><span data-v-5b789cef>数据准备</span><span aria-hidden="true" data-v-5b789cef>·</span><span data-v-5b789cef>模型训练</span><span aria-hidden="true" data-v-5b789cef>·</span><span data-v-5b789cef>效果评测</span></div></div></section>',1)),n("main",te,[e[6]||(e[6]=n("div",{class:"brand-lockup",role:"img","aria-label":"远光软件"},[n("span",{class:"brand-logo-crop brand-logo-crop-mark","aria-hidden":"true"},[n("img",{src:S,alt:""})]),n("span",{class:"brand-logo-crop brand-logo-crop-wordmark","aria-hidden":"true"},[n("img",{src:S,alt:""})])],-1)),n("div",re,[e[5]||(e[5]=n("div",{class:"login-heading"},[n("span",null,"账号登录"),n("h2",null,"欢迎回来"),n("p",null,"登录后继续使用微调平台")],-1)),s(L,{ref_key:"loginFormRef",ref:i,model:a,rules:m,"label-position":"top",size:"large",onKeyup:O(d,["enter"])},{default:t(()=>[s(_,{label:"账号",prop:"username"},{default:t(()=>[s(f,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=v=>a.username=v),placeholder:"请输入账号",clearable:""},null,8,["modelValue"])]),_:1}),s(_,{label:"密码",prop:"password"},{default:t(()=>[s(f,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=v=>a.password=v),type:"password",placeholder:"请输入密码","show-password":""},null,8,["modelValue"])]),_:1}),n("div",ie,[s(x,null,{default:t(()=>[...e[2]||(e[2]=[y("记住密码",-1)])]),_:1}),s(F,{type:"primary",underline:!1},{default:t(()=>[...e[3]||(e[3]=[y("忘记密码?",-1)])]),_:1})]),s(I,{type:"primary",class:"login-btn",loading:r.value,onClick:d},{default:t(()=>[...e[4]||(e[4]=[y(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1},8,["model"])]),e[7]||(e[7]=n("footer",null,"© 2026 远光软件",-1))])])}}}),Ee=Y(de,[["__scopeId","data-v-5b789cef"]]);export{Ee as default};
|
||||||
7
frontend/dist/assets/LoginView-Pwx0U7_G.js
vendored
7
frontend/dist/assets/LoginView-Pwx0U7_G.js
vendored
@@ -1,7 +0,0 @@
|
|||||||
<<<<<<<< HEAD:frontend/dist/assets/LoginView-Pwx0U7_G.js
|
|
||||||
import{E as $,a as q}from"./el-form-item--AdlsBF7.js";import{E as z}from"./index-D0wqu88j.js";import{u as K,E as P}from"./index-6OTFNiIi.js";import{E as R}from"./el-checkbox-Pnt9POcY.js";import{b as T,i as U,d as N,u as A,a as D,o as u,c as k,e as h,w as t,r as M,f as w,E as j,g,n as E,h as V,j as b,k as C,l as G,m as H,p as J,q as n,s,t as O,v as Q,x as y,y as B,z as W,A as X}from"./index-CD29OCdJ.js";import{_ as S}from"./logo-CxXS7KxG.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-BEiueV6y.js";import"./_baseClone-Blem5BWg.js";import"./raf-DGtHIxe2.js";import"./index-C8FAS7l2.js";import"./index-DpY84JwG.js";import"./omit-9H73Nvwk.js";const Z=T({type:{type:String,values:["primary","success","warning","info","danger","default"],default:void 0},underline:{type:[Boolean,String],values:[!0,!1,"always","never","hover"],default:void 0},disabled:Boolean,href:{type:String,default:""},target:{type:String,default:"_self"},icon:{type:U}}),ee={click:l=>l instanceof MouseEvent},ae=["href","target"];var ne=N({name:"ElLink",__name:"link",props:Z,emits:ee,setup(l,{emit:m}){const o=l,i=m,r=A("link");K({scope:"el-link",from:"The underline option (boolean)",replacement:"'always' | 'hover' | 'never'",version:"3.0.0",ref:"https://element-plus.org/en-US/component/link.html#underline"},b(()=>C(o.underline)));const a=D("link"),c=b(()=>{var e;return[a.b(),a.m(o.type??((e=r.value)==null?void 0:e.type)??"default"),a.is("disabled",o.disabled),a.is("underline",d.value==="always"),a.is("hover-underline",d.value==="hover"&&!o.disabled)]}),d=b(()=>{var e;return C(o.underline)?o.underline?"hover":"never":o.underline??((e=r.value)==null?void 0:e.underline)??"hover"});function p(e){o.disabled||i("click",e)}return(e,f)=>(u(),k("a",{class:E(c.value),href:l.disabled||!l.href?void 0:l.href,target:l.disabled||!l.href?void 0:l.target,onClick:p},[l.icon?(u(),h(w(j),{key:0},{default:t(()=>[(u(),h(M(l.icon)))]),_:1})):g("v-if",!0),e.$slots.default?(u(),k("span",{key:1,class:E(w(a).e("inner"))},[V(e.$slots,"default")],2)):g("v-if",!0),e.$slots.icon?V(e.$slots,"icon",{key:2}):g("v-if",!0)],10,ae))}}),le=ne;const oe=G(le),se={class:"login-page"},te={class:"login-panel"},re={class:"login-form-wrap"},ie={class:"login-options"},de=N({__name:"LoginView",setup(l){const m=Q(),o=H(),i=B(),r=B(!1),a=W({username:"",password:""}),c={username:[{required:!0,message:"请输入账号",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function d(){i.value&&await i.value.validate(async p=>{if(p){r.value=!0;try{await o.login(a.username,a.password),X.success("登录成功"),m.push("/dashboard")}catch{}finally{r.value=!1}}})}return(p,e)=>{const f=z,_=q,x=R,F=oe,I=P,L=$;return u(),k("div",se,[e[8]||(e[8]=J('<section class="login-visual" aria-labelledby="platform-title" data-v-713185bd><div class="login-visual-content" data-v-713185bd><div class="login-visual-copy" data-v-713185bd><h1 id="platform-title" data-v-713185bd>远光软件微调平台</h1><p data-v-713185bd>大模型微调、评测与推理的一体化工作台</p></div><div class="login-visual-footer" aria-label="平台核心能力" data-v-713185bd><span data-v-713185bd>数据准备</span><span aria-hidden="true" data-v-713185bd>·</span><span data-v-713185bd>模型训练</span><span aria-hidden="true" data-v-713185bd>·</span><span data-v-713185bd>效果评测</span></div></div></section>',1)),n("main",te,[e[6]||(e[6]=n("div",{class:"brand-lockup",role:"img","aria-label":"远光软件"},[n("span",{class:"brand-logo-crop brand-logo-crop-mark","aria-hidden":"true"},[n("img",{src:S,alt:""})]),n("span",{class:"brand-logo-crop brand-logo-crop-wordmark","aria-hidden":"true"},[n("img",{src:S,alt:""})])],-1)),n("div",re,[e[5]||(e[5]=n("div",{class:"login-heading"},[n("span",null,"账号登录"),n("h2",null,"欢迎回来"),n("p",null,"登录后继续使用微调平台")],-1)),s(L,{ref_key:"loginFormRef",ref:i,model:a,rules:c,"label-position":"top",size:"large",onKeyup:O(d,["enter"])},{default:t(()=>[s(_,{label:"账号",prop:"username"},{default:t(()=>[s(f,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=v=>a.username=v),placeholder:"请输入账号",clearable:""},null,8,["modelValue"])]),_:1}),s(_,{label:"密码",prop:"password"},{default:t(()=>[s(f,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=v=>a.password=v),type:"password",placeholder:"请输入密码","show-password":""},null,8,["modelValue"])]),_:1}),n("div",ie,[s(x,null,{default:t(()=>[...e[2]||(e[2]=[y("记住密码",-1)])]),_:1}),s(F,{type:"primary",underline:!1},{default:t(()=>[...e[3]||(e[3]=[y("忘记密码?",-1)])]),_:1})]),s(I,{type:"primary",class:"login-btn",loading:r.value,onClick:d},{default:t(()=>[...e[4]||(e[4]=[y(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1},8,["model"])]),e[7]||(e[7]=n("footer",null,"© 2026 远光软件",-1))])])}}}),Ee=Y(de,[["__scopeId","data-v-713185bd"]]);export{Ee as default};
|
|
||||||
|||||||| parent of 8bd93b0 (build(frontend): 更新生产构建产物):frontend/dist/assets/LoginView-DxdhlDPY.js
|
|
||||||
import{E as $,a as q}from"./el-form-item-Bq0n_p5a.js";import{E as z}from"./index-h5FkzAP_.js";import{u as K,E as P}from"./index-BNsCyG4A.js";import{E as R}from"./el-checkbox-pV3o_8iy.js";import{b as T,i as U,d as N,u as A,a as D,o as u,c as k,e as h,w as t,r as M,f as w,E as j,g,n as E,h as V,j as b,k as C,l as G,m as H,p as J,q as n,s,t as O,v as Q,x as y,y as B,z as W,A as X}from"./index-Ds9AETjS.js";import{_ as S}from"./logo-CxXS7KxG.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-BWI4UxBy.js";import"./_baseClone-CZxxnGCv.js";import"./raf-zQ00nuMI.js";import"./index-B0if-AHo.js";import"./index-BSbCLbaz.js";import"./omit-BzI1MV_K.js";const Z=T({type:{type:String,values:["primary","success","warning","info","danger","default"],default:void 0},underline:{type:[Boolean,String],values:[!0,!1,"always","never","hover"],default:void 0},disabled:Boolean,href:{type:String,default:""},target:{type:String,default:"_self"},icon:{type:U}}),ee={click:l=>l instanceof MouseEvent},ae=["href","target"];var ne=N({name:"ElLink",__name:"link",props:Z,emits:ee,setup(l,{emit:m}){const o=l,i=m,r=A("link");K({scope:"el-link",from:"The underline option (boolean)",replacement:"'always' | 'hover' | 'never'",version:"3.0.0",ref:"https://element-plus.org/en-US/component/link.html#underline"},b(()=>C(o.underline)));const a=D("link"),c=b(()=>{var e;return[a.b(),a.m(o.type??((e=r.value)==null?void 0:e.type)??"default"),a.is("disabled",o.disabled),a.is("underline",d.value==="always"),a.is("hover-underline",d.value==="hover"&&!o.disabled)]}),d=b(()=>{var e;return C(o.underline)?o.underline?"hover":"never":o.underline??((e=r.value)==null?void 0:e.underline)??"hover"});function p(e){o.disabled||i("click",e)}return(e,f)=>(u(),k("a",{class:E(c.value),href:l.disabled||!l.href?void 0:l.href,target:l.disabled||!l.href?void 0:l.target,onClick:p},[l.icon?(u(),h(w(j),{key:0},{default:t(()=>[(u(),h(M(l.icon)))]),_:1})):g("v-if",!0),e.$slots.default?(u(),k("span",{key:1,class:E(w(a).e("inner"))},[V(e.$slots,"default")],2)):g("v-if",!0),e.$slots.icon?V(e.$slots,"icon",{key:2}):g("v-if",!0)],10,ae))}}),le=ne;const oe=G(le),se={class:"login-page"},te={class:"login-panel"},re={class:"login-form-wrap"},ie={class:"login-options"},de=N({__name:"LoginView",setup(l){const m=Q(),o=H(),i=B(),r=B(!1),a=W({username:"",password:""}),c={username:[{required:!0,message:"请输入账号",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function d(){i.value&&await i.value.validate(async p=>{if(p){r.value=!0;try{await o.login(a.username,a.password),X.success("登录成功"),m.push("/dashboard")}catch{}finally{r.value=!1}}})}return(p,e)=>{const f=z,_=q,x=R,F=oe,I=P,L=$;return u(),k("div",se,[e[8]||(e[8]=J('<section class="login-visual" aria-labelledby="platform-title" data-v-713185bd><div class="login-visual-content" data-v-713185bd><div class="login-visual-copy" data-v-713185bd><h1 id="platform-title" data-v-713185bd>远光软件微调平台</h1><p data-v-713185bd>大模型微调、评测与推理的一体化工作台</p></div><div class="login-visual-footer" aria-label="平台核心能力" data-v-713185bd><span data-v-713185bd>数据准备</span><span aria-hidden="true" data-v-713185bd>·</span><span data-v-713185bd>模型训练</span><span aria-hidden="true" data-v-713185bd>·</span><span data-v-713185bd>效果评测</span></div></div></section>',1)),n("main",te,[e[6]||(e[6]=n("div",{class:"brand-lockup",role:"img","aria-label":"远光软件"},[n("span",{class:"brand-logo-crop brand-logo-crop-mark","aria-hidden":"true"},[n("img",{src:S,alt:""})]),n("span",{class:"brand-logo-crop brand-logo-crop-wordmark","aria-hidden":"true"},[n("img",{src:S,alt:""})])],-1)),n("div",re,[e[5]||(e[5]=n("div",{class:"login-heading"},[n("span",null,"账号登录"),n("h2",null,"欢迎回来"),n("p",null,"登录后继续使用微调平台")],-1)),s(L,{ref_key:"loginFormRef",ref:i,model:a,rules:c,"label-position":"top",size:"large",onKeyup:O(d,["enter"])},{default:t(()=>[s(_,{label:"账号",prop:"username"},{default:t(()=>[s(f,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=v=>a.username=v),placeholder:"请输入账号",clearable:""},null,8,["modelValue"])]),_:1}),s(_,{label:"密码",prop:"password"},{default:t(()=>[s(f,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=v=>a.password=v),type:"password",placeholder:"请输入密码","show-password":""},null,8,["modelValue"])]),_:1}),n("div",ie,[s(x,null,{default:t(()=>[...e[2]||(e[2]=[y("记住密码",-1)])]),_:1}),s(F,{type:"primary",underline:!1},{default:t(()=>[...e[3]||(e[3]=[y("忘记密码?",-1)])]),_:1})]),s(I,{type:"primary",class:"login-btn",loading:r.value,onClick:d},{default:t(()=>[...e[4]||(e[4]=[y(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1},8,["model"])]),e[7]||(e[7]=n("footer",null,"© 2026 远光软件",-1))])])}}}),Ee=Y(de,[["__scopeId","data-v-713185bd"]]);export{Ee as default};
|
|
||||||
========
|
|
||||||
import{E as $,a as q}from"./el-form-item-BA3ZlfqF.js";import{E as z}from"./index-zJ9bqPrh.js";import{u as K,E as P}from"./index-D23K2h6y.js";import{E as R}from"./el-checkbox-C_TzqU9u.js";import{b as T,i as U,d as N,u as A,a as D,o as u,c as k,e as h,w as t,r as M,f as w,E as j,g,n as E,h as V,j as b,k as C,l as G,m as H,p as J,q as n,s,t as O,v as Q,x as y,y as B,z as W,A as X}from"./index-CxbBjZKo.js";import{_ as S}from"./logo-CxXS7KxG.js";import{_ as Y}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-CwVgzdTt.js";import"./_baseClone-B6d4qZbo.js";import"./raf-Bjl8yy5U.js";import"./index-C4wGR5UT.js";import"./index-DxP0p4ch.js";import"./omit-CbHF-OEy.js";const Z=T({type:{type:String,values:["primary","success","warning","info","danger","default"],default:void 0},underline:{type:[Boolean,String],values:[!0,!1,"always","never","hover"],default:void 0},disabled:Boolean,href:{type:String,default:""},target:{type:String,default:"_self"},icon:{type:U}}),ee={click:l=>l instanceof MouseEvent},ae=["href","target"];var ne=N({name:"ElLink",__name:"link",props:Z,emits:ee,setup(l,{emit:c}){const o=l,i=c,r=A("link");K({scope:"el-link",from:"The underline option (boolean)",replacement:"'always' | 'hover' | 'never'",version:"3.0.0",ref:"https://element-plus.org/en-US/component/link.html#underline"},b(()=>C(o.underline)));const a=D("link"),m=b(()=>{var e;return[a.b(),a.m(o.type??((e=r.value)==null?void 0:e.type)??"default"),a.is("disabled",o.disabled),a.is("underline",d.value==="always"),a.is("hover-underline",d.value==="hover"&&!o.disabled)]}),d=b(()=>{var e;return C(o.underline)?o.underline?"hover":"never":o.underline??((e=r.value)==null?void 0:e.underline)??"hover"});function p(e){o.disabled||i("click",e)}return(e,f)=>(u(),k("a",{class:E(m.value),href:l.disabled||!l.href?void 0:l.href,target:l.disabled||!l.href?void 0:l.target,onClick:p},[l.icon?(u(),h(w(j),{key:0},{default:t(()=>[(u(),h(M(l.icon)))]),_:1})):g("v-if",!0),e.$slots.default?(u(),k("span",{key:1,class:E(w(a).e("inner"))},[V(e.$slots,"default")],2)):g("v-if",!0),e.$slots.icon?V(e.$slots,"icon",{key:2}):g("v-if",!0)],10,ae))}}),le=ne;const oe=G(le),se={class:"login-page"},te={class:"login-panel"},re={class:"login-form-wrap"},ie={class:"login-options"},de=N({__name:"LoginView",setup(l){const c=Q(),o=H(),i=B(),r=B(!1),a=W({username:"",password:""}),m={username:[{required:!0,message:"请输入账号",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function d(){i.value&&await i.value.validate(async p=>{if(p){r.value=!0;try{await o.login(a.username,a.password),X.success("登录成功"),c.push("/dashboard")}catch{}finally{r.value=!1}}})}return(p,e)=>{const f=z,_=q,x=R,F=oe,I=P,L=$;return u(),k("div",se,[e[8]||(e[8]=J('<section class="login-visual" aria-labelledby="platform-title" data-v-5b789cef><div class="login-visual-content" data-v-5b789cef><div class="login-visual-copy" data-v-5b789cef><h1 id="platform-title" data-v-5b789cef>远光软件微调平台</h1><p data-v-5b789cef>大模型微调、评测与推理的一体化工作台</p></div><div class="login-visual-footer" aria-label="平台核心能力" data-v-5b789cef><span data-v-5b789cef>数据准备</span><span aria-hidden="true" data-v-5b789cef>·</span><span data-v-5b789cef>模型训练</span><span aria-hidden="true" data-v-5b789cef>·</span><span data-v-5b789cef>效果评测</span></div></div></section>',1)),n("main",te,[e[6]||(e[6]=n("div",{class:"brand-lockup",role:"img","aria-label":"远光软件"},[n("span",{class:"brand-logo-crop brand-logo-crop-mark","aria-hidden":"true"},[n("img",{src:S,alt:""})]),n("span",{class:"brand-logo-crop brand-logo-crop-wordmark","aria-hidden":"true"},[n("img",{src:S,alt:""})])],-1)),n("div",re,[e[5]||(e[5]=n("div",{class:"login-heading"},[n("span",null,"账号登录"),n("h2",null,"欢迎回来"),n("p",null,"登录后继续使用微调平台")],-1)),s(L,{ref_key:"loginFormRef",ref:i,model:a,rules:m,"label-position":"top",size:"large",onKeyup:O(d,["enter"])},{default:t(()=>[s(_,{label:"账号",prop:"username"},{default:t(()=>[s(f,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=v=>a.username=v),placeholder:"请输入账号",clearable:""},null,8,["modelValue"])]),_:1}),s(_,{label:"密码",prop:"password"},{default:t(()=>[s(f,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=v=>a.password=v),type:"password",placeholder:"请输入密码","show-password":""},null,8,["modelValue"])]),_:1}),n("div",ie,[s(x,null,{default:t(()=>[...e[2]||(e[2]=[y("记住密码",-1)])]),_:1}),s(F,{type:"primary",underline:!1},{default:t(()=>[...e[3]||(e[3]=[y("忘记密码?",-1)])]),_:1})]),s(I,{type:"primary",class:"login-btn",loading:r.value,onClick:d},{default:t(()=>[...e[4]||(e[4]=[y(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1},8,["model"])]),e[7]||(e[7]=n("footer",null,"© 2026 远光软件",-1))])])}}}),Ee=Y(de,[["__scopeId","data-v-5b789cef"]]);export{Ee as default};
|
|
||||||
>>>>>>>> 8bd93b0 (build(frontend): 更新生产构建产物):frontend/dist/assets/LoginView-Q_NnBv06.js
|
|
||||||
3
frontend/dist/assets/LogsView-7wuX7_bV.js
vendored
3
frontend/dist/assets/LogsView-7wuX7_bV.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
7
frontend/dist/assets/MainLayout-CMUyfVBl.js
vendored
7
frontend/dist/assets/MainLayout-CMUyfVBl.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
58
frontend/dist/assets/MarkdownView.vue_vue_type_style_index_0_lang-DicHzhRR.js
vendored
Normal file
58
frontend/dist/assets/MarkdownView.vue_vue_type_style_index_0_lang-DicHzhRR.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
import{E as A}from"./el-alert-DiB50G4H.js";import{a as N,E as T}from"./el-form-item--AdlsBF7.js";import{E as B}from"./index-D0wqu88j.js";import{E as I}from"./index-6OTFNiIi.js";import{E as R}from"./el-tag-C4SnL2z_.js";import{d as P,z as q,G as D,e as d,w as o,j as y,y as E,o as n,s as t,f as F,ar as U,x as m,aa as W,c as j,g as z,A as M,v as G,ac as H}from"./index-CD29OCdJ.js";import{P as L}from"./PageCard-Byh3epid.js";import{a as O,m as S}from"./model-e1J4FzWC.js";import{_ as J}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./vnode-_QM9LlTR.js";import"./castArray-BEiueV6y.js";import"./_baseClone-Blem5BWg.js";import"./raf-DGtHIxe2.js";import"./index-C8FAS7l2.js";import"./index-DpY84JwG.js";import"./el-card-BvbOkvag.js";const K={key:0,class:"model-status"},Q=P({__name:"MergeWeightsView",setup(X){const v=H(),b=G(),s=E(!1),u=y(()=>v.query.model||""),w=y(()=>v.query.method||"lora"),i=E([]),_=y(()=>i.value.find(l=>l.name===u.value)),a=q({model_name:u.value,train_method:w.value,base_model_path:""});async function V(){try{const l=await O();i.value=(l==null?void 0:l.models)||[];const e=i.value.find(p=>p.name===u.value);a.base_model_path=(e==null?void 0:e.base_model_path)||""}catch{}}async function k(){if(!a.model_name||!a.base_model_path){M.warning("缺少模型信息");return}s.value=!0;try{await S({model_name:a.model_name,train_method:a.train_method,base_model_path:a.base_model_path}),M.success("合并成功"),b.push("/model-manage")}catch{}finally{s.value=!1}}function x(){b.back()}return D(V),(l,e)=>{const p=A,f=B,r=N,h=I,C=T,c=R;return n(),d(L,{title:"合并权重"},{default:o(()=>[t(p,{type:"info",closable:!1,"show-icon":"",title:"将 LoRA 适配器权重合并到基座模型,合并后可直接用于推理部署。",style:{"margin-bottom":"20px"}}),t(C,{"label-width":"120px",style:{"max-width":"600px"}},{default:o(()=>[t(r,{label:"模型名称"},{default:o(()=>[t(f,{modelValue:a.model_name,"onUpdate:modelValue":e[0]||(e[0]=g=>a.model_name=g),disabled:""},null,8,["modelValue"])]),_:1}),t(r,{label:"训练方法"},{default:o(()=>[t(f,{"model-value":F(U)[a.train_method]||a.train_method,disabled:""},null,8,["model-value"])]),_:1}),t(r,{label:"基座模型路径"},{default:o(()=>[t(f,{modelValue:a.base_model_path,"onUpdate:modelValue":e[1]||(e[1]=g=>a.base_model_path=g),placeholder:"基座模型路径"},null,8,["modelValue"])]),_:1}),t(r,null,{default:o(()=>[t(h,{type:"primary",loading:s.value,onClick:k},{default:o(()=>[m(W(s.value?"合并中...":"开始合并"),1)]),_:1},8,["loading"]),t(h,{onClick:x},{default:o(()=>[...e[2]||(e[2]=[m("取消",-1)])]),_:1})]),_:1})]),_:1}),_.value?(n(),j("div",K,[_.value.merging?(n(),d(c,{key:0,type:"warning"},{default:o(()=>[...e[3]||(e[3]=[m("合并中",-1)])]),_:1})):_.value.merged?(n(),d(c,{key:1,type:"success"},{default:o(()=>[...e[4]||(e[4]=[m("已合并",-1)])]),_:1})):(n(),d(c,{key:2,type:"info"},{default:o(()=>[...e[5]||(e[5]=[m("未合并",-1)])]),_:1}))])):z("",!0)]),_:1})}}}),pe=J(Q,[["__scopeId","data-v-2e30aa99"]]);export{pe as default};
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
import{E as A}from"./el-alert-GKLeF-ml.js";import{a as N,E as T}from"./el-form-item-DFlzM9g_.js";import{E as B}from"./index-Bl2Fsjov.js";import{E as I}from"./index-COtHB4lx.js";import{E as R}from"./index-DvecKFrV.js";import{d as P,z as q,G as D,e as d,w as t,j as y,y as E,o as n,s as a,f as F,ar as U,x as m,aa as W,c as j,g as z,A as M,v as G,ac as H}from"./index-DS73WiJW.js";/* empty css */import{P as L}from"./PageCard-CXygDeSp.js";import{a as O,m as S}from"./model-BADKeN37.js";import{_ as J}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./vnode-HiBZolW-.js";import"./castArray-PcoOufI5.js";import"./_baseClone--zSegXWR.js";import"./raf-G_xTfKfR.js";import"./index-Cz3aNuv2.js";import"./index-CP7PpuwU.js";import"./el-card-DPafZG_Z.js";const K={key:0,class:"model-status"},Q=P({__name:"MergeWeightsView",setup(X){const v=H(),b=G(),s=E(!1),u=y(()=>v.query.model||""),w=y(()=>v.query.method||"lora"),i=E([]),_=y(()=>i.value.find(l=>l.name===u.value)),o=q({model_name:u.value,train_method:w.value,base_model_path:""});async function V(){try{const l=await O();i.value=(l==null?void 0:l.models)||[];const e=i.value.find(p=>p.name===u.value);o.base_model_path=(e==null?void 0:e.base_model_path)||""}catch{}}async function k(){if(!o.model_name||!o.base_model_path){M.warning("缺少模型信息");return}s.value=!0;try{await S({model_name:o.model_name,train_method:o.train_method,base_model_path:o.base_model_path}),M.success("合并成功"),b.push("/model-manage")}catch{}finally{s.value=!1}}function x(){b.back()}return D(V),(l,e)=>{const p=A,f=B,r=N,h=I,C=T,c=R;return n(),d(L,{title:"合并权重"},{default:t(()=>[a(p,{type:"info",closable:!1,"show-icon":"",title:"将 LoRA 适配器权重合并到基座模型,合并后可直接用于推理部署。",style:{"margin-bottom":"20px"}}),a(C,{"label-width":"120px",style:{"max-width":"600px"}},{default:t(()=>[a(r,{label:"模型名称"},{default:t(()=>[a(f,{modelValue:o.model_name,"onUpdate:modelValue":e[0]||(e[0]=g=>o.model_name=g),disabled:""},null,8,["modelValue"])]),_:1}),a(r,{label:"训练方法"},{default:t(()=>[a(f,{"model-value":F(U)[o.train_method]||o.train_method,disabled:""},null,8,["model-value"])]),_:1}),a(r,{label:"基座模型路径"},{default:t(()=>[a(f,{modelValue:o.base_model_path,"onUpdate:modelValue":e[1]||(e[1]=g=>o.base_model_path=g),placeholder:"基座模型路径"},null,8,["modelValue"])]),_:1}),a(r,null,{default:t(()=>[a(h,{type:"primary",loading:s.value,onClick:k},{default:t(()=>[m(W(s.value?"合并中...":"开始合并"),1)]),_:1},8,["loading"]),a(h,{onClick:x},{default:t(()=>[...e[2]||(e[2]=[m("取消",-1)])]),_:1})]),_:1})]),_:1}),_.value?(n(),j("div",K,[_.value.merging?(n(),d(c,{key:0,type:"warning"},{default:t(()=>[...e[3]||(e[3]=[m("合并中",-1)])]),_:1})):_.value.merged?(n(),d(c,{key:1,type:"success"},{default:t(()=>[...e[4]||(e[4]=[m("已合并",-1)])]),_:1})):(n(),d(c,{key:2,type:"info"},{default:t(()=>[...e[5]||(e[5]=[m("未合并",-1)])]),_:1}))])):z("",!0)]),_:1})}}}),fe=J(Q,[["__scopeId","data-v-2d4f1cb8"]]);export{fe as default};
|
|
||||||
1
frontend/dist/assets/MergeWeightsView-DRlgYEU9.js
vendored
Normal file
1
frontend/dist/assets/MergeWeightsView-DRlgYEU9.js
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import{E as A}from"./el-alert-uXFexXb6.js";import{a as N,E as T}from"./el-form-item-WQOcwC6B.js";import{E as B}from"./index-OPiDM056.js";import{E as I}from"./index-BHESvfAo.js";import{E as R}from"./el-tag-ulIZLhPi.js";import{d as P,z as q,G as D,e as r,w as t,j as y,y as E,o as n,s as a,f as F,ar as U,x as m,aa as W,c as j,g as z,A as M,v as G,ac as H}from"./index-z4H3KYDz.js";import{P as L}from"./PageCard-BWIJ3AEp.js";import{a as O,m as S}from"./model-CIcWT-2e.js";import{_ as J}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./vnode-Cz-7S2If.js";import"./castArray-DuG_gufG.js";import"./_baseClone-DT8DugHo.js";import"./raf-CGFVbd0C.js";import"./index-C6iZvNqO.js";import"./index-CeeJbXQu.js";import"./el-card-DLSyQgTR.js";const K={key:0,class:"model-status"},Q=P({__name:"MergeWeightsView",setup(X){const v=H(),b=G(),s=E(!1),u=y(()=>v.query.model||""),w=y(()=>v.query.method||"lora"),i=E([]),_=y(()=>i.value.find(l=>l.name===u.value)),o=q({model_name:u.value,train_method:w.value,base_model_path:""});async function V(){try{const l=await O();i.value=(l==null?void 0:l.models)||[];const e=i.value.find(p=>p.name===u.value);o.base_model_path=(e==null?void 0:e.base_model_path)||""}catch{}}async function k(){if(!o.model_name||!o.base_model_path){M.warning("缺少模型信息");return}s.value=!0;try{await S({model_name:o.model_name,train_method:o.train_method,base_model_path:o.base_model_path}),M.success("合并成功"),b.push("/model-manage")}catch{}finally{s.value=!1}}function x(){b.back()}return D(V),(l,e)=>{const p=A,f=B,d=N,h=I,C=T,c=R;return n(),r(L,{title:"合并权重"},{default:t(()=>[a(p,{type:"info",closable:!1,"show-icon":"",title:"将 LoRA 适配器权重合并到基座模型,合并后可直接用于推理部署。",style:{"margin-bottom":"20px"}}),a(C,{"label-width":"120px",style:{"max-width":"600px"}},{default:t(()=>[a(d,{label:"模型名称"},{default:t(()=>[a(f,{modelValue:o.model_name,"onUpdate:modelValue":e[0]||(e[0]=g=>o.model_name=g),disabled:""},null,8,["modelValue"])]),_:1}),a(d,{label:"训练方法"},{default:t(()=>[a(f,{"model-value":F(U)[o.train_method]||o.train_method,disabled:""},null,8,["model-value"])]),_:1}),a(d,{label:"基座模型路径"},{default:t(()=>[a(f,{modelValue:o.base_model_path,"onUpdate:modelValue":e[1]||(e[1]=g=>o.base_model_path=g),placeholder:"基座模型路径"},null,8,["modelValue"])]),_:1}),a(d,null,{default:t(()=>[a(h,{type:"primary",loading:s.value,onClick:k},{default:t(()=>[m(W(s.value?"合并中...":"开始合并"),1)]),_:1},8,["loading"]),a(h,{onClick:x},{default:t(()=>[...e[2]||(e[2]=[m("取消",-1)])]),_:1})]),_:1})]),_:1}),_.value?(n(),j("div",K,[_.value.merging?(n(),r(c,{key:0,type:"warning"},{default:t(()=>[...e[3]||(e[3]=[m("合并中",-1)])]),_:1})):_.value.merged?(n(),r(c,{key:1,type:"success"},{default:t(()=>[...e[4]||(e[4]=[m("已合并",-1)])]),_:1})):(n(),r(c,{key:2,type:"info"},{default:t(()=>[...e[5]||(e[5]=[m("未合并",-1)])]),_:1}))])):z("",!0)]),_:1})}}}),pe=J(Q,[["__scopeId","data-v-2d4f1cb8"]]);export{pe as default};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
|||||||
@charset "UTF-8";.capsule-tabs[data-v-f0c58d46]{display:flex;background:#f1f5f9;padding:3px;border-radius:8px;gap:2px;border:1px solid #e2e8f0}.capsule-tab-item[data-v-f0c58d46]{border:0;background:transparent;padding:6px 20px;font-size:13px;font-weight:500;color:#64748b;cursor:pointer;border-radius:6px;transition:all .2s ease;outline:none}.capsule-tab-item[data-v-f0c58d46]:hover{color:#1e293b}.capsule-tab-item.active[data-v-f0c58d46]{background:#fff;color:#4f46e5;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a;font-weight:600}.action-buttons[data-v-f0c58d46]{display:flex;justify-content:center;gap:8px}
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
import{E as o}from"./el-tag-C4SnL2z_.js";import{d as p,e as n,w as r,j as c,o as l,x as u,aa as m}from"./index-CD29OCdJ.js";import{s as _,a as i}from"./status-Dl1fykxa.js";const T=p({__name:"ModelStatusTag",props:{status:{}},setup(e){const t=e,a=c(()=>({text:i(t.status),type:_(t.status)}));return(f,g)=>{const s=o;return l(),n(s,{type:a.value.type,size:"small",effect:"light"},{default:r(()=>[u(m(a.value.text),1)]),_:1},8,["type"])}}});export{T as _};
|
import{E as o}from"./el-tag-ulIZLhPi.js";import{d as p,e as n,w as r,j as c,o as l,x as u,aa as m}from"./index-z4H3KYDz.js";import{s as _,a as i}from"./status-Dl1fykxa.js";const T=p({__name:"ModelStatusTag",props:{status:{}},setup(e){const t=e,a=c(()=>({text:i(t.status),type:_(t.status)}));return(f,g)=>{const s=o;return l(),n(s,{type:a.value.type,size:"small",effect:"light"},{default:r(()=>[u(m(a.value.text),1)]),_:1},8,["type"])}}});export{T as _};
|
||||||
@@ -1 +0,0 @@
|
|||||||
import{E as r}from"./index-DvecKFrV.js";import{d as o,e as c,w as p,j as u,o as i,x as d,aa as l}from"./index-DS73WiJW.js";/* empty css */const m=o({__name:"ModelStatusTag",props:{status:{}},setup(a){const s=a,t=u(()=>{const e=s.status||"";switch(e){case"running":case"ready":case"loaded":return{text:e==="ready"||e==="loaded"?"已就绪":"运行中",type:"success"};case"pending":return{text:"等待中",type:"info"};case"failed":return{text:"失败",type:"danger"};case"starting":case"loading":return{text:"加载中",type:"warning"};case"completed":return{text:"已完成",type:"success"};case"stopped":return{text:"已停止",type:"info"};default:return{text:e||"未知",type:"info"}}});return(e,f)=>{const n=r;return i(),c(n,{type:t.value.type,size:"small",effect:"light"},{default:p(()=>[d(l(t.value.text),1)]),_:1},8,["type"])}}});export{m as _};
|
|
||||||
@@ -1 +1 @@
|
|||||||
import{E as i}from"./el-card-DPafZG_Z.js";import{d as n,e as u,w as p,o as a,c as s,h as o,g as r,q as d,aa as l}from"./index-DS73WiJW.js";import{_}from"./_plugin-vue_export-helper-DlAUqK2U.js";const h={key:0,class:"page-card-header"},m={class:"page-card-title"},f={key:0,class:"page-card-subtitle"},g={key:0,class:"page-card-extra"},v={class:"page-card-body"},b=n({__name:"PageCard",props:{title:{},subtitle:{},bordered:{type:Boolean,default:!1}},setup(t){return(e,k)=>{const c=i;return a(),u(c,{shadow:"never",class:"page-card"},{default:p(()=>[t.title||e.$slots.header?(a(),s("div",h,[o(e.$slots,"header",{},()=>[d("div",null,[d("h2",m,l(t.title),1),t.subtitle?(a(),s("p",f,l(t.subtitle),1)):r("",!0)])],!0),e.$slots.extra?(a(),s("div",g,[o(e.$slots,"extra",{},void 0,!0)])):r("",!0)])):r("",!0),d("div",v,[o(e.$slots,"default",{},void 0,!0)])]),_:3})}}}),$=_(b,[["__scopeId","data-v-4478be23"]]);export{$ as P};
|
import{E as i}from"./el-card-DLSyQgTR.js";import{d as n,e as u,w as p,o as a,c as s,h as o,g as r,q as d,aa as l}from"./index-z4H3KYDz.js";import{_}from"./_plugin-vue_export-helper-DlAUqK2U.js";const h={key:0,class:"page-card-header"},m={class:"page-card-title"},f={key:0,class:"page-card-subtitle"},g={key:0,class:"page-card-extra"},v={class:"page-card-body"},b=n({__name:"PageCard",props:{title:{},subtitle:{},bordered:{type:Boolean,default:!1}},setup(t){return(e,k)=>{const c=i;return a(),u(c,{shadow:"never",class:"page-card"},{default:p(()=>[t.title||e.$slots.header?(a(),s("div",h,[o(e.$slots,"header",{},()=>[d("div",null,[d("h2",m,l(t.title),1),t.subtitle?(a(),s("p",f,l(t.subtitle),1)):r("",!0)])],!0),e.$slots.extra?(a(),s("div",g,[o(e.$slots,"extra",{},void 0,!0)])):r("",!0)])):r("",!0),d("div",v,[o(e.$slots,"default",{},void 0,!0)])]),_:3})}}}),$=_(b,[["__scopeId","data-v-4478be23"]]);export{$ as P};
|
||||||
7
frontend/dist/assets/PageCard-Byh3epid.js
vendored
7
frontend/dist/assets/PageCard-Byh3epid.js
vendored
@@ -1,7 +0,0 @@
|
|||||||
<<<<<<<< HEAD:frontend/dist/assets/PageCard-Byh3epid.js
|
|
||||||
import{E as i}from"./el-card-BvbOkvag.js";import{d as n,e as u,w as p,o as a,c as s,h as o,g as r,q as d,aa as l}from"./index-CD29OCdJ.js";import{_}from"./_plugin-vue_export-helper-DlAUqK2U.js";const h={key:0,class:"page-card-header"},m={class:"page-card-title"},f={key:0,class:"page-card-subtitle"},g={key:0,class:"page-card-extra"},v={class:"page-card-body"},b=n({__name:"PageCard",props:{title:{},subtitle:{},bordered:{type:Boolean,default:!1}},setup(t){return(e,k)=>{const c=i;return a(),u(c,{shadow:"never",class:"page-card"},{default:p(()=>[t.title||e.$slots.header?(a(),s("div",h,[o(e.$slots,"header",{},()=>[d("div",null,[d("h2",m,l(t.title),1),t.subtitle?(a(),s("p",f,l(t.subtitle),1)):r("",!0)])],!0),e.$slots.extra?(a(),s("div",g,[o(e.$slots,"extra",{},void 0,!0)])):r("",!0)])):r("",!0),d("div",v,[o(e.$slots,"default",{},void 0,!0)])]),_:3})}}}),$=_(b,[["__scopeId","data-v-05c37e8a"]]);export{$ as P};
|
|
||||||
|||||||| parent of 8bd93b0 (build(frontend): 更新生产构建产物):frontend/dist/assets/PageCard-CV3p14-x.js
|
|
||||||
import{E as i}from"./el-card-D86TXgMv.js";import{d as n,e as u,w as p,o as a,c as s,h as o,g as r,q as d,aa as l}from"./index-Ds9AETjS.js";import{_}from"./_plugin-vue_export-helper-DlAUqK2U.js";const h={key:0,class:"page-card-header"},m={class:"page-card-title"},f={key:0,class:"page-card-subtitle"},g={key:0,class:"page-card-extra"},v={class:"page-card-body"},b=n({__name:"PageCard",props:{title:{},subtitle:{},bordered:{type:Boolean,default:!1}},setup(t){return(e,k)=>{const c=i;return a(),u(c,{shadow:"never",class:"page-card"},{default:p(()=>[t.title||e.$slots.header?(a(),s("div",h,[o(e.$slots,"header",{},()=>[d("div",null,[d("h2",m,l(t.title),1),t.subtitle?(a(),s("p",f,l(t.subtitle),1)):r("",!0)])],!0),e.$slots.extra?(a(),s("div",g,[o(e.$slots,"extra",{},void 0,!0)])):r("",!0)])):r("",!0),d("div",v,[o(e.$slots,"default",{},void 0,!0)])]),_:3})}}}),$=_(b,[["__scopeId","data-v-05c37e8a"]]);export{$ as P};
|
|
||||||
========
|
|
||||||
import{E as i}from"./el-card-BsCFVTSD.js";import{d as n,e as u,w as p,o as a,c as s,h as o,g as r,q as d,aa as l}from"./index-CxbBjZKo.js";import{_}from"./_plugin-vue_export-helper-DlAUqK2U.js";const h={key:0,class:"page-card-header"},m={class:"page-card-title"},f={key:0,class:"page-card-subtitle"},g={key:0,class:"page-card-extra"},v={class:"page-card-body"},b=n({__name:"PageCard",props:{title:{},subtitle:{},bordered:{type:Boolean,default:!1}},setup(t){return(e,k)=>{const c=i;return a(),u(c,{shadow:"never",class:"page-card"},{default:p(()=>[t.title||e.$slots.header?(a(),s("div",h,[o(e.$slots,"header",{},()=>[d("div",null,[d("h2",m,l(t.title),1),t.subtitle?(a(),s("p",f,l(t.subtitle),1)):r("",!0)])],!0),e.$slots.extra?(a(),s("div",g,[o(e.$slots,"extra",{},void 0,!0)])):r("",!0)])):r("",!0),d("div",v,[o(e.$slots,"default",{},void 0,!0)])]),_:3})}}}),$=_(b,[["__scopeId","data-v-4478be23"]]);export{$ as P};
|
|
||||||
>>>>>>>> 8bd93b0 (build(frontend): 更新生产构建产物):frontend/dist/assets/PageCard-CC9cofwx.js
|
|
||||||
@@ -1 +1 @@
|
|||||||
import{_ as o}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as t,c as n,q as s}from"./index-DS73WiJW.js";const r={},a={class:"simple-page"};function c(i,e){return t(),n("section",a,[...e[0]||(e[0]=[s("h1",null,"无权访问",-1),s("p",null,"当前账号没有访问该页面的权限,请联系管理员调整角色或页面权限。",-1)])])}const d=o(r,[["render",c],["__scopeId","data-v-9fad40f6"]]);export{d as default};
|
import{_ as o}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as t,c as n,q as s}from"./index-z4H3KYDz.js";const r={},a={class:"simple-page"};function c(i,e){return t(),n("section",a,[...e[0]||(e[0]=[s("h1",null,"无权访问",-1),s("p",null,"当前账号没有访问该页面的权限,请联系管理员调整角色或页面权限。",-1)])])}const d=o(r,[["render",c],["__scopeId","data-v-9fad40f6"]]);export{d as default};
|
||||||
@@ -1 +0,0 @@
|
|||||||
import{_ as o}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as c,c as t,q as s}from"./index-CD29OCdJ.js";const n={},r={class:"simple-page"};function a(i,e){return c(),t("section",r,[...e[0]||(e[0]=[s("h1",null,"无权访问",-1),s("p",null,"当前账号没有访问该页面的权限,请联系管理员调整角色或页面权限。",-1)])])}const p=o(n,[["render",a],["__scopeId","data-v-cc370c43"]]);export{p as default};
|
|
||||||
@@ -1 +1 @@
|
|||||||
import{a as y,E as h}from"./el-form-item-DFlzM9g_.js";import{E as B}from"./index-Bl2Fsjov.js";import{E as R}from"./index-COtHB4lx.js";import{d as S,G as I,e as N,w as l,j as g,z as O,o as m,s as o,q as v,c as x,ad as U,n as V,f as q,bx as F,M as L,x as b,aa as M,A as w,y as j,v as z,ac as D}from"./index-DS73WiJW.js";import{P}from"./PageCard-CXygDeSp.js";import{u as A}from"./tools-C1HkV1oU.js";import{_ as G}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-PcoOufI5.js";import"./_baseClone--zSegXWR.js";import"./raf-G_xTfKfR.js";import"./index-Cz3aNuv2.js";import"./index-CP7PpuwU.js";import"./el-card-DPafZG_Z.js";const $={class:"icon-grid"},H=["onClick"],J=S({__name:"ToolCreateView",setup(K){const d=D(),p=z(),n=A(),i=j(),s=g(()=>d.params.id!=null),c=g(()=>s.value?n.getTool(d.params.id):void 0),e=O({id:"",name:"",description:"",url:"",icon:"fa-cog"}),C={name:[{required:!0,message:"请输入工具名称",trigger:"blur"},{max:30,message:"不超过 30 字符",trigger:"blur"}],url:[{required:!0,message:"请输入跳转地址",trigger:"blur"}]};function k(){i.value&&i.value.validate(f=>{f&&(s.value?(n.updateTool(e.id,{...e}),w.success("更新成功")):(n.addTool({...e,id:"custom_"+Date.now()}),w.success("添加成功")),p.push("/tools"))})}function E(){p.back()}return I(()=>{c.value&&Object.assign(e,c.value)}),(f,a)=>{const u=B,r=y,_=R,T=h;return m(),N(P,{title:s.value?"编辑自定义工具":"添加自定义工具"},{default:l(()=>[o(T,{ref_key:"formRef",ref:i,model:e,rules:C,"label-width":"100px",style:{"max-width":"600px"}},{default:l(()=>[o(r,{label:"工具名称",prop:"name"},{default:l(()=>[o(u,{modelValue:e.name,"onUpdate:modelValue":a[0]||(a[0]=t=>e.name=t),placeholder:"请输入工具名称",maxlength:"30","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(r,{label:"工具描述"},{default:l(()=>[o(u,{modelValue:e.description,"onUpdate:modelValue":a[1]||(a[1]=t=>e.description=t),type:"textarea",rows:2,maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(r,{label:"跳转地址",prop:"url"},{default:l(()=>[o(u,{modelValue:e.url,"onUpdate:modelValue":a[2]||(a[2]=t=>e.url=t),placeholder:"相对路径或完整 URL"},null,8,["modelValue"])]),_:1}),o(r,{label:"图标"},{default:l(()=>[v("div",$,[(m(!0),x(L,null,U(q(F),t=>(m(),x("div",{key:t,class:V(["icon-option",{selected:e.icon===t}]),onClick:Q=>e.icon=t},[v("i",{class:V(["fa",t])},null,2)],10,H))),128))])]),_:1}),o(r,null,{default:l(()=>[o(_,{type:"primary",onClick:k},{default:l(()=>[b(M(s.value?"保存":"添加"),1)]),_:1}),o(_,{onClick:E},{default:l(()=>[...a[3]||(a[3]=[b("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])}}}),ue=G(J,[["__scopeId","data-v-249def81"]]);export{ue as default};
|
import{a as y,E as h}from"./el-form-item-WQOcwC6B.js";import{E as B}from"./index-OPiDM056.js";import{E as R}from"./index-BHESvfAo.js";import{d as S,G as I,e as N,w as l,j as g,z as O,o as m,s as o,q as v,c as x,ad as U,n as V,f as q,bx as F,M as L,x as b,aa as M,A as w,y as j,v as z,ac as D}from"./index-z4H3KYDz.js";import{P}from"./PageCard-BWIJ3AEp.js";import{u as A}from"./tools-BNwVjuNe.js";import{_ as G}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-DuG_gufG.js";import"./_baseClone-DT8DugHo.js";import"./raf-CGFVbd0C.js";import"./index-C6iZvNqO.js";import"./index-CeeJbXQu.js";import"./el-card-DLSyQgTR.js";const $={class:"icon-grid"},H=["onClick"],J=S({__name:"ToolCreateView",setup(K){const d=D(),p=z(),n=A(),i=j(),s=g(()=>d.params.id!=null),c=g(()=>s.value?n.getTool(d.params.id):void 0),e=O({id:"",name:"",description:"",url:"",icon:"fa-cog"}),C={name:[{required:!0,message:"请输入工具名称",trigger:"blur"},{max:30,message:"不超过 30 字符",trigger:"blur"}],url:[{required:!0,message:"请输入跳转地址",trigger:"blur"}]};function k(){i.value&&i.value.validate(f=>{f&&(s.value?(n.updateTool(e.id,{...e}),w.success("更新成功")):(n.addTool({...e,id:"custom_"+Date.now()}),w.success("添加成功")),p.push("/tools"))})}function E(){p.back()}return I(()=>{c.value&&Object.assign(e,c.value)}),(f,a)=>{const u=B,r=y,_=R,T=h;return m(),N(P,{title:s.value?"编辑自定义工具":"添加自定义工具"},{default:l(()=>[o(T,{ref_key:"formRef",ref:i,model:e,rules:C,"label-width":"100px",style:{"max-width":"600px"}},{default:l(()=>[o(r,{label:"工具名称",prop:"name"},{default:l(()=>[o(u,{modelValue:e.name,"onUpdate:modelValue":a[0]||(a[0]=t=>e.name=t),placeholder:"请输入工具名称",maxlength:"30","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(r,{label:"工具描述"},{default:l(()=>[o(u,{modelValue:e.description,"onUpdate:modelValue":a[1]||(a[1]=t=>e.description=t),type:"textarea",rows:2,maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(r,{label:"跳转地址",prop:"url"},{default:l(()=>[o(u,{modelValue:e.url,"onUpdate:modelValue":a[2]||(a[2]=t=>e.url=t),placeholder:"相对路径或完整 URL"},null,8,["modelValue"])]),_:1}),o(r,{label:"图标"},{default:l(()=>[v("div",$,[(m(!0),x(L,null,U(q(F),t=>(m(),x("div",{key:t,class:V(["icon-option",{selected:e.icon===t}]),onClick:Q=>e.icon=t},[v("i",{class:V(["fa",t])},null,2)],10,H))),128))])]),_:1}),o(r,null,{default:l(()=>[o(_,{type:"primary",onClick:k},{default:l(()=>[b(M(s.value?"保存":"添加"),1)]),_:1}),o(_,{onClick:E},{default:l(()=>[...a[3]||(a[3]=[b("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])}}}),ue=G(J,[["__scopeId","data-v-249def81"]]);export{ue as default};
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
<<<<<<<< HEAD:frontend/dist/assets/ToolCreateView-lcYDZ0-7.js
|
|
||||||
import{a as y,E as h}from"./el-form-item--AdlsBF7.js";import{E as B}from"./index-D0wqu88j.js";import{E as R}from"./index-6OTFNiIi.js";import{d as S,G as I,e as N,w as l,j as g,z as O,o as m,s as o,q as v,c as x,ad as U,n as V,f as q,bx as F,M as L,x as b,aa as M,A as w,y as j,v as z,ac as D}from"./index-CD29OCdJ.js";import{P}from"./PageCard-Byh3epid.js";import{u as A}from"./tools-BtFo8ZQX.js";import{_ as G}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-BEiueV6y.js";import"./_baseClone-Blem5BWg.js";import"./raf-DGtHIxe2.js";import"./index-C8FAS7l2.js";import"./index-DpY84JwG.js";import"./el-card-BvbOkvag.js";const $={class:"icon-grid"},H=["onClick"],J=S({__name:"ToolCreateView",setup(K){const d=D(),p=z(),n=A(),i=j(),s=g(()=>d.params.id!=null),c=g(()=>s.value?n.getTool(d.params.id):void 0),e=O({id:"",name:"",description:"",url:"",icon:"fa-cog"}),C={name:[{required:!0,message:"请输入工具名称",trigger:"blur"},{max:30,message:"不超过 30 字符",trigger:"blur"}],url:[{required:!0,message:"请输入跳转地址",trigger:"blur"}]};function k(){i.value&&i.value.validate(f=>{f&&(s.value?(n.updateTool(e.id,{...e}),w.success("更新成功")):(n.addTool({...e,id:"custom_"+Date.now()}),w.success("添加成功")),p.push("/tools"))})}function E(){p.back()}return I(()=>{c.value&&Object.assign(e,c.value)}),(f,a)=>{const u=B,r=y,_=R,T=h;return m(),N(P,{title:s.value?"编辑自定义工具":"添加自定义工具"},{default:l(()=>[o(T,{ref_key:"formRef",ref:i,model:e,rules:C,"label-width":"100px",style:{"max-width":"600px"}},{default:l(()=>[o(r,{label:"工具名称",prop:"name"},{default:l(()=>[o(u,{modelValue:e.name,"onUpdate:modelValue":a[0]||(a[0]=t=>e.name=t),placeholder:"请输入工具名称",maxlength:"30","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(r,{label:"工具描述"},{default:l(()=>[o(u,{modelValue:e.description,"onUpdate:modelValue":a[1]||(a[1]=t=>e.description=t),type:"textarea",rows:2,maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(r,{label:"跳转地址",prop:"url"},{default:l(()=>[o(u,{modelValue:e.url,"onUpdate:modelValue":a[2]||(a[2]=t=>e.url=t),placeholder:"相对路径或完整 URL"},null,8,["modelValue"])]),_:1}),o(r,{label:"图标"},{default:l(()=>[v("div",$,[(m(!0),x(L,null,U(q(F),t=>(m(),x("div",{key:t,class:V(["icon-option",{selected:e.icon===t}]),onClick:Q=>e.icon=t},[v("i",{class:V(["fa",t])},null,2)],10,H))),128))])]),_:1}),o(r,null,{default:l(()=>[o(_,{type:"primary",onClick:k},{default:l(()=>[b(M(s.value?"保存":"添加"),1)]),_:1}),o(_,{onClick:E},{default:l(()=>[...a[3]||(a[3]=[b("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])}}}),ue=G(J,[["__scopeId","data-v-9116c5de"]]);export{ue as default};
|
|
||||||
|||||||| parent of 8bd93b0 (build(frontend): 更新生产构建产物):frontend/dist/assets/ToolCreateView-BGgtRypT.js
|
|
||||||
import{a as y,E as h}from"./el-form-item-Bq0n_p5a.js";import{E as B}from"./index-h5FkzAP_.js";import{E as R}from"./index-BNsCyG4A.js";import{d as S,G as I,e as N,w as l,j as g,z as O,o as m,s as o,q as v,c as x,ad as U,n as V,f as q,bx as F,M as L,x as b,aa as M,A as w,y as j,v as z,ac as D}from"./index-Ds9AETjS.js";import{P}from"./PageCard-CV3p14-x.js";import{u as A}from"./tools-s3Et6p-2.js";import{_ as G}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-BWI4UxBy.js";import"./_baseClone-CZxxnGCv.js";import"./raf-zQ00nuMI.js";import"./index-B0if-AHo.js";import"./index-BSbCLbaz.js";import"./el-card-D86TXgMv.js";const $={class:"icon-grid"},H=["onClick"],J=S({__name:"ToolCreateView",setup(K){const d=D(),p=z(),n=A(),i=j(),s=g(()=>d.params.id!=null),c=g(()=>s.value?n.getTool(d.params.id):void 0),e=O({id:"",name:"",description:"",url:"",icon:"fa-cog"}),C={name:[{required:!0,message:"请输入工具名称",trigger:"blur"},{max:30,message:"不超过 30 字符",trigger:"blur"}],url:[{required:!0,message:"请输入跳转地址",trigger:"blur"}]};function k(){i.value&&i.value.validate(f=>{f&&(s.value?(n.updateTool(e.id,{...e}),w.success("更新成功")):(n.addTool({...e,id:"custom_"+Date.now()}),w.success("添加成功")),p.push("/tools"))})}function E(){p.back()}return I(()=>{c.value&&Object.assign(e,c.value)}),(f,a)=>{const u=B,r=y,_=R,T=h;return m(),N(P,{title:s.value?"编辑自定义工具":"添加自定义工具"},{default:l(()=>[o(T,{ref_key:"formRef",ref:i,model:e,rules:C,"label-width":"100px",style:{"max-width":"600px"}},{default:l(()=>[o(r,{label:"工具名称",prop:"name"},{default:l(()=>[o(u,{modelValue:e.name,"onUpdate:modelValue":a[0]||(a[0]=t=>e.name=t),placeholder:"请输入工具名称",maxlength:"30","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(r,{label:"工具描述"},{default:l(()=>[o(u,{modelValue:e.description,"onUpdate:modelValue":a[1]||(a[1]=t=>e.description=t),type:"textarea",rows:2,maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(r,{label:"跳转地址",prop:"url"},{default:l(()=>[o(u,{modelValue:e.url,"onUpdate:modelValue":a[2]||(a[2]=t=>e.url=t),placeholder:"相对路径或完整 URL"},null,8,["modelValue"])]),_:1}),o(r,{label:"图标"},{default:l(()=>[v("div",$,[(m(!0),x(L,null,U(q(F),t=>(m(),x("div",{key:t,class:V(["icon-option",{selected:e.icon===t}]),onClick:Q=>e.icon=t},[v("i",{class:V(["fa",t])},null,2)],10,H))),128))])]),_:1}),o(r,null,{default:l(()=>[o(_,{type:"primary",onClick:k},{default:l(()=>[b(M(s.value?"保存":"添加"),1)]),_:1}),o(_,{onClick:E},{default:l(()=>[...a[3]||(a[3]=[b("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])}}}),ue=G(J,[["__scopeId","data-v-9116c5de"]]);export{ue as default};
|
|
||||||
========
|
|
||||||
import{a as y,E as h}from"./el-form-item-BA3ZlfqF.js";import{E as B}from"./index-zJ9bqPrh.js";import{E as R}from"./index-D23K2h6y.js";import{d as S,G as I,e as N,w as l,j as g,z as O,o as m,s as o,q as v,c as x,ad as U,n as V,f as q,bx as F,M as L,x as b,aa as M,A as w,y as j,v as z,ac as D}from"./index-CxbBjZKo.js";import{P}from"./PageCard-CC9cofwx.js";import{u as A}from"./tools-DNEgEZeS.js";import{_ as G}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./castArray-CwVgzdTt.js";import"./_baseClone-B6d4qZbo.js";import"./raf-Bjl8yy5U.js";import"./index-C4wGR5UT.js";import"./index-DxP0p4ch.js";import"./el-card-BsCFVTSD.js";const $={class:"icon-grid"},H=["onClick"],J=S({__name:"ToolCreateView",setup(K){const d=D(),p=z(),n=A(),i=j(),s=g(()=>d.params.id!=null),c=g(()=>s.value?n.getTool(d.params.id):void 0),e=O({id:"",name:"",description:"",url:"",icon:"fa-cog"}),C={name:[{required:!0,message:"请输入工具名称",trigger:"blur"},{max:30,message:"不超过 30 字符",trigger:"blur"}],url:[{required:!0,message:"请输入跳转地址",trigger:"blur"}]};function k(){i.value&&i.value.validate(f=>{f&&(s.value?(n.updateTool(e.id,{...e}),w.success("更新成功")):(n.addTool({...e,id:"custom_"+Date.now()}),w.success("添加成功")),p.push("/tools"))})}function E(){p.back()}return I(()=>{c.value&&Object.assign(e,c.value)}),(f,a)=>{const u=B,r=y,_=R,T=h;return m(),N(P,{title:s.value?"编辑自定义工具":"添加自定义工具"},{default:l(()=>[o(T,{ref_key:"formRef",ref:i,model:e,rules:C,"label-width":"100px",style:{"max-width":"600px"}},{default:l(()=>[o(r,{label:"工具名称",prop:"name"},{default:l(()=>[o(u,{modelValue:e.name,"onUpdate:modelValue":a[0]||(a[0]=t=>e.name=t),placeholder:"请输入工具名称",maxlength:"30","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(r,{label:"工具描述"},{default:l(()=>[o(u,{modelValue:e.description,"onUpdate:modelValue":a[1]||(a[1]=t=>e.description=t),type:"textarea",rows:2,maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),o(r,{label:"跳转地址",prop:"url"},{default:l(()=>[o(u,{modelValue:e.url,"onUpdate:modelValue":a[2]||(a[2]=t=>e.url=t),placeholder:"相对路径或完整 URL"},null,8,["modelValue"])]),_:1}),o(r,{label:"图标"},{default:l(()=>[v("div",$,[(m(!0),x(L,null,U(q(F),t=>(m(),x("div",{key:t,class:V(["icon-option",{selected:e.icon===t}]),onClick:Q=>e.icon=t},[v("i",{class:V(["fa",t])},null,2)],10,H))),128))])]),_:1}),o(r,null,{default:l(()=>[o(_,{type:"primary",onClick:k},{default:l(()=>[b(M(s.value?"保存":"添加"),1)]),_:1}),o(_,{onClick:E},{default:l(()=>[...a[3]||(a[3]=[b("取消",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},8,["title"])}}}),ue=G(J,[["__scopeId","data-v-249def81"]]);export{ue as default};
|
|
||||||
>>>>>>>> 8bd93b0 (build(frontend): 更新生产构建产物):frontend/dist/assets/ToolCreateView-CsnoBuBA.js
|
|
||||||
File diff suppressed because one or more lines are too long
7
frontend/dist/assets/ToolsView-DdacMfUU.js
vendored
7
frontend/dist/assets/ToolsView-DdacMfUU.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user