# articleEdit **Repository Path**: rymaker/article-edit ## Basic Information - **Project Name**: articleEdit - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-14 - **Last Updated**: 2026-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 墨见 · 内容管理与阅读平台 长篇深度内容平台:作者投稿 → 编辑审核 → 公开发布 → 全文检索的完整闭环。 - 前台(阅读站):首页 / 栏目归档 / 标签页 / 文章详情(评论、收藏、分享)/ 全站搜索 - 后台(控制台):工作台、我的文章、Tiptap 富文本编辑器(自动保存、定时发布)、审核队列与审核详情(驳回/时间轴/管理员改稿)、会员管理、系统配置(站点/文章/短信/角色权限/操作日志)、索引制作控制台 - 检索:Elasticsearch(IK 分词)主路径 + MySQL LIKE 自动降级,索引重建/增量同步/对账全部可视化 ## 技术栈 Nuxt 4(SSR)+ TypeScript + Pinia · TypeORM + MySQL 8 · Elasticsearch 9(可选)· SCSS 设计令牌体系 ## 环境要求 | 依赖 | 版本 | 说明 | | --- | --- | --- | | Node.js | ≥ 20(开发使用 24) | | | MySQL | 8.x | 库名默认 `chinapower_article_system`,首次启动自动建表/种子 | | Elasticsearch | 9.x + IK 插件 | **可选**。未配置或宕机时检索自动降级为 MySQL,站点其余功能不受影响 | ## 启动步骤 ```bash # 1. 安装依赖 npm install # 2. 配置环境变量 cp .env.example .env # 按实际填写 NUXT_DB_* / NUXT_JWT_SECRET / NUXT_ES_* # 3. 开发 npm run dev # http://localhost:3000 # 4. 生产 npm run build npm start # = node --env-file-if-exists=.env .output/server/index.mjs ``` 默认管理员:`admin / Henkaku@1`(种子自动创建)。后台入口 `/console`,前台 `/`。 配置全部使用 Nuxt 标准运行时环境变量:`NUXT_` + `runtimeConfig` 键名(camelCase 转大写下划线,`public` 下再加 `PUBLIC_`),默认值写在 `nuxt.config.ts`。`nuxt dev` 自动读取 `.env`;生产 `npm start` 通过 `--env-file-if-exists=.env` 读取,Docker 用 compose 的 `env_file`。改配置只需重启,无需重新构建(如 `NUXT_DB_PORT=3307 npm start`)。 ## 环境变量 | 变量 | 说明 | | --- | --- | | `NUXT_DB_HOST` / `NUXT_DB_PORT` / `NUXT_DB_USER` / `NUXT_DB_PASSWORD` / `NUXT_DB_NAME` | MySQL 连接 | | `NUXT_JWT_SECRET` / `NUXT_JWT_EXPIRES` | 登录令牌签名密钥 / 有效期(默认 7d) | | `NUXT_ES_NODE` / `NUXT_ES_USERNAME` / `NUXT_ES_PASSWORD` | ES 连接;留空或不可达 → 检索降级 | | `NUXT_ES_INDEX_PREFIX` / `NUXT_ES_ANALYZER` | 索引前缀(默认 articles)/ 分词器(ik_max_word,无 IK 插件改 cjk) | | `NUXT_PUBLIC_SITE_NAME` / `NUXT_UPLOAD_DIR` | 站点名 / 本地上传目录,均为**种子初值**,建站后以「系统配置」里的值为准(图片还可改存 FTP,见系统配置 → 存储设置) | ## ⚠️ 上线前必改项 | 项 | 现状 | 上线要改成 | | --- | --- | --- | | `synchronize` | 开发 `true` / **生产构建已自动 `false`**(`NODE_ENV` 判定,见 `server/database/data-source.ts`) | 保持生产 `false`,结构变更改用 migration | | `NUXT_JWT_SECRET` | 开发值 | 强随机值(改后全员登出,属预期) | | admin 密码 | `Henkaku@1` | 首次登录立即修改 | | Cookie `Secure` | 按访问协议自动:HTTP(含 `http://IP:端口`)不加,HTTPS / 反代 `X-Forwarded-Proto: https` 才加(`server/utils/jwt.ts`) | 全站 HTTPS 后可设 `NUXT_COOKIE_SECURE=true` 强制;反代务必传 `X-Forwarded-Proto` | | ES `number_of_replicas` | 0(单机) | 按集群规模调整(`server/services/search/mapping.ts`) | | 上传目录 | `public/uploads` 本地盘 | 对象存储或独立静态服务 + 备份策略 | ## 备注 - 本项目未初始化 git 仓库;需要版本管理请自行 `git init`(`.gitignore` 已备好,含 `.env`)。 - 短信/邮件为控制台模拟发送(`.env` 配置阿里云 AccessKey 后在 `server/services/sms.service.ts` 接 SDK,TODO 已留位)。 - 已知环境依赖:MySQL 服务器时钟与应用服务器需一致,否则定时发布/超时标记会出现偏差(同机部署即正常)。