yuanjiajun commited on
Commit
4594750
·
1 Parent(s): c026213

feat: 话题

Browse files
src/const.ts/article.ts ADDED
@@ -0,0 +1,298 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const familyTopic = [
2
+ '夫妻因忙碌缺少陪伴的问题',
3
+ '夫妻忘记纪念日的遗憾',
4
+ '夫妻一方过于强势的困扰',
5
+ '夫妻因育儿理念不同吵架',
6
+ '夫妻因消费观念差异闹别扭',
7
+ '夫妻因亲戚往来产生分歧',
8
+ '亲子间因成绩争吵',
9
+ '亲子因兴趣爱好选择矛盾',
10
+ '亲子因手机使用起冲突',
11
+ '家庭成员因电视节目选择争执',
12
+ '家庭成员对某个成员过度批评问题',
13
+ '家庭成员间无意的言语伤害',
14
+ '家庭成员因生活习惯不同互扰',
15
+ '家庭成员因忘记重要约定而伤心',
16
+ '家庭成员因假期安排各执一词',
17
+ '家庭成员因未分担家务而抱怨',
18
+ '家庭成员间因借钱问题闹僵',
19
+ '家庭成员因信任危机而隔阂',
20
+ '家庭成员因对新成员(如新生儿、新配偶)接受程度不同有矛盾',
21
+ '家庭成员因年龄代沟对时尚理解不同',
22
+ '家庭成员因对某个邻居看法不同而有分歧',
23
+ '家庭成员因吃饭时的话题不愉快',
24
+ '家庭成员因宠物归属问题有矛盾',
25
+ '家庭成员因某件旧家具处理意见不一',
26
+ '家庭成员因参加葬礼的礼仪分歧',
27
+ '家庭成员因生病照顾安排问题',
28
+ '家庭成员因某个人的健康问题过度担心',
29
+ '家庭成员因保健品购买争议',
30
+ '家庭成员因对中医西医看法不同',
31
+ '家庭成员因按摩放松方式选择',
32
+ '家庭成员因是否午睡习惯不同',
33
+ '家庭成员因家庭旅行目的地选择',
34
+ '家庭成员因旅行交通方式选择',
35
+ '家庭成员因旅行住宿标准差异',
36
+ '家庭成员因旅行中景点选择',
37
+ '家庭成员因旅行纪念品购买分歧',
38
+ '家庭成员因家庭大扫除分工不均',
39
+ '家庭成员因对某件珠宝首饰看法不同',
40
+ '家庭成员因发型改变引发的争议',
41
+ '家庭成员因化妆风格差异',
42
+ '家庭成员因刮胡子频率问题(男性成员间)',
43
+ '家庭成员因对某个亲戚的婚礼贺礼选择',
44
+ '家庭成员因对葬礼慰问金多少分歧',
45
+ '家庭成员因在家族聚会上的表现期望不同',
46
+ '家庭成员因对家族故事讲述版本不同',
47
+ '家庭成员因对家族传统习俗理解不同',
48
+ '家庭成员因对家族祭祀仪式重视程度',
49
+ '家庭成员因对家族遗产(如老物件)分配想法',
50
+ '家庭成员因对家族房屋使用安排',
51
+ '夫妻的甜蜜约会',
52
+ '夫妻共同养育孩子的幸福',
53
+ '夫妻在纪念日的特别庆祝',
54
+ '夫妻一起看日出日落的浪漫',
55
+ '亲子一起搭建积木城堡的欢乐',
56
+ '亲子睡前的温馨拥抱',
57
+ '亲子共同制作家庭树',
58
+ '家庭成员一起庆祝传统节日',
59
+ '家庭成员合力完成一幅拼图',
60
+ '家庭成员在家庭音乐会中的欢笑',
61
+ '家庭成员围坐玩猜数字游戏',
62
+ '家庭成员一起为家庭成员庆生',
63
+ '家庭成员共同制作家庭徽章',
64
+ '家庭成员在温馨灯光下阅读',
65
+ '家庭成员一起打造家庭小花园',
66
+ '家庭成员在家庭聚餐中的分享时刻',
67
+ '家庭成员一起在院子里举办夏日派对',
68
+ '家庭成员为新生命准备婴儿房',
69
+ '家庭成员一起装饰家庭圣诞树',
70
+ '家庭成员在家庭影院看喜剧电影',
71
+ '家庭成员共同烘焙节日饼干',
72
+ '家庭成员一起照顾家庭宠物',
73
+ '家庭成员一起为家庭照片墙选照片',
74
+ '家庭成员在周末家庭自驾游',
75
+ '家庭成员一起制作家庭梦想板',
76
+ '家庭成员在家庭卡拉 OK 中的欢唱',
77
+ '家庭成员一起在雨天窝在沙发听音乐',
78
+ '家庭成员共同书写家庭日记',
79
+ '家庭成员一起参加亲子马拉松',
80
+ '家庭成员在家庭篝火晚会烤棉花糖',
81
+ '家庭成员一起为家庭的墙壁绘制壁画',
82
+ ];
83
+
84
+
85
+
86
+ const householdTopic = [
87
+ '家族内不同家庭间经济差距导致的心理落差',
88
+ '家族内因某个成员发达后态度变化问题',
89
+ '家族内因某个成员落魄后的帮扶分歧',
90
+ '家族内不同家庭对子女教育资源竞争问题',
91
+ '家族内因某个孩子优秀引发的嫉妒问题',
92
+ '家族内不同家庭间对养老责任推诿',
93
+ '家族内对长辈赡养方式差异(如居家或养老院)',
94
+ '家族内对老人医疗费用分担争议',
95
+ '家族内因老人财产继承预期不同产生矛盾',
96
+ '家族内对家族企业传承人选分歧',
97
+ '家族内对家族企业中不同家庭股份比例争议',
98
+ '家族大团聚的热闹盛宴',
99
+ '家族祭祖仪式的庄重传承',
100
+ '家族为百岁老人祝寿的喜庆',
101
+ '家族婚礼上新人与家族的幸福',
102
+ '家族成员一起经营家族果园的丰收喜悦',
103
+ '家族在传统节日集体舞龙舞狮',
104
+ '家族成员在家族年会上的才艺展示',
105
+ '家族盛大的春节团聚',
106
+ '家族年会上各成员的精彩才艺展现',
107
+ '家族成员集体照顾家族中的孤寡老人',
108
+ '家族为家族中长寿老人举办百岁庆典',
109
+ ];
110
+
111
+ const socialTopic = [
112
+ '邻里因噪音问题引发的矛盾',
113
+ '邻��因公共区域使用(如楼道堆放杂物)产生分歧',
114
+ '邻里因宠物在公共区域大小便问题',
115
+ '邻里因小区停车位占用他人车位纠纷',
116
+ '邻里因小区绿化破坏(如种菜)争议',
117
+ '邻里因小区内晾晒衣物位置问题',
118
+ '邻里因小区内儿童玩耍打闹影响他人',
119
+ '邻里因小区内老人下棋聊天声音过大',
120
+ '邻里因小区内举办活动(如婚礼,丧事)扰民问题',
121
+ '邻里因小区公共设施损坏责任认定',
122
+ '邻里因小区物业费缴纳争议(觉得服务不好)',
123
+ '社区内不同群体(如老人与年轻人)对社区活动安排想法不同',
124
+ '社区内因公共健身器材损坏维修责任',
125
+ '社区内因公共活动场地预约使用冲突',
126
+ '社区内因社区内的小商店商品质量和价格争议',
127
+ '社区内因社区内理发店服务质量和价格',
128
+ '社区内因社区内菜市场卫生和摊位摆放',
129
+ '社区内因社区内药店药品价格和种类',
130
+ '社区内因社区内快递存放点设置和管理',
131
+ '社区内因社区内宠物医院服务质量和收费',
132
+ '社区内因社区内幼儿园教学质量和收费',
133
+ '社区内因社区内小学招生范围和入学条件',
134
+ '社区内因社区内中学课外活动安排和时间',
135
+ '社区内因社区内培训机构(如舞蹈、绘画)质量和价格',
136
+ '社区内因社区内美容美发店推销问题',
137
+ '社区内因社区内茶馆经营时间和环境',
138
+ '社区内因社区内网吧对未成年人管理问题',
139
+ '社区内因社区内游泳馆水质和安全',
140
+ '社区内因社区内健身房课程安排和教练水平',
141
+ '社区内因社区内婚姻介绍所诚信问题',
142
+ '社区内因社区内家政服务公司服务质量和价格',
143
+ '社区内因社区内房屋中介诚信和收费',
144
+ '社区内因社区内搬家公司服务质量和价格',
145
+ '社区内因社区内蛋糕店口味和卫生',
146
+ '社区内因社区内卤味店食品质量和卫生',
147
+ '社区内因社区内水果店水果新鲜度和价格',
148
+ '社区内因社区内粮油店商品质量和价格',
149
+ '社会上因不同地方来的人生活习惯(如饮食、作息)差异在合租屋中的矛盾',
150
+ '社会上因公共交通工具(如公交车、地铁)上让座引发的争议',
151
+ '社会上因公共交通工具上拥挤碰撞产生的不愉快',
152
+ '社会上因公园内游乐设施安全和收费',
153
+ '社会上因公园内摆摊经营(如小吃、玩具)管理问题',
154
+ '社会上因公共场所(如商场、医院)母婴室设置和设施',
155
+ '住房困难(高房价、租房贵)',
156
+ '租房纠纷(押金、合同、虚假房源)',
157
+ '老旧小区改造矛盾(费用、方案)',
158
+ '房屋质量问题',
159
+ '物业服务差(卫生差、设施维护差)',
160
+ '小区停车难',
161
+ '小区治安差',
162
+ '小区消防隐患',
163
+ '小区环境恶化(垃圾处理、噪音)',
164
+ '家庭用水用电问题(停水停电、费用高)',
165
+ '居民取暖问题(供暖不足、费用高)',
166
+ '家庭食品安全问题',
167
+ '食品安全监管漏洞',
168
+ '食品添加剂滥用问题',
169
+ '农产品质量安全问题',
170
+ '贫困家庭生活艰难(收入低、物资匮乏)',
171
+ '社会救助不公(救助金分配、对象识别)',
172
+ '社会福利不足(覆盖人群少、福利水平低)',
173
+ '失业保障落实难',
174
+ '养老保险缺口问题',
175
+ '医疗保险报销难题(范围窄、流程繁)',
176
+ '医疗资源分配不均(城乡、区域)',
177
+ '医疗费用高昂(检查费、药费)',
178
+ '医患关系紧张(医疗事故、沟通不畅)',
179
+ '医院挂号难',
180
+ '医院床位紧张',
181
+ '医护人员不足',
182
+ '医护人员工作强度大',
183
+ '公共卫生设施不足(厕所、垃圾站)',
184
+ '公共卫生体系薄弱(疾病防控、应急响应)',
185
+ '公共交通工具拥挤',
186
+ '公共交通设施老化',
187
+ '公共交通不便(线路少、偏远地区无)',
188
+ '公共交通票价不合理',
189
+ '公共停车场缺乏',
190
+ '交通拥堵治理难',
191
+ '道路建设质量差',
192
+ '道路维护不及时',
193
+ '环境污染对居民生活影响(空气污染、水污染)',
194
+ '垃圾分类推行难',
195
+ '废品回收利用问题',
196
+ '资源浪费问题(水电、粮食)',
197
+ '物价上涨对民生影响',
198
+ '低保家庭生活困境',
199
+ '孤寡老人生活照顾问题',
200
+ '残疾人生活保障不足(设施、服务)',
201
+ '殡葬服务费用高',
202
+ '殡葬行业乱象',
203
+ '家庭理财困难(金融诈骗、投资亏损)',
204
+ '金融市场不稳定对民生冲击',
205
+ '通信网络服务质量差(信号弱、费用高)',
206
+ '网络安全问题对居民影响(诈骗、信息泄露)',
207
+ '夫妻吵架与矛盾化解',
208
+ '夫妻因经济问题产生分歧',
209
+ '夫妻性生活不和谐问题',
210
+ '夫妻信任危机(如出轨、猜疑)',
211
+ '夫妻家务分担不均引发争吵',
212
+ '夫妻因育儿观念不同产生冲突',
213
+ '夫妻在职业发展差异下的关系问题',
214
+ '夫妻双方原生家庭干涉���姻问题',
215
+ '婆媳矛盾(生活习惯、教育观念等)',
216
+ '婆媳因家庭资源分配产生分歧',
217
+ '翁婿相处中的矛盾',
218
+ '亲子关系紧张(青春期叛逆、控制与反抗)',
219
+ '亲子因学业压力产生的情感问题',
220
+ '亲子间兴趣爱好差异导致的隔阂',
221
+ '父母对孩子过度保护问题',
222
+ '父母对孩子期望过高问题',
223
+ '单亲家庭亲子关系修复困难',
224
+ '重组家庭中的亲子融合问题',
225
+ '家庭成员因财产分配产生矛盾',
226
+ '家庭成员间的情感忽视与孤独感',
227
+ '家庭成员因宗教信仰不同产生分歧',
228
+ '家庭成员间的言语暴力问题',
229
+ '大家庭(多代同堂)中的人际关系复杂问题',
230
+ '远亲之间的人情往来困扰',
231
+ '邻里因噪音问题产生纠纷',
232
+ '邻里因公共区域使用发生矛盾',
233
+ '邻里因宠物问题(叫声、粪便等)引发争吵',
234
+ '邻里间的嫉妒与攀比心理',
235
+ '新邻里融入社区困难',
236
+ '社区中不同阶层居民的隔阂',
237
+ '职场同事间的竞争与合作矛盾',
238
+ '职场同事因利益分配不均产生冲突',
239
+ '职场新人被同事孤立问题',
240
+ '职场中老员工对新员工的排挤',
241
+ '职场性骚扰问题对人际关系的影响',
242
+ '职场上下级沟通不畅问题',
243
+ '职场中因工作失误导致的人际关系紧张',
244
+ '职场团队内部的拉帮结派问题',
245
+ '职场中的办公室恋情处理不当问题',
246
+ '朋友之间因借钱问题产生隔阂',
247
+ '朋友间因价值观不同逐渐疏远',
248
+ '朋友间的嫉妒心理破坏友谊',
249
+ '朋友在合作项目中的矛盾',
250
+ '网络社交中的虚假信息导致信任问题',
251
+ '网络社交中的语言暴力现象',
252
+ '网络社交中因观点不同引发的骂战',
253
+ '网络交友被骗经历',
254
+ '社交场合中的社交恐惧症表现',
255
+ '社交场合中的尴尬瞬间与应对',
256
+ '社交中的人情世故处理不当问题',
257
+ '不同文化背景人群交往中的误解',
258
+ '不同年龄层人群交往的代沟问题',
259
+ '社交中因外貌歧视产生的人际关系问题',
260
+ '社交中因地域偏见引发的矛盾',
261
+ '社交中因职业偏见造成的隔阂',
262
+ '城乡发展差距(经济、教育、医疗)',
263
+ '区域发展不平衡(东部与西部、沿海与内陆)',
264
+ '贫富差距扩大问题',
265
+ '社会阶层固化现象',
266
+ '寒门难出贵子困境',
267
+ '底层人群上升通道狭窄',
268
+ '教育资源分配不公平(地域、阶层)',
269
+ '优质教育机会不均等',
270
+ '贫困家庭学生教育困境',
271
+ '高考移民现象背后的公平争议',
272
+ '职业教育与普通教育发展失衡',
273
+ '就业机会不平等(性别、地域、学历)',
274
+ '职场性别歧视(招聘、晋升)',
275
+ '女性职场性骚扰问题',
276
+ '残障人士就业歧视',
277
+ '少数民族就业受限',
278
+ '同工不同酬现象',
279
+ '行业垄断导致的不公平竞争',
280
+ '中小企业发展困境(与大企业竞争)',
281
+ '新兴产业与传统产业待遇差异',
282
+ '农村劳动力转移就业困难',
283
+ '失业人群再就业障碍',
284
+ '社会福利分配不均(城乡、群体)',
285
+ '低保政策落实不公平',
286
+ '养老保险待遇差距',
287
+ '医疗保障水平差异(地区、人群)',
288
+ '拆迁补偿不公平问题',
289
+ '社会救助对象筛选不精准导致不公平',
290
+ '学术造假对学术公平的破坏',
291
+ '体育赛事中的不公平竞争(兴奋剂、黑哨)',
292
+ '文艺比赛中的暗箱操作问题',
293
+ '社会养老服务资源分配不均(公立私立、城乡)',
294
+ '殡葬服务资源差距(豪华与简陋)',
295
+ '公共交通资源分配差异(线路、车辆)',
296
+ ];
297
+
298
+ export const emotionalStoryTopic = [...familyTopic, ...householdTopic, ...socialTopic];
src/controllers/article-controller.ts CHANGED
@@ -2,10 +2,23 @@ import { Context } from 'koa';
2
  import Router from 'koa-router';
