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
-23
View File
@@ -1,5 +1,3 @@
import { listPreviewFamilyFeeds } from '@/data/preview/family-content.js'
import { hasRemoteConfig } from '@/utils/runtime-config.js'
import {
FEED_COMMENT_LEVEL,
normalizeDirectFeedReplies,
@@ -15,11 +13,6 @@ import { normalizeGenealogyPathId } from './genealogy-contract.js'
import { normalizeResourcePathId } from './request-normalizers.js'
import { createRequestError, requestStrict } from './request-client.js'
const requireRemoteFeed = (message, code) => {
if (hasRemoteConfig()) return
throw createRequestError(message, code)
}
const normalizePageQuery = (pageNum, pageSize, label) => {
if (!Number.isSafeInteger(pageNum) || pageNum < 1 || !Number.isSafeInteger(pageSize) || pageSize < 1) {
throw new TypeError(`${label}分页参数无效`)
@@ -35,7 +28,6 @@ const assertPageResponse = (page, label) => {
export const familyFeedApi = {
async createFeedComment(genealogyId, feedId, payload, requestOptions = {}) {
requireRemoteFeed('动态评论需要真实服务,当前本地预览不会伪造提交成功', 'REMOTE_WRITE_REQUIRED')
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedFeedId = normalizeFeedResourceId(feedId, '动态标识')
return requestStrict({
@@ -49,12 +41,6 @@ export const familyFeedApi = {
async getFeedRecommendations(genealogyId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
if (!hasRemoteConfig()) {
return normalizeFamilyFeedRows(
listPreviewFamilyFeeds(normalizedGenealogyId),
normalizedGenealogyId
).map((feed) => ({ ...feed, recommendationReason: '家谱内最新动态' }))
}
const recommendations = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/feed-recommendations`,
method: 'GET'
@@ -67,7 +53,6 @@ export const familyFeedApi = {
async getFeedDetail(genealogyId, feedId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedFeedId = normalizeFeedResourceId(feedId, '动态标识')
requireRemoteFeed('动态详情需要真实读取服务,当前本地预览不会伪造详情', 'REMOTE_READ_REQUIRED')
const feed = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/feeds/${normalizedFeedId}`,
method: 'GET'
@@ -80,7 +65,6 @@ export const familyFeedApi = {
async updateFeed(genealogyId, feedId, payload, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedFeedId = normalizeFeedResourceId(feedId, '动态标识')
requireRemoteFeed('修改动态需要真实服务,当前本地预览不会伪造保存成功', 'REMOTE_WRITE_REQUIRED')
const feed = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/feeds/${normalizedFeedId}`,
method: 'PUT',
@@ -94,7 +78,6 @@ export const familyFeedApi = {
async deleteFeed(genealogyId, feedId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedFeedId = normalizeFeedResourceId(feedId, '动态标识')
requireRemoteFeed('删除动态需要真实服务,当前本地预览不会伪造删除成功', 'REMOTE_WRITE_REQUIRED')
await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/feeds/${normalizedFeedId}`,
method: 'DELETE'
@@ -109,7 +92,6 @@ export const familyFeedApi = {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedFeedId = normalizeFeedResourceId(feedId, '动态标识')
if (typeof liked !== 'boolean') throw new TypeError('动态点赞状态必须是布尔值')
requireRemoteFeed('动态点赞需要真实服务,当前本地预览不会伪造操作成功', 'REMOTE_WRITE_REQUIRED')
await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/feeds/${normalizedFeedId}/likes`,
method: liked ? 'POST' : 'DELETE'
@@ -121,7 +103,6 @@ export const familyFeedApi = {
},
async createFeed(genealogyId, payload, requestOptions = {}) {
requireRemoteFeed('动态发布需要真实服务,当前本地预览不会伪造发布成功', 'REMOTE_WRITE_REQUIRED')
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const createdFeed = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/feeds`,
@@ -136,7 +117,6 @@ export const familyFeedApi = {
async getFeedPage(genealogyId, { pageNum = 1, pageSize = 20 } = {}, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const pageQuery = normalizePageQuery(pageNum, pageSize, '动态')
requireRemoteFeed('家族动态读取需要真实服务,当前本地预览不会伪造结果', 'REMOTE_READ_REQUIRED')
const feedPage = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/feeds/page`,
method: 'GET',
@@ -156,7 +136,6 @@ export const familyFeedApi = {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedFeedId = normalizeResourcePathId(feedId, '动态标识')
const pageQuery = normalizePageQuery(pageNum, pageSize, '评论')
requireRemoteFeed('动态评论读取需要真实服务,当前本地预览不会伪造结果', 'REMOTE_READ_REQUIRED')
const commentPage = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/feeds/${normalizedFeedId}/comments/page`,
method: 'GET',
@@ -182,7 +161,6 @@ export const familyFeedApi = {
const normalizedFeedId = normalizeResourcePathId(feedId, '动态标识')
const normalizedCommentId = normalizeResourcePathId(commentId, '评论标识')
const pageQuery = normalizePageQuery(pageNum, pageSize, '回复')
requireRemoteFeed('评论回复读取需要真实服务,当前本地预览不会伪造结果', 'REMOTE_READ_REQUIRED')
const replyPage = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/feeds/${normalizedFeedId}/comments/${normalizedCommentId}/replies/page`,
method: 'GET',
@@ -207,7 +185,6 @@ export const familyFeedApi = {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
const normalizedFeedId = normalizeResourcePathId(feedId, '动态标识')
const normalizedCommentId = normalizeResourcePathId(commentId, '评论标识')
requireRemoteFeed('动态评论写入需要真实服务,当前本地预览不会伪造结果', 'REMOTE_WRITE_REQUIRED')
await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/feeds/${normalizedFeedId}/comments/${normalizedCommentId}`,
method: 'DELETE'