|
|
38 минут өмнө | |
|---|---|---|
| .vscode | 1 сар өмнө | |
| deployment | 2 өдөр өмнө | |
| docs | 48 минут өмнө | |
| legacy-sync-bridge | 3 долоо хоног өмнө | |
| perf | 1 өдөр өмнө | |
| projects | 38 минут өмнө | |
| public | 3 долоо хоног өмнө | |
| scripts | 41 минут өмнө | |
| tools | 3 долоо хоног өмнө | |
| .editorconfig | 1 сар өмнө | |
| .gitignore | 1 сар өмнө | |
| AGENTS.md | 1 сар өмнө | |
| README.md | 2 долоо хоног өмнө | |
| angular.json | 3 долоо хоног өмнө | |
| design-qa-mobile-implementation.png | 1 сар өмнө | |
| design-qa-mobile-source.png | 1 сар өмнө | |
| design-qa.md | 3 долоо хоног өмнө | |
| package-lock.json | 1 цаг өмнө | |
| package.json | 1 цаг өмнө | |
| proxy.conf.cjs | 3 долоо хоног өмнө | |
| tsconfig.json | 1 сар өмнө |
这是从同级 xiaoshu-uniapp 迁移出的 Angular 18 工作区。移动端与运营管理后台是两个物理隔离、可独立构建和发布的 Angular 应用:
projects/xiaoshu-mobile:学生端与老师端,根据登录身份展示对应业务能力。projects/xiaoshu-admin:运营管理后台与仅超级管理员可见的技术后台。两个应用拥有独立入口、路由、测试配置、开发端口和构建产物,不会把另一端的业务源码打进自己的前端包。
npm install
npm run start:mobile
npm run start:admin
移动端运行在 http://127.0.0.1:4200/,管理后台运行在 http://127.0.0.1:4300/admin/login。两个开发服务器都通过 proxy.conf.cjs 转发所需服务,避免本地调试时的跨域问题。
AI 阅读统一通过生产云函数调用生成服务,本地 Angular 进程不需要、也不应持有生成服务令牌。首次部署服务端配置时执行:
XIAOSHU_MASTER_KEY="..." FMODE_API_TOKEN="..." npm run reading:ai:configure
npm run cloud:deploy -- --only=xiaoshu/app/gateway
npm run build
npm run test:ci
也可以分别执行:
npm run build:mobile
npm run build:admin
npm run test:mobile:ci
npm run test:admin:ci
移动端输出到 dist/xiaoshu-mobile/browser/,管理后台输出到 dist/xiaoshu-admin/browser/。两个站点部署时都需要把各自的 Angular 路由回退到对应的 index.html。
管理端发布包使用 npm run release:admin:prepare 生成,要求已跟踪的修改先提交。输出位于 dist/admin-release/,包含静态站点、带源码提交号的版本清单、每个文件的 SHA-256 和压缩包校验和。压缩包只包含前端构建,不包含云函数、数据库备份或服务端密钥。
上传 site/ 内容到现有后台站点时,先上传资源文件,最后更新 index.html;保留旧的哈希资源,避免已打开的页面找不到旧脚本。上传完成后执行 npm run release:admin:verify,核对 https://admin.xiaoshu.pro 的版本、全部文件及 /admin/login、/admin/payroll 深层路由。其他核验地址通过 XIAOSHU_ADMIN_URL 指定。准备和核验命令均不会上传文件或修改线上配置。
当前公网后台直接调用 https://server.xiaoshu.pro/api/functions,仅本地开发使用代理。前端上传需要独立的站点托管权限;XIAOSHU_MASTER_KEY 不具备该权限,不能放入前端配置或发布包。
pages.json 中 95/95 条路由已注册,路径保持不变。httpApi.* 外部业务调用,npm run parity:check 可检测源页面变化。user_sync2 依赖 uni-app/微信容器,H5 改用短信登录、账号密码登录与注册。returnUrl 并跳转登录页。uniapp.bytedesk.com 已停用原 /visitor/api/* 接口并改为返回微语官网 HTML,因此旧 UniApp 与迁移页目前都无法建立真实会话;页面会明确显示旧服务已停用。/api/rate/detail、/api/rate/do、/api/leavemsg/save 协议及 tid/wid/aid/type/invite 会话参数;旧 Bytedesk 服务停用时会显示真实错误。id 时禁止提交并提示从正确入口进入。xxqs 提取单词后进入 Angular 阅读设置、AI 文章生成、词汇补全、选择题、历史成绩和 PDF 导出页面,不再加载 app.fmode.cn iframe。/pages/iframe/index 保留参数兼容,原 params 中的单词列表与 NCloud 会话会被内部页面接收。/english:生词阅读入口可用,“外文源刊解析”和“智慧陪读陪练”继续按源代码显示“暂未开放”。涉及支付、短信、上传、写入和登录后数据的真实联调,需要有效测试账号及可用的后端业务数据。自动测试使用模拟会话和模拟 API,避免在验收中产生真实订单、短信或数据变更。
原排行榜动态调用的 ranklist_1 至 ranklist_5 在当前后端返回“接口不存在”,H5 保留原请求并显示空状态。
uniapp.bytedesk.com、upload.bytedesk.com 发送聊天内容和所选附件。当前匿名会话握手会因旧接口下线而中止,不会继续发送聊天或上传文件。server.xiaoshu.pro 的阅读云函数处理;生成所需的单词、年级、题材和提示词由该云函数转发至 api.fmode.cn。生成服务令牌与 Parse masterKey 只保留在服务端,不存放在前端源码、Angular 代理或浏览器存储中。生产部署需要配置 xiaoshu/app/gateway 云函数及 Parse Config 中的生成服务令牌;不要把 FMODE_API_TOKEN 或 Parse masterKey 写进 Angular 环境文件、反向代理或浏览器构建产物。
为避免扩大私有数据读取范围,迁移版在两处保留了比源仓库更严格的限制:答题记录始终限定当前用户,PDF 页面继续要求当前应用登录;源仓库中未带用户条件的历史查询和公开 PDF ID 读取没有照搬。H5 目标也不再执行原 iframe 中仅供 APP-PLUS 使用的 uni.postMessage PDF 回传。
恢复客服需要在新版微语后台取得新的 org、sid,并另行授权新版 H5 客服实际使用的域名;当前官方接入格式已不再使用旧版 subDomain、workGroupId。