Help
RSS
API
Feed
Maltego
Contact
Domain > blog.nihaokai.xyz
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-11-20
43.159.98.18
(
ClassC
)
Port 443
HTTP/1.1 200 OKServer: openrestyContent-Type: text/htmlVary: Accept-EncodingX-Powered-By: HexoStrict-Transport-Security: max-age31536000Cache-Control: no-cacheTransfer-Encoding: chunkedConnection: keep-aliveDate: Thu, 20 Nov 2025 17:37:48 GMTEO-LOG-UUID: 16797907946850663258EO-Cache-Status: MISS !DOCTYPE html>html langzh-CN>head> meta charsetUTF-8>meta nameviewport contentwidthdevice-width, initial-scale1, maximum-scale2>meta nametheme-color content#222>meta namegenerator contentHexo 7.3.0> link relapple-touch-icon sizes180x180 href/images/apple-touch-icon-next.png> link relicon typeimage/png sizes32x32 href/images/favicon-32x32-next.png> link relicon typeimage/png sizes16x16 href/images/favicon-16x16-next.png> link relmask-icon href/images/logo.svg color#222>link relstylesheet href/css/main.css>link relstylesheet href/lib/font-awesome/css/all.min.css>script idhexo-configurations> var NexT window.NexT || {}; var CONFIG {hostname:localhost,root:/,scheme:Muse,version:7.8.0,exturl:false,sidebar:{position:left,display:post,padding:18,offset:12,onmobile:false},copycode:{enable:false,show_result:false,style:null},back2top:{enable:true,sidebar:false,scrollpercent:false},bookmark:{enable:false,color:#222,save:auto},fancybox:false,mediumzoom:false,lazyload:false,pangu:false,comments:{style:tabs,active:null,storage:true,lazyload:false,nav:null},algolia:{hits:{per_page:10},labels:{input_placeholder:Search for Posts,hits_empty:We didnt find any results for the search: ${query},hits_stats:${hits} results found in ${time} ms}},localsearch:{enable:false,trigger:auto,top_n_per_article:1,unescape:false,preload:false},motion:{enable:true,async:false,transition:{post_block:fadeIn,post_header:slideDownIn,post_body:slideDownIn,coll_header:slideLeftIn,sidebar:slideUpIn}}}; /script> meta propertyog:type contentwebsite>meta propertyog:title content倪倪的blog>meta propertyog:url contenthttp://localhost/index.html>meta propertyog:site_name content倪倪的blog>meta propertyog:locale contentzh_CN>meta nametwitter:card contentsummary>link relcanonical hrefhttp://localhost/>script idpage-configurations> // https://hexo.io/docs/variables.html CONFIG.page { sidebar: , isHome : true, isPost : false, lang : zh-CN };/script> title>倪倪的blog/title> noscript> style> .use-motion .brand, .use-motion .menu-item, .sidebar-inner, .use-motion .post-block, .use-motion .pagination, .use-motion .comments, .use-motion .post-header, .use-motion .post-body, .use-motion .collection-header { opacity: initial; } .use-motion .site-title, .use-motion .site-subtitle { opacity: initial; top: initial; } .use-motion .logo-line-before i { left: initial; } .use-motion .logo-line-after i { right: initial; } /style>/noscript>/head>body itemscope itemtypehttp://schema.org/WebPage> div classcontainer use-motion> div classheadband>/div> header classheader itemscope itemtypehttp://schema.org/WPHeader> div classheader-inner>div classsite-brand-container> div classsite-nav-toggle> div classtoggle aria-labelToggle navigation bar> span classtoggle-line toggle-line-first>/span> span classtoggle-line toggle-line-middle>/span> span classtoggle-line toggle-line-last>/span> /div> /div> div classsite-meta> a href/ classbrand relstart> span classlogo-line-before>i>/i>/span> h1 classsite-title>倪倪的blog/h1> span classlogo-line-after>i>/i>/span> /a> /div> div classsite-nav-right> div classtoggle popup-trigger> /div> /div>/div>nav classsite-nav> ul idmenu classmain-menu menu> li classmenu-item menu-item-home> a href/ relsection>i classfa fa-home fa-fw>/i>Home/a> /li> li classmenu-item menu-item-tags> a href/tags/ relsection>i classfa fa-tags fa-fw>/i>Tags/a> /li> li classmenu-item menu-item-archives> a href/archives/ relsection>i classfa fa-archive fa-fw>/i>Archives/a> /li> /ul>/nav>/div> /header> div classback-to-top> i classfa fa-arrow-up>/i> span>0%/span> /div> main classmain> div classmain-inner> div classcontent-wrap> div classcontent index posts-expand> article itemscope itemtypehttp://schema.org/Article classpost-block langzh-CN> link itempropmainEntityOfPage hrefhttp://localhost/2025/05/27/AI%E8%AE%BA%E6%96%87%E7%BC%96%E8%BE%91%E5%99%A8%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E8%B7%AF%E7%BA%BF/> span hidden itempropauthor itemscope itemtypehttp://schema.org/Person> meta itempropimage content/images/avatar.gif> meta itempropname content> meta itempropdescription content> /span> span hidden itemproppublisher itemscope itemtypehttp://schema.org/Organization> meta itempropname content倪倪的blog> /span> header classpost-header> h2 classpost-title itempropname headline> a href/2025/05/27/AI%E8%AE%BA%E6%96%87%E7%BC%96%E8%BE%91%E5%99%A8%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E8%B7%AF%E7%BA%BF/ classpost-title-link itempropurl>AI论文编辑器前端开发路线(GPT生成)/a> /h2> div classpost-meta> span classpost-meta-item> span classpost-meta-item-icon> i classfar fa-calendar>/i> /span> span classpost-meta-item-text>Posted on/span> time titleCreated: 2025-05-27 00:35:54 itempropdateCreated datePublished datetime2025-05-27T00:35:54+00:00>2025-05-27/time> /span> span classpost-meta-item> span classpost-meta-item-icon> i classfar fa-calendar-check>/i> /span> span classpost-meta-item-text>Edited on/span> time titleModified: 2025-06-11 17:52:22 itempropdateModified datetime2025-06-11T17:52:22+00:00>2025-06-11/time> /span> /div> /header> div classpost-body itemproparticleBody> h1 id🧱-前端开发文档:AI-论文编辑器>a href#🧱-前端开发文档:AI-论文编辑器 classheaderlink title🧱 前端开发文档:AI 论文编辑器>/a>🧱 前端开发文档:AI 论文编辑器/h1>hr>h2 id⚙️-技术选型>a href#⚙️-技术选型 classheaderlink title⚙️ 技术选型>/a>⚙️ 技术选型/h2>ul>li>strong>框架/strong>:Vue 3 + Vite/li>li>strong>组件库/strong>:推荐 a hrefhttps://element-plus.org/>Element Plus/a>(功能丰富、适配 PC 编辑器)/li>li>strong>状态管理/strong>:Pinia(轻量、Vue 3 原生支持)/li>li>strong>路由/strong>:Vue Router/li>li>strong>富文本编辑器/strong>:推荐 a hrefhttps://tiptap.dev/>TipTap/a> 或 a hrefhttps://editorjs.io/>Editor.js/a>ul>li>支持 Markdown 格式、嵌入图片、表格、标题/li>/ul>/li>li>strong>PDF预览/strong>:code>pdfjs-dist/code> + code><iframe>/code> 或 code>vue-pdf-embed/code>/li>li>strong>Markdown解析/strong>:code>markdown-it/code>(将 AI 输出的 Markdown 渲染成 HTML)/li>/ul>hr>h2 id📁-项目结构>a href#📁-项目结构 classheaderlink title📁 项目结构>/a>📁 项目结构/h2>figure classhighlight plaintext>table>tr>td classgutter>pre>span classline>1/span>br>span classline>2/span>br>span classline>3/span>br>span classline>4/span>br>span classline>5/span>br>span classline>6/span>br>span classline>7/span>br>span classline>8/span>br>span classline>9/span>br>span classline>10/span>br>span classline>11/span>br>span classline>12/span>br>span classline>13/span>br>/pre>/td>td classcode>pre>span classline>frontend//span>br>span classline>├── public//span>br>span classline>├── src//span>br>span classline>│ ├── assets//span>br>span classline>│ ├── components/ # 通用组件(按钮、对话框等)/span>br>span classline>│ ├── views/ # 页面(编辑器页、登录页)/span>br>span classline>│ ├── editor/ # 富文本编辑器相关组件/span>br>span classline>│ ├── layout/ # 页面布局(侧边栏、顶部导航)/span>br>span classline>│ ├── router//span>br>span classline>│ ├── store//span>br>span classline>│ ├── utils/ # 工具函数(JWT解析、API封装)/span>br>span classline>│ └── App.vue/span>br>span classline>└── vite.config.ts/span>br>/pre>/td>/tr>/table>/figure>hr>h2 id🧭-页面设计>a href#🧭-页面设计 classheaderlink title🧭 页面设计>/a>🧭 页面设计/h2>table>thead>tr>th>页面/th>th>说明/th>/tr>/thead>tbody>tr>td>登录/注册页/td>td>用户认证,获取JWT/td>/tr>tr>td>主编辑器页面/td>td>核心编辑器,包含目录树、编辑区、AI对话/td>/tr>tr>td>模板选择页面/td>td>选择docx/pdf模板,预览样式/td>/tr>tr>td>论文预览页面/td>td>LaTeX→PDF后的预览/td>/tr>/tbody>/table>hr>h2 id🧩-功能组件(模块划分)>a href#🧩-功能组件(模块划分) classheaderlink title🧩 功能组件(模块划分)>/a>🧩 功能组件(模块划分)/h2>h3 id1-📚-目录树组件(OutlineTree)>a href#1-📚-目录树组件(OutlineTree) classheaderlink title1. 📚 目录树组件(OutlineTree)>/a>1. 📚 目录树组件(OutlineTree)/h3>ul>li>作用:显示论文结构,支持增删改查、拖拽排序/li>li>功能:ul>li>添加/删除章节/li>li>修改标题文本/li>li>拖动排序/li>/ul>/li>li>技术建议:使用 code>element-plus/code> 的 code>el-tree/code> + 拖拽插件(如 code>vuedraggable/code>)/li>/ul>hr>h3 id2-✍️-富文本编辑器组件(RichEditor)>a href#2-✍️-富文本编辑器组件(RichEditor) classheaderlink title2. ✍️ 富文本编辑器组件(RichEditor)>/a>2. ✍️ 富文本编辑器组件(RichEditor)/h3>ul>li>每个目录节点对应一个编辑器实例(或者通过切换加载)/li>li>支持:ul>li>Markdown / HTML 编辑/li>li>图片上传/li>li>表格插入/li>/ul>/li>li>推荐:strong>Tiptap/strong>(可用 code>@tiptap/vue-3/code>)/li>/ul>hr>h3 id3-🤖-AI-对话组件(ChatPanel)>a href#3-🤖-AI-对话组件(ChatPanel) classheaderlink title3. 🤖 AI 对话组件(ChatPanel)>/a>3. 🤖 AI 对话组件(ChatPanel)/h3>ul>li>支持上下文提示输入/li>li>可预设 prompt 模板(“写摘要”、“润色该段”、“按学术格式重写”等)/li>li>支持 Markdown 渲染 AI 回复,点击“应用”按钮插入到当前章节/li>/ul>hr>h3 id4-🧾-模板选择与导出组件(TemplateManager)>a href#4-🧾-模板选择与导出组件(TemplateManager) classheaderlink title4. 🧾 模板选择与导出组件(TemplateManager)>/a>4. 🧾 模板选择与导出组件(TemplateManager)/h3>ul>li>显示所有可用模板(后端返回)/li>li>可上传 zip 格式模板/li>li>支持设置默认模板/li>li>导出按钮发送 POST 请求生成 PDF(返回下载链接或预览)/li>/ul>hr>h3 id5-🖼-PDF-预览组件(PdfPreview)>a href#5-🖼-PDF-预览组件(PdfPreview) classheaderlink title5. 🖼 PDF 预览组件(PdfPreview)>/a>5. 🖼 PDF 预览组件(PdfPreview)/h3>ul>li>使用 code>pdfjs-dist/code> 或 code>vue-pdf-embed/code>/li>li>将生成的 PDF 放入 code><iframe>/code> 或直接嵌入预览/li>/ul>hr>h3 id6-🧑-用户中心(UserPanel)>a href#6-🧑-用户中心(UserPanel) classheaderlink title6. 🧑 用户中心(UserPanel)>/a>6. 🧑 用户中心(UserPanel)/h3>ul>li>用户信息展示/li>li>JWT 管理(登录时写入 LocalStorage)/li>li>支持修改密码、退出登录/li>/ul>hr>h2 id🔗-与后端接口对接>a href#🔗-与后端接口对接 classheaderlink title🔗 与后端接口对接>/a>🔗 与后端接口对接/h2>h3 id登录认证>a href#登录认证 classheaderlink title登录认证>/a>登录认证/h3>ul>li>登录成功后保存 JWT 到本地/li>/ul>figure classhighlight ts>table>tr>td classgutter>pre>span classline>1/span>br>/pre>/td>td classcode>pre>span classline>span classvariable language_>localStorage/span>.span classtitle function_>setItem/span>(span classstring>"token"/span>, res.span classproperty>data/span>.span classproperty>access_token/span>)/span>br>/pre>/td>/tr>/table>/figure>ul>li>所有请求需带上 code>Authorization: Bearer <token>/code>/li>/ul>h3 id与后端交互接口示例>a href#与后端交互接口示例 classheaderlink title与后端交互接口示例>/a>与后端交互接口示例/h3>figure classhighlight ts>table>tr>td classgutter>pre>span classline>1/span>br>span classline>2/span>br>span classline>3/span>br>span classline>4/span>br>span classline>5/span>br>span classline>6/span>br>/pre>/td>td classcode>pre>span classline>span classkeyword>const/span> api axios.span classtitle function_>create/span>({/span>br>span classline> span classattr>baseURL/span>: span classstring>'http://localhost:8000/api'/span>,/span>br>span classline> span classattr>headers/span>: {/span>br>span classline> span classstring>'Authorization'/span>: span classstring>`Bearer span classsubst>${span classvariable language_>localStorage/span>.getItem(span classstring>'token'/span>)}/span>`/span>/span>br>span classline> }/span>br>span classline>});/span>br>/pre>/td>/tr>/table>/figure>hr>h2 id🛠-本地存储与状态管理>a href#🛠-本地存储与状态管理 classheaderlink title🛠 本地存储与状态管理>/a>🛠 本地存储与状态管理/h2>ul>li>使用 strong>Pinia/strong> 管理全局状态(论文结构、当前编辑节点、AI上下文等)/li>li>使用 code>localStorage/code> 持久化当前论文内容(防止断网或退出丢失)/li>/ul>hr>h2 id🧪-页面交互流程(简化)>a href#🧪-页面交互流程(简化) classheaderlink title🧪 页面交互流程(简化)>/a>🧪 页面交互流程(简化)/h2>figure classhighlight plaintext>table>tr>td classgutter>pre>span classline>1/span>br>span classline>2/span>br>span classline>3/span>br>span classline>4/span>br>span classline>5/span>br>span classline>6/span>br>span classline>7/span>br>span classline>8/span>br>span classline>9/span>br>/pre>/td>td classcode>pre>span classline>用户登录/span>br>span classline> ↓/span>br>span classline>进入编辑页面(加载论文结构)/span>br>span classline> ↓/span>br>span classline>选择某一章节 → 加载富文本内容/span>br>span classline> ↓/span>br>span classline>可编辑 / AI生成 / 插入段落/span>br>span classline> ↓/span>br>span classline>点击导出 → 后端生成PDF → 前端预览/下载/span>br>/pre>/td>/tr>/table>/figure>hr>h2 id🧩-推荐依赖清单(部分)>a href#🧩-推荐依赖清单(部分) classheaderlink title🧩 推荐依赖清单(部分)>/a>🧩 推荐依赖清单(部分)/h2>figure classhighlight bash>table>tr>td classgutter>pre>span classline>1/span>br>/pre>/td>td classcode>pre>span classline>npm install vue-router pinia axios element-plus tiptap @tiptap/vue-3 markdown-it pdfjs-dist vue-pdf-embed vuedraggable/span>br>/pre>/td>/tr>/table>/figure>hr>h2 id🚀-后续可拓展功能>a href#🚀-后续可拓展功能 classheaderlink title🚀 后续可拓展功能>/a>🚀 后续可拓展功能/h2>ul>li>支持多人协作编辑(WebSocket)/li>li>引用管理(文献库 + BibTeX 解析)/li>li>编辑历史版本回退/li>li>AI 风格选择(科普、学术、简洁)/li>/ul>hr> /div> footer classpost-footer> div classpost-eof>/div> /footer> /article> article itemscope itemtypehttp://schema.org/Article classpost-block langzh-CN> link itempropmainEntityOfPage hrefhttp://localhost/2025/05/27/AI%E8%AE%BA%E6%96%87%E7%BC%96%E8%BE%91%E5%99%A8%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91%E8%B7%AF%E7%BA%BF/> span hidden itempropauthor itemscope itemtypehttp://schema.org/Person> meta itempropimage content/images/avatar.gif> meta itempropname content> meta itempropdescription content> /span> span hidden itemproppublisher itemscope itemtypehttp://schema.org/Organization> meta itempropname content倪倪的blog> /span> header classpost-header> h2 classpost-title itempropname headline> a href/2025/05/27/AI%E8%AE%BA%E6%96%87%E7%BC%96%E8%BE%91%E5%99%A8%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91%E8%B7%AF%E7%BA%BF/ classpost-title-link itempropurl>AI论文编辑器后端开发路线(GPT生成)/a> /h2> div classpost-meta> span classpost-meta-item> span classpost-meta-item-icon> i classfar fa-calendar>/i> /span> span classpost-meta-item-text>Posted on/span> time titleCreated: 2025-05-27 00:31:54 itempropdateCreated datePublished datetime2025-05-27T00:31:54+00:00>2025-05-27/time> /span> span classpost-meta-item> span classpost-meta-item-icon> i classfar fa-calendar-check>/i> /span> span classpost-meta-item-text>Edited on/span> time titleModified: 2025-06-11 17:54:08 itempropdateModified datetime2025-06-11T17:54:08+00:00>2025-06-11/time> /span> /div> /header> div classpost-body itemproparticleBody> h1 id🧭-后端开发路线>a href#🧭-后端开发路线 classheaderlink title🧭 后端开发路线>/a>🧭 后端开发路线/h1>hr>h2 id✅-阶段-1:基础搭建与身份认证模块>a href#✅-阶段-1:基础搭建与身份认证模块 classheaderlink title✅ 阶段 1:基础搭建与身份认证模块>/a>✅ 阶段 1:基础搭建与身份认证模块/h2>blockquote>p>目标:建立项目结构、数据库、JWT认证机制/p>/blockquote>h3 id✅-工作项:>a href#✅-工作项: classheaderlink title✅ 工作项:>/a>✅ 工作项:/h3>ol>li>p>strong>项目结构搭建/strong>/p>figure classhighlight plaintext>table>tr>td classgutter>pre>span classline>1/span>br>span classline>2/span>br>span classline>3/span>br>span classline>4/span>br>span classline>5/span>br>span classline>6/span>br>span classline>7/span>br>span classline>8/span>br>span classline>9/span>br>span classline>10/span>br>span classline>11/span>br>span classline>12/span>br>span classline>13/span>br>span classline>14/span>br>span classline>15/span>br>span classline>16/span>br>span classline>17/span>br>span classline>18/span>br>/pre>/td>td classcode>pre>span classline>backend//span>br>span classline>├── main.py # FastAPI 启动入口/span>br>span classline>├── api/ # 路由模块/span>br>span classline>│ ├── auth.py/span>br>span classline>│ └── user.py/span>br>span classline>├── models/ # 数据模型/span>br>span classline>│ └── user.py/span>br>span classline>├── db/ # 数据库操作/span>br>span classline>│ ├── database.py/span>br>span classline>│ └── crud_user.py/span>br>span classline>├── core/ # 核心配置/span>br>span classline>│ ├── config.py/span>br>span classline>│ └── security.py/span>br>span classline>├── schemas/ # Pydantic数据结构/span>br>span classline>│ ├── user.py/span>br>span classline>│ └── token.py/span>br>span classline>└── utils/ # 实用函数/span>br>span classline> └── encryption.py/span>br>/pre>/td>/tr>/table>/figure>/li>li>p>strong>数据库/strong>/p>ul>li>使用 SQLite + SQLAlchemy 创建 code>User/code> 表/li>li>密码使用 bcrypt 加密/li>/ul>/li>li>p>strong>认证模块/strong>/p>ul>li>注册 code>/auth/register/code>/li>li>登录 code>/auth/login/code>,返回 JWT/li>li>获取当前用户 code>/user/me/code>/li>/ul>/li>li>p>strong>配置/strong>/p>ul>li>使用 code>.env/code> 存储密钥和数据库路径/li>li>JWT 配置(code>SECRET_KEY/code>, code>ALGORITHM/code>, code>ACCESS_TOKEN_EXPIRE_MINUTES/code>)/li>/ul>/li>/ol>hr>h2 id✅-阶段-2:论文结构与存储模块>a href#✅-阶段-2:论文结构与存储模块 classheaderlink title✅ 阶段 2:论文结构与存储模块>/a>✅ 阶段 2:论文结构与存储模块/h2>blockquote>p>目标:实现论文结构的保存与管理接口(包括章节、标题、内容)/p>/blockquote>h3 id✅-工作项:-1>a href#✅-工作项:-1 classheaderlink title✅ 工作项:>/a>✅ 工作项:/h3>ol>li>p>strong>定义模型/strong>/p>ul>li>code>Paper/code>, code>Section/code>, code>UserTemplate/code>/li>li>论文结构嵌套(标题+内容)/li>/ul>/li>li>p>strong>接口设计/strong>/p>table>thead>tr>th>路由/th>th>方法/th>th>说明/th>/tr>/thead>tbody>tr>td>code>/paper//code>/td>td>GET/td>td>获取用户所有论文/td>/tr>tr>td>code>/paper/{id}/code>/td>td>GET/td>td>获取指定论文内容/td>/tr>tr>td>code>/paper//code>/td>td>POST/td>td>创建新论文/td>/tr>tr>td>code>/paper/{id}/code>/td>td>PUT/td>td>修改论文结构或内容/td>/tr>tr>td>code>/paper/{id}/code>/td>td>DELETE/td>td>删除论文/td>/tr>/tbody>/table>/li>li>p>strong>前端配合格式/strong>/p>ul>li>每篇论文包含章节(带排序字段)/li>li>每个章节保存 Markdown 格式内容/li>/ul>/li>/ol>hr>h2 id✅-阶段-3:AI内容生成模块>a href#✅-阶段-3:AI内容生成模块 classheaderlink title✅ 阶段 3:AI内容生成模块>/a>✅ 阶段 3:AI内容生成模块/h2>blockquote>p>目标:接入 AI 接口,实现根据请求生成内容的能力/p>/blockquote>h3 id✅-工作项:-2>a href#✅-工作项:-2 classheaderlink title✅ 工作项:>/a>✅ 工作项:/h3>ol>li>strong>定义接口/strong>ul>li>POST code>/ai/generate/code>/li>li>输入:prompt、当前章节上下文/li>li>输出:Markdown文本/li>/ul>/li>li>strong>AI 接入/strong>ul>li>接 OpenAI GPT API 或本地模型接口/li>li>可加入角色设定(如论文助手、润色专家)/li>/ul>/li>li>strong>AI内容与结构整合/strong>ul>li>支持 AI 输出自动添加为新章节或合并到当前章节/li>/ul>/li>/ol>hr>h2 id✅-阶段-4:LaTeX-模板与-PDF-生成模块>a href#✅-阶段-4:LaTeX-模板与-PDF-生成模块 classheaderlink title✅ 阶段 4:LaTeX 模板与 PDF 生成模块>/a>✅ 阶段 4:LaTeX 模板与 PDF 生成模块/h2>blockquote>p>目标:支持选择模板并生成 LaTeX + PDF/p>/blockquote>h3 id✅-工作项:-3>a href#✅-工作项:-3 classheaderlink title✅ 工作项:>/a>✅ 工作项:/h3>ol>li>p>strong>模板文件结构/strong>/p>figure classhighlight plaintext>table>tr>td classgutter>pre>span classline>1/span>br>span classline>2/span>br>span classline>3/span>br>span classline>4/span>br>span classline>5/span>br>span classline>6/span>br>/pre>/td>td classcode>pre>span classline>templates//span>br>span classline>├── default//span>br>span classline>│ ├── main.tex/span>br>span classline>│ └── style.sty/span>br>span classline>└── ieee//span>br>span classline> └── .../span>br>/pre>/td>/tr>/table>/figure>/li>li>p>strong>模板管理接口/strong>/p>table>thead>tr>th>路由/th>th>方法/th>th>说明/th>/tr>/thead>tbody>tr>td>code>/template/list/code>/td>td>GET/td>td>获取模板列表/td>/tr>tr>td>code>/template/upload/code>/td>td>POST/td>td>上传模板(zip)/td>/tr>tr>td>code>/template/set/code>/td>td>POST/td>td>设置论文模板/td>/tr>/tbody>/table>/li>li>p>strong>LaTeX渲染与PDF生成/strong>/p>ul>li>使用 code>Jinja2/code> 渲染 code>.tex/code> 模板/li>li>编译命令行调用 code>pdflatex/code> 或 code>xelatex/code>/li>li>输出 PDF 到 code>media//code> 目录/li>li>返回 Base64 或下载链接/li>/ul>/li>/ol>hr>h2 id✅-阶段-5:安全通信与加密模块>a href#✅-阶段-5:安全通信与加密模块 classheaderlink title✅ 阶段 5:安全通信与加密模块>/a>✅ 阶段 5:安全通信与加密模块/h2>blockquote>p>目标:实现数据加密(选配)/p>/blockquote>h3 id✅-工作项:-4>a href#✅-工作项:-4 classheaderlink title✅ 工作项:>/a>✅ 工作项:/h3>ol>li>JWT认证ul>li>全部受保护接口使用 code>Depends(get_current_user)/code>/li>/ul>/li>li>AES 数据加密(可选)ul>li>使用 code>pycryptodome/code>/li>li>加密内容如论文正文(可选加密内容块)/li>/ul>/li>/ol>hr>h2 id✅-阶段-6:接口联调与部署>a href#✅-阶段-6:接口联调与部署 classheaderlink title✅ 阶段 6:接口联调与部署>/a>✅ 阶段 6:接口联调与部署/h2>blockquote>p>目标:完成接口测试,准备上线部署/p>/blockquote>h3 id✅-工作项:-5>a href#✅-工作项:-5 classheaderlink title✅ 工作项:>/a>✅ 工作项:/h3>ol>li>接口调试(Postman)ul>li>全流程测试论文编辑 → 生成PDF/li>/ul>/li>li>启动脚本与跨域支持ul>li>CORS中间件配置/li>li>加入 code>gunicorn/code>, code>uvicorn/code>, code>supervisor/code>/li>/ul>/li>li>部署建议ul>li>FastAPI + Uvicorn/li>li>SQLite可换为 PostgreSQL(如需扩展)/li>li>前后端分离部署,Nginx 反向代理/li>/ul>/li>/ol>hr>h2 id🚀-附加建议>a href#🚀-附加建议 classheaderlink title🚀 附加建议>/a>🚀 附加建议/h2>table>thead>tr>th>阶段/th>th>可选扩展功能/th>/tr>/thead>tbody>tr>td>1/td>td>邮箱验证、找回密码/td>/tr>tr>td>2/td>td>章节评论、版本管理/td>/tr>tr>td>3/td>td>AI润色 / AI纠错功能/td>/tr>tr>td>4/td>td>支持 BibTeX 引文 / 参考文献管理/td>/tr>tr>td>6/td>td>Docker 容器化部署/td>/tr>/tbody>/table>hr> /div> footer classpost-footer> div classpost-eof>/div> /footer> /article> article itemscope itemtypehttp://schema.org/Article classpost-block langzh-CN> link itempropmainEntityOfPage hrefhttp://localhost/2025/05/26/CSP-ISBN/> span hidden itempropauthor itemscope itemtypehttp://schema.org/Person> meta itempropimage content/images/avatar.gif> meta itempropname content> meta itempropdescription content> /span> span hidden itemproppublisher itemscope itemtypehttp://schema.org/Organization> meta itempropname content倪倪的blog> /span> header classpost-header> h2 classpost-title itempropname headline> a href/2025/05/26/CSP-ISBN/ classpost-title-link itempropurl>CSP--ISBN/a> /h2> div classpost-meta> span classpost-meta-item> span classpost-meta-item-icon> i classfar fa-calendar>/i> /span> span classpost-meta-item-text>Posted on/span> time titleCreated: 2025-05-26 18:09:39 itempropdateCreated datePublished datetime2025-05-26T18:09:39+00:00>2025-05-26/time> /span> span classpost-meta-item> span classpost-meta-item-icon> i classfar fa-calendar-check>/i> /span> span classpost-meta-item-text>Edited on/span> time titleModified: 2025-06-11 18:22:23 itempropdateModified datetime2025-06-11T18:22:23+00:00>2025-06-11/time> /span> /div> /header> div classpost-body itemproparticleBody> p>img src/images/ISBN.png altISBN.png>/p>figure classhighlight plaintext>table>tr>td classgutter>pre>span classline>1/span>br>span classline>2/span>br>span classline>3/span>br>span classline>4/span>br>span classline>5/span>br>span classline>6/span>br>span classline>7/span>br>span classline>8/span>br>span classline>9/span>br>span classline>10/span>br>span classline>11/span>br>span classline>12/span>br>span classline>13/span>br>span classline>14/span>br>span classline>15/span>br>span classline>16/span>br>span classline>17/span>br>span classline>18/span>br>span classline>19/span>br>span classline>20/span>br>span classline>21/span>br>/pre>/td>td classcode>pre>span classline>#include <stdio.h>/span>br>span classline>int main()/span>br>span classline>{/span>br>span classline> int sum 0,i0,n1;/span>br>span classline> char s14;/span>br>span classline> scanf("%13s", s);/span>br>span classline> while (i<11)/span>br>span classline> {/span>br>span classline> if (si ! '-')sum + (si - 48)*(n++);/span>br>span classline> i++;/span>br>span classline> }/span>br>span classline> if (s12 - 48 sum % 11 || s12 'X' && sum % 11 10)printf("Right");/span>br>span classline> else/span>br>span classline> {/span>br>span classline> if (sum % 11 ! 10)s12 (sum % 11) + 48;/span>br>span classline> if (sum % 11 10)s12 'X';/span>br>span classline> printf("%s", s);/span>br>span classline> }/span>br>span classline> return 0;/span>br>span classline>}/span>br>span classline>/span>br>/pre>/td>/tr>/table>/figure> /div> footer classpost-footer> div classpost-eof>/div> /footer> /article> /div> script> window.addEventListener(tabs:register, () > { let { activeClass } CONFIG.comments; if (CONFIG.comments.storage) { activeClass localStorage.getItem(comments_active) || activeClass; } if (activeClass) { let activeTab document.querySelector(`ahref#comment-${activeClass}`); if (activeTab) { activeTab.click(); } } }); if (CONFIG.comments.storage) { window.addEventListener(tabs:click, event > { if (!event.target.matches(.tabs-comment .tab-content .tab-pane)) return; let commentClass event.target.classList1; localStorage.setItem(comments_active, commentClass); }); }/script> /div> div classtoggle sidebar-toggle> span classtoggle-line toggle-line-first>/span> span classtoggle-line toggle-line-middle>/span> span classtoggle-line toggle-line-last>/span> /div> aside classsidebar> div classsidebar-inner> ul classsidebar-nav motion-element> li classsidebar-nav-toc> Table of Contents /li> li classsidebar-nav-overview> Overview /li> /ul> !--noindex--> div classpost-toc-wrap sidebar-panel> /div> !--/noindex--> div classsite-overview-wrap sidebar-panel> div classsite-author motion-element itempropauthor itemscope itemtypehttp://schema.org/Person> p classsite-author-name itempropname>/p> div classsite-description itempropdescription>/div>/div>div classsite-state-wrap motion-element> nav classsite-state> div classsite-state-item site-state-posts> a href/archives/> span classsite-state-item-count>3/span> span classsite-state-item-name>posts/span> /a> /div> /nav>/div> /div> /div> /aside> div idsidebar-dimmer>/div> /div> /main> footer classfooter> div classfooter-inner> div classbeian>a hrefhttps://beian.miit.gov.cn/ relnoopener target_blank>粤ICP备2025423875号 /a> /div>div classcopyright> © span itempropcopyrightYear>2025/span> span classwith-love> i classfa fa-heart>/i> /span> span classauthor itempropcopyrightHolder>/span>/div> div classpowered-by>Powered by a hrefhttps://hexo.io/ classtheme-link relnoopener target_blank>Hexo/a> & a hrefhttps://muse.theme-next.org/ classtheme-link relnoopener target_blank>NexT.Muse/a> /div> /div> /footer> /div> script src/lib/anime.min.js>/script> script src/lib/velocity/velocity.min.js>/script> script src/lib/velocity/velocity.ui.min.js>/script>script src/js/utils.js>/script>script src/js/motion.js>/script>script src/js/schemes/muse.js>/script>script src/js/next-boot.js>/script> /body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]