feat(vue-app,flask): Vue 试验田全量对接与 Session 用户上下文统一

新增 vue-app(生成/收藏/历史/登录/优化/Android/饭菜/诗词/简历等),Flask 增加 user_context 并调整历史、生成、简历等路由;模板 base/generate 可访问性改进;补充部署说明与文档。

Made-with: Cursor
This commit is contained in:
renjianbo
2026-04-05 21:10:41 +08:00
parent 9a3f15f3e2
commit daa34582e9
77 changed files with 8999 additions and 528 deletions

View File

@@ -0,0 +1,92 @@
<script setup lang="ts">
import { useAuthStore } from '@/stores/auth'
const auth = useAuthStore()
const flaskOrigin = import.meta.env.VITE_FLASK_ORIGIN || ''
const generateUrl = flaskOrigin ? `${flaskOrigin}/` : '/'
function openLegacyGenerate() {
window.location.href = generateUrl
}
</script>
<template>
<div class="home">
<el-card shadow="never" class="hero">
<h1>Vue 3 前端试验田</h1>
<p class="lead">
与现有 Flask 后端并行开发开发时 Vite <code>/api</code><code>/poetry</code><code>/static</code> 代理到后端会话使用 Cookie
<code>withCredentials</code>
建议开发使用 <strong>127.0.0.1:3000</strong>经典版生成页也可从顶部 <strong>更多</strong> 菜单进入
</p>
<el-space wrap>
<el-button type="primary" @click="$router.push({ name: 'generate' })">Vue 提示词生成</el-button>
<el-button @click="$router.push({ name: 'optimization' })">提示词优化</el-button>
<el-button @click="$router.push({ name: 'resume-optimization' })">简历 / 求职信</el-button>
<el-button @click="openLegacyGenerate">经典生成页Flask</el-button>
<el-button @click="$router.push({ name: 'favorites' })">收藏列表</el-button>
<el-button @click="$router.push({ name: 'history' })">优化历史</el-button>
<el-button @click="$router.push({ name: 'meal-planning' })">饭菜规划</el-button>
<el-button @click="$router.push({ name: 'poetry' })">古诗词</el-button>
<el-button @click="$router.push({ name: 'android-tools' })">Android 工具</el-button>
<el-button @click="$router.push({ name: 'profile' })">个人资料</el-button>
</el-space>
</el-card>
<el-card shadow="never" class="status">
<template #header>会话状态</template>
<p v-if="!auth.ready">正在检测登录状态</p>
<template v-else>
<p v-if="auth.loggedIn">
已登录<strong>{{ auth.nickname || auth.userId }}</strong>
</p>
<p v-else>未登录收藏接口仍可能按访客策略返回数据取决于后端</p>
</template>
</el-card>
</div>
</template>
<style scoped lang="scss">
@use '@/assets/styles/variables' as *;
.home {
display: flex;
flex-direction: column;
gap: 1.25rem;
}
.hero {
border-radius: 12px;
border: 1px solid $border-color;
h1 {
margin: 0 0 0.75rem;
font-size: 1.5rem;
color: $text-color;
}
}
.lead {
margin: 0 0 1.25rem;
line-height: 1.65;
color: $text-secondary;
font-size: 0.95rem;
code {
font-size: 0.85em;
padding: 0.1em 0.35em;
background: $gray-100;
border-radius: 4px;
}
}
.status {
border-radius: 12px;
border: 1px solid $border-color;
p {
margin: 0;
color: $text-secondary;
}
}
</style>