chore: 导入旧记忆备份供恢复

This commit is contained in:
2026-09-23 22:38:40 +08:00
parent 5313fcee7a
commit 6a6a895eaf
638 changed files with 29816 additions and 1 deletions
@@ -0,0 +1,188 @@
---
title: ArtVeris Development – Current Tasks (development workspace)
type: curated
permalink: main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/curated/art-veris-development-current-tasks-development-workspace
stable_id: 98ef0fde-27fa-4f45-9037-9fe294499a49
scope: project
project_id: d44c219a-0b31-4de1-b160-323eb34a4c6a
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: tasks
revision: 1
source_memory_ids:
- 2939ce96-a6f6-418a-9a70-568980dbdc2a
- 2fafa191-d208-41e4-9f7b-ce5a633c886b
- 3efd0adf-f91b-4d78-b163-5365c257d6d4
- 46eb1720-910a-4e4e-b56b-b6ac43b0cec1
- 67a86e88-a750-4cd8-9650-c1b7cfbf22b9
- 6b129c78-a412-41e9-af9f-63ab071e03d9
- 76e12a12-446a-4d96-bb49-2534930a5d56
- 7737eaaf-441e-476e-aea0-42a4d13ae245
- 7e83a02d-9eb6-4e97-9f23-102f34ae8b1e
- 92e5c8d9-c4ef-4ab7-99ac-1b81f3228b59
- a9739d28-4318-492e-bad3-53e9ea2769a8
- ada12b65-afa2-415e-98b3-2a24ff57feb9
- ae318134-8651-4563-bc22-491c51f87af4
- b7e0eb44-e38f-40a3-8736-3a7a9de84818
- beb81aaa-8e86-4af7-a6c8-d35f7682d330
- d5bb7f58-99bb-4381-ac98-300cceb128fe
- dc70f54c-8e29-4834-a5c1-a63bc9ac9e68
- dcdbeb7d-dd75-4294-8853-872491043db1
- dd093dd7-71be-46a2-bcb1-4a87c3d4b9ab
- dd22c710-2822-4515-a28c-ead99162caac
- e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46
source_checkpoint_ids:
- 4f5c2b7f-d115-46c2-87be-80c8605ccbdb
- d45ff9ab-e2f4-4de8-8ccb-389754c1e3a4
source_file_ids:
- 07583531-4b5a-4826-ad88-be4c3f16ba9d
- 2749e8f9-a45f-43b0-a818-143ae532db24
- 2977cf7c-7494-4b28-a8c6-2fbc6261c810
- 4e728912-7bd0-455c-ac3a-e35189c26e37
- 8f5b3f27-3ed1-4bf1-97ef-cb130f238161
source_git_commit: d7c6368
source_git_commits:
- d7c6368
source_agent_sync_ids:
- artveris-curation-2026-09-03-migration
model_connection: Sub2API
model_name: openai/gpt-oss-120b
source_count: 42
source_revisions: {}
source_dispositions:
processed: 42
unchanged: 0
unsupported: 0
skipped: 0
cited_source_ids: []
job_cited_source_ids: []
conflicts: []
supersedes: []
preferences:
- statement: '提交遵循 type: 中文描述 的 commit 格式,分支策略为 dev(长期开发) 与 main(生产)。'
level: scenario
workspace_types:
- development
workspace_ids: []
source_ids:
- memory:6b129c78-a412-41e9-af9f-63ab071e03d9
counterexample_source_ids: []
occurrence_count: 1
explicit: true
confidence: 1.0
status: current
- statement: 生产部署采用单一 .env 配置文件,业务可调参数存于 system_setting 表;其他配置文件被忽略。
level: scenario
workspace_types:
- development
workspace_ids: []
source_ids:
- memory:b7e0eb44-e38f-40a3-8736-3a7a9de84818
counterexample_source_ids: []
occurrence_count: 1
explicit: true
confidence: 1.0
status: current
- statement: 本地开发约束:使用 PNPM 10.28.0、Node ≥ 20.11.1,使用 scripts/dev.py,构建或升级前必须停止 nest
进程。
level: scenario
workspace_types:
- development
workspace_ids: []
source_ids:
- memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46
counterexample_source_ids: []
occurrence_count: 1
explicit: true
confidence: 1.0
status: current
- statement: 代码提交前需清理临时文件、日志、密码文件,并更新对应的 MemRelay 记忆条目。
level: scenario
workspace_types:
- development
workspace_ids: []
source_ids:
- memory:6b129c78-a412-41e9-af9f-63ab071e03d9
counterexample_source_ids: []
occurrence_count: 1
explicit: true
confidence: 1.0
status: current
source_cursor: 359
source_hash: 06340ad0d2d916308bcf502ff22c22461eeb2afaaeea56df8687dae4fdb0f11d
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: 7900a00f-2876-4e05-bb12-7beb6e014a93
created_at: '2026-09-03T04:21:25.595127+00:00'
updated_at: '2026-09-03T04:21:25.596394+00:00'
tags:
- development
- tasks
---
# 📋 任务清单(截至 2026‑09‑03)
以下任务基于最近的迁移、部署、以及技术决策记录整理。所有条目均已在 **MemRelay** 中对应的源记录中列出,可通过 `source_ids` 追溯。任务按状态分组,便于在本轮开发冲刺中快速定位阻塞点。
---
## ✅ 已完成任务
| 编号 | 任务描述 | 关联来源 |
|------|----------|----------|
| T1 | 将项目所有记忆(规则、事实、决策、经验、检查点)迁移至 MemRelay,删除本地 `aidocs/` 并加入 `.gitignore`。 | [d44c219a‑0b31‑4de1‑b160‑323eb34a4c6a](#) / [4f5c2b7f‑d115‑46c2‑87be‑80c8605ccbdb](#) |
| T2 | 修复生产服务器上 PM2 未自动启动的问题,并在 Baota 环境中完成 `pm2 startup` / `pm2 save`。 | [4f5c2b7f‑d115‑46c2‑87be‑80c8605ccbdb](#) |
| T3 | 完成 Tianhe 链接入决策(方案 B),实现 **upload → publish → confirm** 流程,且不在链上存储媒体或摘要。 | [dd22c710‑2822‑4515‑a28c‑ead99162caac](#) |
| T4 | 实现 12 位数字 `shortCode` 生成规则,保证全局唯一且不超过 1 M/天的生成上限。 | [7e83a02d‑9eb6‑4e97‑9f23‑102f34ae8b1e](#) |
| T5 | 建立“一码一件”模型(Artwork → Batch → TraceCode),并完成对应 Prisma migration `20260715000000_init`。 | [7e83a02d‑9eb6‑4e97‑9f23‑102f34ae8b1e](#) |
| T6 | 编写并上线一键远程升级脚本 `scripts/upgrade‑remote.ps1`(备份 DB → 停止 PM2 → 执行 upgrade.sh → 重启 → 健康检查)。 | [d5bb7f58‑99bb‑4381‑ac98‑300cceb128fe](#) |
| T7 | 完成 **出库 ZIP 导入契约**,包含 10 k 行、64 列、100 MB 限制及 100 002 中央目录条目安全阈值。 | [76e12a12‑446a‑4d96‑bb49‑2534930a5d56](#) |
| T8 | 通过 `flock` 为所有 SSH‑MCP 远程脚本加锁,防止重复启动导致的表冲突与 NUL 日志。 | [8a861a5f‑35c3‑4f95‑bd5b‑6b2297888f56](#) |
| T9 | 统一全局开发原则(KISS & YAGNI)并写入全局偏好文档。 | [bf88c265‑4749‑4c50‑85bc‑4bae25298cd5](#) |
| T10 | 在 CI 中加入 **credential‑first** 检查:所有登录/SSH/DB/API 前先查询 Vaultwarden。 | [105b328f‑4bda‑4641‑90a7‑7282ef156316](#) |
---
## 🚧 待完成任务(阻塞项)
| 编号 | 任务描述 | 需求/阻塞原因 | 关联来源 |
|------|----------|----------------|----------|
| P1 | 将 `aidocs‑cleanup` 与 **PM2‑fix** 两个提交合并至 `main` 并推送至 Gitea/GitHub。 | 需要项目负责人确认后合并。 | [d45ff9ab‑e2f4‑4de8‑8ccb‑389754c1e3a4](#) |
| P2 | 执行生产环境 **Tianhe 链钱包重新注册**、切换至正式 `AppID/AppKey`,并完成全链路验证。 | 需在 staging 完全通过后方可在生产执行。 | [d5bb7f58‑99bb‑4381‑ac98‑300cceb128fe](#) |
| P3 | 合并 **admin bundle 代码分块**(`manualChunks`)到主分支并发布新版本。 | 已在 `dev/qa-polish` 分支完成,需要 QA 验收。 | [4e728912‑7bd0‑455c‑ac3a‑e35189c26e37](#) |
| P4 | 完成 **用户 Key 显示硬化**(在 UI 中遮蔽后仍可通过审计日志查看),并通过安全审计。 | 代码已在同一分支实现,等待安全团队确认。 | [4e728912‑7bd0‑455c‑ac3a‑e35189c26e37](#) |
| P5 | 再次评审 **AI curation / Git sync** 的启用策略(当前全局规则禁用)。如业务需要,可在全局规则 `3f91189b‑11a1‑45bb‑8357‑4f413dc1609d` 中放行。 | 决策待业务方提出需求。 | [3f91189b‑11a1‑45bb‑8357‑4f413dc1609d](#) |
| P6 | 确认生产 **Backup‑restore** 流程(版本 2.0.0)在紧急恢复场景下能够完整恢复 DB、存储及清单。 | 需要一次完整的演练。 | [76e12a12‑446a‑4d96‑bb49‑2534930a5d56](#) |
---
## 📌 关键偏好(本工作区)
以下偏好直接影响任务的执行方式,均标记为 **scenario** 级别且适用于 **development** 工作区。
| 编号 | 偏好声明 | 来源 | 级别 | 备注 |
|------|----------|------|------|------|
| P‑01 | 开发应遵循 **KISS & YAGNI** 原则,复用已有框架,避免投机抽象。 | memory:bf88c265‑4749‑4c50‑85bc‑4bae25298cd5 | scenario | 与全局偏好一致,但限制在本工作区使用。 |
| P‑02 | 所有凭证在使用前必须先在 **Vaultwarden** 中查询;新增或变更的凭证只在密码库保存,记忆中仅记录名称/用途。 | memory:105b328f‑4bda‑4641‑90a7‑7282ef156316 | scenario | 参照全局规则,但限定本工作区。 |
| P‑03 | 项目记忆仅保存在 **MemRelay**,本地 `aidocs/` 仅用于临时导出后立即删除。 | memory:1194be51‑ee29‑47e1‑8957‑ec2888007db6 | scenario | 与全局规则保持一致。 |
| P‑04 | 默认沟通语言为 **中文**(包括代码注释、文档、提交信息)。 | memory:7429c22e‑50ff‑458a‑97c0‑423c679904c7 | scenario | 与全局偏好相同。 |
| P‑05 | 禁用 **AI 驱动的记忆同步与 Git 自动化**,仅在显式开启时才启用。 | memory:3f91189b‑11a1‑45bb‑8357‑4f413dc1609d | scenario | 维持当前关闭状态。 |
| P‑06 | 开发、提交遵循 **type: 中文描述** 的 commit 格式,分支策略为 `dev`(长期开发) 与 `main`(生产)。 | memory:6b129c78‑a412‑41e9‑af9f‑63ab071e03d9 | scenario | 与全局约定保持一致。 |
| P‑07 | 生产部署采用单一 `.env` 配置文件,所有业务可调参数存于 `system_setting` 表;其他配置文件被忽略。 | memory:b7e0eb44‑e38f‑40a3‑8736‑3a7a9de84818 | scenario | 支持“一键升级”脚本的前提。 |
| P‑08 | 本地开发约束:使用 PNPM 10.28.0、Node ≥ 20.11.1,使用 `scripts/dev.py`,在构建或升级前必须停止 `nest` 进程。 | memory:e1b8d25d‑f638‑4fbe‑8a8d‑0eda8f2d7d46 | scenario | 防止文件被锁定导致构建失败。 |
| P‑09 | 代码提交前需 **清理临时文件、日志、密码文件**,并更新对应的 MemRelay 记忆条目。 | memory:6b129c78‑a412‑41e9‑af9f‑63ab071e03d9 | scenario | 与全局清理原则对应。 |
---
## 🗂️ 参考来源(source_ids)
- **迁移与记忆**:`d44c219a‑0b31‑4de1‑b160‑323eb34a4c6a`, `4f5c2b7f‑d115‑46c2‑87be‑80c8605ccbdb`, `dd093dd7‑71be‑46a2‑bcb1‑4a87c3d4b9ab`
- **技术决策与实现**:`ae318134‑8651‑4563‑bc22‑491c51f87af4`, `dd22c710‑2822‑4515‑a28c‑ead99162caac`, `3efd0adf‑f91b‑4d78‑b163‑5365c257d6d4`, `46eb1720‑910a‑4e4e‑b56b‑b6ac43b0cec1`, `d5bb7f58‑99bb‑4381‑ac98‑300cceb128fe`, `b7e0eb44‑e38f‑40a3‑8736‑3a7a9de84818`, `dcdbeb7d‑dd75‑4294‑8853‑872491043db1`, `7e83a02d‑9eb6‑4e97‑9f23‑102f34ae8b1e`, `a9739d28‑4318‑492e‑bad3‑53e9ea2769a8`, `dc70f54c‑8e29‑4834‑a5c1‑a63bc9ac9e68`, `e1b8d25d‑f638‑4fbe‑8a8d‑0eda8f2d7d46`, `6b129c78‑a412‑41e9‑af9f‑63ab071e03d9`
- **全局偏好与规则**:`7429c22e‑50ff‑458a‑97c0‑423c679904c7`, `ff34c6eb‑6bba‑41e5‑9e43‑ff80941fa823`, `bf88c265‑4749‑4c50‑85bc‑4bae25298cd5`, `3f91189b‑11a1‑45bb‑8357‑4f413dc1609d`, `105b328f‑4bda‑4641‑90a7‑7282ef156316`, `1194be51‑ee29‑47e1‑8957‑ec2888007db6`
- **SSH‑MCP 关键经验**:`8a861a5f‑35c3‑4f95‑bd5b‑6b2297888f56`
- **其它**:`d45ff9ab‑e2f4‑4de8‑8ccb‑389754c1e3a4`, `4e728912‑7bd0‑455c‑ac3a‑e35189c26e37`
---
*以上任务、偏好与来源均直接摘自 MemRelay 提供的证据,未进行任何推断或新增信息。*
@@ -0,0 +1,172 @@
---
title: ArtVeris 项目概览
type: curated
permalink: main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/curated/art-veris-项目概览
stable_id: cec86599-c3a8-4407-8bcd-f90e824aa53b
scope: project
project_id: d44c219a-0b31-4de1-b160-323eb34a4c6a
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: overview
revision: 1
source_memory_ids:
- 2939ce96-a6f6-418a-9a70-568980dbdc2a
- 2fafa191-d208-41e4-9f7b-ce5a633c886b
- 3efd0adf-f91b-4d78-b163-5365c257d6d4
- 46eb1720-910a-4e4e-b56b-b6ac43b0cec1
- 67a86e88-a750-4cd8-9650-c1b7cfbf22b9
- 6b129c78-a412-41e9-af9f-63ab071e03d9
- 76e12a12-446a-4d96-bb49-2534930a5d56
- 7737eaaf-441e-476e-aea0-42a4d13ae245
- 7e83a02d-9eb6-4e97-9f23-102f34ae8b1e
- 92e5c8d9-c4ef-4ab7-99ac-1b81f3228b59
- a9739d28-4318-492e-bad3-53e9ea2769a8
- ada12b65-afa2-415e-98b3-2a24ff57feb9
- ae318134-8651-4563-bc22-491c51f87af4
- b7e0eb44-e38f-40a3-8736-3a7a9de84818
- beb81aaa-8e86-4af7-a6c8-d35f7682d330
- d5bb7f58-99bb-4381-ac98-300cceb128fe
- dc70f54c-8e29-4834-a5c1-a63bc9ac9e68
- dcdbeb7d-dd75-4294-8853-872491043db1
- dd093dd7-71be-46a2-bcb1-4a87c3d4b9ab
- dd22c710-2822-4515-a28c-ead99162caac
- e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46
source_checkpoint_ids:
- 4f5c2b7f-d115-46c2-87be-80c8605ccbdb
- d45ff9ab-e2f4-4de8-8ccb-389754c1e3a4
source_file_ids:
- 07583531-4b5a-4826-ad88-be4c3f16ba9d
- 2749e8f9-a45f-43b0-a818-143ae532db24
- 2977cf7c-7494-4b28-a8c6-2fbc6261c810
- 4e728912-7bd0-455c-ac3a-e35189c26e37
- 8f5b3f27-3ed1-4bf1-97ef-cb130f238161
source_git_commit: d7c6368
source_git_commits:
- d7c6368
source_agent_sync_ids:
- artveris-curation-2026-09-03-migration
model_connection: Sub2API
model_name: openai/gpt-oss-120b
source_count: 42
source_revisions:
memory:76e12a12-446a-4d96-bb49-2534930a5d56: '1'
memory:67a86e88-a750-4cd8-9650-c1b7cfbf22b9: '2'
memory:2939ce96-a6f6-418a-9a70-568980dbdc2a: '1'
memory:7737eaaf-441e-476e-aea0-42a4d13ae245: '1'
memory:ae318134-8651-4563-bc22-491c51f87af4: '1'
memory:dd22c710-2822-4515-a28c-ead99162caac: '1'
memory:3efd0adf-f91b-4d78-b163-5365c257d6d4: '1'
memory:46eb1720-910a-4e4e-b56b-b6ac43b0cec1: '1'
memory:d5bb7f58-99bb-4381-ac98-300cceb128fe: '1'
memory:b7e0eb44-e38f-40a3-8736-3a7a9de84818: '1'
memory:dcdbeb7d-dd75-4294-8853-872491043db1: '1'
memory:7e83a02d-9eb6-4e97-9f23-102f34ae8b1e: '1'
memory:a9739d28-4318-492e-bad3-53e9ea2769a8: '1'
memory:dc70f54c-8e29-4834-a5c1-a63bc9ac9e68: '1'
memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46: '1'
memory:6b129c78-a412-41e9-af9f-63ab071e03d9: '1'
source_dispositions:
processed: 42
unchanged: 0
unsupported: 0
skipped: 0
cited_source_ids:
- memory:76e12a12-446a-4d96-bb49-2534930a5d56
- memory:67a86e88-a750-4cd8-9650-c1b7cfbf22b9
- memory:2939ce96-a6f6-418a-9a70-568980dbdc2a
- memory:7737eaaf-441e-476e-aea0-42a4d13ae245
- memory:ae318134-8651-4563-bc22-491c51f87af4
- memory:dd22c710-2822-4515-a28c-ead99162caac
- memory:3efd0adf-f91b-4d78-b163-5365c257d6d4
- memory:46eb1720-910a-4e4e-b56b-b6ac43b0cec1
- memory:d5bb7f58-99bb-4381-ac98-300cceb128fe
- memory:b7e0eb44-e38f-40a3-8736-3a7a9de84818
- memory:dcdbeb7d-dd75-4294-8853-872491043db1
- memory:7e83a02d-9eb6-4e97-9f23-102f34ae8b1e
- memory:a9739d28-4318-492e-bad3-53e9ea2769a8
- memory:dc70f54c-8e29-4834-a5c1-a63bc9ac9e68
- memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46
- memory:6b129c78-a412-41e9-af9f-63ab071e03d9
job_cited_source_ids:
- memory:76e12a12-446a-4d96-bb49-2534930a5d56
- memory:67a86e88-a750-4cd8-9650-c1b7cfbf22b9
- memory:2939ce96-a6f6-418a-9a70-568980dbdc2a
- memory:7737eaaf-441e-476e-aea0-42a4d13ae245
- memory:ae318134-8651-4563-bc22-491c51f87af4
- memory:dd22c710-2822-4515-a28c-ead99162caac
- memory:3efd0adf-f91b-4d78-b163-5365c257d6d4
- memory:46eb1720-910a-4e4e-b56b-b6ac43b0cec1
- memory:d5bb7f58-99bb-4381-ac98-300cceb128fe
- memory:b7e0eb44-e38f-40a3-8736-3a7a9de84818
- memory:dcdbeb7d-dd75-4294-8853-872491043db1
- memory:7e83a02d-9eb6-4e97-9f23-102f34ae8b1e
- memory:a9739d28-4318-492e-bad3-53e9ea2769a8
- memory:dc70f54c-8e29-4834-a5c1-a63bc9ac9e68
- memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46
- memory:6b129c78-a412-41e9-af9f-63ab071e03d9
conflicts: []
supersedes: []
preferences: []
source_cursor: 359
source_hash: 06340ad0d2d916308bcf502ff22c22461eeb2afaaeea56df8687dae4fdb0f11d
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: 7900a00f-2876-4e05-bb12-7beb6e014a93
created_at: '2026-09-03T04:21:14.903935+00:00'
updated_at: '2026-09-03T04:21:14.904560+00:00'
tags:
- 项目概览
- 架构
- 技术栈
---
## 项目目标
- 构建“一物一码”溯源平台,面向艺术品的全链路追踪与防伪。
- 采用 **Artwork → Batch → TraceCode** 的数据模型,每个实体对应唯一的 12 位数字短码。
## 核心技术栈
- **后端**:NestJS 11、Node 24、Prisma(MySQL 5.7)
- **前端**:Vue 3、Vite 6、ECharts 6、Pinia
- **部署**:单体 Node 服务 + PM2(可选 Docker),使用 `scripts/upgrade-remote.ps1` 实现一键远程升级。
- **链上**:天河链(TiChain)仅 **上传 + 确认**,不涉及二次转账、元数据上链。
## 主要里程碑
| 日期 | 关键事件 |
|------|----------|
| 2026‑09‑03 03:26 UTC | 项目在 GitHub/Gitea 创建(`dev` 分支领先 `main`) |
| 2026‑09‑03 03:55 UTC | 删除本地 `aidocs/`,迁移所有记忆到 MemRelay |
| 2026‑09‑03 04:01 UTC | 完成迁移检查点:文档上传、PM2 自动启动修复、`.gitignore` 更新 |
| 2026‑07‑01 〜 2026‑07‑16 | 完成核心模型、批量导入、天河链集成、状态机、备份恢复等功能 |
| 2026‑07‑10 | 确认天河链接入范围(仅上传、发布、查询) |
## 系统组成
- **业务层**:`apps/api` 包含公共接口、区块链、存储、备份、安装向导等模块。
- **管理后台**:`/admin` SPA,提供模型管理、系统设置、日志审计等功能。
- **客户端**:`/trace` SPA,展示艺术品信息及链上溯源链接。
- **运维**:生产服务器 8.134.255.136(Alinux 8、Baota),PM2 名为 `server`,域名 https://art.qclh.xyz。
## 关键约束
- **短码规则**:12 位数字(6 位随机 + 6 位全局递增),全局序列不可回滚。
- **链上/出库解耦**:链上记录与实际出库记录独立,可单独上链或出库。
- **配置唯一**:全局仅使用单一 `.env`,业务可通过 `system_setting` 表覆盖。
- **凭证管理**:UserKey 明文存库,AppKey 加密;所有新凭证仅写入密码库,记忆中只保留名称/用途。
## 当前文档来源
- 本概览引用的事实、决策与经验主要来源于以下记忆条目:
- **memory:76e12a12-446a-4d96-bb49-2534930a5d56**(ZIP 导入契约)
- **memory:67a86e88-a750-4cd8-9650-c1b7cfbf22b9**(前端业务坑)
- **memory:2939ce96-a6f6-418a-9a70-568980dbdc2a**(生产部署坑)
- **memory:7737eaaf-441e-476e-aea0-42a4d13ae245**(Windows 本地开发坑)
- **memory:ae318134-8651-4563-bc22-491c51f87af4**(关键技术选型)
- **memory:dd22c710-2822-4515-a28c-ead99162caac**(天河链接入范围)
- **memory:3efd0adf-f91b-4d78-b163-5365c257d6d4**(C 端模块化布局契约)
- **memory:46eb1720-910a-4e4e-b56b-b6ac43b0cec1**(天河链集成现状)
- **memory:d5bb7f58-99bb-4381-ac98-300cceb128fe**(生产拓扑)
- **memory:b7e0eb44-e38f-40a3-8736-3a7a9de84818**(部署契约)
- **memory:dcdbeb7d-dd75-4294-8853-872491043db1**(关键代码地图)
- **memory:7e83a02d-9eb6-4e97-9f23-102f34ae8b1e**(核心数据模型)
- **memory:a9739d28-4318-492e-bad3-53e9ea2769a8**(出库/上链不变量)
- **memory:dc70f54c-8e29-4834-a5c1-a63bc9ac9e68**(数据持久化红线)
- **memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46**(构建与本地开发硬约束)
- **memory:6b129c78-a412-41e9-af9f-63ab071e03d9**(开发流程与提交规范)
@@ -0,0 +1,139 @@
---
title: 关键技术决策记录
type: curated
permalink: main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/curated/关键技术决策记录
stable_id: dc8f8ea1-5790-4480-a7dc-490e45bc506f
scope: project
project_id: d44c219a-0b31-4de1-b160-323eb34a4c6a
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: decisions
revision: 1
source_memory_ids:
- 2939ce96-a6f6-418a-9a70-568980dbdc2a
- 2fafa191-d208-41e4-9f7b-ce5a633c886b
- 3efd0adf-f91b-4d78-b163-5365c257d6d4
- 46eb1720-910a-4e4e-b56b-b6ac43b0cec1
- 67a86e88-a750-4cd8-9650-c1b7cfbf22b9
- 6b129c78-a412-41e9-af9f-63ab071e03d9
- 76e12a12-446a-4d96-bb49-2534930a5d56
- 7737eaaf-441e-476e-aea0-42a4d13ae245
- 7e83a02d-9eb6-4e97-9f23-102f34ae8b1e
- 92e5c8d9-c4ef-4ab7-99ac-1b81f3228b59
- a9739d28-4318-492e-bad3-53e9ea2769a8
- ada12b65-afa2-415e-98b3-2a24ff57feb9
- ae318134-8651-4563-bc22-491c51f87af4
- b7e0eb44-e38f-40a3-8736-3a7a9de84818
- beb81aaa-8e86-4af7-a6c8-d35f7682d330
- d5bb7f58-99bb-4381-ac98-300cceb128fe
- dc70f54c-8e29-4834-a5c1-a63bc9ac9e68
- dcdbeb7d-dd75-4294-8853-872491043db1
- dd093dd7-71be-46a2-bcb1-4a87c3d4b9ab
- dd22c710-2822-4515-a28c-ead99162caac
- e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46
source_checkpoint_ids:
- 4f5c2b7f-d115-46c2-87be-80c8605ccbdb
- d45ff9ab-e2f4-4de8-8ccb-389754c1e3a4
source_file_ids:
- 07583531-4b5a-4826-ad88-be4c3f16ba9d
- 2749e8f9-a45f-43b0-a818-143ae532db24
- 2977cf7c-7494-4b28-a8c6-2fbc6261c810
- 4e728912-7bd0-455c-ac3a-e35189c26e37
- 8f5b3f27-3ed1-4bf1-97ef-cb130f238161
source_git_commit: d7c6368
source_git_commits:
- d7c6368
source_agent_sync_ids:
- artveris-curation-2026-09-03-migration
model_connection: Sub2API
model_name: openai/gpt-oss-120b
source_count: 42
source_revisions:
memory:ae318134-8651-4563-bc22-491c51f87af4: '1'
memory:dd22c710-2822-4515-a28c-ead99162caac: '1'
memory:a9739d28-4318-492e-bad3-53e9ea2769a8: '1'
memory:dc70f54c-8e29-4834-a5c1-a63bc9ac9e68: '1'
memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46: '1'
memory:6b129c78-a412-41e9-af9f-63ab071e03d9: '1'
source_dispositions:
processed: 42
unchanged: 0
unsupported: 0
skipped: 0
cited_source_ids:
- memory:ae318134-8651-4563-bc22-491c51f87af4
- memory:dd22c710-2822-4515-a28c-ead99162caac
- memory:a9739d28-4318-492e-bad3-53e9ea2769a8
- memory:dc70f54c-8e29-4834-a5c1-a63bc9ac9e68
- memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46
- memory:6b129c78-a412-41e9-af9f-63ab071e03d9
job_cited_source_ids:
- memory:ae318134-8651-4563-bc22-491c51f87af4
- memory:dd22c710-2822-4515-a28c-ead99162caac
- memory:a9739d28-4318-492e-bad3-53e9ea2769a8
- memory:dc70f54c-8e29-4834-a5c1-a63bc9ac9e68
- memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46
- memory:6b129c78-a412-41e9-af9f-63ab071e03d9
conflicts: []
supersedes: []
preferences: []
source_cursor: 359
source_hash: 06340ad0d2d916308bcf502ff22c22461eeb2afaaeea56df8687dae4fdb0f11d
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: 7900a00f-2876-4e05-bb12-7beb6e014a93
created_at: '2026-09-03T04:21:16.235463+00:00'
updated_at: '2026-09-03T04:21:16.236168+00:00'
tags:
- 决策
- 技术选型
- 链上范围
- 规范
---
### 1. 技术选型决策 (memory:ae318134-8651-4563-bc22-491c51f87af4)
- **UserKey** 明文保存,便于系统迁移后恢复;**AppKey** 加密存储。
- 全局唯一 `.env` 配置文件,取代旧 `config/` JSON。
- 安装向导合并至 admin 模块,取消独立 `apps/install`。
- 核心部署采用单节点 Node 服务 + 可选 Docker/SSH,避免多容器复杂性。
- 采用动态追踪代码链接、无状态 TOTP 预览令牌、防篡改模块布局、Photo‑Swipe v5 UI。
- 明确 **不构建** NFC、多组织隔离、主动告警、C‑端 skeleton screens、IP/UA 区域解析等功能。
### 2. 天河链接入范围决策 (memory:dd22c710-2822-4515-a28c-ead99162caac)
- **仅上传 + 发布** 链上流程(无二次转移、烧毁)。
- 链上不存放媒体或摘要,所有媒体均离线存储。
- 统一使用单一平台钱包 `artveris-platform`。
- 计费方式基于 API 调用次数,删除功能不支持。
- C 端展示仅提供区块浏览器交易详情链接,无 on‑chain 销售状态标记。
### 3. 出库/上链不变量与审计约束 (memory:a9739d28-4318-492e-bad3-53e9ea2769a8)
1. 链上记录与出库记录 **解耦**。
2. 每个追溯码最多拥有一条 `OutboundRecord`(时间必填,可修改)。
3. 单次批量发布最多 **5 000** `productId`,按艺术品分组。
4. 已存在的码若状态为 `FAILED` 方可重复 mint。
5. `UNKNOWN` 状态必须保留原始参数,仅管理员可强制重试。
6. 审计流:修订创建快照,只有批准的修订才替换线上数据;超级管理员操作自动批准。
### 4. 数据持久化红线 (memory:dc70f54c-8e29-4834-a5c1-a63bc9ac9e68)
- 升级过程 **禁止** 覆盖 `.env`、`storage/`、`backups/`、数据库。
- Prisma 基线迁移 `20260715000000_init`,全局 `trace_code_sequence.next_seq` 不可回滚,最高 999 999。
- 禁止删除存活的 trace code、ONCHAIN/UNKNOWN 状态码。
- 媒体仅通过键存储,不允许 SVG。
- 短码 URL 动态生成 `{{clientBaseUrl}}/#/trace/{{shortCode}}`。
### 5. 构建与本地开发硬约束 (memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46)
- PNPM 10.28.0、Node ≥20.11.1(推荐 24 LTS)。
- 使用 `scripts/dev.py` 进行本地环境搭建,若缺少 `.env` 自动进入安装向导。
- 在运行 `nest build` 或升级脚本前必须 **停止** 开发 API。
- Windows PowerShell 中 `&&` 不被支持,需要分行或使用 `;`。
- 严禁提交 Secrets,`.env`、`docs/系统测试信息.md`、`.deploy/` 必须在 `.gitignore` 中。
### 6. 开发与提交规范 (memory:6b129c78-a412-41e9-af9f-63ab071e03d9)
- 使用中文进行所有交流和提交信息。
- 开发环境统一为 Windows + PowerShell + WSL2。
- 采用 YAGNI/KISS 原则,复用已有框架。
- 提交顺序:**清理 → 记忆更新 → 文档 → .gitignore → commit**。
- Commit message 格式 `type: 中文描述`(type 如 feat、fix、refactor 等)。
- 分支策略:`main`(生产) 与 `dev`(长期开发),两者均同步至 Gitea 与 GitHub。
- 许可证采用 PolyForm Strict 1.0.0。
@@ -0,0 +1,133 @@
---
title: 当前系统状态概览
type: curated
permalink: main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/curated/当前系统状态概览
stable_id: 065abeda-7d90-47c2-b883-e4b1b439f71d
scope: project
project_id: d44c219a-0b31-4de1-b160-323eb34a4c6a
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: current_state
revision: 1
source_memory_ids:
- 2939ce96-a6f6-418a-9a70-568980dbdc2a
- 2fafa191-d208-41e4-9f7b-ce5a633c886b
- 3efd0adf-f91b-4d78-b163-5365c257d6d4
- 46eb1720-910a-4e4e-b56b-b6ac43b0cec1
- 67a86e88-a750-4cd8-9650-c1b7cfbf22b9
- 6b129c78-a412-41e9-af9f-63ab071e03d9
- 76e12a12-446a-4d96-bb49-2534930a5d56
- 7737eaaf-441e-476e-aea0-42a4d13ae245
- 7e83a02d-9eb6-4e97-9f23-102f34ae8b1e
- 92e5c8d9-c4ef-4ab7-99ac-1b81f3228b59
- a9739d28-4318-492e-bad3-53e9ea2769a8
- ada12b65-afa2-415e-98b3-2a24ff57feb9
- ae318134-8651-4563-bc22-491c51f87af4
- b7e0eb44-e38f-40a3-8736-3a7a9de84818
- beb81aaa-8e86-4af7-a6c8-d35f7682d330
- d5bb7f58-99bb-4381-ac98-300cceb128fe
- dc70f54c-8e29-4834-a5c1-a63bc9ac9e68
- dcdbeb7d-dd75-4294-8853-872491043db1
- dd093dd7-71be-46a2-bcb1-4a87c3d4b9ab
- dd22c710-2822-4515-a28c-ead99162caac
- e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46
source_checkpoint_ids:
- 4f5c2b7f-d115-46c2-87be-80c8605ccbdb
- d45ff9ab-e2f4-4de8-8ccb-389754c1e3a4
source_file_ids:
- 07583531-4b5a-4826-ad88-be4c3f16ba9d
- 2749e8f9-a45f-43b0-a818-143ae532db24
- 2977cf7c-7494-4b28-a8c6-2fbc6261c810
- 4e728912-7bd0-455c-ac3a-e35189c26e37
- 8f5b3f27-3ed1-4bf1-97ef-cb130f238161
source_git_commit: d7c6368
source_git_commits:
- d7c6368
source_agent_sync_ids:
- artveris-curation-2026-09-03-migration
model_connection: Sub2API
model_name: openai/gpt-oss-120b
source_count: 42
source_revisions:
memory:d5bb7f58-99bb-4381-ac98-300cceb128fe: '1'
memory:b7e0eb44-e38f-40a3-8736-3a7a9de84818: '1'
memory:dcdbeb7d-dd75-4294-8853-872491043db1: '1'
memory:7e83a02d-9eb6-4e97-9f23-102f34ae8b1e: '1'
memory:3efd0adf-f91b-4d78-b163-5365c257d6d4: '1'
memory:46eb1720-910a-4e4e-b56b-b6ac43b0cec1: '1'
memory:ae318134-8651-4563-bc22-491c51f87af4: '1'
memory:dd22c710-2822-4515-a28c-ead99162caac: '1'
memory:76e12a12-446a-4d96-bb49-2534930a5d56: '1'
source_dispositions:
processed: 42
unchanged: 0
unsupported: 0
skipped: 0
cited_source_ids:
- memory:d5bb7f58-99bb-4381-ac98-300cceb128fe
- memory:b7e0eb44-e38f-40a3-8736-3a7a9de84818
- memory:dcdbeb7d-dd75-4294-8853-872491043db1
- memory:7e83a02d-9eb6-4e97-9f23-102f34ae8b1e
- memory:3efd0adf-f91b-4d78-b163-5365c257d6d4
- memory:46eb1720-910a-4e4e-b56b-b6ac43b0cec1
- memory:ae318134-8651-4563-bc22-491c51f87af4
- memory:dd22c710-2822-4515-a28c-ead99162caac
- memory:76e12a12-446a-4d96-bb49-2534930a5d56
job_cited_source_ids:
- memory:d5bb7f58-99bb-4381-ac98-300cceb128fe
- memory:b7e0eb44-e38f-40a3-8736-3a7a9de84818
- memory:dcdbeb7d-dd75-4294-8853-872491043db1
- memory:7e83a02d-9eb6-4e97-9f23-102f34ae8b1e
- memory:3efd0adf-f91b-4d78-b163-5365c257d6d4
- memory:46eb1720-910a-4e4e-b56b-b6ac43b0cec1
- memory:ae318134-8651-4563-bc22-491c51f87af4
- memory:dd22c710-2822-4515-a28c-ead99162caac
- memory:76e12a12-446a-4d96-bb49-2534930a5d56
conflicts: []
supersedes: []
preferences: []
source_cursor: 359
source_hash: 06340ad0d2d916308bcf502ff22c22461eeb2afaaeea56df8687dae4fdb0f11d
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: 7900a00f-2876-4e05-bb12-7beb6e014a93
created_at: '2026-09-03T04:21:18.223735+00:00'
updated_at: '2026-09-03T04:21:18.224491+00:00'
tags:
- 当前状态
- 部署
- 功能进度
---
### 环境与部署
- **生产服务器**:8.134.255.136(Alinux 8、宝塔面板),Node 24,PNPM via Corepack,MySQL 5.7,Redis。
- **部署目录**:`/www/wwwroot/artveris`,PM2 进程名 `server`,API 端口 3000,域名 https://art.qclh.xyz。
- **一键升级**:`scripts/upgrade-remote.ps1` 负责备份 DB、停止 PM2、执行 `upgrade.sh`、重启并进行健康检查。SSH 私钥已存入密码库。
- **配置**:仅有单一 `.env`,业务可通过 `system_setting` 表覆盖。
### 功能实现进度
| 功能 | 状态 |
|------|------|
| 数据模型(Artwork/Batch/TraceCode) | 已完成,唯一约束、序列号不可回滚 |
| 短码生成(12 位) | 已实现,随机 6 位 + 全局递增 6 位 |
| 天河链集成(上传 + 发布 + 查询) | 功能可用,已在测试环境完成全部用例;生产钱包待注册后切换 |
| 批量 ZIP 导入 & 备份恢复 | 采用流式解压,大小限制 100 MB/文件,已通过全量测试 |
| 预览 TOTP Token | 已实现,10 分钟窗口,统计不计入查询次数 |
| UI(Admin & Client) | 基本模块已上线,支持模块化编排、媒体存储层级、动态短码链接 |
| 监控/日志 | OperationLogInterceptor 对敏感字段脱敏,日志写入 MySQL |
| 安全措施 | Helmet、CSP、速率限制、Redis 负缓存、角色 RBAC(SUPER_ADMIN、OPERATOR、AUDITOR、VIEWER) |
### 已解决问题
- PM2 自动启动故障已修复(`pm2 startup` + `pm2 save`)。
- 本地开发 `EADDRINUSE` 与进程残留问题通过 `flock` 与清理脚本解决。
- 构建时的 `.env` 冲突、Git 提交规范、`aidocs/` 清理已统一流程。
- 天河链确认循环(PENDING → SUBMITTING → CONFIRMING → ONCHAIN)及 `UNKNOWN` 状态处理已实现。
- ZIP 导入的内存泄漏已改为流式处理,最大 10 k 行、64 列、100 MB 限制。
### 待办事项
- **合并** `aidocs‑cleanup` 与 `PM2‑fix` 提交到 `main`(需用户确认)。
- **生产钱包**:在生产环境创建天河链平台钱包并更新 `AppID/AppKey`,完成全链路验证后上线。
- **Admin bundle 分割**:手动 `manualChunks` 已在 `dev/qa-polish` 分支实现,待合并到主线。
- **UserKey UI 硬化**:已在 polishing 分支遮蔽显示,需安全审计后发布。
- **AI 记忆同步**:依据全局规则保持禁用,后续可按需求开启。
@@ -0,0 +1,174 @@
---
title: 项目时间线(截至 2026‑09‑03)
type: curated
permalink: main/projects/d44c219a-0b31-4de1-b160-323eb34a4c6a/curated/项目时间线截至-2026-09-03
stable_id: 9772b5bd-ebc9-44b7-a390-928f92f2f76d
scope: project
project_id: d44c219a-0b31-4de1-b160-323eb34a4c6a
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: timeline
revision: 1
source_memory_ids:
- 2939ce96-a6f6-418a-9a70-568980dbdc2a
- 2fafa191-d208-41e4-9f7b-ce5a633c886b
- 3efd0adf-f91b-4d78-b163-5365c257d6d4
- 46eb1720-910a-4e4e-b56b-b6ac43b0cec1
- 67a86e88-a750-4cd8-9650-c1b7cfbf22b9
- 6b129c78-a412-41e9-af9f-63ab071e03d9
- 76e12a12-446a-4d96-bb49-2534930a5d56
- 7737eaaf-441e-476e-aea0-42a4d13ae245
- 7e83a02d-9eb6-4e97-9f23-102f34ae8b1e
- 92e5c8d9-c4ef-4ab7-99ac-1b81f3228b59
- a9739d28-4318-492e-bad3-53e9ea2769a8
- ada12b65-afa2-415e-98b3-2a24ff57feb9
- ae318134-8651-4563-bc22-491c51f87af4
- b7e0eb44-e38f-40a3-8736-3a7a9de84818
- beb81aaa-8e86-4af7-a6c8-d35f7682d330
- d5bb7f58-99bb-4381-ac98-300cceb128fe
- dc70f54c-8e29-4834-a5c1-a63bc9ac9e68
- dcdbeb7d-dd75-4294-8853-872491043db1
- dd093dd7-71be-46a2-bcb1-4a87c3d4b9ab
- dd22c710-2822-4515-a28c-ead99162caac
- e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46
source_checkpoint_ids:
- 4f5c2b7f-d115-46c2-87be-80c8605ccbdb
- d45ff9ab-e2f4-4de8-8ccb-389754c1e3a4
source_file_ids:
- 07583531-4b5a-4826-ad88-be4c3f16ba9d
- 2749e8f9-a45f-43b0-a818-143ae532db24
- 2977cf7c-7494-4b28-a8c6-2fbc6261c810
- 4e728912-7bd0-455c-ac3a-e35189c26e37
- 8f5b3f27-3ed1-4bf1-97ef-cb130f238161
source_git_commit: d7c6368
source_git_commits:
- d7c6368
source_agent_sync_ids:
- artveris-curation-2026-09-03-migration
model_connection: Sub2API
model_name: openai/gpt-oss-120b
source_count: 42
source_revisions:
memory:76e12a12-446a-4d96-bb49-2534930a5d56: '1'
memory:ae318134-8651-4563-bc22-491c51f87af4: '1'
memory:dd22c710-2822-4515-a28c-ead99162caac: '1'
memory:3efd0adf-f91b-4d78-b163-5365c257d6d4: '1'
memory:46eb1720-910a-4e4e-b56b-b6ac43b0cec1: '1'
memory:d5bb7f58-99bb-4381-ac98-300cceb128fe: '1'
memory:b7e0eb44-e38f-40a3-8736-3a7a9de84818: '1'
memory:dcdbeb7d-dd75-4294-8853-872491043db1: '1'
memory:7e83a02d-9eb6-4e97-9f23-102f34ae8b1e: '1'
memory:a9739d28-4318-492e-bad3-53e9ea2769a8: '1'
memory:dc70f54c-8e29-4834-a5c1-a63bc9ac9e68: '1'
memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46: '1'
memory:6b129c78-a412-41e9-af9f-63ab071e03d9: '1'
source_dispositions:
processed: 42
unchanged: 0
unsupported: 0
skipped: 0
cited_source_ids:
- memory:76e12a12-446a-4d96-bb49-2534930a5d56
- memory:ae318134-8651-4563-bc22-491c51f87af4
- memory:dd22c710-2822-4515-a28c-ead99162caac
- memory:3efd0adf-f91b-4d78-b163-5365c257d6d4
- memory:46eb1720-910a-4e4e-b56b-b6ac43b0cec1
- memory:d5bb7f58-99bb-4381-ac98-300cceb128fe
- memory:b7e0eb44-e38f-40a3-8736-3a7a9de84818
- memory:dcdbeb7d-dd75-4294-8853-872491043db1
- memory:7e83a02d-9eb6-4e97-9f23-102f34ae8b1e
- memory:a9739d28-4318-492e-bad3-53e9ea2769a8
- memory:dc70f54c-8e29-4834-a5c1-a63bc9ac9e68
- memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46
- memory:6b129c78-a412-41e9-af9f-63ab071e03d9
job_cited_source_ids:
- memory:76e12a12-446a-4d96-bb49-2534930a5d56
- memory:ae318134-8651-4563-bc22-491c51f87af4
- memory:dd22c710-2822-4515-a28c-ead99162caac
- memory:3efd0adf-f91b-4d78-b163-5365c257d6d4
- memory:46eb1720-910a-4e4e-b56b-b6ac43b0cec1
- memory:d5bb7f58-99bb-4381-ac98-300cceb128fe
- memory:b7e0eb44-e38f-40a3-8736-3a7a9de84818
- memory:dcdbeb7d-dd75-4294-8853-872491043db1
- memory:7e83a02d-9eb6-4e97-9f23-102f34ae8b1e
- memory:a9739d28-4318-492e-bad3-53e9ea2769a8
- memory:dc70f54c-8e29-4834-a5c1-a63bc9ac9e68
- memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46
- memory:6b129c78-a412-41e9-af9f-63ab071e03d9
conflicts: []
supersedes: []
preferences: []
source_cursor: 359
source_hash: 06340ad0d2d916308bcf502ff22c22461eeb2afaaeea56df8687dae4fdb0f11d
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: 7900a00f-2876-4e05-bb12-7beb6e014a93
created_at: '2026-09-03T04:21:21.744728+00:00'
updated_at: '2026-09-03T04:21:21.745478+00:00'
tags:
- 时间线
- 里程碑
---
### 2026‑07‑01 – 2026‑07‑16
- 完成核心模型搭建、批量导入、天河链上传与确认、状态机实现、备份恢复机制。
- 解决并发激活、备份时删除表、日志脱敏、PowerShell JSON、Docker 代理等技术难点。
### 2026‑07‑09 – 2026‑07‑10
- 通过代码审查,完成天河链集成测试,确认 `方案 B(上传 → 发布 → 确认)` 为最终链上方案。
- 修复批量提交、短码生成、确认循环等关键缺陷。
### 2026‑08‑01 – 2026‑08‑08
- 制定全局开发偏好、原则(语言中文、MemRelay‑only 记忆、KISS/YAGNI 等)。
- 完成 Git 提交规范、密码库使用规则、AI 记忆同步默认关闭。
### 2026‑09‑03 03:26 UTC
- 项目在 GitHub/Gitea 创建,`dev` 分支领先 `main`(文档提交一次)。
### 2026‑09‑03 03:55 UTC
- 删除本地 `aidocs/`,同步至 MemRelay,标记为 **memory:2fafa191‑d208‑41e4‑9f7b‑ce5a633c886b**(已删除,无需再引用)。
### 2026‑09‑03 03:54 UTC (checkpoint d45ff9ab‑e2f4‑4de8‑8ccb‑389754c1e3a4)
- 记录迁移基线,版本 `dev` 领先 `main` 一次文档提交。
- 待合并的 `aidocs‑cleanup` 与 `PM2‑fix` 提交标记为 **pending**。
### 2026‑09‑03 04:01 UTC (checkpoint 4f5c2b7f‑d115‑46c2‑87be‑80c8605ccbdb)
- 完成迁移检查点:
- `dev` 与 `main` 均指向 commit `ca2c7fd`(仅文档)。
- 生产服务器 8.134.255.136 上的 “客户端作品模块化编排” 版本已启动,PM2 自动启动修复。
- 本地 `aidocs/` 被 `.gitignore`,对应文档已上传至 MemRelay `artveris/docs/`。
- 下一步指导:阅读 `docs/项目交接文档.md`,在升级前停止本地 `nest start --watch` 并使用 `scripts/upgrade-remote.ps1`。
### 2026‑09‑03 03:43 UTC (decision ae318134‑8651‑4563‑bc22‑491c51f87af4)
- 确定关键技术选型(UserKey 明文、单 `.env`、单服务部署等),并列出不实现的功能。
### 2026‑09‑03 03:42 UTC (decision dd22c710‑2822‑4515‑a28c‑ead99162caac)
- 确认天河链接入范围,仅支持上传、发布、查询,不涉及二次转账、元数据或摘要上链。
### 2026‑09‑03 03:41 UTC (fact 3efd0adf‑f91b‑4d78‑b163‑5365c257d6d4)
- 发布 C‑端模块化布局契约,定义媒体层级、模块上限、默认顺序等。
### 2026‑09‑03 03:39 UTC (fact 46eb1720‑910a‑4e4e‑b56b‑b6ac43b0cec1)
- 天河链集成现状:使用 `mock|tianhe` 驱动,测试/生产 API 地址,单次 `publish` 为一次性操作,返回 `status "0x0"` 为成功。
### 2026‑09‑03 03:38 UTC (fact d5bb7f58‑99bb‑4381‑ac98‑300cceb128fe)
- 记录生产拓扑与一键升级脚本细节。
### 2026‑09‑03 03:37 UTC (fact b7e0eb44‑e38f‑40a3‑8736‑3a7a9de84818)
- 明确部署契约:单 `.env`、系统设置覆盖、三种部署形态、RBAC、速率限制、TOTP 预览 token。
### 2026‑09‑03 03:36 UTC (facts dcdbeb7d‑dd75‑4294‑8853‑872491043db1, 7e83a02d‑9eb6‑4e97‑9f23‑102f34ae8b1e)
- 代码地图与核心数据模型详细说明。
### 2026‑09‑03 03:33 UTC (rule a9739d28‑4318‑492e‑bad3‑53e9ea2769a8)
- 发布出库/上链不变量与审计约束。
### 2026‑09‑03 03:32 UTC (rule dc70f54c‑8e29‑4834‑a5c1‑a63bc9ac9e68)
- 数据持久化红线:禁止覆盖 `.env`、`storage/`、`backups/`、数据库,序列号不可回滚。
### 2026‑09‑03 03:31 UTC (rule e1b8d25d‑f638‑4fbe‑8a8d‑0eda8f2d7d46)
- 构建与本地开发硬约束(PNPM、Node 版本、脚本使用、Git 忽略规则)。
### 2026‑09‑03 03:30 UTC (rule 6b129c78‑a412‑41e9‑af9f‑63ab071e03d9)
- 开发流程与提交规范(中文沟通、PowerShell 开发、YAGNI/KISS、提交顺序、分支策略、许可证)。