灵应
8b4a88f4bd
refactor: 后端代码清理-移除死代码和无用文件
...
Deploy / Staging E2E Tests (push) Has been skipped
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
Deploy / Deploy Staging (push) Failing after 138h54m45s
CI/CD Pipeline / Frontend Lint (push) Failing after 138h55m17s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 138h55m24s
- 删除 packages/domain/permissions.py(完全未引用的权限模块)
- 删除 packages/adapters/sqlite_tracker/(空包,无实现文件)
- 移除 requirements.txt 中未使用的依赖:aiosmtplib、python-dotenv
- 清理 test_email_service.py 中 workspace 邀请邮件的废弃测试
2026-07-03 17:58:35 +08:00
灵应
ee5b3ece7b
chore: 清理后端 workspace 残留代码
...
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
Deploy / Staging E2E Tests (push) Has been cancelled
Deploy / Deploy Staging (push) Has been cancelled
CI/CD Pipeline / Frontend Lint (push) Failing after 140h9m10s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 140h9m10s
- 删除 email_service.py 中 send_workspace_invitation_email 方法(NoopEmailService + EmailService)
- 更新 auth.py 中间件注释,移除 workspace 引用
- 更新 packages/domain/permissions.py 注释
- 删除空的 routes/permissions.py 文件
项目创建链路已验证完全独立于 workspace,无功能性影响。
2026-07-03 16:45:19 +08:00
灵应
44dc89360a
feat: 配音列表 API 增强 — 预置音色 + 克隆音色统一接口
...
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 170h24m47s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 170h24m52s
Deploy / Deploy Staging (push) Failing after 170h27m34s
CI/CD Pipeline / Frontend Lint (push) Failing after 170h28m8s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 170h28m14s
- 新增预置音色配置(8 个 CosyVoice 真实音色)
- 增强 GET /api/v1/voices 接口,支持 type 查询参数(preset/clone/all)
- 新增 GET /api/v1/voices/presets 端点
- 统一响应格式,包含 preset_count 和 clone_count
- 保留原有 CRUD 端点向后兼容
- 添加 18 个预置音色单元测试(全部通过)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-02 10:26:14 +08:00
灵应
f7c8b441d6
feat(phase3): CosyVoice 配置 + VoiceCloneProfile/TTSJob 领域模型
...
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 173h2m54s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 173h2m59s
Deploy / Deploy Staging (push) Failing after 173h22m24s
CI/CD Pipeline / Frontend Lint (push) Failing after 173h22m54s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 173h23m2s
Task 3.01: CosyVoice 配置
- 在 SharedSettings 中添加 CosyVoice 配置字段
- 更新 .env.example 和 .env.production.example
Task 3.02: VoiceCloneProfile 领域模型
- 创建 VoiceCloneProfile 实体(音色克隆档案)
- 状态机: pending → processing → ready/failed → disabled
- 支持重试机制(retry_count/max_retries)
- 创建 VoiceCloneProfileRepository 端口接口
Task 3.03: TTSJob 领域模型
- 创建 TTSJob 实体(TTS 任务)
- 关联 VoiceCloneProfile(voice_clone_profile_id)
- 状态机: pending → processing → completed/failed → cancelled
- 支持重试机制
- 创建 TTSJobRepository 端口接口
单元测试:
- VoiceCloneProfile: 31 个测试用例
- TTSJob: 34 个测试用例
- 全部 65 个测试通过
遵循六边形架构: Domain → Port → Adapter
2026-07-02 07:31:26 +08:00
CI Test
43366f290c
feat: 实现任务2.10 JobService — 异步任务管理
...
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 181h43m15s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 181h43m19s
Deploy / Deploy Staging (push) Failing after 181h59m26s
CI/CD Pipeline / Frontend Lint (push) Failing after 181h59m53s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 182h0m0s
- 新增 Job 领域模型(状态机、JobType/JobStatus 枚举)
- 新增 JobRepository 端口 + SQLAlchemy 实现
- 新增 10 个 Use Cases(CreateJob/Submit/Progress/Complete/Fail/Retry/Cancel/Get/List/Statistics)
- 新增 JobService 服务层,集成 VideoComposeService
- 新增 Pydantic schemas + RESTful API 路由
- 新增 Celery compose_video 任务(含进度追踪)
- 新增数据库迁移 018(jobs 表)
- 新增 44 个单元测试,全部通过
- 修复状态转换:允许 pending→success(快速完成场景)
2026-07-01 22:54:21 +08:00
灵应
ee8c60a143
perf(duplication): 查重模块代码优化 — 修复6个代码质量问题
...
1. 修复 hamming_distance 不等长哈希处理(hex() 前导零丢失)
2. 集成颜色直方图到 check_duplicate(此前计算但未使用,浪费 CPU)
3. check_duplicate 改为返回最佳匹配而非首个匹配
4. 修复仓库删除顺序(先删片段再删记录,防止孤儿数据)
5. 域模型添加 can_retry()/reset_for_retry(),仅 failed 状态允许重试
6. 列表接口暴露 offset/limit 分页参数
2026-07-01 14:48:15 +08:00
CI Test
3436900de0
feat(phase8-task202): TemplateClipConfig + EditPlanClip 数据模型、仓储、迁移与测试 ( #143 )
Deploy / Build Production Runtime Images (push) Has been cancelled
Deploy / Deploy Production (push) Has been cancelled
Deploy / Production Browser E2E (push) Has been cancelled
Deploy / Deploy Staging (push) Has been cancelled
CI/CD Pipeline / Frontend Lint (push) Failing after 190h13m50s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 190h13m54s
2026-07-01 14:28:20 +08:00
CI Test
22c2811982
feat(phase8-task201): EditTemplate + EditPlan 数据模型、仓储、迁移与测试 ( #141 )
2026-07-01 13:15:09 +08:00
Deploy Bot
3fe48b37d4
fix: replace StrEnum with Python 3.10 compatible implementation
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
Deploy / Deploy Staging (push) Failing after 209h38m38s
CI/CD Pipeline / Frontend Lint (push) Failing after 209h50m50s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 209h50m56s
2026-06-30 19:03:38 +08:00
xiaoxia
1217d8cef0
style: apply isort formatting to pass CI validation ( #129 )
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
Deploy / Deploy Staging (push) Failing after 210h35m44s
CI/CD Pipeline / Frontend Lint (push) Failing after 210h36m11s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 210h36m17s
2026-06-30 18:17:44 +08:00
xiaoxia
52ff2f80ad
style: apply black formatting to pass CI validation ( #126 )
CI/CD Pipeline / Validate Code Quality And Tests (push) Has been cancelled
CI/CD Pipeline / Frontend Lint (push) Has been cancelled
Deploy / Deploy Staging (push) Has been cancelled
Deploy / Build Production Runtime Images (push) Has been cancelled
Deploy / Deploy Production (push) Has been cancelled
Deploy / Production Browser E2E (push) Has been cancelled
2026-06-30 17:23:08 +08:00
Audit Bot
f9e8d6efdc
fix: 修复 3 个 P0 端点 500 错误的真正根因
...
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
Bug 1 — GET /api/v1/assets → 500:
asset_repository 所有方法为 async def,但调用方为同步上下文,
未 await 导致返回 coroutine 对象而非实际数据。
修复:全部改为 def(同步),与 SQLAlchemy 同步 Session 一致。
Bug 2 — POST /api/v1/generation/tasks → 500:
GenerationTaskModel 仍定义 edit_plan_id 列,但迁移 011 已从数据库
删除该列,INSERT 时报 column does not exist。
修复:从 model、repository、domain entity、application use case、
所有路由中彻底移除 edit_plan_id 引用。
Bug 3 — GET /api/v1/dashboard/overview → 500:
generation_task_repository._to_domain() 访问 model.edit_plan_id,
该列已被迁移 011 删除,触发 AttributeError。
修复:同上,移除 edit_plan_id 引用。
涉及文件:
- packages/adapters/sqlalchemy_impl/asset_repository.py (async→sync)
- packages/ports/asset_repository.py (async→sync 接口)
- packages/adapters/sqlalchemy_impl/models.py (移除 edit_plan_id 列)
- packages/adapters/sqlalchemy_impl/generation_task_repository.py
- packages/domain/generation_task.py
- packages/application/generation_tasks.py
- apps/api/app/api/routes/generation_tasks.py
- apps/api/app/api/routes/task_center.py
2026-06-29 20:10:51 +08:00
Audit Bot
f80a311082
fix: 清理 entities.py 重复实体定义,统一使用独立域模块
...
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
移除 entities.py 中与其他独立域文件重复的 dataclass 定义:
- ClassificationJob → 统一从 classification.py 导入
- GenerationTask → 统一从 generation_task.py 导入
- GeneratedVideo → 统一从 generated_video.py 导入
- EditTemplate → 已废弃,无引用
重复定义导致字段不一致(如 GenerationTask 缺少 template_id/asset_ids,
GeneratedVideo.file_size 类型 float vs int),可能引发运行时错误。
Fixes : #150
Co-Authored-By: 灵应 <437848575@qq.com >
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-06-29 19:29:21 +08:00
Audit Bot
ea9e536740
feat: 扩展生成任务API支持模板模式
...
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
方案A: 后端扩展3处API改动,支持前端模板中心化模型。
1. POST /api/v1/generation/tasks — project_id改为可选,新增template_id/asset_ids/title_ids/voice_ids
2. GET /api/v1/generation/tasks + GET /api/v1/tasks — 新增用户级列表(跨project)
3. POST /api/v1/tasks/{task_id}/retry + POST /api/v1/generation/tasks/{task_id}/retry — 简化重试
改动涉及:
- Domain: GenerationTask新增6个字段,放宽create()校验
- Application: CreateGenerationTaskCommand新增字段
- Ports: GenerationTaskRepository新增list_by_user()
- Adapter: SQLAlchemy模型+仓储实现新字段和list_by_user
- Schema: 双模式校验(project模式/模板模式)
- Routes: generation_tasks + task_center双路由注册
- Migration: 015_add_generation_task_extensions
向后兼容:所有旧端点和参数不变。
2026-06-29 17:05:53 +08:00
Audit Bot
9b6a0b8b14
fix: 修复代码审计5个问题 (P0-1,P0-2,P1-3,P1-4,P1-5)
...
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
P0-1: 剪辑模式使用 EditingMode 枚举,移除硬编码字符串
- voice_over_mix → voice_over, person_narration → voice_pip
- use_cases.py 导入 EditingMode 枚举替代硬编码 VALID_MODES
P0-2: 补充 packages/application/template/__init__.py
P1-3: Use Cases 依赖 TemplateRepositoryPort 而非 SQLAlchemyTemplateRepository
P1-4: generate 端点重命名为 validate(只校验不生成)
- GenerateFromTemplateUseCase → ValidateTemplateUseCase
- POST /{id}/generate → POST /{id}/validate
P1-5: 软删除模板时级联清理关联 segments,避免孤儿数据
测试全部通过 (21/21)
2026-06-29 14:44:24 +08:00
Audit Bot
62c8d1cdff
feat: 剪辑计划编辑器后端 — 模板 CRUD + 分类 + 生成校验
...
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
- domain: Template, TemplateSegment, TemplateCategory 实体
- ports: TemplateRepositoryPort Protocol
- adapters: SQLAlchemyTemplateRepository + 3 个 ORM Model
- application: CRUD use cases + GenerateFromTemplateUseCase
- 业务规则: one_take=1片段, voice_over_mix=每段需material_type, 配音±30%警告
- schemas: Pydantic request/response models
- routes: /api/v1/templates CRUD + /generate + /categories
- alembic: 014_add_template_tables (templates/template_segments/template_categories)
- tests: 21 个单元测试全部通过
2026-06-29 14:14:58 +08:00
Audit Bot
f2e123a017
feat: 配方复用功能后端实现
...
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
- domain: Recipe/RecipeItem 实体
- ports: RecipeRepository Protocol
- adapters: SQLAlchemy RecipeRepository 实现 + ORM models
- application: 6个 UseCase (CRUD + Use) + Commands
- API: 6个端点 POST/GET/PATCH/DELETE /recipes + POST /recipes/{id}/use
- feature flag: recipe_reuse 仅 basic/premium 可用
- Alembic 迁移: recipes + recipe_items 表
- 单元测试: 覆盖所有 UseCase
2026-06-29 10:59:05 +08:00
API文档维护Agent
312dad7497
feat: Phase 2 查重后端 API 实现
...
六边形架构分层实现:
Domain 层:
- DuplicationRecord / DuplicateSegment 实体
- 状态机生命周期 (pending→processing→completed/failed)
Ports 层:
- DuplicationRecordRepository Protocol
Adapters 层:
- SQLAlchemyDuplicationRecordRepository 完整实现
- DuplicationRecordModel / DuplicationSegmentModel ORM 模型
Application 层:
- UploadForDuplicationUseCase (上传查重)
- ListDuplicationRecordsUseCase (记录列表)
- GetDuplicationDetailUseCase (详情查询)
- DeleteDuplicationRecordUseCase (删除)
- RetryDuplicationUseCase (重新查重)
API 层:
- POST /api/v1/duplication/upload (上传视频查重)
- GET /api/v1/duplication/records (记录列表)
- GET /api/v1/duplication/records/{id} (详情含片段)
- DELETE /api/v1/duplication/records/{id} (删除)
- POST /api/v1/duplication/records/{id}/retry (重新查重)
Alembic 迁移:
- 011_add_duplication_tables.py (duplication_records + duplication_segments)
API 契约与前端 feat/phase2-duplication-ui (PR#75) 完全对齐。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-06-28 16:12:46 +08:00
API文档维护Agent
a43ddb4b63
feat: Phase 1 - 核心重构(去Project层/标题库API/配音库API/清理废弃代码)
...
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
## 主要变更
### 1. 清理废弃代码(18个文件删除)
- 删除 TaskModel/MilestoneModel/TaskIssueModel 及相关文件
- 删除 ProjectTitleModel/EditPlanModel/EditPlanClipModel 及相关文件
- 清理 domain/ports/adapters/application/api 各层引用
- 从 GenerationTaskModel 移除 edit_plan_id 字段
### 2. 新建标题库 API(/api/v1/titles)
- Domain: TitleLibraryItem 数据类
- Ports: TitleLibraryRepository 接口
- Adapters: SQLAlchemy 实现(软删除)
- Application: CRUD Use Cases + 配额检查(max_titles: free=50, basic=500, premium=500)
- API: GET/POST/PUT/DELETE 端点
- Schema: Pydantic 请求/响应模型
### 3. 新建配音库 API(/api/v1/voices)
- Domain: VoiceLibraryItem 数据类
- Ports: VoiceLibraryRepository 接口
- Adapters: SQLAlchemy 实现(软删除)
- Application: CRUD Use Cases + 配额检查(max_voiceovers: free=10, basic=100, premium=100)
- API: GET/POST/PUT/DELETE 端点
- Schema: Pydantic 请求/响应模型
### 4. 去掉 Project 层依赖
- 修复 authenticated_user.id → authenticated_user.user.id bug
- asset_libraries.py: project_id 改为可选查询参数
- generated_videos.py: project_id 改为可选查询参数
- 无 project_id 时通过 find_accessible_projects 获取用户可访问的所有项目
### 5. 数据库迁移
- 创建 011_phase1_core_refactor.py
- 删除 6 个废弃表:tasks, milestones, task_issues, project_titles, edit_plans, edit_plan_clips
- 从 generation_tasks 表删除 edit_plan_id 列
### 6. 其他改进
- 迁移 EditingMode 到独立模块 packages/domain/editing_mode.py
- 注册 titles_router 和 voices_router
- 添加 get_title_library_repository 和 get_voice_library_repository 依赖
- 更新 domain/ports __init__.py 导出新实体和仓储接口
## 技术细节
- 遵循六边形架构模式
- 配额检查通过 QuotaRegistry 实现
- 软删除:标题库用 is_active=False,配音库用 status='deleted'
- 配音库支持可选的 project_id 关联
## 破坏性变更
- 删除 6 个废弃表(需先备份数据)
- 删除 /api/v1/edit-plans, /api/v1/project-titles, /api/v1/project-management 端点
- generation_tasks API 不再包含 edit_plan_id 字段
2026-06-28 15:02:10 +08:00
API文档维护Agent
a023ba8130
feat: Phase 0 - 扩展性基础设施(模块注册/配额注册表/Feature Flags/新增表)
...
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
- 新增 packages/infrastructure/ 包
- 实现 ModuleRegistry:模块注册中心,支持能力声明、依赖检查、配额规则
- 重构 QuotaRegistry:注册表模式,3 套餐等级(free/basic/premium),11 配额维度
- 实现 FeatureFlags:三级控制(全局/套餐/用户白名单),5 个初始 Flag
- Alembic 迁移 010:5 表新增 metadata JSONB + title_libraries 表 + voice_libraries 表
- 更新 models.py:新增 TitleLibraryModel、VoiceLibraryModel
2026-06-28 14:13:40 +08:00
API文档维护Agent
e3fb518ab2
refactor: remove all workspace_id references from codebase
...
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
- Remove workspace_id from Pydantic models in project_management routes
- Remove workspace_id from SQLAlchemy and SQLite project management repos
- Remove workspace_id from worker tasks (storage keys, entity creation)
- Remove workspace_id from video dedup and title usage modules
- Remove workspace_id from generation and ingest worker tasks
- Clean workspace_id from all test files and scripts
- Remove workspace-specific test files (list_workspaces, workspace repos)
Task: #14 workspace_id 残留清理
2026-06-27 22:52:09 +08:00
CI Test
06574c85a2
fix: correct import paths in domain/auth/__init__.py for jwt_service and password_hasher
CI/CD Pipeline / Validate Code Quality And Tests (push) Has been cancelled
CI/CD Pipeline / Frontend Lint (push) Has been cancelled
Deploy / Deploy Staging (push) Has been cancelled
Deploy / Build Production Runtime Images (push) Has been cancelled
Deploy / Deploy Production (push) Has been cancelled
Deploy / Production Browser E2E (push) Has been cancelled
2026-06-27 21:39:56 +08:00
CI Test
02992a3fcd
P2-2: Move auth services from domain to application layer
...
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
- Move jwt_service.py from packages/domain/auth to packages/application/auth
- Move password_hasher.py from packages/domain/auth to packages/application/auth
- Update all import paths in use cases and tests
2026-06-27 19:23:56 +08:00
xiaoxia
6ce9a0e67e
Merge pull request 'fix: Redis session env fix + JWT import path fix (登录失败根因修复)' ( #52 ) from hotfix/redis-session-env-fix into develop
2026-06-27 17:18:11 +08:00
xiaoxia
a5c5da50c6
fix: 修复 jwt_service.py 错误的 settings 导入路径导致登录 401
...
- packages.config.settings 模块不存在,改为 from app.config import settings
- 此 bug 导致 JWT token 生成时 ModuleNotFoundError,被 except 捕获后返回通用 401
2026-06-27 17:17:38 +08:00
CI Bot
36e12f77a9
fix: move SmartEditPlanGenerator to domain layer, remove dead workspaces route
2026-06-27 12:44:04 +08:00
CI Bot
44ca36e1a5
fix: remove Workspace from domain __init__ (class removed but import remained)
2026-06-27 12:09:16 +08:00
CI Bot
c98ab4c1ef
feat: decouple API and Worker cross-service dependencies
2026-06-27 10:22:25 +08:00
CI Bot
de4db98982
fix: add lazy jwt_service singleton proxy
2026-06-27 09:54:28 +08:00
CI Bot
4a8cbd5021
fix: correct dataclass field ordering and create() param order in generated_video and generation_task
...
- Move workspace_id after required fields in both dataclass and create()
- Fix indentation in create() method body
- Add missing timezone import in generation_task.py
2026-06-27 09:44:24 +08:00
CI Bot
11494918eb
fix: resolve all workspace removal breakage - stub permissions, quota, ports, adapters
...
- Remove Workspace from domain/__init__.py exports
- Stub domain/permissions.py (all checks pass)
- Stub domain/quota.py (all checks pass)
- Create missing port stubs: workspace_member_repository, workspace_repository, workspace_invitation_repository
- Create missing adapter stubs: workspace_repository, workspace_invitation_repository
- Create routes/permissions.py stub (require_workspace_member no-op)
- Fix .env Redis URL encoding on production server
2026-06-27 09:16:53 +08:00
CI Bot
38c66a9c68
fix: add workspace_id compatibility for removed workspace concept
2026-06-27 08:43:02 +08:00
CI Bot
60adbf95ce
chore: remove redundant .github/workflows (using Gitea Actions)
2026-06-27 00:41:09 +08:00
CI Test
bd9e9fba45
chore: squash merge feature/voice-dedup into develop (resolve conflicts)
...
- Add voice extraction and deduplication functionality
- Add dedup.py for video deduplication
- Add voice_extraction.py task for worker
- Resolve CI/CD and deploy workflow conflicts with develop version
- Keep new voice dedup features from feature branch
2026-06-26 21:23:39 +08:00
xiaoxia
f687b4207f
feat: add download_url field to generated video APIs ( #20 )
2026-06-26 21:13:18 +08:00
xiaoxia
0422967229
refactor: Remove workspace concept - Projects now directly under User
...
BREAKING CHANGES:
- Removed Workspace, WorkspaceMember, WorkspaceInvitation entities
- Project now has owner_user_id instead of workspace_id
- Added shared_users list to Project for collaboration
- Subscription/quota moved from Workspace to User level
Changes:
- packages/domain/entities.py: Removed Workspace entities, updated Project
- packages/adapters/sqlalchemy_impl/models.py: Updated models
- packages/application/: Removed workspace use cases, updated other use cases
- packages/ports/: Removed workspace repository interfaces
- apps/api/: Updated routes, schemas, dependencies, router
- alembic/versions/007_remove_workspace_concept.py: Database migration
New APIs:
- POST /projects/{id}/share: Share project with user
- DELETE /projects/{id}/share/{user_id}: Unshare project
2026-06-26 19:16:54 +08:00
xiaoxia
0f22ae862e
fix: resolve CI check failures - format code and fix line length issues
2026-06-26 18:01:01 +08:00
xiaoxia
8dd5b691bf
fix(security): P0 - JWTConfig强制注入密钥,禁止无参数实例化
2026-06-26 17:43:35 +08:00
Xiaoxia AI
0f59b412bc
feat(plans): add edit plan preview workflow
2026-06-24 10:10:25 +08:00
Xiaoxia AI
8acbd6c8a7
feat(results): add generated video management
2026-06-24 06:28:06 +08:00
Xiaoxia AI
bfbaddbd9a
style: normalize python formatting gates
2026-06-21 06:52:19 +08:00
Xiaoxia AI
0e93d2e71f
refactor(domain): move auth infrastructure to adapters
2026-06-21 00:46:56 +08:00
Xiaoxia AI
758c2c7e13
feat(phase7): align asset flow and scaffold generation pipeline
2026-06-18 19:59:37 +08:00
Xiaoxia AI
80a57ff0fe
Phase 6: Complete admin pages (Analytics, Monitor, Logs) and Phase 7: Asset management foundation
...
Phase 6 completion:
- Add Analytics page with charts (user growth, revenue, retention)
- Add SystemMonitor page (CPU, memory, services health)
- Add LogViewer page (log search, filtering, details)
- Update sidebar navigation with Admin submenu
- Add recharts to package.json for data visualization
Phase 7 Day 1-2:
- Create Asset and AssetLibrary domain entities
- Define AssetRepository and AssetLibraryRepository interfaces
- Implement InMemory repositories for testing
- Implement PostgreSQL repository adapter
- Update SQLAlchemy models for assets and asset_libraries
- Add database migration script 004_asset_management.sql
Architecture: Strict Clean Architecture compliance
Testing: InMemory adapters ready for unit tests
Database: Migration script with indexes and foreign keys
2026-06-17 17:41:48 +08:00
Xiaoxia AI
4e33158d8d
feat(quota): add quota checking and management system
...
- Implement QuotaChecker for project and storage limits
- Check project count before creation (respect max_projects)
- Check storage availability before upload
- Get quota status with usage percentages
- Update storage usage (increase/decrease)
- Define warning levels (normal/warning/critical/exceeded)
- Add ProjectRepository interface for project counting
- Add 14 comprehensive unit tests (all passed)
Phase 4 Task 22/68 completed
2026-06-17 07:24:14 +08:00
Xiaoxia AI
80c29ba940
feat(permissions): add permission system and checker
...
- Implement PermissionChecker for workspace access control
- Define Permission constants for all operations
- Define ROLE_PERMISSIONS mapping (Owner/Admin/Member/Viewer)
- Support workspace/member/project/asset permission checks
- Helper functions: check_is_owner, check_can_manage_members, etc.
- Add 15 comprehensive unit tests (all passed)
Phase 4 Task 20/68 completed
2026-06-17 07:16:02 +08:00
Xiaoxia AI
00b1710250
feat(workspace): add WorkspaceInvitation entity
...
- Add InvitationStatus enum (pending/accepted/declined/expired)
- Add WorkspaceInvitation entity to track invitation lifecycle
- Store inviter, invitee email, role, and invitation token
- Track status, expiration, and acceptance time
- Foundation for workspace invitation system
Phase 4 Task 11/68 completed
2026-06-17 01:27:15 +08:00
Xiaoxia AI
3913c3d2d1
feat(workspace): add WorkspaceMember entity with role-based access
...
- Add WorkspaceMemberRole enum (owner/admin/member/viewer)
- Add WorkspaceMember entity to track user membership in workspace
- Track invited_by for audit trail
- Track joined_at for membership timeline
- Foundation for multi-tenant permission system
Phase 4 Task 10/68 completed
2026-06-17 01:26:43 +08:00
Xiaoxia AI
687f4b7f7a
feat(workspace): extend Workspace entity with subscription fields
...
- Add subscription_plan (free/pro/enterprise) with free as default
- Add subscription_status (active/cancelled/expired)
- Add subscription_expires_at for expiration tracking
- Add max_projects quota (free: 3, pro/enterprise: unlimited)
- Add max_storage_gb and used_storage_gb for storage tracking
- Backward compatible with existing code (all new fields have defaults)
Phase 4 Task 9/68 completed
2026-06-17 01:26:18 +08:00
Xiaoxia AI
5d35a19084
feat(auth): extend User entity with authentication fields
...
- Add username field
- Add password_hash for bcrypt hash storage
- Add email_verified and email_verification_token for email verification
- Add password_reset_token and password_reset_expires_at for password reset
- Add last_login_at and last_login_ip for login tracking
- Backward compatible with existing code (all new fields have defaults)
Phase 4 Task 5/68 completed
2026-06-17 01:18:35 +08:00