3
 
4
  import { handleControllerError } from '@/middleware';
5
- import { processArticleServe } from '@/service';
6
 
7
  const router = new Router({ prefix: '/api' });
8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  // 根据文案生成文章
10
  router.post('/generate-article', async (ctx: Context) => {
11
  const data = ctx.request.body as any;
 
2
  import Router from 'koa-router';
3
 
4
  import { handleControllerError } from '@/middleware';
5
+ import { processArticleServe, processArticleTopicServe } from '@/service';
6
 
7
  const router = new Router({ prefix: '/api' });
8
 
9
+ // 获取文章主题
10
+ router.get('/generate-article-topic', async (ctx: Context) => {
11
+ try {
12
+ const topic = await processArticleTopicServe();
13
+ ctx.body = {
14
+ topic,
15
+ };
16
+ } catch (error) {
17
+ // 将捕获到的异常传递给统一的错误处理中间件
18
+ await handleControllerError(ctx, error);
19
+ }
20
+ });
21
+
22
  // 根据文案生成文章
23
  router.post('/generate-article', async (ctx: Context) => {
24
  const data = ctx.request.body as any;
src/service/article-service.ts CHANGED
@@ -1,9 +1,10 @@
1
  import fs from 'fs';
2
  import htmlDocx from 'html-docx-js';
3
  import path from 'path';
4
- import { blobToArrayBuffer, bufferToBase64ImageSrc, delay, getFluxImageBuffer, retryAsync } from '@/utils';
5
 
6
  import { requestQw } from '@/utils';
 
7
 
8
  const uploadDir = path.join(__dirname, '../../uploads');
9
 
@@ -104,3 +105,7 @@ export const processArticleServe = async (data: { title: string; content: string
104
  article: 'Unknown output format',
105
  };
106
  };
 
 
 
 
 
1
  import fs from 'fs';
2
  import htmlDocx from 'html-docx-js';
3
  import path from 'path';
4
+ import { blobToArrayBuffer, bufferToBase64ImageSrc, delay, getFluxImageBuffer, getRandomValueFromArray, retryAsync } from '@/utils';
5
 
6
  import { requestQw } from '@/utils';
7
+ import { emotionalStoryTopic } from '@/const.ts/article';
8
 
9
  const uploadDir = path.join(__dirname, '../../uploads');
10
 
 
105
  article: 'Unknown output format',
106
  };
107
  };
108
+
109
+ export const processArticleTopicServe = async () => {
110
+ return getRandomValueFromArray(emotionalStoryTopic)
111
+ };
src/utils/common.ts CHANGED
@@ -34,19 +34,11 @@ export async function requestQw(data: any) {
34
  return response.data.choices[0].message.content;
35
  }
36
 
37
- export async function requestQwImage(data: any) {
38
- const qwToken = 'sBy1ogROHqapzX0CcdoyjCl$7wAX1NzRpOPRUMrQGgN8J7jSxmMQWreOgkeheTFbylzpf8Gz1g_n0';
39
-
40
- const { data: response } = await axios.post('https://Joey7938-joe-qw-api.hf.space/api/images/generations', data, {
41
- headers: {
42
- 'Content-Type': 'application/json',
43
- Authorization: `Bearer ${qwToken}`,
44
- },
45
- });
46
-
47
- if (response.code !== undefined && response.code !== 0) {
48
- throw new Error(response.message);
49
  }
50
 
51
- return response.data[0].b64_json;
 
52
  }
 
34
  return response.data.choices[0].message.content;
35
  }
36
 
37
+ export function getRandomValueFromArray<T>(array: T[]): T {
38
+ if (!Array.isArray(array) || array.length === 0) {
39
+ throw new Error("输入应该是一个非空数组");
 
 
 
 
 
 
 
 
 
40
  }
41
 
42
+ const randomIndex = Math.floor(Math.random() * array.length);
43
+ return array[randomIndex];
44
  }
src/utils/hugging-face.ts CHANGED
@@ -42,3 +42,20 @@ export async function getSummaryText(text: string, apiKey: string) {
42
  throw new Error(`总结失败,错误信息:${error}`);
43
  }
44
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  throw new Error(`总结失败,错误信息:${error}`);
43
  }
44
  }
45
+
46
+ export async function requestQwImage(data: any) {
47
+ const qwToken = 'sBy1ogROHqapzX0CcdoyjCl$7wAX1NzRpOPRUMrQGgN8J7jSxmMQWreOgkeheTFbylzpf8Gz1g_n0';
48
+
49
+ const { data: response } = await axios.post('https://Joey7938-joe-qw-api.hf.space/api/images/generations', data, {
50
+ headers: {
51
+ 'Content-Type': 'application/json',
52
+ Authorization: `Bearer ${qwToken}`,
53
+ },
54
+ });
55
+
56
+ if (response.code !== undefined && response.code !== 0) {
57
+ throw new Error(response.message);
58
+ }
59
+
60
+ return response.data[0].b64_json;
61
+ }