diff --git a/README.md b/README.md
index 9691247..fc5bc9e 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
-
+



@@ -41,18 +41,42 @@
- 💾 **PostgreSQL** - 生产级数据库,多用户数据隔离
- 🐳 **Docker 部署** - 一键启动,开箱即用
+## 📸 项目预览
+
+
+
+### 登录界面
+
+
+### 主界面
+
+
+### 项目管理
+
+
+### 赞助我 💖
+
+
+
+
## 📋 TODO List
+### ✅ 已完成功能
+
- [x] **灵感模式** - 创作灵感和点子生成
- [x] **自定义写作风格** - 支持自定义 AI 写作风格
- [x] **数据导入导出** - 项目数据的导入导出
-- [ ] **Prompt 调整界面** - 可视化编辑 Prompt 模板
+- [x] **Prompt 调整界面** - 可视化编辑 Prompt 模板
- [x] **章节字数限制** - 用户可设置生成字数
-- [ ] **设定追溯与矛盾检测** - 自动检测设定冲突
-- [ ] **思维链与章节关系图谱** - 可视化章节逻辑关系
+- [x] **思维链与章节关系图谱** - 可视化章节逻辑关系
- [x] **根据分析一键重写** - 根据分析建议重新生成
- [x] **Linux DO 自动创建账号** - OAuth 登录自动生成账号
+### 📝 规划中功能
+
+- [ ] **职业等级体系** - 小说世界观中的职业和等级系统
+- [ ] **角色/组织卡片导入导出** - 单独导出角色和组织数据
+
> 💡 欢迎提交 Issue 或 Pull Request!
## 🚀 快速开始
diff --git a/backend/.env.example b/backend/.env.example
index 590a68a..0d6bbc9 100644
--- a/backend/.env.example
+++ b/backend/.env.example
@@ -8,7 +8,7 @@
# 应用配置
# ==========================================
APP_NAME=MuMuAINovel
-APP_VERSION=1.1.2
+APP_VERSION=1.1.3
APP_HOST=0.0.0.0
APP_PORT=8000
DEBUG=false
diff --git a/frontend/package.json b/frontend/package.json
index c0e770e..bc46d88 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,7 +1,7 @@
{
"name": "frontend",
"private": true,
- "version": "1.1.2",
+ "version": "1.1.3",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/frontend/src/pages/AuthCallback.tsx b/frontend/src/pages/AuthCallback.tsx
index c27f29e..380d881 100644
--- a/frontend/src/pages/AuthCallback.tsx
+++ b/frontend/src/pages/AuthCallback.tsx
@@ -21,13 +21,13 @@ export default function AuthCallback() {
// 后端会通过 Cookie 自动设置认证信息
// 这里只需要验证登录状态
await authApi.getCurrentUser();
-
+
// 检查密码状态
const pwdStatus = await authApi.getPasswordStatus();
setPasswordStatus(pwdStatus);
-
+
setStatus('success');
-
+
// 只有在用户完全没有密码时才显示密码设置提示
// 如果已经有密码(无论是默认密码还是自定义密码),都不再提示
if (!pwdStatus.has_password) {
@@ -36,16 +36,16 @@ export default function AuthCallback() {
}, 1000);
return;
}
-
+
// 从 sessionStorage 获取重定向地址
const redirect = sessionStorage.getItem('login_redirect') || '/';
sessionStorage.removeItem('login_redirect');
-
+
// 检查是否永久隐藏公告或今日已隐藏
const hideForever = localStorage.getItem('announcement_hide_forever');
const hideToday = localStorage.getItem('announcement_hide_today');
const today = new Date().toDateString();
-
+
if (hideForever === 'true' || hideToday === today) {
// 延迟一下再跳转,让用户看到成功提示
setTimeout(() => {
@@ -74,7 +74,7 @@ export default function AuthCallback() {
justifyContent: 'center',
alignItems: 'center',
minHeight: '100vh',
- background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
+ background: 'linear-gradient(135deg, #4D8088 0%, #5F9EA8 100%)',
}}>
@@ -93,7 +93,7 @@ export default function AuthCallback() {
justifyContent: 'center',
alignItems: 'center',
minHeight: '100vh',
- background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
+ background: 'linear-gradient(135deg, #4D8088 0%, #5F9EA8 100%)',
}}>
{
navigate(redirect);
@@ -174,15 +174,15 @@ export default function AuthCallback() {
const handleSkipPasswordSetting = () => {
setShowPasswordModal(false);
-
+
// 继续后续流程
const redirect = sessionStorage.getItem('login_redirect') || '/';
sessionStorage.removeItem('login_redirect');
-
+
const hideForever = localStorage.getItem('announcement_hide_forever');
const hideToday = localStorage.getItem('announcement_hide_today');
const today = new Date().toDateString();
-
+
if (hideForever === 'true' || hideToday === today) {
setTimeout(() => {
navigate(redirect);
@@ -202,7 +202,7 @@ export default function AuthCallback() {
onDoNotShowToday={handleDoNotShowToday}
onNeverShow={handleNeverShow}
/>
-
+
- 账号:{passwordStatus.username}
+ 账号:{passwordStatus.username}
默认密码:
)}
-
+
@@ -263,7 +263,7 @@ export default function AuthCallback() {
justifyContent: 'center',
alignItems: 'center',
minHeight: '100vh',
- background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
+ background: 'linear-gradient(135deg, #4D8088 0%, #5F9EA8 100%)',
}}>