backup codes
This commit is contained in:
49
docs/v2.md
49
docs/v2.md
@@ -146,3 +146,52 @@
|
||||
| **P2** | 前端状态管理与文件拆分 | 改善开发体验和运行稳定性 |
|
||||
| **P3** | 安全增强(JWT、密码哈希、上传限制) | 系统公开使用后必须处理 |
|
||||
| **P3** | 运维自动化(备份、存储迁移) | 数据安全,长期运行保障 |
|
||||
|
||||
# 修改记录
|
||||
```
|
||||
server/
|
||||
├── server.js # 入口,40行(原 588行)
|
||||
├── db.js # 数据库(新增 foreign_keys = ON)
|
||||
├── utils.js # timestamp / normalizeTime
|
||||
├── handlers.js # AI 结果处理 + 共享状态
|
||||
├── ai/
|
||||
│ ├── prompt.js # Prompt 模板化
|
||||
│ ├── validator.js # JSON Schema 校验
|
||||
│ └── client.js # DeepSeek API 客户端
|
||||
├── middleware/
|
||||
│ └── auth.js # JWT + adminOnly
|
||||
├── routes/
|
||||
│ ├── auth.js # 登录 / 用户信息
|
||||
│ ├── rooms.js # 群聊 CRUD
|
||||
│ ├── messages.js # 消息 + AI 分析
|
||||
│ └── purchases.js # 采购 CRUD / 汇总 / 导出
|
||||
├── ws/
|
||||
│ └── index.js # WebSocket 连接管理 + 广播
|
||||
└── public/
|
||||
├── index.html # 纯结构(引用 CSS/JS)
|
||||
├── css/
|
||||
│ └── style.css # 独立样式
|
||||
└── js/
|
||||
├── store.js # 全局状态
|
||||
├── chat.js # 消息渲染 + 图片处理
|
||||
├── ws.js # WebSocket + 聊天列表 + 发送
|
||||
├── purchases.js # 采购面板 + 详情 + 群聊管理 + 手势
|
||||
└── auth.js # 登录 / 初始化
|
||||
```
|
||||
|
||||
### P0 完成项
|
||||
- Prompt 模板化(`ai/prompt.js`)
|
||||
- JSON Schema 校验(`ai/validator.js`)
|
||||
- AI 客户端封装(`ai/client.js`)
|
||||
- 金额计算唯一化(`handlers.js` 中 amount 仅由系统计算)
|
||||
- 时间格式统一(`utils.js` normalizeTime)
|
||||
|
||||
### P1 完成项
|
||||
- 后端模块化拆分(routes / ai / ws / middleware)
|
||||
- 权限模型统一(middleware/auth.js)
|
||||
- 外键约束开启(`db.js` `PRAGMA foreign_keys = ON`)
|
||||
|
||||
### P2 完成项
|
||||
- CSS 独立文件(`public/css/style.css`)
|
||||
- JS 模块化拆分(store / chat / ws / purchases / auth)
|
||||
- 状态集中管理(`Store` 对象)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
// AI 结果处理 + 共享状态
|
||||
const { v4: uuidv4 } = require('uuid');
|
||||
const db = require('../db');
|
||||
const { timestamp, normalizeTime } = require('../utils');
|
||||
const { broadcastToRoom } = require('../ws');
|
||||
const db = require('./db');
|
||||
const { timestamp, normalizeTime } = require('./utils');
|
||||
const { broadcastToRoom } = require('./ws');
|
||||
|
||||
// 对话历史(内存)
|
||||
const conversationHistory = new Map();
|
||||
@@ -216,7 +216,7 @@ function handleAIResult(aiResult, roomId, username, originalText, attachments) {
|
||||
}
|
||||
|
||||
async function callDeepSeekForSummary(prompt) {
|
||||
const { callDeepSeek } = require('../ai/client');
|
||||
const { callDeepSeek } = require('./ai/client');
|
||||
const messages = [
|
||||
{ role: 'system', content: '你是一个财务助手,请根据采购记录生成简洁回复。' },
|
||||
{ role: 'user', content: prompt }
|
||||
|
||||
Reference in New Issue
Block a user