Files
XingfenD 4e467e1136 feat: implement proto-gen platform
- Config loader with env var expansion and validation
- SQLite database with tasks and toolchain_versions tables
- Gitea REST API client for repository and branch operations
- K8s client for Job lifecycle management (with noop fallback for local dev)
- REST API: tasks CRUD, retry, plugins, version management
- Worker/scheduler with polling, concurrency control, and job tracking
- Static frontend: generate, tasks, settings pages
- Toolchain images: Go and Node.js Dockerfiles with entrypoint scripts
- Helm chart with deployment, service, configmap, ingress, PVC
- Multi-stage Dockerfile for service
- Unit tests for config, database, gitclient, k8s, api, worker
- E2E tests for idempotency, version switch, failure recovery
2026-08-10 16:54:30 +08:00

57 lines
1.8 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Proto-Gen Platform</title>
<link rel="stylesheet" href="/style.css">
</head>
<body>
<nav>
<a href="/" class="logo">Proto-Gen</a>
<div class="nav-links">
<a href="/" class="active">Generate</a>
<a href="/tasks.html">Tasks</a>
<a href="/settings.html">Settings</a>
</div>
</nav>
<main>
<h1>Generate Code</h1>
<form id="generateForm">
<div class="form-group">
<label for="protoRepo">Proto Repository</label>
<input type="text" id="protoRepo" placeholder="e.g., owner/yoresee_doc" required>
</div>
<div class="form-group">
<label for="protoBranch">Branch</label>
<input type="text" id="protoBranch" value="main" required>
</div>
<div class="form-group">
<label for="language">Target Language</label>
<select id="language" required>
<option value="">Select language...</option>
</select>
</div>
<div class="form-group">
<label for="targetRepo">Target Repository</label>
<input type="text" id="targetRepo" placeholder="Auto-generated if empty">
<small>Leave empty to auto-generate: {proto_repo}-gen-{lang}</small>
</div>
<button type="submit" class="btn-primary">Generate</button>
</form>
<div id="message" class="hidden"></div>
</main>
<script src="/app.js"></script>
<script>
initGeneratePage();
</script>
</body>
</html>