Files
ai-web/resources/views/admin/models/form.blade.php
jiangdong.cheng a795b2c896
Some checks failed
Tests / PHP 8.2 (push) Has been cancelled
Tests / PHP 8.3 (push) Has been cancelled
Tests / PHP 8.4 (push) Has been cancelled
优化功能
2026-02-12 17:10:36 +08:00

209 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@extends('layouts.admin')
@section('title', $item->exists ? '编辑模型' : '新建模型')
@section('head')
@include('admin.partials.modern-form-head')
@endsection
@section('content')
<div class="card modern-form-card">
<div class="card-header d-flex justify-content-between align-items-center">
<h3 class="card-title mb-0">{{ $item->exists ? '编辑模型' : '新建模型' }}</h3>
@if($item->exists)
<div class="d-flex gap-2">
<form method="post" action="{{ route('admin.models.publish', $item) }}">
@csrf
<button class="btn btn-sm btn-success" type="submit">发布</button>
</form>
<form method="post" action="{{ route('admin.models.mark-stale', $item) }}">
@csrf
<button class="btn btn-sm btn-warning" type="submit">标记失效</button>
</form>
</div>
@endif
</div>
<div class="card-body">
<p class="required-tip"><span class="required-star">*</span> 为必填项</p>
<form method="post" action="{{ $submitRoute }}" class="row g-3">
@csrf
@if($method !== 'POST') @method($method) @endif
<div class="col-12">
<section class="form-section">
<h4 class="form-section-title">基础信息</h4>
<p class="form-section-subtitle">维护模型的核心参数与展示信息,用于榜单、详情和筛选。</p>
<div class="row g-3">
<div class="col-md-6 field-required">
<label class="form-label">模型名称<span class="required-star">*</span></label>
<input class="form-control" name="name" value="{{ old('name', $item->name) }}" required>
</div>
<div class="col-md-6 field-required">
<label class="form-label">Slug<span class="required-star">*</span></label>
<input class="form-control" name="slug" value="{{ old('slug', $item->slug) }}" required>
<div class="form-hint">默认自动生成,可按品牌规范调整。</div>
</div>
<div class="col-md-4">
<label class="form-label">供应商</label>
<input class="form-control" name="provider" value="{{ old('provider', $item->provider) }}" placeholder="OpenAI / Anthropic">
</div>
<div class="col-md-4 field-required">
<label class="form-label">模态<span class="required-star">*</span></label>
<input class="form-control" name="modality" value="{{ old('modality', $item->modality ?: 'text') }}" required placeholder="text / multimodal">
</div>
<div class="col-md-4 field-required">
<label class="form-label">部署方式<span class="required-star">*</span></label>
<input class="form-control" name="deployment_mode" value="{{ old('deployment_mode', $item->deployment_mode ?: 'api') }}" required placeholder="api / local / cloud">
</div>
<div class="col-md-3">
<label class="form-label">上下文长度</label>
<input class="form-control" name="context_window" value="{{ old('context_window', $item->context_window) }}" type="number" min="1" placeholder="如 128000">
</div>
<div class="col-md-3">
<label class="form-label">输入价格</label>
<input class="form-control" name="price_input" value="{{ old('price_input', $item->price_input) }}" type="number" step="0.000001" min="0">
</div>
<div class="col-md-3">
<label class="form-label">输出价格</label>
<input class="form-control" name="price_output" value="{{ old('price_output', $item->price_output) }}" type="number" step="0.000001" min="0">
</div>
<div class="col-md-3 field-required">
<label class="form-label">状态<span class="required-star">*</span></label>
<select class="form-select" name="status" required>
@foreach($statusOptions as $status)
<option value="{{ $status->value }}" @selected(old('status', $item->status?->value) === $status->value)>{{ $status->value }}</option>
@endforeach
</select>
</div>
<div class="col-md-4">
<label class="form-label">分类</label>
<select class="form-select" name="category_id">
<option value="">未分类</option>
@foreach($categories as $category)
<option value="{{ $category->id }}" @selected((string) old('category_id', $item->category_id) === (string) $category->id)>{{ $category->name }}</option>
@endforeach
</select>
</div>
<div class="col-md-4">
<label class="form-label">来源</label>
<select class="form-select" name="source_id">
<option value=""></option>
@foreach($sources as $source)
<option value="{{ $source->id }}" @selected((string) old('source_id', $item->source_id) === (string) $source->id)>{{ $source->name }}</option>
@endforeach
</select>
</div>
<div class="col-md-4 field-required">
<label class="form-label">来源等级<span class="required-star">*</span></label>
<select class="form-select" name="source_level" required>
@foreach(['official' => '官方', 'trusted_media' => '可信媒体', 'community' => '社区', 'unknown' => '未知'] as $value => $label)
<option value="{{ $value }}" @selected(old('source_level', $item->source_level?->value ?? 'unknown') === $value)>{{ $label }}</option>
@endforeach
</select>
</div>
<div class="col-md-4 field-required">
<label class="form-label">能力分<span class="required-star">*</span></label>
<input class="form-control" name="effectiveness_score" value="{{ old('effectiveness_score', $item->effectiveness_score ?: 60) }}" required type="number" min="0" max="100">
</div>
<div class="col-md-4 field-required">
<label class="form-label">价格分<span class="required-star">*</span></label>
<input class="form-control" name="price_score" value="{{ old('price_score', $item->price_score ?: 60) }}" required type="number" min="0" max="100">
</div>
<div class="col-md-4 field-required">
<label class="form-label">速度分<span class="required-star">*</span></label>
<input class="form-control" name="speed_score" value="{{ old('speed_score', $item->speed_score ?: 60) }}" required type="number" min="0" max="100">
</div>
<div class="col-md-6">
<label class="form-label">发布时间</label>
<input class="form-control" type="datetime-local" name="published_at" value="{{ old('published_at', optional($item->published_at)->format('Y-m-d\TH:i')) }}">
</div>
<div class="col-md-6">
<label class="form-label">最后校验时间</label>
<input class="form-control" type="datetime-local" name="last_verified_at" value="{{ old('last_verified_at', optional($item->last_verified_at)->format('Y-m-d\TH:i')) }}">
</div>
<div class="col-md-8 field-required">
<label class="form-label">摘要<span class="required-star">*</span></label>
<textarea class="form-control" name="summary" rows="2" required>{{ old('summary', $item->summary) }}</textarea>
</div>
<div class="col-md-4 d-flex align-items-end">
<label class="form-check">
<input class="form-check-input" type="checkbox" name="is_stale" value="1" @checked(old('is_stale', $item->is_stale))>
<span class="form-check-label">标记失效</span>
</label>
</div>
</div>
</section>
</div>
<div class="col-12">
<section class="form-section">
<h4 class="form-section-title">内容编辑</h4>
<p class="form-section-subtitle">可补充模型能力、限制与使用建议,支持 Markdown 实时预览。</p>
@include('admin.partials.markdown-editor', [
'field' => 'description',
'value' => $item->description,
'label' => '模型详情Markdown',
'required' => false,
'rows' => 16,
'previewId' => 'model-description-preview',
'hint' => '建议包含适用场景、输入输出限制、定价说明。',
])
</section>
</div>
<div class="col-12">
<details class="advanced-panel">
<summary>高级设置SEO 与补充字段)</summary>
<div class="row g-3 mt-2">
<div class="col-md-6">
<label class="form-label">失效说明</label>
<textarea class="form-control" name="stale_note" rows="2">{{ old('stale_note', $item->stale_note) }}</textarea>
</div>
<div class="col-md-6">
<label class="form-label">SEO 标题</label>
<input class="form-control" name="seo_title" value="{{ old('seo_title', $item->seo_title) }}">
</div>
<div class="col-md-6">
<label class="form-label">SEO 描述</label>
<input class="form-control" name="seo_description" value="{{ old('seo_description', $item->seo_description) }}">
</div>
<div class="col-md-6">
<label class="form-label">H1</label>
<input class="form-control" name="h1" value="{{ old('h1', $item->h1) }}">
</div>
<div class="col-md-6">
<label class="form-label">Canonical URL</label>
<input class="form-control" name="canonical_url" value="{{ old('canonical_url', $item->canonical_url) }}" placeholder="https://example.com/models/slug">
</div>
</div>
</details>
</div>
<div class="col-12">
<div class="editor-sticky-actions">
<small class="text-muted">评分字段会参与排序,修改后请核对展示结果。</small>
<button class="btn btn-primary" type="submit">保存模型</button>
</div>
</div>
</form>
</div>
</div>
@endsection
@section('scripts')
@include('admin.partials.modern-form-scripts')
@endsection