mirror of
git://f0xx.org/ac/ac-docs
synced 2026-07-29 06:59:18 +03:00
144 lines
5.3 KiB
Markdown
144 lines
5.3 KiB
Markdown
# Tickets, Gitea, and alpha smoke delegation
|
||
|
||
<!-- doc-meta:start -->
|
||
| Field | Value |
|
||
|---|---|
|
||
| Author | Anton Afanasyeu |
|
||
| Revision | R1 |
|
||
| Creation date | 2026-05-26 |
|
||
| Last modification date | 2026-05-26 |
|
||
| Co-authored | |
|
||
| Severity | medium |
|
||
| State | in progress |
|
||
| Document type | technical |
|
||
<!-- doc-meta:end -->
|
||
|
||
\newpage
|
||
\newpage
|
||
|
||
---
|
||
|
||
|
||
---
|
||
|
||
|
||
---
|
||
|
||
---
|
||
|
||
|
||
---
|
||
|
||
## Table of contents
|
||
|
||
<!-- toc -->
|
||
- [Gitea (/app/androidcast_project/git/)](#gitea-appandroidcastprojectgit)
|
||
- [Alpha smoke tickets (typical DB id → block)](#alpha-smoke-tickets-typical-db-id-block)
|
||
- [Console features (implementation)](#console-features-implementation)
|
||
- [Attachments (deploy)](#attachments-deploy)
|
||
- [Google Workspace — phase 2 (not implemented)](#google-workspace-phase-2-not-implemented)
|
||
- [Agent / engineering queue (from your list)](#agent-engineering-queue-from-your-list)
|
||
- [Open tasks dependency graph](#open-tasks-dependency-graph)
|
||
<!-- /toc -->
|
||
|
||
**Documentation index:** [README.md](README.md)
|
||
|
||
---
|
||
|
||
## Gitea (`/app/androidcast_project/git/`)
|
||
|
||
Public URL should return Gitea HTML (assets under `/app/androidcast_project/git/assets/…`).
|
||
|
||
**If clone/push fails while the page loads:**
|
||
|
||
1. **Clone URL** must include the subpath, e.g.
|
||
`https://apps.f0xx.org/app/androidcast_project/git/<owner>/<repo>.git`
|
||
2. **Gitea `app.ini`** on BE (`:3000`):
|
||
`ROOT_URL = https://apps.f0xx.org/app/androidcast_project/git/`
|
||
`DOMAIN = apps.f0xx.org`
|
||
3. **FE** `nginx.conf` ~983–996: `proxy_pass http://artc0.intra.raptor.org:3000/;` only works if Gitea is configured for that subpath (your HTML manifest suggests it is).
|
||
4. **BE**: Gitea must listen on `10.7.16.128:3000` (or `0.0.0.0:3000`); no extra nginx required unless you proxy git through `:80` too.
|
||
|
||
Symptom checklist: 502 → Gitea down; broken CSS → `ROOT_URL` wrong; 401 on push → credentials / token; 404 on clone → remote path missing subpath.
|
||
|
||
---
|
||
|
||
## Alpha smoke tickets (typical DB id → block)
|
||
|
||
Ingest order from `tmp/alpha_smoke_round1.txt` (skips pure “pass” rows):
|
||
|
||
| id (typical) | Block | Theme | Delegation |
|
||
|--------------|-------|--------|------------|
|
||
| 1 | A3 | PIN/cast OK; **rotation + preview NOK** | App: sender preview / rotation crash |
|
||
| 2 | A4 | Video OK; **frame drops, low res, few TX losses** | App: UDP/encoder quality; monitor NDK only if native crashes appear |
|
||
| 3 | A5 | Audio works; **laggy sound** | App: AAC pipeline / jitter buffer |
|
||
| 4 | A6 | Notification resolution | Often lower priority (pass with notes) |
|
||
| 5 | A7 | Stop OK; **wrong lifecycle** (resume, notifications) | App: `CastForegroundService`, notification intents, task stack |
|
||
| 6 | A9 | Repeat soak; **lifecycle** again | Same as #5 |
|
||
| 7 | (manual) | **Delegation / process** | Console: assignees, workflow, comments (this doc) |
|
||
|
||
Confirm ids in UI (title contains `Alpha smoke A3` etc.).
|
||
|
||
---
|
||
|
||
## Console features (implementation)
|
||
|
||
| Feature | Status |
|
||
|---------|--------|
|
||
| Workflow state (`triage` → `in_progress` → `blocked` / `wont_fix` → `done`) | Migration `004` + UI |
|
||
| Assignees (0..n users, chip picker) | `assignees_json` + API |
|
||
| Comments (thread on ticket) | `ticket_comments` + API |
|
||
| Email notify reporter | Nice-to-have later |
|
||
| **Attachments** (files + links) | Migration `005` + ticket UI |
|
||
| **Google Suite** (OAuth, embed, Chat/Meet hooks) | Phase 2 — see below |
|
||
|
||
### Attachments (deploy)
|
||
|
||
```bash
|
||
mysql -u root -p androidcast_crashes < examples/crash_reporter/backend/sql/migrations/005_ticket_attachments.sql
|
||
chown -R www-data:www-data examples/crash_reporter/backend/storage
|
||
```
|
||
|
||
- **Links:** paste HTTPS URL; Google hosts auto-tagged (Docs, Sheets, Slides, Drive, Meet, Chat, Forms).
|
||
- **Files:** stored under `backend/storage/ticket_attachments/{ticket_id}/`, download via `/api/ticket_attachment.php?id=…`.
|
||
|
||
### Google Workspace — phase 2 (not implemented)
|
||
|
||
Requires Google Cloud project, OAuth consent, service account or user OAuth:
|
||
|
||
| Product | Integration idea |
|
||
|---------|------------------|
|
||
| Docs / Sheets / Slides | Picker API → attach link + optional embed iframe |
|
||
| Drive | File picker + shared-drive ACL |
|
||
| Meet | Attach recording link after call |
|
||
| Chat | Webhook or Chat API for ticket updates |
|
||
| Gmail | Optional notify assignees |
|
||
|
||
Until then, **paste share links** — the console labels them and opens in a new tab.
|
||
|
||
**Deploy migration (MariaDB, as root):**
|
||
|
||
```bash
|
||
mysql -u root -p androidcast_crashes < examples/crash_reporter/backend/sql/migrations/004_ticket_workflow.sql
|
||
```
|
||
|
||
---
|
||
|
||
## Agent / engineering queue (from your list)
|
||
|
||
1. **#1 (A3 NOK)** — Reproduce rotation + preview crash; separate from PIN path.
|
||
2. **#5 / #7 / #6 (lifecycle)** — Audit cold start, recents, notification tap, stop/receive; align with alpha A7/A9.
|
||
3. **#3 (laggy audio)** — Measure end-to-end latency sender → receiver; tune buffer / sync.
|
||
4. **#2 (TX losses)** — Log UDP gaps; recovery already OK — reduce loss if easy win.
|
||
5. **NDK** — Only if crash console shows native reports for these sessions.
|
||
|
||
Use ticket **comments** for findings; set **workflow** + **assignees** when you hand off.
|
||
|
||
---
|
||
|
||
## Open tasks dependency graph
|
||
|
||
**Master plan:** [20260608_ALPHA_PRIORITIES.md](20260608_ALPHA_PRIORITIES.md)
|
||
**Diagram:** [OPEN_TASKS_GRAPH.md](OPEN_TASKS_GRAPH.md)
|
||
**Dev DNS help:** [tmp/20260608_help_request.md](../tmp/20260608_help_request.md)
|