feat: 在账号资源库中展示导入的标签字段

KOC 资源导入模板新增「标签」列,导入后写入 accounts.tags 并在
账号资源库面板以 badge 形式展示,导出时也带回标签列以保证往返一致。

- lib/resource-import.ts: 新增 tags 字段与 HEADER 别名(标签/账号标签/人设标签),
  新增 normalizeTags/mergeTags 工具,按顿号规整与合并
- 修复 xlsx 解析器对自闭合空 cell (<c r="G6"/>) 的错位 bug,否则
  行内出现空 cell 会让后续 cell 的列引用读到错误 body(如老茄子行标签丢失)
- db/schema.ts + lib/mvp-db.ts: accounts 表新增 tags VARCHAR(500)
- app/api/resources-import/route.ts: SELECT/INSERT/UPDATE/预览全部带上 tags
- app/api/resources-export/route.ts: 导出表加「标签」列
- app/admin-app.tsx + app/globals.css: 资源卡片新增「账号标签」区,
  导入预览行展示标签
- public/KOC资源导入模板.xlsx: 模板补「标签(选填)」列与填写说明
- mysql/0005_account_tags.sql: 线上 MySQL 迁移
- tests/resource-import.test.mjs: 补 tags 解析/合并用例
This commit is contained in:
ABAPPLO
2026-08-18 16:39:38 +08:00
parent ad3dbdcc86
commit 582c26e57e
10 changed files with 145 additions and 8 deletions

View File

@@ -2008,6 +2008,18 @@ a {
font-size: 8px;
}
.import-preview-row em {
display: block;
margin-top: 3px;
color: #4a5575;
background: #eef1f6;
border-radius: 4px;
padding: 2px 6px;
font-size: 8px;
font-style: normal;
font-weight: 580;
}
.import-result {
color: #557269;
font-weight: 650;
@@ -2175,6 +2187,31 @@ a {
background: #fff3e8;
}
.resource-tags {
margin-top: 13px;
}
.resource-tags > span {
color: #9ba4a1;
font-size: 8px;
}
.resource-tags > div {
display: flex;
flex-wrap: wrap;
gap: 5px;
margin-top: 8px;
}
.resource-tags b {
padding: 5px 7px;
border-radius: 6px;
color: #4a5575;
background: #eef1f6;
font-size: 8px;
font-weight: 580;
}
.resource-card-foot {
display: flex;
justify-content: space-between;