collabdocchat 1.2.13 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +219 -218
- package/index.html +2 -0
- package/install-and-start.bat +5 -0
- package/install-and-start.sh +5 -0
- package/package.json +9 -2
- package/scripts/generate-docs.js +448 -0
- package/scripts/pre-publish-check.js +213 -0
- package/scripts/start-app.js +15 -15
- package/server/index.js +38 -6
- package/server/middleware/cache.js +115 -0
- package/server/middleware/errorHandler.js +209 -0
- package/server/models/Document.js +66 -59
- package/server/models/File.js +49 -43
- package/server/models/Group.js +6 -0
- package/server/models/KnowledgeBase.js +254 -0
- package/server/models/Message.js +43 -0
- package/server/models/Task.js +87 -55
- package/server/models/User.js +67 -60
- package/server/models/Workflow.js +249 -0
- package/server/routes/ai.js +327 -0
- package/server/routes/audit.js +245 -210
- package/server/routes/backup.js +108 -0
- package/server/routes/chunked-upload.js +343 -0
- package/server/routes/export.js +440 -0
- package/server/routes/files.js +294 -218
- package/server/routes/groups.js +182 -0
- package/server/routes/knowledge.js +509 -0
- package/server/routes/tasks.js +257 -110
- package/server/routes/workflows.js +380 -0
- package/server/utils/backup.js +439 -0
- package/server/utils/cache.js +223 -0
- package/server/utils/workflow-engine.js +479 -0
- package/server/websocket/enhanced.js +509 -0
- package/server/websocket/index.js +233 -1
- package/src/components/knowledge-modal.js +485 -0
- package/src/components/optimized-poll-detail.js +724 -0
- package/src/main.js +5 -0
- package/src/pages/admin-dashboard.js +2248 -44
- package/src/pages/optimized-backup-view.js +616 -0
- package/src/pages/optimized-knowledge-view.js +803 -0
- package/src/pages/optimized-task-detail.js +843 -0
- package/src/pages/optimized-workflow-view.js +806 -0
- package/src/pages/simplified-workflows.js +651 -0
- package/src/pages/user-dashboard.js +677 -58
- package/src/services/api.js +64 -0
- package/src/services/auth.js +1 -1
- package/src/services/websocket.js +124 -16
- package/src/styles/collaboration-modern.js +708 -0
- package/src/styles/enhancements.css +392 -0
- package/src/styles/main.css +620 -1420
- package/src/styles/responsive.css +1000 -0
- package/src/styles/sidebar-fix.css +60 -0
- package/src/utils/ai-assistant.js +1398 -0
- package/src/utils/chat-enhancements.js +509 -0
- package/src/utils/collaboration-enhancer.js +1151 -0
- package/src/utils/feature-integrator.js +1724 -0
- package/src/utils/onboarding-guide.js +734 -0
- package/src/utils/performance.js +394 -0
- package/src/utils/permission-manager.js +890 -0
- package/src/utils/responsive-handler.js +491 -0
- package/src/utils/theme-manager.js +811 -0
- package/src/utils/ui-enhancements-loader.js +329 -0
- package/USAGE.md +0 -298
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI 美化增强加载器
|
|
3
|
+
* 自动加载所有界面美化功能
|
|
4
|
+
* 确保所有优化的界面在启动时自动集成
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export class UIEnhancementsLoader {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.enhancementsLoaded = false;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 初始化所有UI美化增强
|
|
14
|
+
* 在应用启动时自动调用
|
|
15
|
+
*/
|
|
16
|
+
async init() {
|
|
17
|
+
if (this.enhancementsLoaded) {
|
|
18
|
+
console.log('✅ UI美化增强已加载');
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
console.log('🎨 开始加载UI美化增强...');
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
// 1. 加载全局美化样式
|
|
26
|
+
this.loadGlobalStyles();
|
|
27
|
+
|
|
28
|
+
// 2. 加载备份管理美化
|
|
29
|
+
await this.loadBackupEnhancements();
|
|
30
|
+
|
|
31
|
+
// 3. 加载任务详情美化
|
|
32
|
+
await this.loadTaskDetailEnhancements();
|
|
33
|
+
|
|
34
|
+
// 4. 加载工作流美化
|
|
35
|
+
await this.loadWorkflowEnhancements();
|
|
36
|
+
|
|
37
|
+
// 5. 加载投票详情美化
|
|
38
|
+
await this.loadPollDetailEnhancements();
|
|
39
|
+
|
|
40
|
+
// 6. 加载协作工具美化
|
|
41
|
+
await this.loadCollaborationEnhancements();
|
|
42
|
+
|
|
43
|
+
// 7. 加载设置界面美化(已在 feature-integrator.js 中)
|
|
44
|
+
console.log('✅ 设置界面美化已集成');
|
|
45
|
+
|
|
46
|
+
// 8. 加载帮助中心美化(已在 onboarding-guide.js 中)
|
|
47
|
+
console.log('✅ 帮助中心美化已集成');
|
|
48
|
+
|
|
49
|
+
this.enhancementsLoaded = true;
|
|
50
|
+
console.log('🎉 所有UI美化增强加载完成!');
|
|
51
|
+
|
|
52
|
+
} catch (error) {
|
|
53
|
+
console.error('❌ UI美化增强加载失败:', error);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* 加载全局美化样式
|
|
59
|
+
*/
|
|
60
|
+
loadGlobalStyles() {
|
|
61
|
+
if (document.getElementById('global-ui-enhancements')) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const style = document.createElement('style');
|
|
66
|
+
style.id = 'global-ui-enhancements';
|
|
67
|
+
style.textContent = `
|
|
68
|
+
/* ========================================
|
|
69
|
+
全局UI美化样式
|
|
70
|
+
自动加载,无需手动集成
|
|
71
|
+
======================================== */
|
|
72
|
+
|
|
73
|
+
/* 确保主内容区域填满空间 */
|
|
74
|
+
.main-content {
|
|
75
|
+
width: 100% !important;
|
|
76
|
+
max-width: 100% !important;
|
|
77
|
+
overflow-x: hidden;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.dashboard {
|
|
81
|
+
width: 100% !important;
|
|
82
|
+
max-width: 100% !important;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* 通用卡片样式 */
|
|
86
|
+
.card-modern {
|
|
87
|
+
background: var(--bg-card);
|
|
88
|
+
border: 2px solid var(--border);
|
|
89
|
+
border-radius: 16px;
|
|
90
|
+
padding: 24px;
|
|
91
|
+
transition: all 0.3s ease;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.card-modern:hover {
|
|
95
|
+
border-color: var(--primary);
|
|
96
|
+
box-shadow: 0 8px 24px rgba(99,102,241,0.15);
|
|
97
|
+
transform: translateY(-2px);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* 通用按钮增强 */
|
|
101
|
+
.btn-primary,
|
|
102
|
+
.btn-secondary {
|
|
103
|
+
transition: all 0.3s ease;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.btn-primary:hover {
|
|
107
|
+
transform: translateY(-2px);
|
|
108
|
+
box-shadow: 0 4px 12px rgba(99,102,241,0.4);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.btn-secondary:hover {
|
|
112
|
+
transform: translateY(-2px);
|
|
113
|
+
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* 通用动画 */
|
|
117
|
+
@keyframes fadeIn {
|
|
118
|
+
from {
|
|
119
|
+
opacity: 0;
|
|
120
|
+
}
|
|
121
|
+
to {
|
|
122
|
+
opacity: 1;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
@keyframes fadeInUp {
|
|
127
|
+
from {
|
|
128
|
+
opacity: 0;
|
|
129
|
+
transform: translateY(20px);
|
|
130
|
+
}
|
|
131
|
+
to {
|
|
132
|
+
opacity: 1;
|
|
133
|
+
transform: translateY(0);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
@keyframes slideInRight {
|
|
138
|
+
from {
|
|
139
|
+
opacity: 0;
|
|
140
|
+
transform: translateX(20px);
|
|
141
|
+
}
|
|
142
|
+
to {
|
|
143
|
+
opacity: 1;
|
|
144
|
+
transform: translateX(0);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
@keyframes pulse {
|
|
149
|
+
0%, 100% {
|
|
150
|
+
opacity: 1;
|
|
151
|
+
}
|
|
152
|
+
50% {
|
|
153
|
+
opacity: 0.5;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* 视图头部增强 */
|
|
158
|
+
.view-header {
|
|
159
|
+
animation: fadeInUp 0.5s ease;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* 网格布局增强 */
|
|
163
|
+
.groups-grid,
|
|
164
|
+
.tasks-grid,
|
|
165
|
+
.documents-grid {
|
|
166
|
+
animation: fadeIn 0.5s ease;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/* 模态框增强 */
|
|
170
|
+
.modal {
|
|
171
|
+
animation: fadeIn 0.3s ease;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.modal-content {
|
|
175
|
+
animation: fadeInUp 0.3s ease;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/* 加载状态 */
|
|
179
|
+
.loading {
|
|
180
|
+
animation: pulse 1.5s ease-in-out infinite;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/* 成功状态 */
|
|
184
|
+
.success-feedback {
|
|
185
|
+
background: linear-gradient(135deg, #10b981 0%, #059669 100%);
|
|
186
|
+
color: white;
|
|
187
|
+
padding: 12px 24px;
|
|
188
|
+
border-radius: 8px;
|
|
189
|
+
animation: fadeInUp 0.3s ease;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/* 错误状态 */
|
|
193
|
+
.error-feedback {
|
|
194
|
+
background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
|
|
195
|
+
color: white;
|
|
196
|
+
padding: 12px 24px;
|
|
197
|
+
border-radius: 8px;
|
|
198
|
+
animation: fadeInUp 0.3s ease;
|
|
199
|
+
}
|
|
200
|
+
`;
|
|
201
|
+
document.head.appendChild(style);
|
|
202
|
+
console.log('✅ 全局美化样式已加载');
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* 加载备份管理美化
|
|
207
|
+
*/
|
|
208
|
+
async loadBackupEnhancements() {
|
|
209
|
+
try {
|
|
210
|
+
// 动态导入备份管理美化模块
|
|
211
|
+
const module = await import('../pages/optimized-backup-view.js');
|
|
212
|
+
|
|
213
|
+
// 将函数挂载到全局,供 admin-dashboard.js 调用
|
|
214
|
+
window.renderOptimizedBackupView = module.renderOptimizedBackupView;
|
|
215
|
+
|
|
216
|
+
console.log('✅ 备份管理美化已加载');
|
|
217
|
+
} catch (error) {
|
|
218
|
+
console.warn('⚠️ 备份管理美化加载失败,使用默认界面:', error);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* 加载任务详情美化
|
|
224
|
+
*/
|
|
225
|
+
async loadTaskDetailEnhancements() {
|
|
226
|
+
try {
|
|
227
|
+
// 动态导入任务详情美化模块
|
|
228
|
+
const module = await import('../pages/optimized-task-detail.js');
|
|
229
|
+
|
|
230
|
+
// 将函数挂载到全局,供其他模块调用
|
|
231
|
+
window.renderOptimizedTaskDetail = module.renderOptimizedTaskDetail;
|
|
232
|
+
|
|
233
|
+
console.log('✅ 任务详情美化已加载');
|
|
234
|
+
} catch (error) {
|
|
235
|
+
console.warn('⚠️ 任务详情美化加载失败,使用默认界面:', error);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* 加载工作流美化
|
|
241
|
+
*/
|
|
242
|
+
async loadWorkflowEnhancements() {
|
|
243
|
+
try {
|
|
244
|
+
// 动态导入工作流美化模块
|
|
245
|
+
const module = await import('../pages/optimized-workflow-view.js');
|
|
246
|
+
|
|
247
|
+
// 将函数挂载到全局,供其他模块调用
|
|
248
|
+
window.renderOptimizedWorkflowView = module.renderOptimizedWorkflowView;
|
|
249
|
+
|
|
250
|
+
console.log('✅ 工作流美化已加载');
|
|
251
|
+
} catch (error) {
|
|
252
|
+
console.warn('⚠️ 工作流美化加载失败,使用默认界面:', error);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* 加载投票详情美化
|
|
258
|
+
*/
|
|
259
|
+
async loadPollDetailEnhancements() {
|
|
260
|
+
try {
|
|
261
|
+
// 动态导入投票详情美化模块
|
|
262
|
+
const module = await import('../components/optimized-poll-detail.js');
|
|
263
|
+
|
|
264
|
+
// 将函数挂载到全局,供其他模块调用
|
|
265
|
+
window.renderOptimizedPollDetail = module.renderOptimizedPollDetail;
|
|
266
|
+
window.addPollDetailStyles = module.addPollDetailStyles;
|
|
267
|
+
|
|
268
|
+
// 立即添加样式
|
|
269
|
+
if (typeof window.addPollDetailStyles === 'function') {
|
|
270
|
+
window.addPollDetailStyles();
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
console.log('✅ 投票详情美化已加载');
|
|
274
|
+
} catch (error) {
|
|
275
|
+
console.warn('⚠️ 投票详情美化加载失败,使用默认界面:', error);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* 加载协作工具美化
|
|
281
|
+
*/
|
|
282
|
+
async loadCollaborationEnhancements() {
|
|
283
|
+
try {
|
|
284
|
+
// 动态导入协作工具美化模块
|
|
285
|
+
const module = await import('../styles/collaboration-modern.js');
|
|
286
|
+
|
|
287
|
+
// 立即添加样式
|
|
288
|
+
if (typeof module.addCollaborationStyles === 'function') {
|
|
289
|
+
module.addCollaborationStyles();
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
console.log('✅ 协作工具美化已加载');
|
|
293
|
+
} catch (error) {
|
|
294
|
+
console.warn('⚠️ 协作工具美化加载失败,使用默认界面:', error);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* 检查美化功能是否已加载
|
|
300
|
+
*/
|
|
301
|
+
isLoaded() {
|
|
302
|
+
return this.enhancementsLoaded;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* 重新加载所有美化功能
|
|
307
|
+
*/
|
|
308
|
+
async reload() {
|
|
309
|
+
this.enhancementsLoaded = false;
|
|
310
|
+
await this.init();
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
// 创建单例实例
|
|
315
|
+
export const uiEnhancementsLoader = new UIEnhancementsLoader();
|
|
316
|
+
|
|
317
|
+
// 自动初始化(在模块加载时)
|
|
318
|
+
if (typeof window !== 'undefined') {
|
|
319
|
+
// 等待 DOM 加载完成后初始化
|
|
320
|
+
if (document.readyState === 'loading') {
|
|
321
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
322
|
+
uiEnhancementsLoader.init();
|
|
323
|
+
});
|
|
324
|
+
} else {
|
|
325
|
+
// DOM 已经加载完成,立即初始化
|
|
326
|
+
uiEnhancementsLoader.init();
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
package/USAGE.md
DELETED
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
# 使用说明
|
|
2
|
-
|
|
3
|
-
## 🚀 推荐的安装和使用流程
|
|
4
|
-
|
|
5
|
-
### 步骤 1: 安装包
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
# 在您想要的目录下安装
|
|
9
|
-
npm install collabdocchat
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
### 步骤 2: 进入目录
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
cd node_modules/collabdocchat
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
### 步骤 3: 启动应用
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
npm start
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
**首次启动时**,系统会自动:
|
|
25
|
-
- 检测并安装缺失的依赖
|
|
26
|
-
- 检查端口是否可用
|
|
27
|
-
- 启动服务器和客户端
|
|
28
|
-
- 自动打开浏览器
|
|
29
|
-
|
|
30
|
-
## ⚠️ 常见问题解决
|
|
31
|
-
|
|
32
|
-
### 问题 1: 端口被占用
|
|
33
|
-
|
|
34
|
-
如果看到错误:`Error: listen EADDRINUSE: address already in use :::3000`
|
|
35
|
-
|
|
36
|
-
**解决方案:**
|
|
37
|
-
|
|
38
|
-
#### Windows:
|
|
39
|
-
```cmd
|
|
40
|
-
# 查找占用端口的进程
|
|
41
|
-
netstat -ano | findstr :3000
|
|
42
|
-
|
|
43
|
-
# 结束进程(替换 <PID> 为实际的进程ID)
|
|
44
|
-
taskkill /PID <PID> /F
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
#### Mac/Linux:
|
|
48
|
-
```bash
|
|
49
|
-
# 查找并结束进程
|
|
50
|
-
lsof -ti:3000 | xargs kill -9
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
或者使用项目提供的停止脚本:
|
|
54
|
-
```bash
|
|
55
|
-
npm run stop
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### 问题 2: vite 命令找不到
|
|
59
|
-
|
|
60
|
-
如果看到错误:`'vite' 不是内部或外部命令`
|
|
61
|
-
|
|
62
|
-
**原因:** 开发依赖未安装
|
|
63
|
-
|
|
64
|
-
**解决方案:**
|
|
65
|
-
```bash
|
|
66
|
-
# 在 collabdocchat 目录下运行
|
|
67
|
-
npm install
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
v1.2.8 及以上版本会在启动时自动检测并安装缺失的依赖。
|
|
71
|
-
|
|
72
|
-
### 问题 3: MongoDB 连接失败
|
|
73
|
-
|
|
74
|
-
如果看到错误:`MongoNetworkError: connect ECONNREFUSED`
|
|
75
|
-
|
|
76
|
-
**解决方案:**
|
|
77
|
-
|
|
78
|
-
1. **确保 MongoDB 已安装**
|
|
79
|
-
- 下载地址: https://www.mongodb.com/try/download/community
|
|
80
|
-
|
|
81
|
-
2. **启动 MongoDB 服务**
|
|
82
|
-
|
|
83
|
-
**Windows:**
|
|
84
|
-
```cmd
|
|
85
|
-
net start MongoDB
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
**Mac:**
|
|
89
|
-
```bash
|
|
90
|
-
brew services start mongodb-community
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
**Linux:**
|
|
94
|
-
```bash
|
|
95
|
-
sudo systemctl start mongod
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
3. **验证 MongoDB 运行**
|
|
99
|
-
```bash
|
|
100
|
-
# 连接到 MongoDB
|
|
101
|
-
mongosh
|
|
102
|
-
# 或旧版本
|
|
103
|
-
mongo
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## 📋 完整的使用流程示例
|
|
107
|
-
|
|
108
|
-
### Windows 用户
|
|
109
|
-
|
|
110
|
-
```cmd
|
|
111
|
-
# 1. 创建项目目录
|
|
112
|
-
mkdir my-collab-app
|
|
113
|
-
cd my-collab-app
|
|
114
|
-
|
|
115
|
-
# 2. 安装包
|
|
116
|
-
npm install collabdocchat
|
|
117
|
-
|
|
118
|
-
# 3. 进入目录
|
|
119
|
-
cd node_modules\collabdocchat
|
|
120
|
-
|
|
121
|
-
# 4. 确保 MongoDB 运行
|
|
122
|
-
net start MongoDB
|
|
123
|
-
|
|
124
|
-
# 5. 启动应用
|
|
125
|
-
npm start
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### Mac/Linux 用户
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
# 1. 创建项目目录
|
|
132
|
-
mkdir my-collab-app
|
|
133
|
-
cd my-collab-app
|
|
134
|
-
|
|
135
|
-
# 2. 安装包
|
|
136
|
-
npm install collabdocchat
|
|
137
|
-
|
|
138
|
-
# 3. 进入目录
|
|
139
|
-
cd node_modules/collabdocchat
|
|
140
|
-
|
|
141
|
-
# 4. 确保 MongoDB 运行
|
|
142
|
-
brew services start mongodb-community # Mac
|
|
143
|
-
# 或
|
|
144
|
-
sudo systemctl start mongod # Linux
|
|
145
|
-
|
|
146
|
-
# 5. 启动应用
|
|
147
|
-
npm start
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
## 🎯 访问应用
|
|
151
|
-
|
|
152
|
-
启动成功后,浏览器会自动打开:
|
|
153
|
-
|
|
154
|
-
- **客户端界面**: http://localhost:5173
|
|
155
|
-
- **服务器 API**: http://localhost:3000
|
|
156
|
-
|
|
157
|
-
### 默认管理员账号
|
|
158
|
-
|
|
159
|
-
- **用户名**: `admin`
|
|
160
|
-
- **密码**: `admin123`
|
|
161
|
-
|
|
162
|
-
⚠️ **重要**: 首次登录后请立即修改密码!
|
|
163
|
-
|
|
164
|
-
## 🛑 停止应用
|
|
165
|
-
|
|
166
|
-
### 方法 1: 使用快捷键
|
|
167
|
-
在运行应用的终端窗口按 `Ctrl + C`
|
|
168
|
-
|
|
169
|
-
### 方法 2: 使用停止脚本
|
|
170
|
-
```bash
|
|
171
|
-
npm run stop
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### 方法 3: 手动结束进程
|
|
175
|
-
|
|
176
|
-
**Windows:**
|
|
177
|
-
```cmd
|
|
178
|
-
taskkill /F /IM node.exe
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
**Mac/Linux:**
|
|
182
|
-
```bash
|
|
183
|
-
pkill -f node
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
## 🔧 配置说明
|
|
187
|
-
|
|
188
|
-
### 修改端口
|
|
189
|
-
|
|
190
|
-
编辑 `.env` 文件:
|
|
191
|
-
|
|
192
|
-
```env
|
|
193
|
-
# 修改服务器端口
|
|
194
|
-
PORT=3000
|
|
195
|
-
|
|
196
|
-
# MongoDB 连接
|
|
197
|
-
MONGODB_URI=mongodb://localhost:27017/collabdocchat
|
|
198
|
-
|
|
199
|
-
# JWT 密钥(生产环境务必修改)
|
|
200
|
-
JWT_SECRET=your-secret-key-here
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### 修改管理员账号
|
|
204
|
-
|
|
205
|
-
编辑 `.env` 文件:
|
|
206
|
-
|
|
207
|
-
```env
|
|
208
|
-
ADMIN_USERNAME=admin
|
|
209
|
-
ADMIN_PASSWORD=your-secure-password
|
|
210
|
-
ADMIN_EMAIL=admin@yourdomain.com
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
删除数据库后重新启动,将使用新的管理员信息。
|
|
214
|
-
|
|
215
|
-
## 📊 开发模式
|
|
216
|
-
|
|
217
|
-
如果您想进行开发或调试:
|
|
218
|
-
|
|
219
|
-
```bash
|
|
220
|
-
# 开发模式(支持热重载)
|
|
221
|
-
npm run dev
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
特点:
|
|
225
|
-
- 服务器自动重启(nodemon)
|
|
226
|
-
- 前端热重载(Vite HMR)
|
|
227
|
-
- 自动打开浏览器
|
|
228
|
-
|
|
229
|
-
## 🔍 检查安装
|
|
230
|
-
|
|
231
|
-
### 验证 Node.js
|
|
232
|
-
```bash
|
|
233
|
-
node --version
|
|
234
|
-
# 应该 >= 16.0.0
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### 验证 npm
|
|
238
|
-
```bash
|
|
239
|
-
npm --version
|
|
240
|
-
# 应该 >= 7.0.0
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
### 验证 MongoDB
|
|
244
|
-
```bash
|
|
245
|
-
mongod --version
|
|
246
|
-
# 应该 >= 4.4
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
## 📞 获取帮助
|
|
250
|
-
|
|
251
|
-
如果遇到其他问题:
|
|
252
|
-
|
|
253
|
-
1. 查看 [INSTALLATION.md](./INSTALLATION.md) - 详细安装指南
|
|
254
|
-
2. 查看 [README.md](./README.md) - 完整文档
|
|
255
|
-
3. 访问 [GitHub Issues](https://github.com/shijinghao/collabdocchat/issues)
|
|
256
|
-
4. 提交新的 Issue 描述您的问题
|
|
257
|
-
|
|
258
|
-
## 💡 最佳实践
|
|
259
|
-
|
|
260
|
-
1. **定期更新**
|
|
261
|
-
```bash
|
|
262
|
-
npm update collabdocchat
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
2. **备份数据**
|
|
266
|
-
```bash
|
|
267
|
-
mongodump --db collabdocchat --out ./backup
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
3. **使用 PM2 管理进程**(生产环境)
|
|
271
|
-
```bash
|
|
272
|
-
npm install -g pm2
|
|
273
|
-
pm2 start server/index.js --name collabdocchat
|
|
274
|
-
pm2 startup
|
|
275
|
-
pm2 save
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
4. **配置反向代理**(生产环境)
|
|
279
|
-
使用 Nginx 或 Apache 作为反向代理
|
|
280
|
-
|
|
281
|
-
5. **启用 HTTPS**(生产环境)
|
|
282
|
-
使用 Let's Encrypt 获取免费 SSL 证书
|
|
283
|
-
|
|
284
|
-
## 🎉 开始使用
|
|
285
|
-
|
|
286
|
-
现在您可以:
|
|
287
|
-
|
|
288
|
-
- ✅ 创建新文档
|
|
289
|
-
- ✅ 邀请团队成员
|
|
290
|
-
- ✅ 实时协作编辑
|
|
291
|
-
- ✅ 使用聊天功能
|
|
292
|
-
- ✅ 管理任务
|
|
293
|
-
- ✅ 上传文件
|
|
294
|
-
|
|
295
|
-
祝您使用愉快!🚀
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|