import { Component, inject, OnInit, signal, output } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { HttpClient } from '@angular/common/http'; import { finalize } from 'rxjs'; interface Capabilities { video_enabled: boolean; outputter_enabled: boolean; step_summarizer_enabled: boolean; } @Component({ selector: 'app-capability-settings', standalone: true, imports: [FormsModule], template: `

功能开关

按需启用,保存后对新任务生效。

@if (message()) {

{{ message() }}

} @if (error()) { }
`, styles: [`section { margin-top: 24px; padding-top: 20px; border-top: 1px solid #64748b55; } h3 { margin: 0 0 8px; } p, small { color: #64748b; line-height: 1.6; } label { display: flex; gap: 12px; align-items: flex-start; padding: 14px 0; cursor: pointer; } input { width: 20px; height: 20px; accent-color: #0284c7; flex-shrink: 0; } small { display: block; margin-top: 4px; } button { padding: 10px 18px; border-radius: 10px; border: 1px solid #38bdf877; background: #0284c7; color: white; font: inherit; cursor: pointer; } button:disabled { opacity: .5; cursor: default; } .error { color: #be123c; }`] }) export class CapabilitySettingsComponent implements OnInit { changed = output(); private http = inject(HttpClient); config: Capabilities = { video_enabled: false, outputter_enabled: true, step_summarizer_enabled: true }; busy = signal(false); loading = signal(true); loaded = signal(false); message = signal(''); error = signal(''); ngOnInit(): void { this.http.get('/api/system/capability-settings').pipe(finalize(() => this.loading.set(false))).subscribe({ next: config => { this.config = config; this.loaded.set(true); this.changed.emit(config); }, error: () => this.error.set('功能配置加载失败,请刷新页面重试。') }); } save(): void { if (this.busy() || this.loading() || !this.loaded()) return; this.busy.set(true); this.message.set(''); this.error.set(''); this.http.post('/api/system/capability-settings', this.config).pipe(finalize(() => this.busy.set(false))).subscribe({ next: config => { this.config = config; this.changed.emit(config); this.message.set('功能设置已保存,新任务将使用此配置。'); }, error: () => this.error.set('保存失败,请检查服务器连接和 .env 文件权限。') }); } }