feat: 完成前端业务闭环与后端联调

This commit is contained in:
2026-08-24 23:37:56 +08:00
parent c59e36f933
commit 9ad572907b
175 changed files with 10711 additions and 1740 deletions
+2 -23
View File
@@ -1,11 +1,8 @@
import { listPreviewFamilyArticles } from '@/data/preview/family-content.js'
import { hasRemoteConfig } from '@/utils/runtime-config.js'
import {
normalizeAppArticle,
normalizeAppArticles,
normalizeArticleCategoryOptions,
normalizeArticleCreatePayload,
normalizePreviewFamilyArticles
normalizeArticleCreatePayload
} from './family-article-contract.js'
import { normalizeGenealogyPathId } from './genealogy-contract.js'
import { normalizeResourcePathId } from './request-normalizers.js'
@@ -14,12 +11,7 @@ import {
normalizeContentAccessGrant,
normalizeContentPasswordPayload
} from './protected-content-contract.js'
import { createRequestError, requestStrict } from './request-client.js'
const requireRemoteArticle = (message, code) => {
if (hasRemoteConfig()) return
throw createRequestError(message, code)
}
import { requestStrict } from './request-client.js'
const requestArticleContentProtection = async ({
genealogyId,
@@ -28,7 +20,6 @@ const requestArticleContentProtection = async ({
data,
requestOptions
}) => {
requireRemoteArticle('谱文内容保护需要真实服务,当前本地预览不会伪造结果', 'REMOTE_WRITE_REQUIRED')
return requestStrict({
url: `/genealogy/app/genealogies/${genealogyId}/articles/${articleId}/content-protection`,
method,
@@ -41,7 +32,6 @@ const requestArticleContentProtection = async ({
export const familyArticleApi = {
async createArticle(genealogyId, payload, requestOptions = {}) {
requireRemoteArticle('谱文创建需要真实服务,当前本地预览不会伪造创建成功', 'REMOTE_WRITE_REQUIRED')
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
return requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/articles`,
@@ -54,12 +44,6 @@ export const familyArticleApi = {
async getArticles(genealogyId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
if (!hasRemoteConfig()) {
return normalizePreviewFamilyArticles(
listPreviewFamilyArticles(normalizedGenealogyId),
normalizedGenealogyId
)
}
const articles = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/articles`,
method: 'GET'
@@ -72,7 +56,6 @@ export const familyArticleApi = {
async getArticleDetail(genealogyId, articleId, accessToken = '', requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedArticleId = normalizeResourcePathId(articleId, '谱文标识')
requireRemoteArticle('谱文详情需要真实读取服务,当前本地预览不会伪造详情', 'REMOTE_READ_REQUIRED')
const article = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/articles/${normalizedArticleId}`,
method: 'GET',
@@ -86,7 +69,6 @@ export const familyArticleApi = {
async updateArticle(genealogyId, articleId, payload, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedArticleId = normalizeResourcePathId(articleId, '谱文标识')
requireRemoteArticle('修改谱文需要真实服务,当前本地预览不会伪造保存成功', 'REMOTE_WRITE_REQUIRED')
const article = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/articles/${normalizedArticleId}`,
method: 'PUT',
@@ -100,7 +82,6 @@ export const familyArticleApi = {
async deleteArticle(genealogyId, articleId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedArticleId = normalizeResourcePathId(articleId, '谱文标识')
requireRemoteArticle('删除谱文需要真实服务,当前本地预览不会伪造删除成功', 'REMOTE_WRITE_REQUIRED')
await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/articles/${normalizedArticleId}`,
method: 'DELETE'
@@ -129,7 +110,6 @@ export const familyArticleApi = {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedArticleId = normalizeResourcePathId(articleId, '谱文标识')
const passwordPayload = normalizeContentPasswordPayload(password)
requireRemoteArticle('谱文内容解锁需要真实服务,当前本地预览不会伪造结果', 'REMOTE_WRITE_REQUIRED')
const accessGrant = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/articles/${normalizedArticleId}/content-unlock`,
method: 'POST',
@@ -154,7 +134,6 @@ export const familyArticleApi = {
async getArticleCategories(genealogyId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
requireRemoteArticle('谱文分类读取需要真实服务,当前本地预览不会伪造结果', 'REMOTE_READ_REQUIRED')
const categories = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/article-categories`,
method: 'GET'