初始化项目基础结构

添加了完整的前后端开发环境配置,包括:
- 创建 .gitignore 文件忽略本地生成目录和环境文件
- 添加详细的 README.md 开发指南文档
- 配置 backend 目录结构和 FastAPI 应用基础框架
- 实现应用配置管理、健康检查和状态接口
- 设置 uv 依赖管理和虚拟环境配置
- 完成 CORS 中间件配置支持前端开发联调
This commit is contained in:
2026-08-27 11:19:36 +08:00
commit 08e4aeea0c
29 changed files with 3539 additions and 0 deletions
+95
View File
@@ -0,0 +1,95 @@
<script setup lang="ts">
import { onMounted, ref } from 'vue'
import { getServiceStatus, type ServiceStatus } from './api'
const service = ref<ServiceStatus | null>(null)
const error = ref('')
const loading = ref(false)
async function checkBackend() {
loading.value = true
error.value = ''
try {
service.value = await getServiceStatus()
} catch (reason) {
service.value = null
error.value = reason instanceof Error ? reason.message : '未知错误'
} finally {
loading.value = false
}
}
onMounted(checkBackend)
</script>
<template>
<main class="app-shell">
<aside class="sidebar">
<div class="brand">
<span class="brand-mark">N</span>
<span>Notes Agent</span>
</div>
<nav aria-label="主导航">
<button class="nav-item active" type="button">工作台</button>
<button class="nav-item" type="button" disabled>笔记</button>
<button class="nav-item" type="button" disabled>AI 助手</button>
<button class="nav-item" type="button" disabled>设置</button>
</nav>
<p class="sidebar-hint">Vue 3 + TypeScript</p>
</aside>
<section class="workspace">
<header>
<p class="eyebrow">LOCAL-FIRST AI NOTES</p>
<h1>项目基础壳子</h1>
<p class="subtitle">前端界面已经就绪并通过统一 API Client 检查 FastAPI 服务</p>
</header>
<div class="cards">
<article class="card hero-card">
<div>
<p class="card-label">AI Core</p>
<h2>后端连接状态</h2>
</div>
<div v-if="service" class="status-line success">
<span class="status-dot" />
<div>
<strong>服务正常</strong>
<p>{{ service.name }} · v{{ service.version }} · {{ service.environment }}</p>
</div>
</div>
<div v-else-if="error" class="status-line error">
<span class="status-dot" />
<div>
<strong>暂未连接</strong>
<p>{{ error }}</p>
</div>
</div>
<div v-else class="status-line">
<span class="status-dot" />
<p>正在检查服务</p>
</div>
<button class="primary-button" type="button" :disabled="loading" @click="checkBackend">
{{ loading ? '检查中' : '重新检查' }}
</button>
</article>
<article class="card">
<p class="card-label">FRONTEND</p>
<h2>Vue 3 + TypeScript</h2>
<p>使用 Vite 启动开发环境已配置后端代理</p>
</article>
<article class="card">
<p class="card-label">BACKEND</p>
<h2>FastAPI + Pydantic</h2>
<p>包含健康检查状态接口和自动 OpenAPI 文档</p>
</article>
</div>
</section>
</main>
</template>